diff --git a/CodeVirtualizer/Jit.cpp b/CodeVirtualizer/Jit.cpp index a3c09c8..0797690 100644 --- a/CodeVirtualizer/Jit.cpp +++ b/CodeVirtualizer/Jit.cpp @@ -149,8 +149,6 @@ PNATIVE_CODE_BLOCK JitEmitPreRipMov(PNATIVE_CODE_LINK Link, INT32 Delta) RipDelta += ((FourByte - Count) * 4); RipDelta += Delta; //Add the actual instruction - printf("%p IS THE DATAOFFSET\n", DataOffset); - system("pause"); if (!JitEmitRipRelativeMovD(Block, RipDelta, DataOffset)) { NcDeleteBlock(Block); @@ -242,7 +240,7 @@ PNATIVE_CODE_BLOCK JitEmitPostRipMov(PNATIVE_CODE_LINK Link, INT32 Delta) { INT32 RipDelta = Link->RawDataSize - (FourByte * 4) - (TwoByte * 2); RipDelta += (FourByte * DWORD_MOV_INST_LENGTH); - RipDelta += WORD_MOV_INST_LENGTH; + RipDelta += (TwoByte * WORD_MOV_INST_LENGTH); RipDelta += BYTE_MOV_INST_LENGTH; RipDelta *= (-1); RipDelta += Delta; diff --git a/CodeVirtualizer/Main.cpp b/CodeVirtualizer/Main.cpp index 0c6ec1c..9386a91 100644 --- a/CodeVirtualizer/Main.cpp +++ b/CodeVirtualizer/Main.cpp @@ -37,21 +37,75 @@ UCHAR TestBuffer[] = { }; ULONG TestBufferSize = sizeof(TestBuffer); -UCHAR meme1[] = { 0x31, 0xc0 }; +UCHAR meme1[] = { 0xb8, 0xde, 0xc0, 0xac, 0x0e }; +UCHAR meme2[] = { 0xc3 }; int main() { XedTablesInit(); srand(time(NULL)); + PNATIVE_CODE_LINK Return1776 = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, meme1, sizeof(meme1)); + PNATIVE_CODE_LINK RetInst = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, meme2, sizeof(meme2)); + PNATIVE_CODE_BLOCK Pre1 = JitEmitPreRipMov(Return1776); + PNATIVE_CODE_BLOCK Post1 = JitEmitPostRipMov(Return1776); + PNATIVE_CODE_BLOCK Pre2 = JitEmitPreRipMov(RetInst); + PNATIVE_CODE_BLOCK Post2 = JitEmitPostRipMov(RetInst); + + NcAppendToBlock(Pre1, Return1776); + NcInsertBlockAfter(Pre1->End, Post1, 0); + Pre1->End = Post1->End; + NcInsertBlockAfter(Pre1->End, Pre2, 0); + Pre1->End = Pre2->End; + NcAppendToBlock(Pre1, RetInst); + NcInsertBlockAfter(Pre1->End, Post2, 0); + Pre1->End = Post2->End; + + /*Pre->Start = Return1776; + Pre->End = Return1776;*/ + + for (ULONG i = 0; i < Return1776->RawDataSize; i++) + Return1776->RawData[i] = (UCHAR)rand(); + for (ULONG i = 0; i < RetInst->RawDataSize; i++) + RetInst->RawData[i] = (UCHAR)rand(); + + + /*NcDebugPrint(Pre); + NcPrintBlockCode(Pre);*/ + + ULONG AsmLen; + PVOID Asm = NcAssemble(Pre1, &AsmLen); + PUCHAR Tb = (PUCHAR)Asm; + for (uint32_t i = 0; i < AsmLen; i++) + { + std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)Tb[i] << ' '; + } + + system("pause"); + + typedef ULONG64(*FnGet1776)(); + FnGet1776 ExecBuffer = (FnGet1776)MakeExecutableBuffer(Asm, AsmLen); + if (ExecBuffer) + { + printf("The numba was: %X\n", ExecBuffer()); + printf("The numba was: %X\n", ExecBuffer()); + + printf("The numba was: %X\n", ExecBuffer()); + + printf("The numba was: %X\n", ExecBuffer()); - NATIVE_CODE_BLOCK Block; + } + + + //NcDebugPrint(Post); + + + + /*NATIVE_CODE_BLOCK Block; NcDisassemble(&Block, TestBuffer, TestBufferSize); PNATIVE_CODE_LINK NewLink = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, meme1, sizeof(meme1)); NcInsertLinkBefore(Block.End->Prev->Prev->Prev->Prev, NewLink); - - ULONG AssembledSize; PVOID AssembledBlock = NcAssemble(&Block, &AssembledSize); if (!AssembledBlock || !AssembledSize) @@ -65,6 +119,7 @@ int main() { std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)Tb[i] << ' '; } + */ //PNATIVE_CODE_BLOCK OpaqueBranch = ObfGenOpaqueBranch(Block.Start, Block.End); diff --git a/CodeVirtualizer/NativeCode.cpp b/CodeVirtualizer/NativeCode.cpp index c585f9c..887f57d 100644 --- a/CodeVirtualizer/NativeCode.cpp +++ b/CodeVirtualizer/NativeCode.cpp @@ -28,6 +28,8 @@ _NATIVE_CODE_LINK::_NATIVE_CODE_LINK(ULONG F, PVOID Rd, ULONG Rds) RawData = new UCHAR[Rds]; if (Rd) RtlCopyMemory(RawData, Rd, Rds); + + XedDecode(&XedInstruction, RawData, RawDataSize); } _NATIVE_CODE_LINK::~_NATIVE_CODE_LINK() @@ -120,7 +122,7 @@ VOID NcUnlink(PNATIVE_CODE_LINK Link) ULONG NcCalcBlockSize(PNATIVE_CODE_BLOCK Block) { ULONG TotalSize = 0; - for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) + for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next; T = T->Next) { if (T->Flags & CODE_FLAG_IS_LABEL) continue; @@ -173,7 +175,7 @@ BOOL NcInsertBlockAfter(PNATIVE_CODE_LINK Link, PNATIVE_CODE_BLOCK Block, BOOL F Block->Start->Prev = Link; Link->Next = Block->Start; - for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) + for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) T->Block = Link->Block; return TRUE; @@ -193,7 +195,7 @@ BOOL NcInsertBlockBefore(PNATIVE_CODE_LINK Link, PNATIVE_CODE_BLOCK Block, BOOL Block->End->Next = Link; Link->Prev = Block->End; - for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) + for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) T->Block = Link->Block; return TRUE; @@ -504,7 +506,7 @@ PVOID NcAssemble(PNATIVE_CODE_BLOCK Block, PULONG OutSize) PUCHAR BufferOffset = Buffer; - for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next; T = T->Next) + for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) { if (T->Flags & CODE_FLAG_IS_LABEL) continue; @@ -535,7 +537,7 @@ VOID NcDebugPrint(PNATIVE_CODE_BLOCK Block) if (!ConsoleHandle) return; - for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) + for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) { if (T->Flags & CODE_FLAG_IS_LABEL) { @@ -561,7 +563,7 @@ VOID NcDebugPrint(PNATIVE_CODE_BLOCK Block) VOID NcPrintBlockCode(PNATIVE_CODE_BLOCK Block) { - for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) + for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) { if (!(T->Flags & CODE_FLAG_IS_LABEL)) { diff --git a/CodeVirtualizer/OpaqueBranching.cpp b/CodeVirtualizer/OpaqueBranching.cpp index a80dee6..98006e4 100644 --- a/CodeVirtualizer/OpaqueBranching.cpp +++ b/CodeVirtualizer/OpaqueBranching.cpp @@ -135,6 +135,7 @@ PNATIVE_CODE_BLOCK ObfGenOpaqueBranch(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK NcAppendToBlock(Taken, new NATIVE_CODE_LINK(JmpLabel, Taken)); NcInsertBlockAfter(NotTaken->End, Taken, FALSE); + NotTaken->End = Taken->End; delete Taken; return NotTaken; diff --git a/CodeVirtualizer/x64/Debug/Jit.cod b/CodeVirtualizer/x64/Debug/Jit.cod index aaa69e6..fc3f3f4 100644 --- a/CodeVirtualizer/x64/Debug/Jit.cod +++ b/CodeVirtualizer/x64/Debug/Jit.cod @@ -88,9 +88,6 @@ PUBLIC ?__empty_global_delete@@YAXPEAX@Z ; __empty_global_delete PUBLIC ?__empty_global_delete@@YAXPEAX_K@Z ; __empty_global_delete PUBLIC ?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z ; __empty_global_delete PUBLIC ?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z ; __empty_global_delete -PUBLIC __local_stdio_printf_options -PUBLIC _vfprintf_l -PUBLIC printf PUBLIC wmemcpy PUBLIC ?_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z ; std::_Adjust_manually_vector_aligned PUBLIC ?_Orphan_all@_Container_base12@std@@QEAAXXZ ; std::_Container_base12::_Orphan_all @@ -132,7 +129,6 @@ PUBLIC ??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z ; std::_Deallocate<16,0> PUBLIC ??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z ; std::_Deallocate_plain > PUBLIC ?deallocate@?$_Default_allocator_traits@V?$allocator@U_Container_proxy@std@@@std@@@std@@SAXAEAV?$allocator@U_Container_proxy@std@@@2@QEAU_Container_proxy@2@_K@Z ; std::_Default_allocator_traits >::deallocate PUBLIC __JustMyCode_Default -PUBLIC ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA ; `__local_stdio_printf_options'::`2'::_OptionsStorage PUBLIC ?__LINE__Var@?0??_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z@4JA ; `std::_Adjust_manually_vector_aligned'::`1'::__LINE__Var PUBLIC ??_C@_0BB@FCMFBGOM@invalid?5argument@ ; `string' PUBLIC ??_C@_02DKCKIIND@?$CFs@ ; `string' @@ -143,8 +139,6 @@ PUBLIC ??_C@_1CG@JNLFBNGN@?$AA?$CC?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?5?$AAa PUBLIC ??_C@_0GI@DEICPIDJ@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ ; `string' PUBLIC ?__LINE__Var@?0??_Maklocwcs@std@@YAPEA_WPEB_W@Z@4JA ; `std::_Maklocwcs'::`1'::__LINE__Var PUBLIC ??_C@_0GI@LHMPPKJI@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ ; `string' -PUBLIC ??_C@_0BG@BLDOCDOA@?$CFp?5IS?5THE?5DATAOFFSET?6@ ; `string' -PUBLIC ??_C@_05PDJBBECF@pause@ ; `string' PUBLIC ??_C@_0N@LPFKKEBD@?3AM?3am?3PM?3pm@ ; `string' PUBLIC ??_C@_1BK@MHIKGOKE@?$AA?3?$AAA?$AAM?$AA?3?$AAa?$AAm?$AA?3?$AAP?$AAM?$AA?3?$AAp?$AAm@ ; `string' EXTRN ??2@YAPEAX_K@Z:PROC ; operator new @@ -153,13 +147,10 @@ EXTRN __imp__invalid_parameter:PROC EXTRN memcpy:PROC EXTRN __imp_wcslen:PROC EXTRN strlen:PROC -EXTRN __imp_system:PROC EXTRN __imp__calloc_dbg:PROC EXTRN __imp__CrtDbgReport:PROC EXTRN __imp_??0_Lockit@std@@QEAA@H@Z:PROC EXTRN __imp_??1_Lockit@std@@QEAA@XZ:PROC -EXTRN __imp___acrt_iob_func:PROC -EXTRN __imp___stdio_common_vfprintf:PROC EXTRN ?_Xbad_alloc@std@@YAXXZ:PROC ; std::_Xbad_alloc EXTRN _Mbrtowc:PROC EXTRN __imp_?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ:PROC @@ -199,10 +190,6 @@ EXTRN __GSHandlerCheck:PROC EXTRN __GSHandlerCheck_EH4:PROC EXTRN __security_check_cookie:PROC EXTRN __security_cookie:QWORD -; COMDAT ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA -_BSS SEGMENT -?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA DQ 01H DUP (?) ; `__local_stdio_printf_options'::`2'::_OptionsStorage -_BSS ENDS ; COMDAT pdata pdata SEGMENT $pdata$?__empty_global_delete@@YAXPEAX@Z DD imagerel $LN3 @@ -229,24 +216,6 @@ $pdata$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z DD imagerel $LN3 pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$__local_stdio_printf_options DD imagerel $LN3 - DD imagerel $LN3+59 - DD imagerel $unwind$__local_stdio_printf_options -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$_vfprintf_l DD imagerel $LN3 - DD imagerel $LN3+126 - DD imagerel $unwind$_vfprintf_l -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$printf DD imagerel $LN3 - DD imagerel $LN3+214 - DD imagerel $unwind$printf -pdata ENDS -; COMDAT pdata -pdata SEGMENT $pdata$wmemcpy DD imagerel $LN3 DD imagerel $LN3+106 DD imagerel $unwind$wmemcpy @@ -416,7 +385,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitPreRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z DD imagerel $LN25 - DD imagerel $LN25+1088 + DD imagerel $LN25+1056 DD imagerel $unwind$?JitEmitPreRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z pdata ENDS ; COMDAT pdata @@ -434,7 +403,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitPostRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z DD imagerel $LN25 - DD imagerel $LN25+1200 + DD imagerel $LN25+1205 DD imagerel $unwind$?JitEmitPostRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z pdata ENDS ; COMDAT pdata @@ -551,15 +520,6 @@ CONST ENDS CONST SEGMENT ??_C@_0N@LPFKKEBD@?3AM?3am?3PM?3pm@ DB ':AM:am:PM:pm', 00H ; `string' CONST ENDS -; COMDAT ??_C@_05PDJBBECF@pause@ -CONST SEGMENT -??_C@_05PDJBBECF@pause@ DB 'pause', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0BG@BLDOCDOA@?$CFp?5IS?5THE?5DATAOFFSET?6@ -CONST SEGMENT -??_C@_0BG@BLDOCDOA@?$CFp?5IS?5THE?5DATAOFFSET?6@ DB '%p IS THE DATAOFFSET' - DB 0aH, 00H ; `string' -CONST ENDS ; COMDAT ??_C@_0GI@LHMPPKJI@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ CONST SEGMENT ??_C@_0GI@LHMPPKJI@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ DB 'C:\Pro' @@ -1414,49 +1374,6 @@ $unwind$wmemcpy DD 025053401H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$printf DD 025054a19H - DD 011d2322H - DD 07016002bH - DD 05015H - DD imagerel __GSHandlerCheck - DD 0148H -xdata ENDS -; COMDAT CONST -CONST SEGMENT -printf$rtcName$0 DB 05fH - DB 041H - DB 072H - DB 067H - DB 04cH - DB 069H - DB 073H - DB 074H - DB 00H - ORG $+7 -printf$rtcVarDesc DD 048H - DD 08H - DQ FLAT:printf$rtcName$0 - ORG $+48 -printf$rtcFrameData DD 01H - DD 00H - DQ FLAT:printf$rtcVarDesc -CONST ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$_vfprintf_l DD 035053901H - DD 011d3322H - DD 07016001fH - DD 05015H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$__local_stdio_printf_options DD 025051e01H - DD 010a230fH - DD 07003001dH - DD 05002H -xdata ENDS -; COMDAT xdata -xdata SEGMENT $ip2state$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z DB 02H DB 00H DB 00H @@ -1915,7 +1832,7 @@ RipDelta$ = 256 Value$ = 264 ?JitiEmitWrapperB@@YAHKPEAU_NATIVE_CODE_BLOCK@@HK@Z PROC ; JitiEmitWrapperB, COMDAT -; 285 : { +; 283 : { $LN8: 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d @@ -1937,7 +1854,7 @@ $LN8: 00 00 lea rcx, OFFSET FLAT:__DD050276_Jit@cpp 0003e e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 286 : switch (OpType) +; 284 : switch (OpType) 00043 8b 85 f0 00 00 00 mov eax, DWORD PTR OpType$[rbp] @@ -1955,8 +1872,8 @@ $LN8: 0006a eb 4f jmp SHORT $LN2@JitiEmitWr $LN4@JitiEmitWr: -; 287 : { -; 288 : case JIT_BITWISE_XOR: return JitEmitRipRelativeXorB(Block, RipDelta, Value); +; 285 : { +; 286 : case JIT_BITWISE_XOR: return JitEmitRipRelativeXorB(Block, RipDelta, Value); 0006c 44 8b 85 08 01 00 00 mov r8d, DWORD PTR Value$[rbp] @@ -1968,7 +1885,7 @@ $LN4@JitiEmitWr: 00085 eb 34 jmp SHORT $LN1@JitiEmitWr $LN5@JitiEmitWr: -; 289 : case JIT_BITWISE_AND: return JitEmitRipRelativeAndB(Block, RipDelta, Value); +; 287 : case JIT_BITWISE_AND: return JitEmitRipRelativeAndB(Block, RipDelta, Value); 00087 44 8b 85 08 01 00 00 mov r8d, DWORD PTR Value$[rbp] @@ -1980,7 +1897,7 @@ $LN5@JitiEmitWr: 000a0 eb 19 jmp SHORT $LN1@JitiEmitWr $LN6@JitiEmitWr: -; 290 : case JIT_BITWISE_OR: return JitEmitRipRelativeOrB(Block, RipDelta, Value); +; 288 : case JIT_BITWISE_OR: return JitEmitRipRelativeOrB(Block, RipDelta, Value); 000a2 44 8b 85 08 01 00 00 mov r8d, DWORD PTR Value$[rbp] @@ -1992,8 +1909,8 @@ $LN6@JitiEmitWr: $LN2@JitiEmitWr: $LN1@JitiEmitWr: -; 291 : } -; 292 : } +; 289 : } +; 290 : } 000bb 48 8d a5 d8 00 00 00 lea rsp, QWORD PTR [rbp+216] @@ -2013,7 +1930,7 @@ RipDelta$ = 256 Value$ = 264 ?JitiEmitWrapperW@@YAHKPEAU_NATIVE_CODE_BLOCK@@HK@Z PROC ; JitiEmitWrapperW, COMDAT -; 276 : { +; 274 : { $LN8: 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d @@ -2035,7 +1952,7 @@ $LN8: 00 00 lea rcx, OFFSET FLAT:__DD050276_Jit@cpp 0003e e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 277 : switch (OpType) +; 275 : switch (OpType) 00043 8b 85 f0 00 00 00 mov eax, DWORD PTR OpType$[rbp] @@ -2053,8 +1970,8 @@ $LN8: 0006a eb 4f jmp SHORT $LN2@JitiEmitWr $LN4@JitiEmitWr: -; 278 : { -; 279 : case JIT_BITWISE_XOR: return JitEmitRipRelativeXorW(Block, RipDelta, Value); +; 276 : { +; 277 : case JIT_BITWISE_XOR: return JitEmitRipRelativeXorW(Block, RipDelta, Value); 0006c 44 8b 85 08 01 00 00 mov r8d, DWORD PTR Value$[rbp] @@ -2066,7 +1983,7 @@ $LN4@JitiEmitWr: 00085 eb 34 jmp SHORT $LN1@JitiEmitWr $LN5@JitiEmitWr: -; 280 : case JIT_BITWISE_AND: return JitEmitRipRelativeAndW(Block, RipDelta, Value); +; 278 : case JIT_BITWISE_AND: return JitEmitRipRelativeAndW(Block, RipDelta, Value); 00087 44 8b 85 08 01 00 00 mov r8d, DWORD PTR Value$[rbp] @@ -2078,7 +1995,7 @@ $LN5@JitiEmitWr: 000a0 eb 19 jmp SHORT $LN1@JitiEmitWr $LN6@JitiEmitWr: -; 281 : case JIT_BITWISE_OR: return JitEmitRipRelativeOrW(Block, RipDelta, Value); +; 279 : case JIT_BITWISE_OR: return JitEmitRipRelativeOrW(Block, RipDelta, Value); 000a2 44 8b 85 08 01 00 00 mov r8d, DWORD PTR Value$[rbp] @@ -2090,8 +2007,8 @@ $LN6@JitiEmitWr: $LN2@JitiEmitWr: $LN1@JitiEmitWr: -; 282 : } -; 283 : } +; 280 : } +; 281 : } 000bb 48 8d a5 d8 00 00 00 lea rsp, QWORD PTR [rbp+216] @@ -2111,7 +2028,7 @@ RipDelta$ = 256 Value$ = 264 ?JitiEmitWrapperD@@YAHKPEAU_NATIVE_CODE_BLOCK@@HK@Z PROC ; JitiEmitWrapperD, COMDAT -; 267 : { +; 265 : { $LN8: 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d @@ -2133,7 +2050,7 @@ $LN8: 00 00 lea rcx, OFFSET FLAT:__DD050276_Jit@cpp 0003e e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 268 : switch (OpType) +; 266 : switch (OpType) 00043 8b 85 f0 00 00 00 mov eax, DWORD PTR OpType$[rbp] @@ -2151,8 +2068,8 @@ $LN8: 0006a eb 4f jmp SHORT $LN2@JitiEmitWr $LN4@JitiEmitWr: -; 269 : { -; 270 : case JIT_BITWISE_XOR: return JitEmitRipRelativeXorD(Block, RipDelta, Value); +; 267 : { +; 268 : case JIT_BITWISE_XOR: return JitEmitRipRelativeXorD(Block, RipDelta, Value); 0006c 44 8b 85 08 01 00 00 mov r8d, DWORD PTR Value$[rbp] @@ -2164,7 +2081,7 @@ $LN4@JitiEmitWr: 00085 eb 34 jmp SHORT $LN1@JitiEmitWr $LN5@JitiEmitWr: -; 271 : case JIT_BITWISE_AND: return JitEmitRipRelativeAndD(Block, RipDelta, Value); +; 269 : case JIT_BITWISE_AND: return JitEmitRipRelativeAndD(Block, RipDelta, Value); 00087 44 8b 85 08 01 00 00 mov r8d, DWORD PTR Value$[rbp] @@ -2176,7 +2093,7 @@ $LN5@JitiEmitWr: 000a0 eb 19 jmp SHORT $LN1@JitiEmitWr $LN6@JitiEmitWr: -; 272 : case JIT_BITWISE_OR: return JitEmitRipRelativeOrD(Block, RipDelta, Value); +; 270 : case JIT_BITWISE_OR: return JitEmitRipRelativeOrD(Block, RipDelta, Value); 000a2 44 8b 85 08 01 00 00 mov r8d, DWORD PTR Value$[rbp] @@ -2188,8 +2105,8 @@ $LN6@JitiEmitWr: $LN2@JitiEmitWr: $LN1@JitiEmitWr: -; 273 : } -; 274 : } +; 271 : } +; 272 : } 000bb 48 8d a5 d8 00 00 00 lea rsp, QWORD PTR [rbp+216] @@ -2230,7 +2147,7 @@ SaveFlags$ = 728 Delta$ = 736 ?JitEmitPostRipBitwiseOp@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@PEAU_JIT_BITWISE_DATA@@KHH@Z PROC ; JitEmitPostRipBitwiseOp, COMDAT -; 369 : { +; 367 : { $LN29: 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d @@ -2252,7 +2169,7 @@ $LN29: 00 00 lea rcx, OFFSET FLAT:__DD050276_Jit@cpp 00040 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 370 : ULONG FourByte = Link->RawDataSize / 4; +; 368 : ULONG FourByte = Link->RawDataSize / 4; 00045 33 d2 xor edx, edx 00047 48 8b 85 c0 02 @@ -2262,7 +2179,7 @@ $LN29: 00056 f7 f1 div ecx 00058 89 45 04 mov DWORD PTR FourByte$[rbp], eax -; 371 : ULONG TwoByte = (Link->RawDataSize - (FourByte * 4)) / 2; +; 369 : ULONG TwoByte = (Link->RawDataSize - (FourByte * 4)) / 2; 0005b 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 0005e c1 e0 02 shl eax, 2 @@ -2276,7 +2193,7 @@ $LN29: 00076 f7 f1 div ecx 00078 89 45 24 mov DWORD PTR TwoByte$[rbp], eax -; 372 : ULONG OneByte = (Link->RawDataSize - (FourByte * 4) - (TwoByte * 2)); +; 370 : ULONG OneByte = (Link->RawDataSize - (FourByte * 4) - (TwoByte * 2)); 0007b 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 0007e c1 e0 02 shl eax, 2 @@ -2290,8 +2207,8 @@ $LN29: 00094 2b c1 sub eax, ecx 00096 89 45 44 mov DWORD PTR OneByte$[rbp], eax -; 373 : -; 374 : PNATIVE_CODE_BLOCK Block = new NATIVE_CODE_BLOCK; +; 371 : +; 372 : PNATIVE_CODE_BLOCK Block = new NATIVE_CODE_BLOCK; 00099 b9 30 00 00 00 mov ecx, 48 ; 00000030H 0009e e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new @@ -2319,19 +2236,19 @@ $LN17@JitEmitPos: 00 00 mov rax, QWORD PTR $T4[rbp] 000e9 48 89 45 68 mov QWORD PTR Block$[rbp], rax -; 375 : if (!Block) +; 373 : if (!Block) 000ed 48 83 7d 68 00 cmp QWORD PTR Block$[rbp], 0 000f2 75 07 jne SHORT $LN4@JitEmitPos -; 376 : return NULL; +; 374 : return NULL; 000f4 33 c0 xor eax, eax 000f6 e9 ed 03 00 00 jmp $LN1@JitEmitPos $LN4@JitEmitPos: -; 377 : -; 378 : if (SaveFlags && !JitEmitPushfqInst(Block)) +; 375 : +; 376 : if (SaveFlags && !JitEmitPushfqInst(Block)) 000fb 83 bd d8 02 00 00 00 cmp DWORD PTR SaveFlags$[rbp], 0 @@ -2341,13 +2258,13 @@ $LN4@JitEmitPos: 0010d 85 c0 test eax, eax 0010f 75 4a jne SHORT $LN5@JitEmitPos -; 379 : { -; 380 : NcDeleteBlock(Block); +; 377 : { +; 378 : NcDeleteBlock(Block); 00111 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 00115 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 381 : delete Block; +; 379 : delete Block; 0011a 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 0011e 48 89 85 08 02 @@ -2368,30 +2285,30 @@ $LN18@JitEmitPos: 00 mov QWORD PTR tv128[rbp], 0 $LN19@JitEmitPos: -; 382 : return NULL; +; 380 : return NULL; 00154 33 c0 xor eax, eax 00156 e9 8d 03 00 00 jmp $LN1@JitEmitPos $LN5@JitEmitPos: -; 383 : } -; 384 : -; 385 : ULONG Count = FourByte; +; 381 : } +; 382 : +; 383 : ULONG Count = FourByte; 0015b 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 0015e 89 85 84 00 00 00 mov DWORD PTR Count$[rbp], eax $LN2@JitEmitPos: -; 386 : while (Count) +; 384 : while (Count) 00164 83 bd 84 00 00 00 00 cmp DWORD PTR Count$[rbp], 0 0016b 0f 84 11 01 00 00 je $LN3@JitEmitPos -; 387 : { -; 388 : INT32 RipDelta = Link->RawDataSize - ((FourByte - Count) * 4); +; 385 : { +; 386 : INT32 RipDelta = Link->RawDataSize - ((FourByte - Count) * 4); 00171 8b 85 84 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -2407,13 +2324,13 @@ $LN2@JitEmitPos: 0018f 89 85 a4 00 00 00 mov DWORD PTR RipDelta$1[rbp], eax -; 389 : if (SaveFlags) +; 387 : if (SaveFlags) 00195 83 bd d8 02 00 00 00 cmp DWORD PTR SaveFlags$[rbp], 0 0019c 74 0e je SHORT $LN6@JitEmitPos -; 390 : RipDelta += 1; +; 388 : RipDelta += 1; 0019e 8b 85 a4 00 00 00 mov eax, DWORD PTR RipDelta$1[rbp] @@ -2422,7 +2339,7 @@ $LN2@JitEmitPos: 00 mov DWORD PTR RipDelta$1[rbp], eax $LN6@JitEmitPos: -; 391 : RipDelta += (FourByte - (Count - 1)) * DWORD_RIP_INST_LENGTH; +; 389 : RipDelta += (FourByte - (Count - 1)) * DWORD_RIP_INST_LENGTH; 001ac 8b 85 84 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -2438,14 +2355,14 @@ $LN6@JitEmitPos: 001c8 89 85 a4 00 00 00 mov DWORD PTR RipDelta$1[rbp], eax -; 392 : RipDelta *= (-1); +; 390 : RipDelta *= (-1); 001ce 6b 85 a4 00 00 00 ff imul eax, DWORD PTR RipDelta$1[rbp], -1 001d5 89 85 a4 00 00 00 mov DWORD PTR RipDelta$1[rbp], eax -; 393 : RipDelta += Delta; +; 391 : RipDelta += Delta; 001db 8b 85 e0 02 00 00 mov eax, DWORD PTR Delta$[rbp] @@ -2456,7 +2373,7 @@ $LN6@JitEmitPos: 001eb 89 85 a4 00 00 00 mov DWORD PTR RipDelta$1[rbp], eax -; 394 : if (!JitiEmitWrapperD(OpType, Block, RipDelta, JitData->Data[FourByte - Count])) +; 392 : if (!JitiEmitWrapperD(OpType, Block, RipDelta, JitData->Data[FourByte - Count])) 001f1 8b 85 84 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -2476,13 +2393,13 @@ $LN6@JitEmitPos: 00221 85 c0 test eax, eax 00223 75 4a jne SHORT $LN7@JitEmitPos -; 395 : { -; 396 : NcDeleteBlock(Block); +; 393 : { +; 394 : NcDeleteBlock(Block); 00225 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 00229 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 397 : delete Block; +; 395 : delete Block; 0022e 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 00232 48 89 85 28 02 @@ -2503,14 +2420,14 @@ $LN20@JitEmitPos: 00 mov QWORD PTR tv158[rbp], 0 $LN21@JitEmitPos: -; 398 : return NULL; +; 396 : return NULL; 00268 33 c0 xor eax, eax 0026a e9 79 02 00 00 jmp $LN1@JitEmitPos $LN7@JitEmitPos: -; 399 : } -; 400 : --Count; +; 397 : } +; 398 : --Count; 0026f 8b 85 84 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -2518,20 +2435,20 @@ $LN7@JitEmitPos: 00277 89 85 84 00 00 00 mov DWORD PTR Count$[rbp], eax -; 401 : } +; 399 : } 0027d e9 e2 fe ff ff jmp $LN2@JitEmitPos $LN3@JitEmitPos: -; 402 : -; 403 : if (TwoByte) +; 400 : +; 401 : if (TwoByte) 00282 83 7d 24 00 cmp DWORD PTR TwoByte$[rbp], 0 00286 0f 84 ef 00 00 00 je $LN8@JitEmitPos -; 404 : { -; 405 : INT32 RipDelta = Link->RawDataSize - (FourByte * 4); +; 402 : { +; 403 : INT32 RipDelta = Link->RawDataSize - (FourByte * 4); 0028c 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 0028f c1 e0 02 shl eax, 2 @@ -2543,13 +2460,13 @@ $LN3@JitEmitPos: 002a0 89 85 c4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 406 : if (SaveFlags) +; 404 : if (SaveFlags) 002a6 83 bd d8 02 00 00 00 cmp DWORD PTR SaveFlags$[rbp], 0 002ad 74 0e je SHORT $LN9@JitEmitPos -; 407 : RipDelta += 1; +; 405 : RipDelta += 1; 002af 8b 85 c4 00 00 00 mov eax, DWORD PTR RipDelta$2[rbp] @@ -2558,7 +2475,7 @@ $LN3@JitEmitPos: 00 mov DWORD PTR RipDelta$2[rbp], eax $LN9@JitEmitPos: -; 408 : RipDelta += (FourByte * DWORD_RIP_INST_LENGTH); +; 406 : RipDelta += (FourByte * DWORD_RIP_INST_LENGTH); 002bd 6b 45 04 0a imul eax, DWORD PTR FourByte$[rbp], 10 002c1 8b 8d c4 00 00 @@ -2568,7 +2485,7 @@ $LN9@JitEmitPos: 002cb 89 85 c4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 409 : RipDelta += WORD_RIP_INST_LENGTH; +; 407 : RipDelta += WORD_RIP_INST_LENGTH; 002d1 8b 85 c4 00 00 00 mov eax, DWORD PTR RipDelta$2[rbp] @@ -2576,14 +2493,14 @@ $LN9@JitEmitPos: 002da 89 85 c4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 410 : RipDelta *= (-1); +; 408 : RipDelta *= (-1); 002e0 6b 85 c4 00 00 00 ff imul eax, DWORD PTR RipDelta$2[rbp], -1 002e7 89 85 c4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 411 : RipDelta += Delta; +; 409 : RipDelta += Delta; 002ed 8b 85 e0 02 00 00 mov eax, DWORD PTR Delta$[rbp] @@ -2594,7 +2511,7 @@ $LN9@JitEmitPos: 002fd 89 85 c4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 412 : if (!JitiEmitWrapperW(OpType, Block, RipDelta, JitData->Data[3])) +; 410 : if (!JitiEmitWrapperW(OpType, Block, RipDelta, JitData->Data[3])) 00303 b8 04 00 00 00 mov eax, 4 00308 48 6b c0 03 imul rax, rax, 3 @@ -2610,13 +2527,13 @@ $LN9@JitEmitPos: 0032d 85 c0 test eax, eax 0032f 75 4a jne SHORT $LN8@JitEmitPos -; 413 : { -; 414 : NcDeleteBlock(Block); +; 411 : { +; 412 : NcDeleteBlock(Block); 00331 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 00335 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 415 : delete Block; +; 413 : delete Block; 0033a 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 0033e 48 89 85 48 02 @@ -2637,23 +2554,23 @@ $LN22@JitEmitPos: 00 mov QWORD PTR tv185[rbp], 0 $LN23@JitEmitPos: -; 416 : return NULL; +; 414 : return NULL; 00374 33 c0 xor eax, eax 00376 e9 6d 01 00 00 jmp $LN1@JitEmitPos $LN8@JitEmitPos: -; 417 : } -; 418 : } -; 419 : -; 420 : if (OneByte) +; 415 : } +; 416 : } +; 417 : +; 418 : if (OneByte) 0037b 83 7d 44 00 cmp DWORD PTR OneByte$[rbp], 0 0037f 0f 84 02 01 00 00 je $LN11@JitEmitPos -; 421 : { -; 422 : INT32 RipDelta = Link->RawDataSize - (FourByte * 4) - (TwoByte * 2); +; 419 : { +; 420 : INT32 RipDelta = Link->RawDataSize - (FourByte * 4) - (TwoByte * 2); 00385 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 00388 c1 e0 02 shl eax, 2 @@ -2668,13 +2585,13 @@ $LN8@JitEmitPos: 003a0 89 85 e4 00 00 00 mov DWORD PTR RipDelta$3[rbp], eax -; 423 : if (SaveFlags) +; 421 : if (SaveFlags) 003a6 83 bd d8 02 00 00 00 cmp DWORD PTR SaveFlags$[rbp], 0 003ad 74 0e je SHORT $LN12@JitEmitPos -; 424 : RipDelta += 1; +; 422 : RipDelta += 1; 003af 8b 85 e4 00 00 00 mov eax, DWORD PTR RipDelta$3[rbp] @@ -2683,7 +2600,7 @@ $LN8@JitEmitPos: 00 mov DWORD PTR RipDelta$3[rbp], eax $LN12@JitEmitPos: -; 425 : RipDelta += (FourByte * DWORD_RIP_INST_LENGTH); +; 423 : RipDelta += (FourByte * DWORD_RIP_INST_LENGTH); 003bd 6b 45 04 0a imul eax, DWORD PTR FourByte$[rbp], 10 003c1 8b 8d e4 00 00 @@ -2693,7 +2610,7 @@ $LN12@JitEmitPos: 003cb 89 85 e4 00 00 00 mov DWORD PTR RipDelta$3[rbp], eax -; 426 : RipDelta += WORD_RIP_INST_LENGTH; +; 424 : RipDelta += WORD_RIP_INST_LENGTH; 003d1 8b 85 e4 00 00 00 mov eax, DWORD PTR RipDelta$3[rbp] @@ -2701,7 +2618,7 @@ $LN12@JitEmitPos: 003da 89 85 e4 00 00 00 mov DWORD PTR RipDelta$3[rbp], eax -; 427 : RipDelta += BYTE_RIP_INST_LENGTH; +; 425 : RipDelta += BYTE_RIP_INST_LENGTH; 003e0 8b 85 e4 00 00 00 mov eax, DWORD PTR RipDelta$3[rbp] @@ -2709,14 +2626,14 @@ $LN12@JitEmitPos: 003e9 89 85 e4 00 00 00 mov DWORD PTR RipDelta$3[rbp], eax -; 428 : RipDelta *= (-1); +; 426 : RipDelta *= (-1); 003ef 6b 85 e4 00 00 00 ff imul eax, DWORD PTR RipDelta$3[rbp], -1 003f6 89 85 e4 00 00 00 mov DWORD PTR RipDelta$3[rbp], eax -; 429 : RipDelta += Delta; +; 427 : RipDelta += Delta; 003fc 8b 85 e0 02 00 00 mov eax, DWORD PTR Delta$[rbp] @@ -2727,7 +2644,7 @@ $LN12@JitEmitPos: 0040c 89 85 e4 00 00 00 mov DWORD PTR RipDelta$3[rbp], eax -; 430 : if (!JitiEmitWrapperB(OpType, Block, RipDelta, JitData->Data[4])) +; 428 : if (!JitiEmitWrapperB(OpType, Block, RipDelta, JitData->Data[4])) 00412 b8 04 00 00 00 mov eax, 4 00417 48 6b c0 04 imul rax, rax, 4 @@ -2743,13 +2660,13 @@ $LN12@JitEmitPos: 0043c 85 c0 test eax, eax 0043e 75 47 jne SHORT $LN11@JitEmitPos -; 431 : { -; 432 : NcDeleteBlock(Block); +; 429 : { +; 430 : NcDeleteBlock(Block); 00440 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 00444 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 433 : delete Block; +; 431 : delete Block; 00449 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 0044d 48 89 85 68 02 @@ -2770,16 +2687,16 @@ $LN24@JitEmitPos: 00 mov QWORD PTR tv214[rbp], 0 $LN25@JitEmitPos: -; 434 : return NULL; +; 432 : return NULL; 00483 33 c0 xor eax, eax 00485 eb 61 jmp SHORT $LN1@JitEmitPos $LN11@JitEmitPos: -; 435 : } -; 436 : } -; 437 : -; 438 : if (SaveFlags && !JitEmitPopfqInst(Block)) +; 433 : } +; 434 : } +; 435 : +; 436 : if (SaveFlags && !JitEmitPopfqInst(Block)) 00487 83 bd d8 02 00 00 00 cmp DWORD PTR SaveFlags$[rbp], 0 @@ -2789,13 +2706,13 @@ $LN11@JitEmitPos: 00499 85 c0 test eax, eax 0049b 75 47 jne SHORT $LN14@JitEmitPos -; 439 : { -; 440 : NcDeleteBlock(Block); +; 437 : { +; 438 : NcDeleteBlock(Block); 0049d 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 004a1 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 441 : delete Block; +; 439 : delete Block; 004a6 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 004aa 48 89 85 88 02 @@ -2816,20 +2733,20 @@ $LN26@JitEmitPos: 00 mov QWORD PTR tv224[rbp], 0 $LN27@JitEmitPos: -; 442 : return NULL; +; 440 : return NULL; 004e0 33 c0 xor eax, eax 004e2 eb 04 jmp SHORT $LN1@JitEmitPos $LN14@JitEmitPos: -; 443 : } -; 444 : -; 445 : return Block; +; 441 : } +; 442 : +; 443 : return Block; 004e4 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] $LN1@JitEmitPos: -; 446 : } +; 444 : } 004e8 48 8d a5 a8 02 00 00 lea rsp, QWORD PTR [rbp+680] @@ -2961,7 +2878,7 @@ SaveFlags$ = 728 Delta$ = 736 ?JitEmitPreRipBitwiseOp@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@PEAU_JIT_BITWISE_DATA@@KHH@Z PROC ; JitEmitPreRipBitwiseOp, COMDAT -; 295 : { +; 293 : { $LN29: 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d @@ -2983,7 +2900,7 @@ $LN29: 00 00 lea rcx, OFFSET FLAT:__DD050276_Jit@cpp 00040 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 296 : ULONG FourByte = Link->RawDataSize / 4; +; 294 : ULONG FourByte = Link->RawDataSize / 4; 00045 33 d2 xor edx, edx 00047 48 8b 85 c0 02 @@ -2993,7 +2910,7 @@ $LN29: 00056 f7 f1 div ecx 00058 89 45 04 mov DWORD PTR FourByte$[rbp], eax -; 297 : ULONG TwoByte = (Link->RawDataSize - (FourByte * 4)) / 2; +; 295 : ULONG TwoByte = (Link->RawDataSize - (FourByte * 4)) / 2; 0005b 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 0005e c1 e0 02 shl eax, 2 @@ -3007,7 +2924,7 @@ $LN29: 00076 f7 f1 div ecx 00078 89 45 24 mov DWORD PTR TwoByte$[rbp], eax -; 298 : ULONG OneByte = (Link->RawDataSize - (FourByte * 4) - (TwoByte * 2)); +; 296 : ULONG OneByte = (Link->RawDataSize - (FourByte * 4) - (TwoByte * 2)); 0007b 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 0007e c1 e0 02 shl eax, 2 @@ -3021,8 +2938,8 @@ $LN29: 00094 2b c1 sub eax, ecx 00096 89 45 44 mov DWORD PTR OneByte$[rbp], eax -; 299 : -; 300 : PNATIVE_CODE_BLOCK Block = new NATIVE_CODE_BLOCK; +; 297 : +; 298 : PNATIVE_CODE_BLOCK Block = new NATIVE_CODE_BLOCK; 00099 b9 30 00 00 00 mov ecx, 48 ; 00000030H 0009e e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new @@ -3050,19 +2967,19 @@ $LN17@JitEmitPre: 00 00 mov rax, QWORD PTR $T4[rbp] 000e9 48 89 45 68 mov QWORD PTR Block$[rbp], rax -; 301 : if (!Block) +; 299 : if (!Block) 000ed 48 83 7d 68 00 cmp QWORD PTR Block$[rbp], 0 000f2 75 07 jne SHORT $LN4@JitEmitPre -; 302 : return NULL; +; 300 : return NULL; 000f4 33 c0 xor eax, eax 000f6 e9 67 03 00 00 jmp $LN1@JitEmitPre $LN4@JitEmitPre: -; 303 : -; 304 : if (SaveFlags && !JitEmitPushfqInst(Block)) +; 301 : +; 302 : if (SaveFlags && !JitEmitPushfqInst(Block)) 000fb 83 bd d8 02 00 00 00 cmp DWORD PTR SaveFlags$[rbp], 0 @@ -3072,13 +2989,13 @@ $LN4@JitEmitPre: 0010d 85 c0 test eax, eax 0010f 75 4a jne SHORT $LN5@JitEmitPre -; 305 : { -; 306 : NcDeleteBlock(Block); +; 303 : { +; 304 : NcDeleteBlock(Block); 00111 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 00115 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 307 : delete Block; +; 305 : delete Block; 0011a 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 0011e 48 89 85 08 02 @@ -3099,30 +3016,30 @@ $LN18@JitEmitPre: 00 mov QWORD PTR tv128[rbp], 0 $LN19@JitEmitPre: -; 308 : return NULL; +; 306 : return NULL; 00154 33 c0 xor eax, eax 00156 e9 07 03 00 00 jmp $LN1@JitEmitPre $LN5@JitEmitPre: -; 309 : } -; 310 : -; 311 : ULONG Count = FourByte; +; 307 : } +; 308 : +; 309 : ULONG Count = FourByte; 0015b 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 0015e 89 85 84 00 00 00 mov DWORD PTR Count$[rbp], eax $LN2@JitEmitPre: -; 312 : while (Count) +; 310 : while (Count) 00164 83 bd 84 00 00 00 00 cmp DWORD PTR Count$[rbp], 0 0016b 0f 84 f7 00 00 00 je $LN3@JitEmitPre -; 313 : { -; 314 : INT32 RipDelta = (((Count - 1) * DWORD_RIP_INST_LENGTH) + (TwoByte * WORD_RIP_INST_LENGTH) + (OneByte * BYTE_RIP_INST_LENGTH)); +; 311 : { +; 312 : INT32 RipDelta = (((Count - 1) * DWORD_RIP_INST_LENGTH) + (TwoByte * WORD_RIP_INST_LENGTH) + (OneByte * BYTE_RIP_INST_LENGTH)); 00171 8b 85 84 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -3135,13 +3052,13 @@ $LN2@JitEmitPre: 00188 89 85 a4 00 00 00 mov DWORD PTR RipDelta$1[rbp], eax -; 315 : if (SaveFlags) +; 313 : if (SaveFlags) 0018e 83 bd d8 02 00 00 00 cmp DWORD PTR SaveFlags$[rbp], 0 00195 74 0e je SHORT $LN6@JitEmitPre -; 316 : RipDelta += 1; +; 314 : RipDelta += 1; 00197 8b 85 a4 00 00 00 mov eax, DWORD PTR RipDelta$1[rbp] @@ -3150,7 +3067,7 @@ $LN2@JitEmitPre: 00 mov DWORD PTR RipDelta$1[rbp], eax $LN6@JitEmitPre: -; 317 : RipDelta += ((FourByte - Count) * 4); +; 315 : RipDelta += ((FourByte - Count) * 4); 001a5 8b 85 84 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -3163,7 +3080,7 @@ $LN6@JitEmitPre: 001bb 89 85 a4 00 00 00 mov DWORD PTR RipDelta$1[rbp], eax -; 318 : RipDelta += Delta; +; 316 : RipDelta += Delta; 001c1 8b 85 e0 02 00 00 mov eax, DWORD PTR Delta$[rbp] @@ -3174,7 +3091,7 @@ $LN6@JitEmitPre: 001d1 89 85 a4 00 00 00 mov DWORD PTR RipDelta$1[rbp], eax -; 319 : if (!JitiEmitWrapperD(OpType, Block, RipDelta, JitData->Data[FourByte - Count])) +; 317 : if (!JitiEmitWrapperD(OpType, Block, RipDelta, JitData->Data[FourByte - Count])) 001d7 8b 85 84 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -3194,13 +3111,13 @@ $LN6@JitEmitPre: 00207 85 c0 test eax, eax 00209 75 4a jne SHORT $LN7@JitEmitPre -; 320 : { -; 321 : NcDeleteBlock(Block); +; 318 : { +; 319 : NcDeleteBlock(Block); 0020b 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 0020f e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 322 : delete Block; +; 320 : delete Block; 00214 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 00218 48 89 85 28 02 @@ -3221,14 +3138,14 @@ $LN20@JitEmitPre: 00 mov QWORD PTR tv158[rbp], 0 $LN21@JitEmitPre: -; 323 : return NULL; +; 321 : return NULL; 0024e 33 c0 xor eax, eax 00250 e9 0d 02 00 00 jmp $LN1@JitEmitPre $LN7@JitEmitPre: -; 324 : } -; 325 : --Count; +; 322 : } +; 323 : --Count; 00255 8b 85 84 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -3236,32 +3153,32 @@ $LN7@JitEmitPre: 0025d 89 85 84 00 00 00 mov DWORD PTR Count$[rbp], eax -; 326 : } +; 324 : } 00263 e9 fc fe ff ff jmp $LN2@JitEmitPre $LN3@JitEmitPre: -; 327 : -; 328 : if (TwoByte) +; 325 : +; 326 : if (TwoByte) 00268 83 7d 24 00 cmp DWORD PTR TwoByte$[rbp], 0 0026c 0f 84 c1 00 00 00 je $LN8@JitEmitPre -; 329 : { -; 330 : INT32 RipDelta = (OneByte * BYTE_RIP_INST_LENGTH); +; 327 : { +; 328 : INT32 RipDelta = (OneByte * BYTE_RIP_INST_LENGTH); 00272 6b 45 44 07 imul eax, DWORD PTR OneByte$[rbp], 7 00276 89 85 c4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 331 : if (SaveFlags) +; 329 : if (SaveFlags) 0027c 83 bd d8 02 00 00 00 cmp DWORD PTR SaveFlags$[rbp], 0 00283 74 0e je SHORT $LN9@JitEmitPre -; 332 : RipDelta += 1; +; 330 : RipDelta += 1; 00285 8b 85 c4 00 00 00 mov eax, DWORD PTR RipDelta$2[rbp] @@ -3270,7 +3187,7 @@ $LN3@JitEmitPre: 00 mov DWORD PTR RipDelta$2[rbp], eax $LN9@JitEmitPre: -; 333 : RipDelta += (FourByte * 4); +; 331 : RipDelta += (FourByte * 4); 00293 8b 85 c4 00 00 00 mov eax, DWORD PTR RipDelta$2[rbp] @@ -3279,7 +3196,7 @@ $LN9@JitEmitPre: 0029f 89 85 c4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 334 : RipDelta += Delta; +; 332 : RipDelta += Delta; 002a5 8b 85 e0 02 00 00 mov eax, DWORD PTR Delta$[rbp] @@ -3290,7 +3207,7 @@ $LN9@JitEmitPre: 002b5 89 85 c4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 335 : if (!JitiEmitWrapperW(OpType, Block, RipDelta, JitData->Data[3])) +; 333 : if (!JitiEmitWrapperW(OpType, Block, RipDelta, JitData->Data[3])) 002bb b8 04 00 00 00 mov eax, 4 002c0 48 6b c0 03 imul rax, rax, 3 @@ -3306,13 +3223,13 @@ $LN9@JitEmitPre: 002e5 85 c0 test eax, eax 002e7 75 4a jne SHORT $LN8@JitEmitPre -; 336 : { -; 337 : NcDeleteBlock(Block); +; 334 : { +; 335 : NcDeleteBlock(Block); 002e9 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 002ed e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 338 : delete Block; +; 336 : delete Block; 002f2 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 002f6 48 89 85 48 02 @@ -3333,34 +3250,34 @@ $LN22@JitEmitPre: 00 mov QWORD PTR tv181[rbp], 0 $LN23@JitEmitPre: -; 339 : return NULL; +; 337 : return NULL; 0032c 33 c0 xor eax, eax 0032e e9 2f 01 00 00 jmp $LN1@JitEmitPre $LN8@JitEmitPre: -; 340 : } -; 341 : } -; 342 : -; 343 : if (OneByte) +; 338 : } +; 339 : } +; 340 : +; 341 : if (OneByte) 00333 83 7d 44 00 cmp DWORD PTR OneByte$[rbp], 0 00337 0f 84 c4 00 00 00 je $LN11@JitEmitPre -; 344 : { -; 345 : INT32 RipDelta = 0; +; 342 : { +; 343 : INT32 RipDelta = 0; 0033d c7 85 e4 00 00 00 00 00 00 00 mov DWORD PTR RipDelta$3[rbp], 0 -; 346 : if (SaveFlags) +; 344 : if (SaveFlags) 00347 83 bd d8 02 00 00 00 cmp DWORD PTR SaveFlags$[rbp], 0 0034e 74 0e je SHORT $LN12@JitEmitPre -; 347 : RipDelta += 1; +; 345 : RipDelta += 1; 00350 8b 85 e4 00 00 00 mov eax, DWORD PTR RipDelta$3[rbp] @@ -3369,7 +3286,7 @@ $LN8@JitEmitPre: 00 mov DWORD PTR RipDelta$3[rbp], eax $LN12@JitEmitPre: -; 348 : RipDelta += (FourByte * 4) + (TwoByte * 2); +; 346 : RipDelta += (FourByte * 4) + (TwoByte * 2); 0035e 8b 85 e4 00 00 00 mov eax, DWORD PTR RipDelta$3[rbp] @@ -3380,7 +3297,7 @@ $LN12@JitEmitPre: 00370 89 85 e4 00 00 00 mov DWORD PTR RipDelta$3[rbp], eax -; 349 : RipDelta += Delta; +; 347 : RipDelta += Delta; 00376 8b 85 e0 02 00 00 mov eax, DWORD PTR Delta$[rbp] @@ -3391,7 +3308,7 @@ $LN12@JitEmitPre: 00386 89 85 e4 00 00 00 mov DWORD PTR RipDelta$3[rbp], eax -; 350 : if (!JitiEmitWrapperB(OpType, Block, RipDelta, JitData->Data[4])) +; 348 : if (!JitiEmitWrapperB(OpType, Block, RipDelta, JitData->Data[4])) 0038c b8 04 00 00 00 mov eax, 4 00391 48 6b c0 04 imul rax, rax, 4 @@ -3407,13 +3324,13 @@ $LN12@JitEmitPre: 003b6 85 c0 test eax, eax 003b8 75 47 jne SHORT $LN11@JitEmitPre -; 351 : { -; 352 : NcDeleteBlock(Block); +; 349 : { +; 350 : NcDeleteBlock(Block); 003ba 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 003be e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 353 : delete Block; +; 351 : delete Block; 003c3 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 003c7 48 89 85 68 02 @@ -3434,16 +3351,16 @@ $LN24@JitEmitPre: 00 mov QWORD PTR tv204[rbp], 0 $LN25@JitEmitPre: -; 354 : return NULL; +; 352 : return NULL; 003fd 33 c0 xor eax, eax 003ff eb 61 jmp SHORT $LN1@JitEmitPre $LN11@JitEmitPre: -; 355 : } -; 356 : } -; 357 : -; 358 : if (SaveFlags && !JitEmitPopfqInst(Block)) +; 353 : } +; 354 : } +; 355 : +; 356 : if (SaveFlags && !JitEmitPopfqInst(Block)) 00401 83 bd d8 02 00 00 00 cmp DWORD PTR SaveFlags$[rbp], 0 @@ -3453,13 +3370,13 @@ $LN11@JitEmitPre: 00413 85 c0 test eax, eax 00415 75 47 jne SHORT $LN14@JitEmitPre -; 359 : { -; 360 : NcDeleteBlock(Block); +; 357 : { +; 358 : NcDeleteBlock(Block); 00417 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 0041b e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 361 : delete Block; +; 359 : delete Block; 00420 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 00424 48 89 85 88 02 @@ -3480,20 +3397,20 @@ $LN26@JitEmitPre: 00 mov QWORD PTR tv214[rbp], 0 $LN27@JitEmitPre: -; 362 : return NULL; +; 360 : return NULL; 0045a 33 c0 xor eax, eax 0045c eb 04 jmp SHORT $LN1@JitEmitPre $LN14@JitEmitPre: -; 363 : } -; 364 : -; 365 : return Block; +; 361 : } +; 362 : +; 363 : return Block; 0045e 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] $LN1@JitEmitPre: -; 366 : } +; 364 : } 00462 48 8d a5 a8 02 00 00 lea rsp, QWORD PTR [rbp+680] @@ -3615,8 +3532,8 @@ $T11 = 840 $T12 = 872 $T13 = 904 $T14 = 936 -tv209 = 952 -tv196 = 952 +tv210 = 952 +tv197 = 952 tv173 = 952 tv152 = 952 tv131 = 952 @@ -3626,7 +3543,7 @@ Link$ = 1008 Delta$ = 1016 ?JitEmitPostRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z PROC ; JitEmitPostRipMov, COMDAT -; 201 : { +; 199 : { $LN25: 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx @@ -3651,7 +3568,7 @@ $LN25: 00 00 lea rcx, OFFSET FLAT:__DD050276_Jit@cpp 00046 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 202 : ULONG FourByte = Link->RawDataSize / 4; +; 200 : ULONG FourByte = Link->RawDataSize / 4; 0004b 33 d2 xor edx, edx 0004d 48 8b 85 f0 03 @@ -3661,7 +3578,7 @@ $LN25: 0005c f7 f1 div ecx 0005e 89 45 04 mov DWORD PTR FourByte$[rbp], eax -; 203 : ULONG TwoByte = (Link->RawDataSize - (FourByte * 4)) / 2; +; 201 : ULONG TwoByte = (Link->RawDataSize - (FourByte * 4)) / 2; 00061 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 00064 c1 e0 02 shl eax, 2 @@ -3675,7 +3592,7 @@ $LN25: 0007c f7 f1 div ecx 0007e 89 45 24 mov DWORD PTR TwoByte$[rbp], eax -; 204 : ULONG OneByte = (Link->RawDataSize - (FourByte * 4) - (TwoByte * 2)); +; 202 : ULONG OneByte = (Link->RawDataSize - (FourByte * 4) - (TwoByte * 2)); 00081 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 00084 c1 e0 02 shl eax, 2 @@ -3689,8 +3606,8 @@ $LN25: 0009a 2b c1 sub eax, ecx 0009c 89 45 44 mov DWORD PTR OneByte$[rbp], eax -; 205 : -; 206 : PNATIVE_CODE_BLOCK Block = new NATIVE_CODE_BLOCK; +; 203 : +; 204 : PNATIVE_CODE_BLOCK Block = new NATIVE_CODE_BLOCK; 0009f b9 30 00 00 00 mov ecx, 48 ; 00000030H 000a4 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new @@ -3718,8 +3635,8 @@ $LN12@JitEmitPos: 00 00 mov rax, QWORD PTR $T7[rbp] 000ef 48 89 45 68 mov QWORD PTR Block$[rbp], rax -; 207 : -; 208 : Block->Start = Block->End = new NATIVE_CODE_LINK; +; 205 : +; 206 : Block->Start = Block->End = new NATIVE_CODE_LINK; 000f3 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H 000f8 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new @@ -3752,27 +3669,27 @@ $LN14@JitEmitPos: 00 00 mov rcx, QWORD PTR $T9[rbp] 00156 48 89 08 mov QWORD PTR [rax], rcx -; 209 : ULONG ZeroValue = 0; +; 207 : ULONG ZeroValue = 0; 00159 c7 85 84 00 00 00 00 00 00 00 mov DWORD PTR ZeroValue$[rbp], 0 -; 210 : ULONG Count = FourByte; +; 208 : ULONG Count = FourByte; 00163 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 00166 89 85 a4 00 00 00 mov DWORD PTR Count$[rbp], eax $LN2@JitEmitPos: -; 211 : while (Count) +; 209 : while (Count) 0016c 83 bd a4 00 00 00 00 cmp DWORD PTR Count$[rbp], 0 00173 0f 84 e0 00 00 00 je $LN3@JitEmitPos -; 212 : { -; 213 : INT32 RipDelta = Link->RawDataSize - ((FourByte - Count) * 4); +; 210 : { +; 211 : INT32 RipDelta = Link->RawDataSize - ((FourByte - Count) * 4); 00179 8b 85 a4 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -3788,7 +3705,7 @@ $LN2@JitEmitPos: 00197 89 85 c4 00 00 00 mov DWORD PTR RipDelta$4[rbp], eax -; 214 : RipDelta += (FourByte - (Count - 1)) * DWORD_MOV_INST_LENGTH; +; 212 : RipDelta += (FourByte - (Count - 1)) * DWORD_MOV_INST_LENGTH; 0019d 8b 85 a4 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -3804,14 +3721,14 @@ $LN2@JitEmitPos: 001b9 89 85 c4 00 00 00 mov DWORD PTR RipDelta$4[rbp], eax -; 215 : RipDelta *= (-1); +; 213 : RipDelta *= (-1); 001bf 6b 85 c4 00 00 00 ff imul eax, DWORD PTR RipDelta$4[rbp], -1 001c6 89 85 c4 00 00 00 mov DWORD PTR RipDelta$4[rbp], eax -; 216 : RipDelta += Delta; +; 214 : RipDelta += Delta; 001cc 8b 85 f8 03 00 00 mov eax, DWORD PTR Delta$[rbp] @@ -3822,7 +3739,7 @@ $LN2@JitEmitPos: 001dc 89 85 c4 00 00 00 mov DWORD PTR RipDelta$4[rbp], eax -; 217 : if (!JitEmitRipRelativeMovD(Block, RipDelta, (PUCHAR)&ZeroValue)) +; 215 : if (!JitEmitRipRelativeMovD(Block, RipDelta, (PUCHAR)&ZeroValue)) 001e2 4c 8d 85 84 00 00 00 lea r8, QWORD PTR ZeroValue$[rbp] @@ -3833,13 +3750,13 @@ $LN2@JitEmitPos: 001f8 85 c0 test eax, eax 001fa 75 4a jne SHORT $LN4@JitEmitPos -; 218 : { -; 219 : NcDeleteBlock(Block); +; 216 : { +; 217 : NcDeleteBlock(Block); 001fc 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 00200 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 220 : delete Block; +; 218 : delete Block; 00205 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 00209 48 89 85 48 03 @@ -3860,14 +3777,14 @@ $LN15@JitEmitPos: 00 mov QWORD PTR tv152[rbp], 0 $LN16@JitEmitPos: -; 221 : return NULL; +; 219 : return NULL; 0023f 33 c0 xor eax, eax - 00241 e9 3b 02 00 00 jmp $LN1@JitEmitPos + 00241 e9 40 02 00 00 jmp $LN1@JitEmitPos $LN4@JitEmitPos: -; 222 : } -; 223 : --Count; +; 220 : } +; 221 : --Count; 00246 8b 85 a4 00 00 00 mov eax, DWORD PTR Count$[rbp] @@ -3875,20 +3792,20 @@ $LN4@JitEmitPos: 0024e 89 85 a4 00 00 00 mov DWORD PTR Count$[rbp], eax -; 224 : } +; 222 : } 00254 e9 13 ff ff ff jmp $LN2@JitEmitPos $LN3@JitEmitPos: -; 225 : -; 226 : if (TwoByte) +; 223 : +; 224 : if (TwoByte) 00259 83 7d 24 00 cmp DWORD PTR TwoByte$[rbp], 0 0025d 0f 84 c4 00 00 00 je $LN5@JitEmitPos -; 227 : { -; 228 : INT32 RipDelta = Link->RawDataSize - (FourByte * 4); +; 225 : { +; 226 : INT32 RipDelta = Link->RawDataSize - (FourByte * 4); 00263 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 00266 c1 e0 02 shl eax, 2 @@ -3900,7 +3817,7 @@ $LN3@JitEmitPos: 00277 89 85 e4 00 00 00 mov DWORD PTR RipDelta$5[rbp], eax -; 229 : RipDelta += (FourByte * DWORD_MOV_INST_LENGTH); +; 227 : RipDelta += (FourByte * DWORD_MOV_INST_LENGTH); 0027d 6b 45 04 0a imul eax, DWORD PTR FourByte$[rbp], 10 00281 8b 8d e4 00 00 @@ -3910,7 +3827,7 @@ $LN3@JitEmitPos: 0028b 89 85 e4 00 00 00 mov DWORD PTR RipDelta$5[rbp], eax -; 230 : RipDelta += WORD_MOV_INST_LENGTH; +; 228 : RipDelta += WORD_MOV_INST_LENGTH; 00291 8b 85 e4 00 00 00 mov eax, DWORD PTR RipDelta$5[rbp] @@ -3918,14 +3835,14 @@ $LN3@JitEmitPos: 0029a 89 85 e4 00 00 00 mov DWORD PTR RipDelta$5[rbp], eax -; 231 : RipDelta *= (-1); +; 229 : RipDelta *= (-1); 002a0 6b 85 e4 00 00 00 ff imul eax, DWORD PTR RipDelta$5[rbp], -1 002a7 89 85 e4 00 00 00 mov DWORD PTR RipDelta$5[rbp], eax -; 232 : RipDelta += Delta; +; 230 : RipDelta += Delta; 002ad 8b 85 f8 03 00 00 mov eax, DWORD PTR Delta$[rbp] @@ -3936,7 +3853,7 @@ $LN3@JitEmitPos: 002bd 89 85 e4 00 00 00 mov DWORD PTR RipDelta$5[rbp], eax -; 233 : if (!JitEmitRipRelativeMovW(Block, RipDelta, (PUCHAR)&ZeroValue)) +; 231 : if (!JitEmitRipRelativeMovW(Block, RipDelta, (PUCHAR)&ZeroValue)) 002c3 4c 8d 85 84 00 00 00 lea r8, QWORD PTR ZeroValue$[rbp] @@ -3947,13 +3864,13 @@ $LN3@JitEmitPos: 002d9 85 c0 test eax, eax 002db 75 4a jne SHORT $LN5@JitEmitPos -; 234 : { -; 235 : NcDeleteBlock(Block); +; 232 : { +; 233 : NcDeleteBlock(Block); 002dd 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] 002e1 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 236 : delete Block; +; 234 : delete Block; 002e6 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] 002ea 48 89 85 68 03 @@ -3974,23 +3891,23 @@ $LN17@JitEmitPos: 00 mov QWORD PTR tv173[rbp], 0 $LN18@JitEmitPos: -; 237 : return NULL; +; 235 : return NULL; 00320 33 c0 xor eax, eax - 00322 e9 5a 01 00 00 jmp $LN1@JitEmitPos + 00322 e9 5f 01 00 00 jmp $LN1@JitEmitPos $LN5@JitEmitPos: -; 238 : } -; 239 : } -; 240 : -; 241 : if (OneByte) +; 236 : } +; 237 : } +; 238 : +; 239 : if (OneByte) 00327 83 7d 44 00 cmp DWORD PTR OneByte$[rbp], 0 - 0032b 0f 84 d7 00 00 + 0032b 0f 84 dc 00 00 00 je $LN7@JitEmitPos -; 242 : { -; 243 : INT32 RipDelta = Link->RawDataSize - (FourByte * 4) - (TwoByte * 2); +; 240 : { +; 241 : INT32 RipDelta = Link->RawDataSize - (FourByte * 4) - (TwoByte * 2); 00331 8b 45 04 mov eax, DWORD PTR FourByte$[rbp] 00334 c1 e0 02 shl eax, 2 @@ -4005,7 +3922,7 @@ $LN5@JitEmitPos: 0034c 89 85 04 01 00 00 mov DWORD PTR RipDelta$6[rbp], eax -; 244 : RipDelta += (FourByte * DWORD_MOV_INST_LENGTH); +; 242 : RipDelta += (FourByte * DWORD_MOV_INST_LENGTH); 00352 6b 45 04 0a imul eax, DWORD PTR FourByte$[rbp], 10 00356 8b 8d 04 01 00 @@ -4015,161 +3932,163 @@ $LN5@JitEmitPos: 00360 89 85 04 01 00 00 mov DWORD PTR RipDelta$6[rbp], eax -; 245 : RipDelta += WORD_MOV_INST_LENGTH; +; 243 : RipDelta += (TwoByte * WORD_MOV_INST_LENGTH); - 00366 8b 85 04 01 00 - 00 mov eax, DWORD PTR RipDelta$6[rbp] - 0036c 83 c0 09 add eax, 9 - 0036f 89 85 04 01 00 + 00366 6b 45 24 09 imul eax, DWORD PTR TwoByte$[rbp], 9 + 0036a 8b 8d 04 01 00 + 00 mov ecx, DWORD PTR RipDelta$6[rbp] + 00370 03 c8 add ecx, eax + 00372 8b c1 mov eax, ecx + 00374 89 85 04 01 00 00 mov DWORD PTR RipDelta$6[rbp], eax -; 246 : RipDelta += BYTE_MOV_INST_LENGTH; +; 244 : RipDelta += BYTE_MOV_INST_LENGTH; - 00375 8b 85 04 01 00 + 0037a 8b 85 04 01 00 00 mov eax, DWORD PTR RipDelta$6[rbp] - 0037b 83 c0 07 add eax, 7 - 0037e 89 85 04 01 00 + 00380 83 c0 07 add eax, 7 + 00383 89 85 04 01 00 00 mov DWORD PTR RipDelta$6[rbp], eax -; 247 : RipDelta *= (-1); +; 245 : RipDelta *= (-1); - 00384 6b 85 04 01 00 + 00389 6b 85 04 01 00 00 ff imul eax, DWORD PTR RipDelta$6[rbp], -1 - 0038b 89 85 04 01 00 + 00390 89 85 04 01 00 00 mov DWORD PTR RipDelta$6[rbp], eax -; 248 : RipDelta += Delta; +; 246 : RipDelta += Delta; - 00391 8b 85 f8 03 00 + 00396 8b 85 f8 03 00 00 mov eax, DWORD PTR Delta$[rbp] - 00397 8b 8d 04 01 00 + 0039c 8b 8d 04 01 00 00 mov ecx, DWORD PTR RipDelta$6[rbp] - 0039d 03 c8 add ecx, eax - 0039f 8b c1 mov eax, ecx - 003a1 89 85 04 01 00 + 003a2 03 c8 add ecx, eax + 003a4 8b c1 mov eax, ecx + 003a6 89 85 04 01 00 00 mov DWORD PTR RipDelta$6[rbp], eax -; 249 : if (!JitEmitRipRelativeMovB(Block, RipDelta, (PUCHAR)&ZeroValue)) +; 247 : if (!JitEmitRipRelativeMovB(Block, RipDelta, (PUCHAR)&ZeroValue)) - 003a7 4c 8d 85 84 00 + 003ac 4c 8d 85 84 00 00 00 lea r8, QWORD PTR ZeroValue$[rbp] - 003ae 8b 95 04 01 00 + 003b3 8b 95 04 01 00 00 mov edx, DWORD PTR RipDelta$6[rbp] - 003b4 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] - 003b8 e8 00 00 00 00 call ?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ; JitEmitRipRelativeMovB - 003bd 85 c0 test eax, eax - 003bf 75 47 jne SHORT $LN7@JitEmitPos + 003b9 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] + 003bd e8 00 00 00 00 call ?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ; JitEmitRipRelativeMovB + 003c2 85 c0 test eax, eax + 003c4 75 47 jne SHORT $LN7@JitEmitPos -; 250 : { -; 251 : NcDeleteBlock(Block); +; 248 : { +; 249 : NcDeleteBlock(Block); - 003c1 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] - 003c5 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock + 003c6 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] + 003ca e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 252 : delete Block; +; 250 : delete Block; - 003ca 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 003ce 48 89 85 88 03 + 003cf 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 003d3 48 89 85 88 03 00 00 mov QWORD PTR $T13[rbp], rax - 003d5 48 83 bd 88 03 + 003da 48 83 bd 88 03 00 00 00 cmp QWORD PTR $T13[rbp], 0 - 003dd 74 1a je SHORT $LN19@JitEmitPos - 003df ba 01 00 00 00 mov edx, 1 - 003e4 48 8b 8d 88 03 + 003e2 74 1a je SHORT $LN19@JitEmitPos + 003e4 ba 01 00 00 00 mov edx, 1 + 003e9 48 8b 8d 88 03 00 00 mov rcx, QWORD PTR $T13[rbp] - 003eb e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 003f0 48 89 85 b8 03 - 00 00 mov QWORD PTR tv196[rbp], rax - 003f7 eb 0b jmp SHORT $LN20@JitEmitPos + 003f0 e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z + 003f5 48 89 85 b8 03 + 00 00 mov QWORD PTR tv197[rbp], rax + 003fc eb 0b jmp SHORT $LN20@JitEmitPos $LN19@JitEmitPos: - 003f9 48 c7 85 b8 03 + 003fe 48 c7 85 b8 03 00 00 00 00 00 - 00 mov QWORD PTR tv196[rbp], 0 + 00 mov QWORD PTR tv197[rbp], 0 $LN20@JitEmitPos: -; 253 : return NULL; +; 251 : return NULL; - 00404 33 c0 xor eax, eax - 00406 eb 79 jmp SHORT $LN1@JitEmitPos + 00409 33 c0 xor eax, eax + 0040b eb 79 jmp SHORT $LN1@JitEmitPos $LN7@JitEmitPos: -; 254 : } -; 255 : } -; 256 : -; 257 : PNATIVE_CODE_LINK StartLink = Block->Start; +; 252 : } +; 253 : } +; 254 : +; 255 : PNATIVE_CODE_LINK StartLink = Block->Start; - 00408 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 0040c 48 8b 00 mov rax, QWORD PTR [rax] - 0040f 48 89 85 28 01 + 0040d 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 00411 48 8b 00 mov rax, QWORD PTR [rax] + 00414 48 89 85 28 01 00 00 mov QWORD PTR StartLink$[rbp], rax -; 258 : Block->Start = Block->Start->Next; +; 256 : Block->Start = Block->Start->Next; - 00416 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 0041a 48 8b 00 mov rax, QWORD PTR [rax] - 0041d 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] - 00421 48 8b 00 mov rax, QWORD PTR [rax] - 00424 48 89 01 mov QWORD PTR [rcx], rax + 0041b 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 0041f 48 8b 00 mov rax, QWORD PTR [rax] + 00422 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] + 00426 48 8b 00 mov rax, QWORD PTR [rax] + 00429 48 89 01 mov QWORD PTR [rcx], rax -; 259 : if (Block->Start) +; 257 : if (Block->Start) - 00427 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 0042b 48 83 38 00 cmp QWORD PTR [rax], 0 - 0042f 74 0f je SHORT $LN9@JitEmitPos + 0042c 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 00430 48 83 38 00 cmp QWORD PTR [rax], 0 + 00434 74 0f je SHORT $LN9@JitEmitPos -; 260 : Block->Start->Prev = NULL; +; 258 : Block->Start->Prev = NULL; - 00431 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 00435 48 8b 00 mov rax, QWORD PTR [rax] - 00438 48 c7 40 08 00 + 00436 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 0043a 48 8b 00 mov rax, QWORD PTR [rax] + 0043d 48 c7 40 08 00 00 00 00 mov QWORD PTR [rax+8], 0 $LN9@JitEmitPos: -; 261 : delete StartLink; +; 259 : delete StartLink; - 00440 48 8b 85 28 01 + 00445 48 8b 85 28 01 00 00 mov rax, QWORD PTR StartLink$[rbp] - 00447 48 89 85 a8 03 + 0044c 48 89 85 a8 03 00 00 mov QWORD PTR $T14[rbp], rax - 0044e 48 83 bd a8 03 + 00453 48 83 bd a8 03 00 00 00 cmp QWORD PTR $T14[rbp], 0 - 00456 74 1a je SHORT $LN21@JitEmitPos - 00458 ba 01 00 00 00 mov edx, 1 - 0045d 48 8b 8d a8 03 + 0045b 74 1a je SHORT $LN21@JitEmitPos + 0045d ba 01 00 00 00 mov edx, 1 + 00462 48 8b 8d a8 03 00 00 mov rcx, QWORD PTR $T14[rbp] - 00464 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z - 00469 48 89 85 b8 03 - 00 00 mov QWORD PTR tv209[rbp], rax - 00470 eb 0b jmp SHORT $LN22@JitEmitPos + 00469 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z + 0046e 48 89 85 b8 03 + 00 00 mov QWORD PTR tv210[rbp], rax + 00475 eb 0b jmp SHORT $LN22@JitEmitPos $LN21@JitEmitPos: - 00472 48 c7 85 b8 03 + 00477 48 c7 85 b8 03 00 00 00 00 00 - 00 mov QWORD PTR tv209[rbp], 0 + 00 mov QWORD PTR tv210[rbp], 0 $LN22@JitEmitPos: -; 262 : -; 263 : return Block; +; 260 : +; 261 : return Block; - 0047d 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 00482 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] $LN1@JitEmitPos: -; 264 : } +; 262 : } - 00481 48 8b f8 mov rdi, rax - 00484 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 00488 48 8d 15 00 00 + 00486 48 8b f8 mov rdi, rax + 00489 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] + 0048d 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitPostRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z$rtcFrameData - 0048f e8 00 00 00 00 call _RTC_CheckStackVars - 00494 48 8b c7 mov rax, rdi - 00497 48 8b 8d c0 03 + 00494 e8 00 00 00 00 call _RTC_CheckStackVars + 00499 48 8b c7 mov rax, rdi + 0049c 48 8b 8d c0 03 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 0049e 48 33 cd xor rcx, rbp - 004a1 e8 00 00 00 00 call __security_check_cookie - 004a6 48 8d a5 d8 03 + 004a3 48 33 cd xor rcx, rbp + 004a6 e8 00 00 00 00 call __security_check_cookie + 004ab 48 8d a5 d8 03 00 00 lea rsp, QWORD PTR [rbp+984] - 004ad 5f pop rdi - 004ae 5d pop rbp - 004af c3 ret 0 + 004b2 5f pop rdi + 004b3 5d pop rbp + 004b4 c3 ret 0 ?JitEmitPostRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z ENDP ; JitEmitPostRipMov _TEXT ENDS ; COMDAT text$x @@ -4192,8 +4111,8 @@ $T11 = 840 $T12 = 872 $T13 = 904 $T14 = 936 -tv209 = 952 -tv196 = 952 +tv210 = 952 +tv197 = 952 tv173 = 952 tv152 = 952 tv131 = 952 @@ -4238,8 +4157,8 @@ $T11 = 840 $T12 = 872 $T13 = 904 $T14 = 936 -tv209 = 952 -tv196 = 952 +tv210 = 952 +tv197 = 952 tv173 = 952 tv152 = 952 tv131 = 952 @@ -4285,8 +4204,8 @@ $T11 = 840 $T12 = 872 $T13 = 904 $T14 = 936 -tv209 = 952 -tv196 = 952 +tv210 = 952 +tv197 = 952 tv173 = 952 tv152 = 952 tv131 = 952 @@ -4332,8 +4251,8 @@ $T11 = 840 $T12 = 872 $T13 = 904 $T14 = 936 -tv209 = 952 -tv196 = 952 +tv210 = 952 +tv197 = 952 tv173 = 952 tv152 = 952 tv131 = 952 @@ -4380,10 +4299,10 @@ $T8 = 840 $T9 = 872 $T10 = 904 $T11 = 936 -tv205 = 952 -tv192 = 952 -tv174 = 952 -tv156 = 952 +tv202 = 952 +tv189 = 952 +tv171 = 952 +tv153 = 952 tv131 = 952 tv86 = 952 Link$ = 992 @@ -4530,7 +4449,7 @@ $LN2@JitEmitPre: 00163 83 bd a4 00 00 00 00 cmp DWORD PTR Count$[rbp], 0 - 0016a 0f 84 f8 00 00 + 0016a 0f 84 d8 00 00 00 je $LN3@JitEmitPre ; 145 : { @@ -4574,322 +4493,307 @@ $LN2@JitEmitPre: 00 mov DWORD PTR RipDelta$1[rbp], eax ; 151 : //Add the actual instruction -; 152 : printf("%p IS THE DATAOFFSET\n", DataOffset); - - 001bf 48 8b 95 88 00 - 00 00 mov rdx, QWORD PTR DataOffset$[rbp] - 001c6 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_0BG@BLDOCDOA@?$CFp?5IS?5THE?5DATAOFFSET?6@ - 001cd e8 00 00 00 00 call printf - -; 153 : system("pause"); - - 001d2 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_05PDJBBECF@pause@ - 001d9 ff 15 00 00 00 - 00 call QWORD PTR __imp_system - -; 154 : if (!JitEmitRipRelativeMovD(Block, RipDelta, DataOffset)) +; 152 : if (!JitEmitRipRelativeMovD(Block, RipDelta, DataOffset)) - 001df 4c 8b 85 88 00 + 001bf 4c 8b 85 88 00 00 00 mov r8, QWORD PTR DataOffset$[rbp] - 001e6 8b 95 c4 00 00 + 001c6 8b 95 c4 00 00 00 mov edx, DWORD PTR RipDelta$1[rbp] - 001ec 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] - 001f0 e8 00 00 00 00 call ?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ; JitEmitRipRelativeMovD - 001f5 85 c0 test eax, eax - 001f7 75 4a jne SHORT $LN4@JitEmitPre + 001cc 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] + 001d0 e8 00 00 00 00 call ?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ; JitEmitRipRelativeMovD + 001d5 85 c0 test eax, eax + 001d7 75 4a jne SHORT $LN4@JitEmitPre -; 155 : { -; 156 : NcDeleteBlock(Block); +; 153 : { +; 154 : NcDeleteBlock(Block); - 001f9 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] - 001fd e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock + 001d9 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] + 001dd e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 157 : delete Block; +; 155 : delete Block; - 00202 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 00206 48 89 85 48 03 + 001e2 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 001e6 48 89 85 48 03 00 00 mov QWORD PTR $T8[rbp], rax - 0020d 48 83 bd 48 03 + 001ed 48 83 bd 48 03 00 00 00 cmp QWORD PTR $T8[rbp], 0 - 00215 74 1a je SHORT $LN15@JitEmitPre - 00217 ba 01 00 00 00 mov edx, 1 - 0021c 48 8b 8d 48 03 + 001f5 74 1a je SHORT $LN15@JitEmitPre + 001f7 ba 01 00 00 00 mov edx, 1 + 001fc 48 8b 8d 48 03 00 00 mov rcx, QWORD PTR $T8[rbp] - 00223 e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 00228 48 89 85 b8 03 - 00 00 mov QWORD PTR tv156[rbp], rax - 0022f eb 0b jmp SHORT $LN16@JitEmitPre + 00203 e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z + 00208 48 89 85 b8 03 + 00 00 mov QWORD PTR tv153[rbp], rax + 0020f eb 0b jmp SHORT $LN16@JitEmitPre $LN15@JitEmitPre: - 00231 48 c7 85 b8 03 + 00211 48 c7 85 b8 03 00 00 00 00 00 - 00 mov QWORD PTR tv156[rbp], 0 + 00 mov QWORD PTR tv153[rbp], 0 $LN16@JitEmitPre: -; 158 : return NULL; +; 156 : return NULL; - 0023c 33 c0 xor eax, eax - 0023e e9 f3 01 00 00 jmp $LN1@JitEmitPre + 0021c 33 c0 xor eax, eax + 0021e e9 f3 01 00 00 jmp $LN1@JitEmitPre $LN4@JitEmitPre: -; 159 : } -; 160 : DataOffset += 4; +; 157 : } +; 158 : DataOffset += 4; - 00243 48 8b 85 88 00 + 00223 48 8b 85 88 00 00 00 mov rax, QWORD PTR DataOffset$[rbp] - 0024a 48 83 c0 04 add rax, 4 - 0024e 48 89 85 88 00 + 0022a 48 83 c0 04 add rax, 4 + 0022e 48 89 85 88 00 00 00 mov QWORD PTR DataOffset$[rbp], rax -; 161 : --Count; +; 159 : --Count; - 00255 8b 85 a4 00 00 + 00235 8b 85 a4 00 00 00 mov eax, DWORD PTR Count$[rbp] - 0025b ff c8 dec eax - 0025d 89 85 a4 00 00 + 0023b ff c8 dec eax + 0023d 89 85 a4 00 00 00 mov DWORD PTR Count$[rbp], eax -; 162 : } +; 160 : } - 00263 e9 fb fe ff ff jmp $LN2@JitEmitPre + 00243 e9 1b ff ff ff jmp $LN2@JitEmitPre $LN3@JitEmitPre: -; 163 : -; 164 : if (TwoByte) +; 161 : +; 162 : if (TwoByte) - 00268 83 7d 24 00 cmp DWORD PTR TwoByte$[rbp], 0 - 0026c 0f 84 a8 00 00 + 00248 83 7d 24 00 cmp DWORD PTR TwoByte$[rbp], 0 + 0024c 0f 84 a8 00 00 00 je $LN5@JitEmitPre -; 165 : { -; 166 : INT32 RipDelta = (OneByte * BYTE_MOV_INST_LENGTH); +; 163 : { +; 164 : INT32 RipDelta = (OneByte * BYTE_MOV_INST_LENGTH); - 00272 6b 45 44 07 imul eax, DWORD PTR OneByte$[rbp], 7 - 00276 89 85 e4 00 00 + 00252 6b 45 44 07 imul eax, DWORD PTR OneByte$[rbp], 7 + 00256 89 85 e4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 167 : RipDelta += (FourByte * 4); +; 165 : RipDelta += (FourByte * 4); - 0027c 8b 85 e4 00 00 + 0025c 8b 85 e4 00 00 00 mov eax, DWORD PTR RipDelta$2[rbp] - 00282 8b 4d 04 mov ecx, DWORD PTR FourByte$[rbp] - 00285 8d 04 88 lea eax, DWORD PTR [rax+rcx*4] - 00288 89 85 e4 00 00 + 00262 8b 4d 04 mov ecx, DWORD PTR FourByte$[rbp] + 00265 8d 04 88 lea eax, DWORD PTR [rax+rcx*4] + 00268 89 85 e4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 168 : RipDelta += Delta; +; 166 : RipDelta += Delta; - 0028e 8b 85 e8 03 00 + 0026e 8b 85 e8 03 00 00 mov eax, DWORD PTR Delta$[rbp] - 00294 8b 8d e4 00 00 + 00274 8b 8d e4 00 00 00 mov ecx, DWORD PTR RipDelta$2[rbp] - 0029a 03 c8 add ecx, eax - 0029c 8b c1 mov eax, ecx - 0029e 89 85 e4 00 00 + 0027a 03 c8 add ecx, eax + 0027c 8b c1 mov eax, ecx + 0027e 89 85 e4 00 00 00 mov DWORD PTR RipDelta$2[rbp], eax -; 169 : if (!JitEmitRipRelativeMovW(Block, RipDelta, DataOffset)) +; 167 : if (!JitEmitRipRelativeMovW(Block, RipDelta, DataOffset)) - 002a4 4c 8b 85 88 00 + 00284 4c 8b 85 88 00 00 00 mov r8, QWORD PTR DataOffset$[rbp] - 002ab 8b 95 e4 00 00 + 0028b 8b 95 e4 00 00 00 mov edx, DWORD PTR RipDelta$2[rbp] - 002b1 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] - 002b5 e8 00 00 00 00 call ?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ; JitEmitRipRelativeMovW - 002ba 85 c0 test eax, eax - 002bc 75 4a jne SHORT $LN6@JitEmitPre + 00291 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] + 00295 e8 00 00 00 00 call ?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ; JitEmitRipRelativeMovW + 0029a 85 c0 test eax, eax + 0029c 75 4a jne SHORT $LN6@JitEmitPre -; 170 : { -; 171 : NcDeleteBlock(Block); +; 168 : { +; 169 : NcDeleteBlock(Block); - 002be 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] - 002c2 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock + 0029e 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] + 002a2 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 172 : delete Block; +; 170 : delete Block; - 002c7 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 002cb 48 89 85 68 03 + 002a7 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 002ab 48 89 85 68 03 00 00 mov QWORD PTR $T9[rbp], rax - 002d2 48 83 bd 68 03 + 002b2 48 83 bd 68 03 00 00 00 cmp QWORD PTR $T9[rbp], 0 - 002da 74 1a je SHORT $LN17@JitEmitPre - 002dc ba 01 00 00 00 mov edx, 1 - 002e1 48 8b 8d 68 03 + 002ba 74 1a je SHORT $LN17@JitEmitPre + 002bc ba 01 00 00 00 mov edx, 1 + 002c1 48 8b 8d 68 03 00 00 mov rcx, QWORD PTR $T9[rbp] - 002e8 e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 002ed 48 89 85 b8 03 - 00 00 mov QWORD PTR tv174[rbp], rax - 002f4 eb 0b jmp SHORT $LN18@JitEmitPre + 002c8 e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z + 002cd 48 89 85 b8 03 + 00 00 mov QWORD PTR tv171[rbp], rax + 002d4 eb 0b jmp SHORT $LN18@JitEmitPre $LN17@JitEmitPre: - 002f6 48 c7 85 b8 03 + 002d6 48 c7 85 b8 03 00 00 00 00 00 - 00 mov QWORD PTR tv174[rbp], 0 + 00 mov QWORD PTR tv171[rbp], 0 $LN18@JitEmitPre: -; 173 : return NULL; +; 171 : return NULL; - 00301 33 c0 xor eax, eax - 00303 e9 2e 01 00 00 jmp $LN1@JitEmitPre + 002e1 33 c0 xor eax, eax + 002e3 e9 2e 01 00 00 jmp $LN1@JitEmitPre $LN6@JitEmitPre: -; 174 : } -; 175 : DataOffset += 2; +; 172 : } +; 173 : DataOffset += 2; - 00308 48 8b 85 88 00 + 002e8 48 8b 85 88 00 00 00 mov rax, QWORD PTR DataOffset$[rbp] - 0030f 48 83 c0 02 add rax, 2 - 00313 48 89 85 88 00 + 002ef 48 83 c0 02 add rax, 2 + 002f3 48 89 85 88 00 00 00 mov QWORD PTR DataOffset$[rbp], rax $LN5@JitEmitPre: -; 176 : } -; 177 : -; 178 : if (OneByte) +; 174 : } +; 175 : +; 176 : if (OneByte) - 0031a 83 7d 44 00 cmp DWORD PTR OneByte$[rbp], 0 - 0031e 0f 84 99 00 00 + 002fa 83 7d 44 00 cmp DWORD PTR OneByte$[rbp], 0 + 002fe 0f 84 99 00 00 00 je $LN7@JitEmitPre -; 179 : { -; 180 : INT32 RipDelta = 0; +; 177 : { +; 178 : INT32 RipDelta = 0; - 00324 c7 85 04 01 00 + 00304 c7 85 04 01 00 00 00 00 00 00 mov DWORD PTR RipDelta$3[rbp], 0 -; 181 : RipDelta += (FourByte * 4) + (TwoByte * 2); +; 179 : RipDelta += (FourByte * 4) + (TwoByte * 2); - 0032e 8b 85 04 01 00 + 0030e 8b 85 04 01 00 00 mov eax, DWORD PTR RipDelta$3[rbp] - 00334 8b 4d 04 mov ecx, DWORD PTR FourByte$[rbp] - 00337 8d 04 88 lea eax, DWORD PTR [rax+rcx*4] - 0033a 8b 4d 24 mov ecx, DWORD PTR TwoByte$[rbp] - 0033d 8d 04 48 lea eax, DWORD PTR [rax+rcx*2] - 00340 89 85 04 01 00 + 00314 8b 4d 04 mov ecx, DWORD PTR FourByte$[rbp] + 00317 8d 04 88 lea eax, DWORD PTR [rax+rcx*4] + 0031a 8b 4d 24 mov ecx, DWORD PTR TwoByte$[rbp] + 0031d 8d 04 48 lea eax, DWORD PTR [rax+rcx*2] + 00320 89 85 04 01 00 00 mov DWORD PTR RipDelta$3[rbp], eax -; 182 : RipDelta += Delta; +; 180 : RipDelta += Delta; - 00346 8b 85 e8 03 00 + 00326 8b 85 e8 03 00 00 mov eax, DWORD PTR Delta$[rbp] - 0034c 8b 8d 04 01 00 + 0032c 8b 8d 04 01 00 00 mov ecx, DWORD PTR RipDelta$3[rbp] - 00352 03 c8 add ecx, eax - 00354 8b c1 mov eax, ecx - 00356 89 85 04 01 00 + 00332 03 c8 add ecx, eax + 00334 8b c1 mov eax, ecx + 00336 89 85 04 01 00 00 mov DWORD PTR RipDelta$3[rbp], eax -; 183 : if (!JitEmitRipRelativeMovB(Block, RipDelta, DataOffset)) +; 181 : if (!JitEmitRipRelativeMovB(Block, RipDelta, DataOffset)) - 0035c 4c 8b 85 88 00 + 0033c 4c 8b 85 88 00 00 00 mov r8, QWORD PTR DataOffset$[rbp] - 00363 8b 95 04 01 00 + 00343 8b 95 04 01 00 00 mov edx, DWORD PTR RipDelta$3[rbp] - 00369 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] - 0036d e8 00 00 00 00 call ?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ; JitEmitRipRelativeMovB - 00372 85 c0 test eax, eax - 00374 75 47 jne SHORT $LN7@JitEmitPre + 00349 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] + 0034d e8 00 00 00 00 call ?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ; JitEmitRipRelativeMovB + 00352 85 c0 test eax, eax + 00354 75 47 jne SHORT $LN7@JitEmitPre -; 184 : { -; 185 : NcDeleteBlock(Block); +; 182 : { +; 183 : NcDeleteBlock(Block); - 00376 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] - 0037a e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock + 00356 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] + 0035a e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 186 : delete Block; +; 184 : delete Block; - 0037f 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 00383 48 89 85 88 03 + 0035f 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 00363 48 89 85 88 03 00 00 mov QWORD PTR $T10[rbp], rax - 0038a 48 83 bd 88 03 + 0036a 48 83 bd 88 03 00 00 00 cmp QWORD PTR $T10[rbp], 0 - 00392 74 1a je SHORT $LN19@JitEmitPre - 00394 ba 01 00 00 00 mov edx, 1 - 00399 48 8b 8d 88 03 + 00372 74 1a je SHORT $LN19@JitEmitPre + 00374 ba 01 00 00 00 mov edx, 1 + 00379 48 8b 8d 88 03 00 00 mov rcx, QWORD PTR $T10[rbp] - 003a0 e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 003a5 48 89 85 b8 03 - 00 00 mov QWORD PTR tv192[rbp], rax - 003ac eb 0b jmp SHORT $LN20@JitEmitPre + 00380 e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z + 00385 48 89 85 b8 03 + 00 00 mov QWORD PTR tv189[rbp], rax + 0038c eb 0b jmp SHORT $LN20@JitEmitPre $LN19@JitEmitPre: - 003ae 48 c7 85 b8 03 + 0038e 48 c7 85 b8 03 00 00 00 00 00 - 00 mov QWORD PTR tv192[rbp], 0 + 00 mov QWORD PTR tv189[rbp], 0 $LN20@JitEmitPre: -; 187 : return NULL; +; 185 : return NULL; - 003b9 33 c0 xor eax, eax - 003bb eb 79 jmp SHORT $LN1@JitEmitPre + 00399 33 c0 xor eax, eax + 0039b eb 79 jmp SHORT $LN1@JitEmitPre $LN7@JitEmitPre: -; 188 : } -; 189 : } -; 190 : -; 191 : PNATIVE_CODE_LINK StartLink = Block->Start; +; 186 : } +; 187 : } +; 188 : +; 189 : PNATIVE_CODE_LINK StartLink = Block->Start; - 003bd 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 003c1 48 8b 00 mov rax, QWORD PTR [rax] - 003c4 48 89 85 28 01 + 0039d 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 003a1 48 8b 00 mov rax, QWORD PTR [rax] + 003a4 48 89 85 28 01 00 00 mov QWORD PTR StartLink$[rbp], rax -; 192 : Block->Start = Block->Start->Next; +; 190 : Block->Start = Block->Start->Next; - 003cb 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 003cf 48 8b 00 mov rax, QWORD PTR [rax] - 003d2 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] - 003d6 48 8b 00 mov rax, QWORD PTR [rax] - 003d9 48 89 01 mov QWORD PTR [rcx], rax + 003ab 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 003af 48 8b 00 mov rax, QWORD PTR [rax] + 003b2 48 8b 4d 68 mov rcx, QWORD PTR Block$[rbp] + 003b6 48 8b 00 mov rax, QWORD PTR [rax] + 003b9 48 89 01 mov QWORD PTR [rcx], rax -; 193 : if (Block->Start) +; 191 : if (Block->Start) - 003dc 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 003e0 48 83 38 00 cmp QWORD PTR [rax], 0 - 003e4 74 0f je SHORT $LN9@JitEmitPre + 003bc 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 003c0 48 83 38 00 cmp QWORD PTR [rax], 0 + 003c4 74 0f je SHORT $LN9@JitEmitPre -; 194 : Block->Start->Prev = NULL; +; 192 : Block->Start->Prev = NULL; - 003e6 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] - 003ea 48 8b 00 mov rax, QWORD PTR [rax] - 003ed 48 c7 40 08 00 + 003c6 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 003ca 48 8b 00 mov rax, QWORD PTR [rax] + 003cd 48 c7 40 08 00 00 00 00 mov QWORD PTR [rax+8], 0 $LN9@JitEmitPre: -; 195 : delete StartLink; +; 193 : delete StartLink; - 003f5 48 8b 85 28 01 + 003d5 48 8b 85 28 01 00 00 mov rax, QWORD PTR StartLink$[rbp] - 003fc 48 89 85 a8 03 + 003dc 48 89 85 a8 03 00 00 mov QWORD PTR $T11[rbp], rax - 00403 48 83 bd a8 03 + 003e3 48 83 bd a8 03 00 00 00 cmp QWORD PTR $T11[rbp], 0 - 0040b 74 1a je SHORT $LN21@JitEmitPre - 0040d ba 01 00 00 00 mov edx, 1 - 00412 48 8b 8d a8 03 + 003eb 74 1a je SHORT $LN21@JitEmitPre + 003ed ba 01 00 00 00 mov edx, 1 + 003f2 48 8b 8d a8 03 00 00 mov rcx, QWORD PTR $T11[rbp] - 00419 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z - 0041e 48 89 85 b8 03 - 00 00 mov QWORD PTR tv205[rbp], rax - 00425 eb 0b jmp SHORT $LN22@JitEmitPre + 003f9 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z + 003fe 48 89 85 b8 03 + 00 00 mov QWORD PTR tv202[rbp], rax + 00405 eb 0b jmp SHORT $LN22@JitEmitPre $LN21@JitEmitPre: - 00427 48 c7 85 b8 03 + 00407 48 c7 85 b8 03 00 00 00 00 00 - 00 mov QWORD PTR tv205[rbp], 0 + 00 mov QWORD PTR tv202[rbp], 0 $LN22@JitEmitPre: -; 196 : -; 197 : return Block; +; 194 : +; 195 : return Block; - 00432 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] + 00412 48 8b 45 68 mov rax, QWORD PTR Block$[rbp] $LN1@JitEmitPre: -; 198 : } +; 196 : } - 00436 48 8d a5 c8 03 + 00416 48 8d a5 c8 03 00 00 lea rsp, QWORD PTR [rbp+968] - 0043d 5f pop rdi - 0043e 5d pop rbp - 0043f c3 ret 0 + 0041d 5f pop rdi + 0041e 5d pop rbp + 0041f c3 ret 0 ?JitEmitPreRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z ENDP ; JitEmitPreRipMov _TEXT ENDS ; COMDAT text$x @@ -4912,10 +4816,10 @@ $T8 = 840 $T9 = 872 $T10 = 904 $T11 = 936 -tv205 = 952 -tv192 = 952 -tv174 = 952 -tv156 = 952 +tv202 = 952 +tv189 = 952 +tv171 = 952 +tv153 = 952 tv131 = 952 tv86 = 952 Link$ = 992 @@ -4957,10 +4861,10 @@ $T8 = 840 $T9 = 872 $T10 = 904 $T11 = 936 -tv205 = 952 -tv192 = 952 -tv174 = 952 -tv156 = 952 +tv202 = 952 +tv189 = 952 +tv171 = 952 +tv153 = 952 tv131 = 952 tv86 = 952 Link$ = 992 @@ -5003,10 +4907,10 @@ $T8 = 840 $T9 = 872 $T10 = 904 $T11 = 936 -tv205 = 952 -tv192 = 952 -tv174 = 952 -tv156 = 952 +tv202 = 952 +tv189 = 952 +tv171 = 952 +tv153 = 952 tv131 = 952 tv86 = 952 Link$ = 992 @@ -5049,10 +4953,10 @@ $T8 = 840 $T9 = 872 $T10 = 904 $T11 = 936 -tv205 = 952 -tv192 = 952 -tv174 = 952 -tv156 = 952 +tv202 = 952 +tv189 = 952 +tv171 = 952 +tv153 = 952 tv131 = 952 tv86 = 952 Link$ = 992 @@ -8011,195 +7915,6 @@ $LN3: wmemcpy ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\stdio.h -; COMDAT printf -_TEXT SEGMENT -_Result$ = 4 -_ArgList$ = 40 -tv77 = 280 -tv75 = 288 -__$ArrayPad$ = 296 -_Format$ = 336 -printf PROC ; COMDAT - -; 956 : { - -$LN3: - 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 0000a 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 - 0000f 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 - 00014 55 push rbp - 00015 57 push rdi - 00016 48 81 ec 58 01 - 00 00 sub rsp, 344 ; 00000158H - 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00022 48 8b fc mov rdi, rsp - 00025 b9 56 00 00 00 mov ecx, 86 ; 00000056H - 0002a b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002f f3 ab rep stosd - 00031 48 8b 8c 24 78 - 01 00 00 mov rcx, QWORD PTR [rsp+376] - 00039 48 8b 05 00 00 - 00 00 mov rax, QWORD PTR __security_cookie - 00040 48 33 c5 xor rax, rbp - 00043 48 89 85 28 01 - 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 0004a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__6DFAE8B8_stdio@h - 00051 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 957 : int _Result; -; 958 : va_list _ArgList; -; 959 : __crt_va_start(_ArgList, _Format); - - 00056 48 8d 85 58 01 - 00 00 lea rax, QWORD PTR _Format$[rbp+8] - 0005d 48 89 45 28 mov QWORD PTR _ArgList$[rbp], rax - -; 960 : _Result = _vfprintf_l(stdout, _Format, NULL, _ArgList); - - 00061 48 8b 45 28 mov rax, QWORD PTR _ArgList$[rbp] - 00065 48 89 85 18 01 - 00 00 mov QWORD PTR tv77[rbp], rax - 0006c b9 01 00 00 00 mov ecx, 1 - 00071 ff 15 00 00 00 - 00 call QWORD PTR __imp___acrt_iob_func - 00077 48 89 85 20 01 - 00 00 mov QWORD PTR tv75[rbp], rax - 0007e 4c 8b 8d 18 01 - 00 00 mov r9, QWORD PTR tv77[rbp] - 00085 45 33 c0 xor r8d, r8d - 00088 48 8b 95 50 01 - 00 00 mov rdx, QWORD PTR _Format$[rbp] - 0008f 48 8b 8d 20 01 - 00 00 mov rcx, QWORD PTR tv75[rbp] - 00096 e8 00 00 00 00 call _vfprintf_l - 0009b 89 45 04 mov DWORD PTR _Result$[rbp], eax - -; 961 : __crt_va_end(_ArgList); - - 0009e 48 c7 45 28 00 - 00 00 00 mov QWORD PTR _ArgList$[rbp], 0 - -; 962 : return _Result; - - 000a6 8b 45 04 mov eax, DWORD PTR _Result$[rbp] - -; 963 : } - - 000a9 8b f8 mov edi, eax - 000ab 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 000af 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:printf$rtcFrameData - 000b6 e8 00 00 00 00 call _RTC_CheckStackVars - 000bb 8b c7 mov eax, edi - 000bd 48 8b 8d 28 01 - 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 000c4 48 33 cd xor rcx, rbp - 000c7 e8 00 00 00 00 call __security_check_cookie - 000cc 48 8d a5 38 01 - 00 00 lea rsp, QWORD PTR [rbp+312] - 000d3 5f pop rdi - 000d4 5d pop rbp - 000d5 c3 ret 0 -printf ENDP -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\stdio.h -; COMDAT _vfprintf_l -_TEXT SEGMENT -_Stream$ = 224 -_Format$ = 232 -_Locale$ = 240 -_ArgList$ = 248 -_vfprintf_l PROC ; COMDAT - -; 644 : { - -$LN3: - 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 - 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 - 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00014 55 push rbp - 00015 57 push rdi - 00016 48 81 ec f8 00 - 00 00 sub rsp, 248 ; 000000f8H - 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] - 00022 48 8b fc mov rdi, rsp - 00025 b9 3e 00 00 00 mov ecx, 62 ; 0000003eH - 0002a b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002f f3 ab rep stosd - 00031 48 8b 8c 24 18 - 01 00 00 mov rcx, QWORD PTR [rsp+280] - 00039 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__6DFAE8B8_stdio@h - 00040 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 645 : return __stdio_common_vfprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _Stream, _Format, _Locale, _ArgList); - - 00045 e8 00 00 00 00 call __local_stdio_printf_options - 0004a 48 8b 8d f8 00 - 00 00 mov rcx, QWORD PTR _ArgList$[rbp] - 00051 48 89 4c 24 20 mov QWORD PTR [rsp+32], rcx - 00056 4c 8b 8d f0 00 - 00 00 mov r9, QWORD PTR _Locale$[rbp] - 0005d 4c 8b 85 e8 00 - 00 00 mov r8, QWORD PTR _Format$[rbp] - 00064 48 8b 95 e0 00 - 00 00 mov rdx, QWORD PTR _Stream$[rbp] - 0006b 48 8b 08 mov rcx, QWORD PTR [rax] - 0006e ff 15 00 00 00 - 00 call QWORD PTR __imp___stdio_common_vfprintf - -; 646 : } - - 00074 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 0007b 5f pop rdi - 0007c 5d pop rbp - 0007d c3 ret 0 -_vfprintf_l ENDP -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_stdio_config.h -; COMDAT __local_stdio_printf_options -_TEXT SEGMENT -__local_stdio_printf_options PROC ; COMDAT - -; 90 : { - -$LN3: - 00000 40 55 push rbp - 00002 57 push rdi - 00003 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0000f 48 8b fc mov rdi, rsp - 00012 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 00017 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0001c f3 ab rep stosd - 0001e 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A2143F22_corecrt_stdio_config@h - 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 91 : static unsigned __int64 _OptionsStorage; -; 92 : return &_OptionsStorage; - - 0002a 48 8d 05 00 00 - 00 00 lea rax, OFFSET FLAT:?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA ; `__local_stdio_printf_options'::`2'::_OptionsStorage - -; 93 : } - - 00031 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00038 5f pop rdi - 00039 5d pop rbp - 0003a c3 ret 0 -__local_stdio_printf_options ENDP -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI ; File C:\$Fanta\code-virtualizer\CodeVirtualizer\Jit.cpp ; COMDAT ?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z _TEXT SEGMENT diff --git a/CodeVirtualizer/x64/Debug/Main.cod b/CodeVirtualizer/x64/Debug/Main.cod index c81270d..70e2ba9 100644 --- a/CodeVirtualizer/x64/Debug/Main.cod +++ b/CodeVirtualizer/x64/Debug/Main.cod @@ -8,6 +8,7 @@ INCLUDELIB OLDNAMES PUBLIC ?TestBuffer@@3PAEA ; TestBuffer PUBLIC ?TestBufferSize@@3KA ; TestBufferSize PUBLIC ?meme1@@3PAEA ; meme1 +PUBLIC ?meme2@@3PAEA ; meme2 msvcjmc SEGMENT __B2D2BA86_ctype@h DB 01H __79C7FC57_basetsd@h DB 01H @@ -77,7 +78,6 @@ __BB5B4FF8_xed-encode@h DB 01H __21860875_xed-encoder-hl@h DB 01H __F7815311_xed-decoded-inst-api@h DB 01H __4031338C_Main@cpp DB 01H -__BF2A7ACC_vector DB 01H __7EA464AF_istream DB 01H __1D745195_ostream DB 01H __6FFBAAB7_streambuf DB 01H @@ -135,10 +135,14 @@ _DATA SEGMENT DB 04H DB 024H DB 0c3H - ORG $+2 +?meme2@@3PAEA DB 0c3H ; meme2 + ORG $+1 ?TestBufferSize@@3KA DD 02eH ; TestBufferSize -?meme1@@3PAEA DB 031H ; meme1 +?meme1@@3PAEA DB 0b8H ; meme1 + DB 0deH DB 0c0H + DB 0acH + DB 0eH _DATA ENDS PUBLIC ?__empty_global_delete@@YAXPEAX@Z ; __empty_global_delete PUBLIC ?__empty_global_delete@@YAXPEAX_K@Z ; __empty_global_delete @@ -148,8 +152,6 @@ PUBLIC __local_stdio_printf_options PUBLIC _vfprintf_l PUBLIC printf PUBLIC wmemcpy -PUBLIC ?_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z ; std::_Adjust_manually_vector_aligned -PUBLIC ?_Orphan_all@_Container_base12@std@@QEAAXXZ ; std::_Container_base12::_Orphan_all PUBLIC ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z ; std::_Narrow_char_traits::eq_int_type PUBLIC ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof PUBLIC ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ; std::_Maklocstr @@ -158,13 +160,6 @@ PUBLIC ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ; std::_Maklocstr > >::_Getvals PUBLIC ??$_Getvals@_W@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z ; std::time_get > >::_Getvals -PUBLIC ?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z ; std::allocator::deallocate -PUBLIC ??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ ; std::vector >::~vector > -PUBLIC ?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z ; std::vector >::_Destroy -PUBLIC ?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ ; std::vector >::_Tidy -PUBLIC ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ; std::vector >::_Getal -PUBLIC ?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first -PUBLIC ??1_NATIVE_CODE_BLOCK@@QEAA@XZ ; _NATIVE_CODE_BLOCK::~_NATIVE_CODE_BLOCK PUBLIC ?MakeExecutableBuffer@@YAPEAXPEAXK@Z ; MakeExecutableBuffer PUBLIC main PUBLIC ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z ; std::operator<< > @@ -172,49 +167,32 @@ PUBLIC ??$?6DU?$char_traits@D@std@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits PUBLIC ??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z ; std::setfill PUBLIC ??0?$_Fillobj@D@std@@QEAA@D@Z ; std::_Fillobj::_Fillobj PUBLIC ??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z ; std::operator<<,char> -PUBLIC ??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z ; std::allocator::allocator -PUBLIC ??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z ; std::exchange -PUBLIC ??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z ; std::_Delete_plain_internal > PUBLIC ??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z ; std::basic_ostream >::_Sentry_base::_Sentry_base PUBLIC ??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ ; std::basic_ostream >::_Sentry_base::~_Sentry_base PUBLIC ??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z ; std::basic_ostream >::sentry::sentry PUBLIC ??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ ; std::basic_ostream >::sentry::~sentry PUBLIC ??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ ; std::basic_ostream >::sentry::operator bool -PUBLIC ??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z ; std::_Destroy_range > -PUBLIC ??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z ; std::_Deallocate<16,0> -PUBLIC ??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z ; std::_Deallocate_plain > -PUBLIC ?deallocate@?$_Default_allocator_traits@V?$allocator@U_Container_proxy@std@@@std@@@std@@SAXAEAV?$allocator@U_Container_proxy@std@@@2@QEAU_Container_proxy@2@_K@Z ; std::_Default_allocator_traits >::deallocate PUBLIC __JustMyCode_Default PUBLIC ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA ; `__local_stdio_printf_options'::`2'::_OptionsStorage -PUBLIC ?__LINE__Var@?0??_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z@4JA ; `std::_Adjust_manually_vector_aligned'::`1'::__LINE__Var -PUBLIC ??_C@_0BB@FCMFBGOM@invalid?5argument@ ; `string' -PUBLIC ??_C@_02DKCKIIND@?$CFs@ ; `string' -PUBLIC ??_C@_0GI@JMEOMKJO@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ ; `string' -PUBLIC ??_C@_1NA@FEEOBALC@?$AAC?$AA?3?$AA?2?$AAP?$AAr?$AAo?$AAg?$AAr?$AAa?$AAm?$AA?5?$AAF?$AAi?$AAl?$AAe@ ; `string' -PUBLIC ??_C@_1EK@NIFDJFDG@?$AAs?$AAt?$AAd?$AA?3?$AA?3?$AA_?$AAA?$AAd?$AAj?$AAu?$AAs?$AAt?$AA_?$AAm?$AAa@ ; `string' -PUBLIC ??_C@_1CG@JNLFBNGN@?$AA?$CC?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?5?$AAa?$AAr?$AAg?$AAu?$AAm?$AAe@ ; `string' PUBLIC ??_C@_0GI@DEICPIDJ@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ ; `string' PUBLIC ?__LINE__Var@?0??_Maklocwcs@std@@YAPEA_WPEB_W@Z@4JA ; `std::_Maklocwcs'::`1'::__LINE__Var PUBLIC ??_C@_0GI@LHMPPKJI@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ ; `string' -PUBLIC ??_C@_0BJ@LHKOPLNN@Something?5failed?5nicka?4?6@ ; `string' PUBLIC ??_C@_05PDJBBECF@pause@ ; `string' +PUBLIC ??_C@_0BD@FOIEMPBM@The?5numba?5was?3?5?$CFX?6@ ; `string' PUBLIC ??_C@_0N@LPFKKEBD@?3AM?3am?3PM?3pm@ ; `string' PUBLIC ??_C@_1BK@MHIKGOKE@?$AA?3?$AAA?$AAM?$AA?3?$AAa?$AAm?$AA?3?$AAP?$AAM?$AA?3?$AAp?$AAm@ ; `string' EXTRN ??2@YAPEAX_K@Z:PROC ; operator new EXTRN ??3@YAXPEAX_K@Z:PROC ; operator delete -EXTRN __imp__invalid_parameter:PROC EXTRN memcpy:PROC EXTRN __imp_wcslen:PROC EXTRN strlen:PROC EXTRN __imp_VirtualAlloc:PROC EXTRN __imp_srand:PROC +EXTRN __imp_rand:PROC EXTRN __imp_system:PROC EXTRN __imp___acrt_iob_func:PROC EXTRN __imp___stdio_common_vfprintf:PROC EXTRN __imp__calloc_dbg:PROC -EXTRN __imp__CrtDbgReport:PROC -EXTRN __imp_??0_Lockit@std@@QEAA@H@Z:PROC -EXTRN __imp_??1_Lockit@std@@QEAA@XZ:PROC EXTRN ?uncaught_exception@std@@YA_NXZ:PROC ; std::uncaught_exception EXTRN ?_Xbad_alloc@std@@YAXXZ:PROC ; std::_Xbad_alloc EXTRN _Mbrtowc:PROC @@ -242,10 +220,11 @@ EXTRN __imp__time64:PROC EXTRN ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z:PROC ; std::setw EXTRN xed_tables_init:PROC EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK -EXTRN ??0_NATIVE_CODE_BLOCK@@QEAA@XZ:PROC ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK -EXTRN ?NcInsertLinkBefore@@YAXPEAU_NATIVE_CODE_LINK@@0@Z:PROC ; NcInsertLinkBefore -EXTRN ?NcDisassemble@@YAHPEAU_NATIVE_CODE_BLOCK@@PEAXK@Z:PROC ; NcDisassemble +EXTRN ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z:PROC ; NcAppendToBlock +EXTRN ?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z:PROC ; NcInsertBlockAfter EXTRN ?NcAssemble@@YAPEAXPEAU_NATIVE_CODE_BLOCK@@PEAK@Z:PROC ; NcAssemble +EXTRN ?JitEmitPreRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z:PROC ; JitEmitPreRipMov +EXTRN ?JitEmitPostRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z:PROC ; JitEmitPostRipMov EXTRN _RTC_CheckStackVars:PROC EXTRN _RTC_InitBase:PROC EXTRN _RTC_Shutdown:PROC @@ -310,18 +289,6 @@ $pdata$wmemcpy DD imagerel $LN3 pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z DD imagerel $LN21 - DD imagerel $LN21+476 - DD imagerel $unwind$?_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Orphan_all@_Container_base12@std@@QEAAXXZ DD imagerel $LN7 - DD imagerel $LN7+233 - DD imagerel $unwind$?_Orphan_all@_Container_base12@std@@QEAAXXZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT $pdata$?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z DD imagerel $LN5 DD imagerel $LN5+118 DD imagerel $unwind$?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z @@ -376,62 +343,20 @@ $pdata$??$_Getvals@_W@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@st pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z DD imagerel $LN3 - DD imagerel $LN3+100 - DD imagerel $unwind$?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ DD imagerel $LN3 - DD imagerel $LN3+202 - DD imagerel $unwind$??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z DD imagerel $LN3 - DD imagerel $LN3+108 - DD imagerel $unwind$?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ DD imagerel $LN4 - DD imagerel $LN4+280 - DD imagerel $unwind$?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ DD imagerel $LN3 - DD imagerel $LN3+80 - DD imagerel $unwind$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ DD imagerel $LN3 - DD imagerel $LN3+71 - DD imagerel $unwind$?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??1_NATIVE_CODE_BLOCK@@QEAA@XZ DD imagerel $LN3 - DD imagerel $LN3+71 - DD imagerel $unwind$??1_NATIVE_CODE_BLOCK@@QEAA@XZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT $pdata$?MakeExecutableBuffer@@YAPEAXPEAXK@Z DD imagerel $LN4 DD imagerel $LN4+136 DD imagerel $unwind$?MakeExecutableBuffer@@YAPEAXPEAXK@Z pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$main DD imagerel $LN14 - DD imagerel $LN14+646 +$pdata$main DD imagerel $LN19 + DD imagerel $LN19+1107 DD imagerel $unwind$main pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$main$dtor$0 DD imagerel main$dtor$0 - DD imagerel main$dtor$0+36 + DD imagerel main$dtor$0+44 DD imagerel $unwind$main$dtor$0 pdata ENDS ; COMDAT pdata @@ -484,24 +409,6 @@ $pdata$??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@ pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z DD imagerel $LN3 - DD imagerel $LN3+76 - DD imagerel $unwind$??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z DD imagerel $LN3 - DD imagerel $LN3+107 - DD imagerel $unwind$??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z DD imagerel $LN3 - DD imagerel $LN3+89 - DD imagerel $unwind$??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT $pdata$??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z DD imagerel $LN4 DD imagerel $LN4+171 DD imagerel $unwind$??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z @@ -536,30 +443,6 @@ $pdata$??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ DD imager DD imagerel $LN3+75 DD imagerel $unwind$??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z DD imagerel $LN3 - DD imagerel $LN3+75 - DD imagerel $unwind$??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z DD imagerel $LN4 - DD imagerel $LN4+121 - DD imagerel $unwind$??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z DD imagerel $LN3 - DD imagerel $LN3+95 - DD imagerel $unwind$??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?deallocate@?$_Default_allocator_traits@V?$allocator@U_Container_proxy@std@@@std@@@std@@SAXAEAV?$allocator@U_Container_proxy@std@@@2@QEAU_Container_proxy@2@_K@Z DD imagerel $LN3 - DD imagerel $LN3+97 - DD imagerel $unwind$?deallocate@?$_Default_allocator_traits@V?$allocator@U_Container_proxy@std@@@std@@@std@@SAXAEAV?$allocator@U_Container_proxy@std@@@2@QEAU_Container_proxy@2@_K@Z -pdata ENDS ; COMDAT rtc$TMZ rtc$TMZ SEGMENT _RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown @@ -578,14 +461,14 @@ CONST ENDS CONST SEGMENT ??_C@_0N@LPFKKEBD@?3AM?3am?3PM?3pm@ DB ':AM:am:PM:pm', 00H ; `string' CONST ENDS -; COMDAT ??_C@_05PDJBBECF@pause@ +; COMDAT ??_C@_0BD@FOIEMPBM@The?5numba?5was?3?5?$CFX?6@ CONST SEGMENT -??_C@_05PDJBBECF@pause@ DB 'pause', 00H ; `string' +??_C@_0BD@FOIEMPBM@The?5numba?5was?3?5?$CFX?6@ DB 'The numba was: %X', 0aH + DB 00H ; `string' CONST ENDS -; COMDAT ??_C@_0BJ@LHKOPLNN@Something?5failed?5nicka?4?6@ +; COMDAT ??_C@_05PDJBBECF@pause@ CONST SEGMENT -??_C@_0BJ@LHKOPLNN@Something?5failed?5nicka?4?6@ DB 'Something failed nic' - DB 'ka.', 0aH, 00H ; `string' +??_C@_05PDJBBECF@pause@ DB 'pause', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0GI@LHMPPKJI@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ CONST SEGMENT @@ -603,128 +486,6 @@ CONST SEGMENT DB 'gram Files (x86)\Microsoft Visual Studio\2019\Community\VC\To' DB 'ols\MSVC\14.27.29110\include\xlocale', 00H ; `string' CONST ENDS -; COMDAT ??_C@_1CG@JNLFBNGN@?$AA?$CC?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?5?$AAa?$AAr?$AAg?$AAu?$AAm?$AAe@ -CONST SEGMENT -??_C@_1CG@JNLFBNGN@?$AA?$CC?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?5?$AAa?$AAr?$AAg?$AAu?$AAm?$AAe@ DB '"' - DB 00H, 'i', 00H, 'n', 00H, 'v', 00H, 'a', 00H, 'l', 00H, 'i', 00H - DB 'd', 00H, ' ', 00H, 'a', 00H, 'r', 00H, 'g', 00H, 'u', 00H, 'm' - DB 00H, 'e', 00H, 'n', 00H, 't', 00H, '"', 00H, 00H, 00H ; `string' -CONST ENDS -; COMDAT ??_C@_1EK@NIFDJFDG@?$AAs?$AAt?$AAd?$AA?3?$AA?3?$AA_?$AAA?$AAd?$AAj?$AAu?$AAs?$AAt?$AA_?$AAm?$AAa@ -CONST SEGMENT -??_C@_1EK@NIFDJFDG@?$AAs?$AAt?$AAd?$AA?3?$AA?3?$AA_?$AAA?$AAd?$AAj?$AAu?$AAs?$AAt?$AA_?$AAm?$AAa@ DB 's' - DB 00H, 't', 00H, 'd', 00H, ':', 00H, ':', 00H, '_', 00H, 'A', 00H - DB 'd', 00H, 'j', 00H, 'u', 00H, 's', 00H, 't', 00H, '_', 00H, 'm' - DB 00H, 'a', 00H, 'n', 00H, 'u', 00H, 'a', 00H, 'l', 00H, 'l', 00H - DB 'y', 00H, '_', 00H, 'v', 00H, 'e', 00H, 'c', 00H, 't', 00H, 'o' - DB 00H, 'r', 00H, '_', 00H, 'a', 00H, 'l', 00H, 'i', 00H, 'g', 00H - DB 'n', 00H, 'e', 00H, 'd', 00H, 00H, 00H ; `string' -CONST ENDS -; COMDAT ??_C@_1NA@FEEOBALC@?$AAC?$AA?3?$AA?2?$AAP?$AAr?$AAo?$AAg?$AAr?$AAa?$AAm?$AA?5?$AAF?$AAi?$AAl?$AAe@ -CONST SEGMENT -??_C@_1NA@FEEOBALC@?$AAC?$AA?3?$AA?2?$AAP?$AAr?$AAo?$AAg?$AAr?$AAa?$AAm?$AA?5?$AAF?$AAi?$AAl?$AAe@ DB 'C' - DB 00H, ':', 00H, '\', 00H, 'P', 00H, 'r', 00H, 'o', 00H, 'g', 00H - DB 'r', 00H, 'a', 00H, 'm', 00H, ' ', 00H, 'F', 00H, 'i', 00H, 'l' - DB 00H, 'e', 00H, 's', 00H, ' ', 00H, '(', 00H, 'x', 00H, '8', 00H - DB '6', 00H, ')', 00H, '\', 00H, 'M', 00H, 'i', 00H, 'c', 00H, 'r' - DB 00H, 'o', 00H, 's', 00H, 'o', 00H, 'f', 00H, 't', 00H, ' ', 00H - DB 'V', 00H, 'i', 00H, 's', 00H, 'u', 00H, 'a', 00H, 'l', 00H, ' ' - DB 00H, 'S', 00H, 't', 00H, 'u', 00H, 'd', 00H, 'i', 00H, 'o', 00H - DB '\', 00H, '2', 00H, '0', 00H, '1', 00H, '9', 00H, '\', 00H, 'C' - DB 00H, 'o', 00H, 'm', 00H, 'm', 00H, 'u', 00H, 'n', 00H, 'i', 00H - DB 't', 00H, 'y', 00H, '\', 00H, 'V', 00H, 'C', 00H, '\', 00H, 'T' - DB 00H, 'o', 00H, 'o', 00H, 'l', 00H, 's', 00H, '\', 00H, 'M', 00H - DB 'S', 00H, 'V', 00H, 'C', 00H, '\', 00H, '1', 00H, '4', 00H, '.' - DB 00H, '2', 00H, '7', 00H, '.', 00H, '2', 00H, '9', 00H, '1', 00H - DB '1', 00H, '0', 00H, '\', 00H, 'i', 00H, 'n', 00H, 'c', 00H, 'l' - DB 00H, 'u', 00H, 'd', 00H, 'e', 00H, '\', 00H, 'x', 00H, 'm', 00H - DB 'e', 00H, 'm', 00H, 'o', 00H, 'r', 00H, 'y', 00H, 00H, 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0GI@JMEOMKJO@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ -CONST SEGMENT -??_C@_0GI@JMEOMKJO@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ DB 'C:\Pro' - DB 'gram Files (x86)\Microsoft Visual Studio\2019\Community\VC\To' - DB 'ols\MSVC\14.27.29110\include\xmemory', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_02DKCKIIND@?$CFs@ -CONST SEGMENT -??_C@_02DKCKIIND@?$CFs@ DB '%s', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0BB@FCMFBGOM@invalid?5argument@ -CONST SEGMENT -??_C@_0BB@FCMFBGOM@invalid?5argument@ DB 'invalid argument', 00H ; `string' -CONST ENDS -; COMDAT ?__LINE__Var@?0??_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z@4JA -_DATA SEGMENT -?__LINE__Var@?0??_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z@4JA DD 084H ; `std::_Adjust_manually_vector_aligned'::`1'::__LINE__Var -_DATA ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?deallocate@?$_Default_allocator_traits@V?$allocator@U_Container_proxy@std@@@std@@@std@@SAXAEAV?$allocator@U_Container_proxy@std@@@2@QEAU_Container_proxy@2@_K@Z DD 025053401H - DD 0118231dH - DD 07011001dH - DD 05010H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z DB 060H - DD imagerel $ip2state$??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z DD 025052f19H - DD 01132318H - DD 0700c001dH - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z DB 060H - DD imagerel $ip2state$??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z DD 025052f19H - DD 01132318H - DD 0700c001dH - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z DB 060H - DD imagerel $ip2state$??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z DD 025053419H - DD 0118231dH - DD 07011001dH - DD 05010H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z -xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ DD 025052a01H @@ -818,66 +579,6 @@ $unwind$??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12 xdata ENDS ; COMDAT xdata xdata SEGMENT -$ip2state$??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z DB 060H - DD imagerel $ip2state$??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z DD 025052f19H - DD 01132318H - DD 0700c001dH - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z DB 060H - DD imagerel $ip2state$??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z DD 025052f19H - DD 01132318H - DD 0700c0021H - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z DB 060H - DD imagerel $ip2state$??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z DD 025052f19H - DD 01132318H - DD 0700c001dH - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT $unwind$??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z DD 025052f01H DD 01132318H DD 0700c001fH @@ -999,20 +700,16 @@ $unwind$main$dtor$0 DD 031001H xdata ENDS ; COMDAT xdata xdata SEGMENT -$ip2state$main DB 0eH +$ip2state$main DB 0aH DB 00H DB 00H - DB 0b2H + DB 0c0H DB 02H - DB 'P' - DB 04H DB 094H - DB 02H - DB 0deH DB 00H - DB '(' - DB 02H - DB 0e9H, 03H + DB '8' + DB 04H + DB 094H DB 00H xdata ENDS ; COMDAT xdata @@ -1020,7 +717,7 @@ xdata SEGMENT $stateUnwindMap$main DB 04H DB 0eH DD imagerel main$dtor$0 - DB 02eH + DB 036H DD imagerel main$dtor$1 xdata ENDS ; COMDAT xdata @@ -1033,44 +730,27 @@ xdata ENDS xdata SEGMENT $unwind$main DD 025052f19H DD 010a230fH - DD 070030057H + DD 070030089H DD 05002H DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$main - DD 02aaH + DD 043aH xdata ENDS ; COMDAT CONST CONST SEGMENT -main$rtcName$0 DB 042H - DB 06cH - DB 06fH - DB 063H - DB 06bH - DB 00H - ORG $+2 -main$rtcName$1 DB 041H +main$rtcName$0 DB 041H DB 073H - DB 073H - DB 065H DB 06dH - DB 062H - DB 06cH - DB 065H - DB 064H - DB 053H - DB 069H - DB 07aH + DB 04cH DB 065H + DB 06eH DB 00H - ORG $+10 -main$rtcVarDesc DD 094H + ORG $+9 +main$rtcVarDesc DD 0124H DD 04H - DQ FLAT:main$rtcName$1 - DD 028H - DD 030H DQ FLAT:main$rtcName$0 - ORG $+96 -main$rtcFrameData DD 02H + ORG $+48 +main$rtcFrameData DD 01H DD 00H DQ FLAT:main$rtcVarDesc CONST ENDS @@ -1083,123 +763,6 @@ $unwind$?MakeExecutableBuffer@@YAPEAXPEAXK@Z DD 025052e01H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??1_NATIVE_CODE_BLOCK@@QEAA@XZ DD 025052a01H - DD 010e2313H - DD 07007001dH - DD 05006H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ DB 060H - DD imagerel $ip2state$?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ DD 025052a19H - DD 010e2313H - DD 07007001dH - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ DB 060H - DD imagerel $ip2state$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ DD 025052a19H - DD 010e2313H - DD 07007001dH - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ DB 060H - DD imagerel $ip2state$?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ DD 025052a19H - DD 010e2313H - DD 07007002fH - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z DD 025053401H - DD 0118231dH - DD 07011001dH - DD 05010H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ DB 060H - DD imagerel $ip2state$??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ DD 025053b19H - DD 010e2313H - DD 070070029H - DD 05006H - DD imagerel __GSHandlerCheck_EH4 - DD imagerel $cppxdata$??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ - DD 013bH -xdata ENDS -; COMDAT CONST -CONST SEGMENT -??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ$rtcName$0 DB 024H ; std::vector >::~vector > - DB 053H - DB 031H - DB 00H - ORG $+12 -??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ$rtcVarDesc DD 044H ; std::vector >::~vector > - DD 01H - DQ FLAT:??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ$rtcName$0 - ORG $+48 -??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ$rtcFrameData DD 01H ; std::vector >::~vector > - DD 00H - DQ FLAT:??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ$rtcVarDesc -CONST ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z DD 025053401H - DD 0118231dH - DD 07011001dH - DD 05010H -xdata ENDS -; COMDAT xdata -xdata SEGMENT $unwind$??$_Getvals@_W@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z DD 025063501H DD 0119231eH DD 070120026H @@ -1327,51 +890,6 @@ $unwind$?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z DD 025052f19H xdata ENDS ; COMDAT xdata xdata SEGMENT -$ip2state$?_Orphan_all@_Container_base12@std@@QEAAXXZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?_Orphan_all@_Container_base12@std@@QEAAXXZ DB 060H - DD imagerel $ip2state$?_Orphan_all@_Container_base12@std@@QEAAXXZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Orphan_all@_Container_base12@std@@QEAAXXZ DD 025053b19H - DD 010e2313H - DD 070070025H - DD 05006H - DD imagerel __GSHandlerCheck_EH4 - DD imagerel $cppxdata$?_Orphan_all@_Container_base12@std@@QEAAXXZ - DD 011bH -xdata ENDS -; COMDAT CONST -CONST SEGMENT -?_Orphan_all@_Container_base12@std@@QEAAXXZ$rtcName$0 DB 05fH ; std::_Container_base12::_Orphan_all - DB 04cH - DB 06fH - DB 063H - DB 06bH - DB 00H - ORG $+10 -?_Orphan_all@_Container_base12@std@@QEAAXXZ$rtcVarDesc DD 024H ; std::_Container_base12::_Orphan_all - DD 04H - DQ FLAT:?_Orphan_all@_Container_base12@std@@QEAAXXZ$rtcName$0 - ORG $+48 -?_Orphan_all@_Container_base12@std@@QEAAXXZ$rtcFrameData DD 01H ; std::_Container_base12::_Orphan_all - DD 00H - DQ FLAT:?_Orphan_all@_Container_base12@std@@QEAAXXZ$rtcVarDesc -CONST ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z DD 035052f01H - DD 01133318H - DD 0700c002fH - DD 0500bH -xdata ENDS -; COMDAT xdata -xdata SEGMENT $unwind$wmemcpy DD 025053401H DD 0118231dH DD 07011001dH @@ -1429,301 +947,83 @@ xdata ENDS ; COMDAT xdata xdata SEGMENT $cppxdata$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z DB 060H - DD imagerel $ip2state$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z DD 025053419H - DD 0118231dH - DD 07011001dH - DD 05010H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z DB 060H - DD imagerel $ip2state$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z DD 025052f19H - DD 01132318H - DD 0700c001dH - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$?__empty_global_delete@@YAXPEAX_K@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?__empty_global_delete@@YAXPEAX_K@Z DB 060H - DD imagerel $ip2state$?__empty_global_delete@@YAXPEAX_K@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?__empty_global_delete@@YAXPEAX_K@Z DD 025052f19H - DD 01132318H - DD 0700c001dH - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?__empty_global_delete@@YAXPEAX_K@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$?__empty_global_delete@@YAXPEAX@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?__empty_global_delete@@YAXPEAX@Z DB 060H - DD imagerel $ip2state$?__empty_global_delete@@YAXPEAX@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?__empty_global_delete@@YAXPEAX@Z DD 025052a19H - DD 010e2313H - DD 07007001dH - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?__empty_global_delete@@YAXPEAX@Z -xdata ENDS -; Function compile flags: /Odt -; COMDAT __JustMyCode_Default -_TEXT SEGMENT -__JustMyCode_Default PROC ; COMDAT - 00000 c2 00 00 ret 0 -__JustMyCode_Default ENDP -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory -; COMDAT ?deallocate@?$_Default_allocator_traits@V?$allocator@U_Container_proxy@std@@@std@@@std@@SAXAEAV?$allocator@U_Container_proxy@std@@@2@QEAU_Container_proxy@2@_K@Z -_TEXT SEGMENT -__formal$ = 224 -_Ptr$ = 232 -_Count$ = 240 -?deallocate@?$_Default_allocator_traits@V?$allocator@U_Container_proxy@std@@@std@@@std@@SAXAEAV?$allocator@U_Container_proxy@std@@@2@QEAU_Container_proxy@2@_K@Z PROC ; std::_Default_allocator_traits >::deallocate, COMDAT - -; 687 : static void deallocate(_Alloc&, const pointer _Ptr, const size_type _Count) { - -$LN3: - 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 - 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000f 55 push rbp - 00010 57 push rdi - 00011 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0001d 48 8b fc mov rdi, rsp - 00020 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 00034 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 688 : // no overflow check on the following multiply; we assume _Allocate did that check -; 689 : _Deallocate<_New_alignof>(_Ptr, sizeof(value_type) * _Count); - - 00040 48 6b 85 f0 00 - 00 00 10 imul rax, QWORD PTR _Count$[rbp], 16 - 00048 48 8b d0 mov rdx, rax - 0004b 48 8b 8d e8 00 - 00 00 mov rcx, QWORD PTR _Ptr$[rbp] - 00052 e8 00 00 00 00 call ??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z ; std::_Deallocate<16,0> - -; 690 : } - - 00057 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 0005e 5f pop rdi - 0005f 5d pop rbp - 00060 c3 ret 0 -?deallocate@?$_Default_allocator_traits@V?$allocator@U_Container_proxy@std@@@std@@@std@@SAXAEAV?$allocator@U_Container_proxy@std@@@2@QEAU_Container_proxy@2@_K@Z ENDP ; std::_Default_allocator_traits >::deallocate -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory -; COMDAT ??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z -_TEXT SEGMENT -_Al$ = 224 -_Ptr$ = 232 -??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z PROC ; std::_Deallocate_plain >, COMDAT - -; 998 : void _Deallocate_plain(_Alloc& _Al, typename _Alloc::value_type* const _Ptr) noexcept { - -$LN3: - 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000a 55 push rbp - 0000b 57 push rdi - 0000c 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 999 : // deallocate a plain pointer using an allocator -; 1000 : using _Alloc_traits = allocator_traits<_Alloc>; -; 1001 : if constexpr (is_same_v<_Alloc_ptr_t<_Alloc>, typename _Alloc::value_type*>) { -; 1002 : _Alloc_traits::deallocate(_Al, _Ptr, 1); - - 0003b 41 b8 01 00 00 - 00 mov r8d, 1 - 00041 48 8b 95 e8 00 - 00 00 mov rdx, QWORD PTR _Ptr$[rbp] - 00048 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR _Al$[rbp] - 0004f e8 00 00 00 00 call ?deallocate@?$_Default_allocator_traits@V?$allocator@U_Container_proxy@std@@@std@@@std@@SAXAEAV?$allocator@U_Container_proxy@std@@@2@QEAU_Container_proxy@2@_K@Z ; std::_Default_allocator_traits >::deallocate - 00054 90 npad 1 - -; 1003 : } else { -; 1004 : using _Ptr_traits = pointer_traits<_Alloc_ptr_t<_Alloc>>; -; 1005 : _Alloc_traits::deallocate(_Al, _Ptr_traits::pointer_to(*_Ptr), 1); -; 1006 : } -; 1007 : } - - 00055 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 0005c 5f pop rdi - 0005d 5d pop rbp - 0005e c3 ret 0 -??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z ENDP ; std::_Deallocate_plain > -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory -; COMDAT ??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z -_TEXT SEGMENT -_Ptr$ = 224 -_Bytes$ = 232 -??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z PROC ; std::_Deallocate<16,0>, COMDAT - -; 213 : void _Deallocate(void* _Ptr, size_t _Bytes) noexcept { - -$LN4: - 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000a 55 push rbp - 0000b 57 push rdi - 0000c 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 214 : // deallocate storage allocated by _Allocate when !_HAS_ALIGNED_NEW || _Align <= __STDCPP_DEFAULT_NEW_ALIGNMENT__ -; 215 : #if defined(_M_IX86) || defined(_M_X64) -; 216 : if (_Bytes >= _Big_allocation_threshold) { // boost the alignment of big allocations to help autovectorization - - 0003b 48 81 bd e8 00 - 00 00 00 10 00 - 00 cmp QWORD PTR _Bytes$[rbp], 4096 ; 00001000H - 00046 72 13 jb SHORT $LN2@Deallocate - -; 217 : _Adjust_manually_vector_aligned(_Ptr, _Bytes); - - 00048 48 8d 95 e8 00 - 00 00 lea rdx, QWORD PTR _Bytes$[rbp] - 0004f 48 8d 8d e0 00 - 00 00 lea rcx, QWORD PTR _Ptr$[rbp] - 00056 e8 00 00 00 00 call ?_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z ; std::_Adjust_manually_vector_aligned -$LN2@Deallocate: - -; 218 : } -; 219 : #endif // defined(_M_IX86) || defined(_M_X64) -; 220 : -; 221 : ::operator delete(_Ptr, _Bytes); - - 0005b 48 8b 95 e8 00 - 00 00 mov rdx, QWORD PTR _Bytes$[rbp] - 00062 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR _Ptr$[rbp] - 00069 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete - 0006e 90 npad 1 - -; 222 : } - - 0006f 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00076 5f pop rdi - 00077 5d pop rbp - 00078 c3 ret 0 -??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z ENDP ; std::_Deallocate<16,0> -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory -; COMDAT ??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z + DD imagerel $ip2state$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z DD 025053419H + DD 0118231dH + DD 07011001dH + DD 05010H + DD imagerel __CxxFrameHandler4 + DD imagerel $cppxdata$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$ip2state$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z DB 02H + DB 00H + DB 00H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$cppxdata$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z DB 060H + DD imagerel $ip2state$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z DD 025052f19H + DD 01132318H + DD 0700c001dH + DD 0500bH + DD imagerel __CxxFrameHandler4 + DD imagerel $cppxdata$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$ip2state$?__empty_global_delete@@YAXPEAX_K@Z DB 02H + DB 00H + DB 00H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$cppxdata$?__empty_global_delete@@YAXPEAX_K@Z DB 060H + DD imagerel $ip2state$?__empty_global_delete@@YAXPEAX_K@Z +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$?__empty_global_delete@@YAXPEAX_K@Z DD 025052f19H + DD 01132318H + DD 0700c001dH + DD 0500bH + DD imagerel __CxxFrameHandler4 + DD imagerel $cppxdata$?__empty_global_delete@@YAXPEAX_K@Z +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$ip2state$?__empty_global_delete@@YAXPEAX@Z DB 02H + DB 00H + DB 00H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$cppxdata$?__empty_global_delete@@YAXPEAX@Z DB 060H + DD imagerel $ip2state$?__empty_global_delete@@YAXPEAX@Z +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$?__empty_global_delete@@YAXPEAX@Z DD 025052a19H + DD 010e2313H + DD 07007001dH + DD 05006H + DD imagerel __CxxFrameHandler4 + DD imagerel $cppxdata$?__empty_global_delete@@YAXPEAX@Z +xdata ENDS +; Function compile flags: /Odt +; COMDAT __JustMyCode_Default _TEXT SEGMENT -_First$ = 224 -_Last$ = 232 -_Al$ = 240 -??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z PROC ; std::_Destroy_range >, COMDAT - -; 955 : void _Destroy_range(_Alloc_ptr_t<_Alloc> _First, const _Alloc_ptr_t<_Alloc> _Last, _Alloc& _Al) noexcept { - -$LN3: - 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 - 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000f 55 push rbp - 00010 57 push rdi - 00011 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0001d 48 8b fc mov rdi, rsp - 00020 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 00034 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 00040 90 npad 1 - -; 956 : // note that this is an optimization for debug mode codegen; in release mode the BE removes all of this -; 957 : using _Ty = typename _Alloc::value_type; -; 958 : if _CONSTEXPR_IF (!conjunction_v, _Uses_default_destroy<_Alloc, _Ty*>>) { -; 959 : for (; _First != _Last; ++_First) { -; 960 : allocator_traits<_Alloc>::destroy(_Al, _Unfancy(_First)); -; 961 : } -; 962 : } -; 963 : } - - 00041 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00048 5f pop rdi - 00049 5d pop rbp - 0004a c3 ret 0 -??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z ENDP ; std::_Destroy_range > +__JustMyCode_Default PROC ; COMDAT + 00000 c2 00 00 ret 0 +__JustMyCode_Default ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\ostream @@ -2182,150 +1482,6 @@ $LN2@Sentry_bas: ??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z ENDP ; std::basic_ostream >::_Sentry_base::_Sentry_base _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory -; COMDAT ??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z -_TEXT SEGMENT -_Al$ = 224 -_Ptr$ = 232 -??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z PROC ; std::_Delete_plain_internal >, COMDAT - -; 1026 : void _Delete_plain_internal(_Alloc& _Al, typename _Alloc::value_type* const _Ptr) noexcept { - -$LN3: - 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000a 55 push rbp - 0000b 57 push rdi - 0000c 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1027 : // destroy *_Ptr in place, then deallocate _Ptr using _Al; used for internal container types the user didn't name -; 1028 : using _Ty = typename _Alloc::value_type; -; 1029 : _Ptr->~_Ty(); -; 1030 : _Deallocate_plain(_Al, _Ptr); - - 0003b 48 8b 95 e8 00 - 00 00 mov rdx, QWORD PTR _Ptr$[rbp] - 00042 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR _Al$[rbp] - 00049 e8 00 00 00 00 call ??$_Deallocate_plain@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z ; std::_Deallocate_plain > - 0004e 90 npad 1 - -; 1031 : } - - 0004f 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00056 5f pop rdi - 00057 5d pop rbp - 00058 c3 ret 0 -??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z ENDP ; std::_Delete_plain_internal > -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\utility -; COMDAT ??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z -_TEXT SEGMENT -_Old_val$ = 8 -_Val$ = 256 -_New_val$ = 264 -??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z PROC ; std::exchange, COMDAT - -; 597 : conjunction_v, is_nothrow_assignable<_Ty&, _Other>>) /* strengthened */ { - -$LN3: - 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000a 55 push rbp - 0000b 57 push rdi - 0000c 48 81 ec 08 01 - 00 00 sub rsp, 264 ; 00000108H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 42 00 00 00 mov ecx, 66 ; 00000042H - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 28 - 01 00 00 mov rcx, QWORD PTR [rsp+296] - 0002f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__CF1C1A3F_utility - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 598 : // assign _New_val to _Val, return previous _Val -; 599 : _Ty _Old_val = static_cast<_Ty&&>(_Val); - - 0003b 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR _Val$[rbp] - 00042 48 8b 00 mov rax, QWORD PTR [rax] - 00045 48 89 45 08 mov QWORD PTR _Old_val$[rbp], rax - -; 600 : _Val = static_cast<_Other&&>(_New_val); - - 00049 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR _Val$[rbp] - 00050 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR _New_val$[rbp] - 00057 48 8b 09 mov rcx, QWORD PTR [rcx] - 0005a 48 89 08 mov QWORD PTR [rax], rcx - -; 601 : return _Old_val; - - 0005d 48 8b 45 08 mov rax, QWORD PTR _Old_val$[rbp] - -; 602 : } - - 00061 48 8d a5 e8 00 - 00 00 lea rsp, QWORD PTR [rbp+232] - 00068 5f pop rdi - 00069 5d pop rbp - 0006a c3 ret 0 -??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z ENDP ; std::exchange -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory -; COMDAT ??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z -_TEXT SEGMENT -this$ = 224 -__formal$ = 232 -??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z PROC ; std::allocator::allocator, COMDAT - -; 799 : constexpr allocator(const allocator<_Other>&) noexcept {} - -$LN3: - 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000a 55 push rbp - 0000b 57 push rdi - 0000c 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 0003b 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00042 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00049 5f pop rdi - 0004a 5d pop rbp - 0004b c3 ret 0 -??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z ENDP ; std::allocator::allocator -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI ; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\iomanip ; COMDAT ??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z _TEXT SEGMENT @@ -3242,53 +2398,64 @@ text$x ENDS ; File C:\$Fanta\code-virtualizer\CodeVirtualizer\Main.cpp ; COMDAT main _TEXT SEGMENT -Block$ = 8 -NewLink$ = 88 -AssembledSize$ = 116 -AssembledBlock$ = 152 -Tb$ = 184 -i$5 = 212 -$T6 = 440 -$T7 = 472 -$T8 = 500 -$T9 = 532 -$T10 = 568 -tv152 = 600 -tv88 = 600 -tv154 = 608 -tv157 = 616 -tv159 = 624 -tv170 = 632 -tv168 = 640 -__$ArrayPad$ = 648 +Return1776$ = 8 +RetInst$ = 40 +Pre1$ = 72 +Post1$ = 104 +Pre2$ = 136 +Post2$ = 168 +i$4 = 196 +i$5 = 228 +AsmLen$ = 260 +Asm$ = 296 +Tb$ = 328 +i$6 = 356 +ExecBuffer$ = 392 +$T7 = 808 +$T8 = 840 +$T9 = 872 +$T10 = 904 +$T11 = 932 +$T12 = 968 +tv183 = 996 +tv172 = 996 +tv206 = 1000 +tv128 = 1000 +tv82 = 1000 +tv208 = 1008 +tv211 = 1016 +tv213 = 1024 +tv224 = 1032 +tv222 = 1040 +__$ArrayPad$ = 1048 main PROC ; COMDAT -; 43 : { +; 44 : { -$LN14: +$LN19: 00000 40 55 push rbp 00002 57 push rdi - 00003 48 81 ec b8 02 - 00 00 sub rsp, 696 ; 000002b8H + 00003 48 81 ec 48 04 + 00 00 sub rsp, 1096 ; 00000448H 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 0000f 48 8b fc mov rdi, rsp - 00012 b9 ae 00 00 00 mov ecx, 174 ; 000000aeH + 00012 b9 12 01 00 00 mov ecx, 274 ; 00000112H 00017 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 0001c f3 ab rep stosd 0001e 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 00025 48 33 c5 xor rax, rbp - 00028 48 89 85 88 02 + 00028 48 89 85 18 04 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax 0002f 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__4031338C_Main@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 44 : XedTablesInit(); +; 45 : XedTablesInit(); 0003b e8 00 00 00 00 call xed_tables_init -; 45 : srand(time(NULL)); +; 46 : srand(time(NULL)); 00040 33 c9 xor ecx, ecx 00042 e8 00 00 00 00 call time @@ -3296,276 +2463,513 @@ $LN14: 00049 ff 15 00 00 00 00 call QWORD PTR __imp_srand -; 46 : ; 47 : -; 48 : NATIVE_CODE_BLOCK Block; +; 48 : PNATIVE_CODE_LINK Return1776 = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, meme1, sizeof(meme1)); + + 0004f b9 f0 00 00 00 mov ecx, 240 ; 000000f0H + 00054 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new + 00059 48 89 85 48 03 + 00 00 mov QWORD PTR $T8[rbp], rax + 00060 48 83 bd 48 03 + 00 00 00 cmp QWORD PTR $T8[rbp], 0 + 00068 74 27 je SHORT $LN13@main + 0006a 41 b9 05 00 00 + 00 mov r9d, 5 + 00070 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:?meme1@@3PAEA ; meme1 + 00077 ba 04 00 00 00 mov edx, 4 + 0007c 48 8b 8d 48 03 + 00 00 mov rcx, QWORD PTR $T8[rbp] + 00083 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 00088 48 89 85 e8 03 + 00 00 mov QWORD PTR tv82[rbp], rax + 0008f eb 0b jmp SHORT $LN14@main +$LN13@main: + 00091 48 c7 85 e8 03 + 00 00 00 00 00 + 00 mov QWORD PTR tv82[rbp], 0 +$LN14@main: + 0009c 48 8b 85 e8 03 + 00 00 mov rax, QWORD PTR tv82[rbp] + 000a3 48 89 85 28 03 + 00 00 mov QWORD PTR $T7[rbp], rax + 000aa 48 8b 85 28 03 + 00 00 mov rax, QWORD PTR $T7[rbp] + 000b1 48 89 45 08 mov QWORD PTR Return1776$[rbp], rax + +; 49 : PNATIVE_CODE_LINK RetInst = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, meme2, sizeof(meme2)); + + 000b5 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H + 000ba e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new + 000bf 48 89 85 88 03 + 00 00 mov QWORD PTR $T10[rbp], rax + 000c6 48 83 bd 88 03 + 00 00 00 cmp QWORD PTR $T10[rbp], 0 + 000ce 74 27 je SHORT $LN15@main + 000d0 41 b9 01 00 00 + 00 mov r9d, 1 + 000d6 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:?meme2@@3PAEA ; meme2 + 000dd ba 04 00 00 00 mov edx, 4 + 000e2 48 8b 8d 88 03 + 00 00 mov rcx, QWORD PTR $T10[rbp] + 000e9 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000ee 48 89 85 e8 03 + 00 00 mov QWORD PTR tv128[rbp], rax + 000f5 eb 0b jmp SHORT $LN16@main +$LN15@main: + 000f7 48 c7 85 e8 03 + 00 00 00 00 00 + 00 mov QWORD PTR tv128[rbp], 0 +$LN16@main: + 00102 48 8b 85 e8 03 + 00 00 mov rax, QWORD PTR tv128[rbp] + 00109 48 89 85 68 03 + 00 00 mov QWORD PTR $T9[rbp], rax + 00110 48 8b 85 68 03 + 00 00 mov rax, QWORD PTR $T9[rbp] + 00117 48 89 45 28 mov QWORD PTR RetInst$[rbp], rax + +; 50 : PNATIVE_CODE_BLOCK Pre1 = JitEmitPreRipMov(Return1776); + + 0011b 33 d2 xor edx, edx + 0011d 48 8b 4d 08 mov rcx, QWORD PTR Return1776$[rbp] + 00121 e8 00 00 00 00 call ?JitEmitPreRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z ; JitEmitPreRipMov + 00126 48 89 45 48 mov QWORD PTR Pre1$[rbp], rax + +; 51 : PNATIVE_CODE_BLOCK Post1 = JitEmitPostRipMov(Return1776); + + 0012a 33 d2 xor edx, edx + 0012c 48 8b 4d 08 mov rcx, QWORD PTR Return1776$[rbp] + 00130 e8 00 00 00 00 call ?JitEmitPostRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z ; JitEmitPostRipMov + 00135 48 89 45 68 mov QWORD PTR Post1$[rbp], rax + +; 52 : PNATIVE_CODE_BLOCK Pre2 = JitEmitPreRipMov(RetInst); + + 00139 33 d2 xor edx, edx + 0013b 48 8b 4d 28 mov rcx, QWORD PTR RetInst$[rbp] + 0013f e8 00 00 00 00 call ?JitEmitPreRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z ; JitEmitPreRipMov + 00144 48 89 85 88 00 + 00 00 mov QWORD PTR Pre2$[rbp], rax + +; 53 : PNATIVE_CODE_BLOCK Post2 = JitEmitPostRipMov(RetInst); + + 0014b 33 d2 xor edx, edx + 0014d 48 8b 4d 28 mov rcx, QWORD PTR RetInst$[rbp] + 00151 e8 00 00 00 00 call ?JitEmitPostRipMov@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@H@Z ; JitEmitPostRipMov + 00156 48 89 85 a8 00 + 00 00 mov QWORD PTR Post2$[rbp], rax - 0004f 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] - 00053 e8 00 00 00 00 call ??0_NATIVE_CODE_BLOCK@@QEAA@XZ ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK - 00058 90 npad 1 +; 54 : +; 55 : NcAppendToBlock(Pre1, Return1776); -; 49 : NcDisassemble(&Block, TestBuffer, TestBufferSize); + 0015d 48 8b 55 08 mov rdx, QWORD PTR Return1776$[rbp] + 00161 48 8b 4d 48 mov rcx, QWORD PTR Pre1$[rbp] + 00165 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock - 00059 44 8b 05 00 00 - 00 00 mov r8d, DWORD PTR ?TestBufferSize@@3KA ; TestBufferSize - 00060 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:?TestBuffer@@3PAEA ; TestBuffer - 00067 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] - 0006b e8 00 00 00 00 call ?NcDisassemble@@YAHPEAU_NATIVE_CODE_BLOCK@@PEAXK@Z ; NcDisassemble +; 56 : NcInsertBlockAfter(Pre1->End, Post1, 0); -; 50 : PNATIVE_CODE_LINK NewLink = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, meme1, sizeof(meme1)); + 0016a 45 33 c0 xor r8d, r8d + 0016d 48 8b 55 68 mov rdx, QWORD PTR Post1$[rbp] + 00171 48 8b 45 48 mov rax, QWORD PTR Pre1$[rbp] + 00175 48 8b 48 08 mov rcx, QWORD PTR [rax+8] + 00179 e8 00 00 00 00 call ?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z ; NcInsertBlockAfter - 00070 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H - 00075 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new - 0007a 48 89 85 d8 01 - 00 00 mov QWORD PTR $T7[rbp], rax - 00081 48 83 bd d8 01 - 00 00 00 cmp QWORD PTR $T7[rbp], 0 - 00089 74 27 je SHORT $LN8@main - 0008b 41 b9 02 00 00 - 00 mov r9d, 2 - 00091 4c 8d 05 00 00 - 00 00 lea r8, OFFSET FLAT:?meme1@@3PAEA ; meme1 - 00098 ba 04 00 00 00 mov edx, 4 - 0009d 48 8b 8d d8 01 - 00 00 mov rcx, QWORD PTR $T7[rbp] - 000a4 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000a9 48 89 85 58 02 - 00 00 mov QWORD PTR tv88[rbp], rax - 000b0 eb 0b jmp SHORT $LN9@main -$LN8@main: - 000b2 48 c7 85 58 02 - 00 00 00 00 00 - 00 mov QWORD PTR tv88[rbp], 0 -$LN9@main: - 000bd 48 8b 85 58 02 - 00 00 mov rax, QWORD PTR tv88[rbp] - 000c4 48 89 85 b8 01 - 00 00 mov QWORD PTR $T6[rbp], rax - 000cb 48 8b 85 b8 01 - 00 00 mov rax, QWORD PTR $T6[rbp] - 000d2 48 89 45 58 mov QWORD PTR NewLink$[rbp], rax +; 57 : Pre1->End = Post1->End; -; 51 : -; 52 : NcInsertLinkBefore(Block.End->Prev->Prev->Prev->Prev, NewLink); + 0017e 48 8b 45 48 mov rax, QWORD PTR Pre1$[rbp] + 00182 48 8b 4d 68 mov rcx, QWORD PTR Post1$[rbp] + 00186 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] + 0018a 48 89 48 08 mov QWORD PTR [rax+8], rcx - 000d6 48 8b 45 10 mov rax, QWORD PTR Block$[rbp+8] - 000da 48 8b 40 08 mov rax, QWORD PTR [rax+8] - 000de 48 8b 40 08 mov rax, QWORD PTR [rax+8] - 000e2 48 8b 40 08 mov rax, QWORD PTR [rax+8] - 000e6 48 8b 55 58 mov rdx, QWORD PTR NewLink$[rbp] - 000ea 48 8b 48 08 mov rcx, QWORD PTR [rax+8] - 000ee e8 00 00 00 00 call ?NcInsertLinkBefore@@YAXPEAU_NATIVE_CODE_LINK@@0@Z ; NcInsertLinkBefore +; 58 : NcInsertBlockAfter(Pre1->End, Pre2, 0); -; 53 : -; 54 : -; 55 : ULONG AssembledSize; -; 56 : PVOID AssembledBlock = NcAssemble(&Block, &AssembledSize); - - 000f3 48 8d 55 74 lea rdx, QWORD PTR AssembledSize$[rbp] - 000f7 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] - 000fb e8 00 00 00 00 call ?NcAssemble@@YAPEAXPEAU_NATIVE_CODE_BLOCK@@PEAK@Z ; NcAssemble - 00100 48 89 85 98 00 - 00 00 mov QWORD PTR AssembledBlock$[rbp], rax - -; 57 : if (!AssembledBlock || !AssembledSize) - - 00107 48 83 bd 98 00 - 00 00 00 cmp QWORD PTR AssembledBlock$[rbp], 0 - 0010f 74 06 je SHORT $LN6@main - 00111 83 7d 74 00 cmp DWORD PTR AssembledSize$[rbp], 0 - 00115 75 37 jne SHORT $LN5@main -$LN6@main: + 0018e 45 33 c0 xor r8d, r8d + 00191 48 8b 95 88 00 + 00 00 mov rdx, QWORD PTR Pre2$[rbp] + 00198 48 8b 45 48 mov rax, QWORD PTR Pre1$[rbp] + 0019c 48 8b 48 08 mov rcx, QWORD PTR [rax+8] + 001a0 e8 00 00 00 00 call ?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z ; NcInsertBlockAfter -; 58 : { -; 59 : printf("Something failed nicka.\n"); +; 59 : Pre1->End = Pre2->End; - 00117 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_0BJ@LHKOPLNN@Something?5failed?5nicka?4?6@ - 0011e e8 00 00 00 00 call printf + 001a5 48 8b 45 48 mov rax, QWORD PTR Pre1$[rbp] + 001a9 48 8b 8d 88 00 + 00 00 mov rcx, QWORD PTR Pre2$[rbp] + 001b0 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] + 001b4 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 60 : system("pause"); +; 60 : NcAppendToBlock(Pre1, RetInst); - 00123 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_05PDJBBECF@pause@ - 0012a ff 15 00 00 00 - 00 call QWORD PTR __imp_system + 001b8 48 8b 55 28 mov rdx, QWORD PTR RetInst$[rbp] + 001bc 48 8b 4d 48 mov rcx, QWORD PTR Pre1$[rbp] + 001c0 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock -; 61 : return -1; +; 61 : NcInsertBlockAfter(Pre1->End, Post2, 0); - 00130 c7 85 f4 01 00 - 00 ff ff ff ff mov DWORD PTR $T8[rbp], -1 - 0013a 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] - 0013e e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ - 00143 8b 85 f4 01 00 - 00 mov eax, DWORD PTR $T8[rbp] - 00149 e9 09 01 00 00 jmp $LN12@main -$LN5@main: + 001c5 45 33 c0 xor r8d, r8d + 001c8 48 8b 95 a8 00 + 00 00 mov rdx, QWORD PTR Post2$[rbp] + 001cf 48 8b 45 48 mov rax, QWORD PTR Pre1$[rbp] + 001d3 48 8b 48 08 mov rcx, QWORD PTR [rax+8] + 001d7 e8 00 00 00 00 call ?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z ; NcInsertBlockAfter -; 62 : } -; 63 : PUCHAR Tb = (PUCHAR)AssembledBlock; +; 62 : Pre1->End = Post2->End; - 0014e 48 8b 85 98 00 - 00 00 mov rax, QWORD PTR AssembledBlock$[rbp] - 00155 48 89 85 b8 00 - 00 00 mov QWORD PTR Tb$[rbp], rax + 001dc 48 8b 45 48 mov rax, QWORD PTR Pre1$[rbp] + 001e0 48 8b 8d a8 00 + 00 00 mov rcx, QWORD PTR Post2$[rbp] + 001e7 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] + 001eb 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 64 : for (uint32_t i = 0; i < AssembledSize; i++) +; 63 : +; 64 : /*Pre->Start = Return1776; +; 65 : Pre->End = Return1776;*/ +; 66 : +; 67 : for (ULONG i = 0; i < Return1776->RawDataSize; i++) - 0015c c7 85 d4 00 00 - 00 00 00 00 00 mov DWORD PTR i$5[rbp], 0 - 00166 eb 0e jmp SHORT $LN4@main + 001ef c7 85 c4 00 00 + 00 00 00 00 00 mov DWORD PTR i$4[rbp], 0 + 001f9 eb 0e jmp SHORT $LN4@main $LN2@main: - 00168 8b 85 d4 00 00 + 001fb 8b 85 c4 00 00 + 00 mov eax, DWORD PTR i$4[rbp] + 00201 ff c0 inc eax + 00203 89 85 c4 00 00 + 00 mov DWORD PTR i$4[rbp], eax +$LN4@main: + 00209 48 8b 45 08 mov rax, QWORD PTR Return1776$[rbp] + 0020d 8b 40 28 mov eax, DWORD PTR [rax+40] + 00210 39 85 c4 00 00 + 00 cmp DWORD PTR i$4[rbp], eax + 00216 73 26 jae SHORT $LN3@main + +; 68 : Return1776->RawData[i] = (UCHAR)rand(); + + 00218 ff 15 00 00 00 + 00 call QWORD PTR __imp_rand + 0021e 88 85 e4 03 00 + 00 mov BYTE PTR tv172[rbp], al + 00224 8b 85 c4 00 00 + 00 mov eax, DWORD PTR i$4[rbp] + 0022a 48 8b 4d 08 mov rcx, QWORD PTR Return1776$[rbp] + 0022e 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 00232 0f b6 95 e4 03 + 00 00 movzx edx, BYTE PTR tv172[rbp] + 00239 88 14 01 mov BYTE PTR [rcx+rax], dl + 0023c eb bd jmp SHORT $LN2@main +$LN3@main: + +; 69 : for (ULONG i = 0; i < RetInst->RawDataSize; i++) + + 0023e c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR i$5[rbp], 0 + 00248 eb 0e jmp SHORT $LN7@main +$LN5@main: + 0024a 8b 85 e4 00 00 00 mov eax, DWORD PTR i$5[rbp] - 0016e ff c0 inc eax - 00170 89 85 d4 00 00 + 00250 ff c0 inc eax + 00252 89 85 e4 00 00 00 mov DWORD PTR i$5[rbp], eax -$LN4@main: - 00176 8b 45 74 mov eax, DWORD PTR AssembledSize$[rbp] - 00179 39 85 d4 00 00 +$LN7@main: + 00258 48 8b 45 28 mov rax, QWORD PTR RetInst$[rbp] + 0025c 8b 40 28 mov eax, DWORD PTR [rax+40] + 0025f 39 85 e4 00 00 00 cmp DWORD PTR i$5[rbp], eax - 0017f 0f 83 b5 00 00 - 00 jae $LN3@main + 00265 73 26 jae SHORT $LN6@main + +; 70 : RetInst->RawData[i] = (UCHAR)rand(); + + 00267 ff 15 00 00 00 + 00 call QWORD PTR __imp_rand + 0026d 88 85 e4 03 00 + 00 mov BYTE PTR tv183[rbp], al + 00273 8b 85 e4 00 00 + 00 mov eax, DWORD PTR i$5[rbp] + 00279 48 8b 4d 28 mov rcx, QWORD PTR RetInst$[rbp] + 0027d 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 00281 0f b6 95 e4 03 + 00 00 movzx edx, BYTE PTR tv183[rbp] + 00288 88 14 01 mov BYTE PTR [rcx+rax], dl + 0028b eb bd jmp SHORT $LN5@main +$LN6@main: + +; 71 : +; 72 : +; 73 : /*NcDebugPrint(Pre); +; 74 : NcPrintBlockCode(Pre);*/ +; 75 : +; 76 : ULONG AsmLen; +; 77 : PVOID Asm = NcAssemble(Pre1, &AsmLen); + + 0028d 48 8d 95 04 01 + 00 00 lea rdx, QWORD PTR AsmLen$[rbp] + 00294 48 8b 4d 48 mov rcx, QWORD PTR Pre1$[rbp] + 00298 e8 00 00 00 00 call ?NcAssemble@@YAPEAXPEAU_NATIVE_CODE_BLOCK@@PEAK@Z ; NcAssemble + 0029d 48 89 85 28 01 + 00 00 mov QWORD PTR Asm$[rbp], rax + +; 78 : PUCHAR Tb = (PUCHAR)Asm; + + 002a4 48 8b 85 28 01 + 00 00 mov rax, QWORD PTR Asm$[rbp] + 002ab 48 89 85 48 01 + 00 00 mov QWORD PTR Tb$[rbp], rax -; 65 : { -; 66 : std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)Tb[i] << ' '; +; 79 : for (uint32_t i = 0; i < AsmLen; i++) - 00185 48 8d 15 00 00 + 002b2 c7 85 64 01 00 + 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0 + 002bc eb 0e jmp SHORT $LN10@main +$LN8@main: + 002be 8b 85 64 01 00 + 00 mov eax, DWORD PTR i$6[rbp] + 002c4 ff c0 inc eax + 002c6 89 85 64 01 00 + 00 mov DWORD PTR i$6[rbp], eax +$LN10@main: + 002cc 8b 85 04 01 00 + 00 mov eax, DWORD PTR AsmLen$[rbp] + 002d2 39 85 64 01 00 + 00 cmp DWORD PTR i$6[rbp], eax + 002d8 0f 83 b5 00 00 + 00 jae $LN9@main + +; 80 : { +; 81 : std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)Tb[i] << ' '; + + 002de 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?hex@std@@YAAEAVios_base@1@AEAV21@@Z ; std::hex - 0018c 48 8b 0d 00 00 + 002e5 48 8b 0d 00 00 00 00 mov rcx, QWORD PTR __imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A - 00193 ff 15 00 00 00 + 002ec ff 15 00 00 00 00 call QWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z - 00199 48 89 85 58 02 - 00 00 mov QWORD PTR tv152[rbp], rax - 001a0 ba 02 00 00 00 mov edx, 2 - 001a5 48 8d 8d 38 02 - 00 00 lea rcx, QWORD PTR $T10[rbp] - 001ac e8 00 00 00 00 call ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z ; std::setw - 001b1 48 89 85 60 02 - 00 00 mov QWORD PTR tv154[rbp], rax - 001b8 48 8b 95 60 02 - 00 00 mov rdx, QWORD PTR tv154[rbp] - 001bf 48 8b 8d 58 02 - 00 00 mov rcx, QWORD PTR tv152[rbp] - 001c6 e8 00 00 00 00 call ??$?6DU?$char_traits@D@std@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Smanip@_J@0@@Z ; std::operator<<,__int64> - 001cb 48 89 85 68 02 - 00 00 mov QWORD PTR tv157[rbp], rax - 001d2 b2 30 mov dl, 48 ; 00000030H - 001d4 48 8d 8d 14 02 - 00 00 lea rcx, QWORD PTR $T9[rbp] - 001db e8 00 00 00 00 call ??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z ; std::setfill - 001e0 48 89 85 70 02 - 00 00 mov QWORD PTR tv159[rbp], rax - 001e7 48 8b 95 70 02 - 00 00 mov rdx, QWORD PTR tv159[rbp] - 001ee 48 8b 8d 68 02 - 00 00 mov rcx, QWORD PTR tv157[rbp] - 001f5 e8 00 00 00 00 call ??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z ; std::operator<<,char> - 001fa 48 89 85 78 02 - 00 00 mov QWORD PTR tv170[rbp], rax - 00201 8b 85 d4 00 00 - 00 mov eax, DWORD PTR i$5[rbp] - 00207 48 8b 8d b8 00 + 002f2 48 89 85 e8 03 + 00 00 mov QWORD PTR tv206[rbp], rax + 002f9 ba 02 00 00 00 mov edx, 2 + 002fe 48 8d 8d c8 03 + 00 00 lea rcx, QWORD PTR $T12[rbp] + 00305 e8 00 00 00 00 call ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z ; std::setw + 0030a 48 89 85 f0 03 + 00 00 mov QWORD PTR tv208[rbp], rax + 00311 48 8b 95 f0 03 + 00 00 mov rdx, QWORD PTR tv208[rbp] + 00318 48 8b 8d e8 03 + 00 00 mov rcx, QWORD PTR tv206[rbp] + 0031f e8 00 00 00 00 call ??$?6DU?$char_traits@D@std@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Smanip@_J@0@@Z ; std::operator<<,__int64> + 00324 48 89 85 f8 03 + 00 00 mov QWORD PTR tv211[rbp], rax + 0032b b2 30 mov dl, 48 ; 00000030H + 0032d 48 8d 8d a4 03 + 00 00 lea rcx, QWORD PTR $T11[rbp] + 00334 e8 00 00 00 00 call ??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z ; std::setfill + 00339 48 89 85 00 04 + 00 00 mov QWORD PTR tv213[rbp], rax + 00340 48 8b 95 00 04 + 00 00 mov rdx, QWORD PTR tv213[rbp] + 00347 48 8b 8d f8 03 + 00 00 mov rcx, QWORD PTR tv211[rbp] + 0034e e8 00 00 00 00 call ??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z ; std::operator<<,char> + 00353 48 89 85 08 04 + 00 00 mov QWORD PTR tv224[rbp], rax + 0035a 8b 85 64 01 00 + 00 mov eax, DWORD PTR i$6[rbp] + 00360 48 8b 8d 48 01 00 00 mov rcx, QWORD PTR Tb$[rbp] - 0020e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] - 00212 89 85 80 02 00 - 00 mov DWORD PTR tv168[rbp], eax - 00218 8b 95 80 02 00 - 00 mov edx, DWORD PTR tv168[rbp] - 0021e 48 8b 8d 78 02 - 00 00 mov rcx, QWORD PTR tv170[rbp] - 00225 ff 15 00 00 00 + 00367 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 0036b 89 85 10 04 00 + 00 mov DWORD PTR tv222[rbp], eax + 00371 8b 95 10 04 00 + 00 mov edx, DWORD PTR tv222[rbp] + 00377 48 8b 8d 08 04 + 00 00 mov rcx, QWORD PTR tv224[rbp] + 0037e ff 15 00 00 00 00 call QWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z - 0022b b2 20 mov dl, 32 ; 00000020H - 0022d 48 8b c8 mov rcx, rax - 00230 e8 00 00 00 00 call ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z ; std::operator<< > + 00384 b2 20 mov dl, 32 ; 00000020H + 00386 48 8b c8 mov rcx, rax + 00389 e8 00 00 00 00 call ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z ; std::operator<< > -; 67 : } +; 82 : } - 00235 e9 2e ff ff ff jmp $LN2@main -$LN3@main: + 0038e e9 2b ff ff ff jmp $LN8@main +$LN9@main: -; 68 : -; 69 : -; 70 : //PNATIVE_CODE_BLOCK OpaqueBranch = ObfGenOpaqueBranch(Block.Start, Block.End); -; 71 : //NcDebugPrint(OpaqueBranch); -; 72 : system("pause"); +; 83 : +; 84 : system("pause"); - 0023a 48 8d 0d 00 00 + 00393 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_05PDJBBECF@pause@ - 00241 ff 15 00 00 00 + 0039a ff 15 00 00 00 00 call QWORD PTR __imp_system - 00247 90 npad 1 -; 73 : -; 74 : -; 75 : -; 76 : -; 77 : /*NATIVE_CODE_LINK T; -; 78 : T.RawDataSize = 10; -; 79 : T.RawData = new UCHAR[10]; -; 80 : memset(T.RawData, 0xAA, 10); -; 81 : JIT_BITWISE_DATA Data; -; 82 : RtlSecureZeroMemory(&Data, sizeof(JIT_BITWISE_DATA)); -; 83 : PNATIVE_CODE_BLOCK NewBlock = JitEmitPreRipMov(&T); -; 84 : if (NewBlock) -; 85 : { -; 86 : printf("\n"); -; 87 : NcDebugPrint(NewBlock); -; 88 : printf("\n"); -; 89 : NcPrintBlockCode(NewBlock); -; 90 : } -; 91 : system("pause");*/ -; 92 : -; 93 : } - - 00248 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] - 0024c e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ - 00251 eb 02 jmp SHORT $LN13@main - 00253 eb 02 jmp SHORT $LN12@main -$LN13@main: - 00255 33 c0 xor eax, eax -$LN12@main: - 00257 48 8b f8 mov rdi, rax - 0025a 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 0025e 48 8d 15 00 00 +; 85 : +; 86 : typedef ULONG64(*FnGet1776)(); +; 87 : FnGet1776 ExecBuffer = (FnGet1776)MakeExecutableBuffer(Asm, AsmLen); + + 003a0 8b 95 04 01 00 + 00 mov edx, DWORD PTR AsmLen$[rbp] + 003a6 48 8b 8d 28 01 + 00 00 mov rcx, QWORD PTR Asm$[rbp] + 003ad e8 00 00 00 00 call ?MakeExecutableBuffer@@YAPEAXPEAXK@Z ; MakeExecutableBuffer + 003b2 48 89 85 88 01 + 00 00 mov QWORD PTR ExecBuffer$[rbp], rax + +; 88 : if (ExecBuffer) + + 003b9 48 83 bd 88 01 + 00 00 00 cmp QWORD PTR ExecBuffer$[rbp], 0 + 003c1 74 54 je SHORT $LN11@main + +; 89 : { +; 90 : printf("The numba was: %X\n", ExecBuffer()); + + 003c3 ff 95 88 01 00 + 00 call QWORD PTR ExecBuffer$[rbp] + 003c9 48 8b d0 mov rdx, rax + 003cc 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BD@FOIEMPBM@The?5numba?5was?3?5?$CFX?6@ + 003d3 e8 00 00 00 00 call printf + +; 91 : printf("The numba was: %X\n", ExecBuffer()); + + 003d8 ff 95 88 01 00 + 00 call QWORD PTR ExecBuffer$[rbp] + 003de 48 8b d0 mov rdx, rax + 003e1 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BD@FOIEMPBM@The?5numba?5was?3?5?$CFX?6@ + 003e8 e8 00 00 00 00 call printf + +; 92 : +; 93 : printf("The numba was: %X\n", ExecBuffer()); + + 003ed ff 95 88 01 00 + 00 call QWORD PTR ExecBuffer$[rbp] + 003f3 48 8b d0 mov rdx, rax + 003f6 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BD@FOIEMPBM@The?5numba?5was?3?5?$CFX?6@ + 003fd e8 00 00 00 00 call printf + +; 94 : +; 95 : printf("The numba was: %X\n", ExecBuffer()); + + 00402 ff 95 88 01 00 + 00 call QWORD PTR ExecBuffer$[rbp] + 00408 48 8b d0 mov rdx, rax + 0040b 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BD@FOIEMPBM@The?5numba?5was?3?5?$CFX?6@ + 00412 e8 00 00 00 00 call printf +$LN11@main: + +; 96 : +; 97 : } +; 98 : +; 99 : +; 100 : //NcDebugPrint(Post); +; 101 : +; 102 : +; 103 : +; 104 : /*NATIVE_CODE_BLOCK Block; +; 105 : NcDisassemble(&Block, TestBuffer, TestBufferSize); +; 106 : PNATIVE_CODE_LINK NewLink = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, meme1, sizeof(meme1)); +; 107 : +; 108 : NcInsertLinkBefore(Block.End->Prev->Prev->Prev->Prev, NewLink); +; 109 : ULONG AssembledSize; +; 110 : PVOID AssembledBlock = NcAssemble(&Block, &AssembledSize); +; 111 : if (!AssembledBlock || !AssembledSize) +; 112 : { +; 113 : printf("Something failed nicka.\n"); +; 114 : system("pause"); +; 115 : return -1; +; 116 : } +; 117 : PUCHAR Tb = (PUCHAR)AssembledBlock; +; 118 : for (uint32_t i = 0; i < AssembledSize; i++) +; 119 : { +; 120 : std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)Tb[i] << ' '; +; 121 : } +; 122 : */ +; 123 : +; 124 : +; 125 : //PNATIVE_CODE_BLOCK OpaqueBranch = ObfGenOpaqueBranch(Block.Start, Block.End); +; 126 : //NcDebugPrint(OpaqueBranch); +; 127 : system("pause"); + + 00417 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_05PDJBBECF@pause@ + 0041e ff 15 00 00 00 + 00 call QWORD PTR __imp_system + +; 128 : +; 129 : +; 130 : +; 131 : +; 132 : /*NATIVE_CODE_LINK T; +; 133 : T.RawDataSize = 10; +; 134 : T.RawData = new UCHAR[10]; +; 135 : memset(T.RawData, 0xAA, 10); +; 136 : JIT_BITWISE_DATA Data; +; 137 : RtlSecureZeroMemory(&Data, sizeof(JIT_BITWISE_DATA)); +; 138 : PNATIVE_CODE_BLOCK NewBlock = JitEmitPreRipMov(&T); +; 139 : if (NewBlock) +; 140 : { +; 141 : printf("\n"); +; 142 : NcDebugPrint(NewBlock); +; 143 : printf("\n"); +; 144 : NcPrintBlockCode(NewBlock); +; 145 : } +; 146 : system("pause");*/ +; 147 : +; 148 : } + + 00424 33 c0 xor eax, eax + 00426 8b f8 mov edi, eax + 00428 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] + 0042c 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:main$rtcFrameData - 00265 e8 00 00 00 00 call _RTC_CheckStackVars - 0026a 48 8b c7 mov rax, rdi - 0026d 48 8b 8d 88 02 + 00433 e8 00 00 00 00 call _RTC_CheckStackVars + 00438 8b c7 mov eax, edi + 0043a 48 8b 8d 18 04 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00274 48 33 cd xor rcx, rbp - 00277 e8 00 00 00 00 call __security_check_cookie - 0027c 48 8d a5 98 02 - 00 00 lea rsp, QWORD PTR [rbp+664] - 00283 5f pop rdi - 00284 5d pop rbp - 00285 c3 ret 0 + 00441 48 33 cd xor rcx, rbp + 00444 e8 00 00 00 00 call __security_check_cookie + 00449 48 8d a5 28 04 + 00 00 lea rsp, QWORD PTR [rbp+1064] + 00450 5f pop rdi + 00451 5d pop rbp + 00452 c3 ret 0 main ENDP _TEXT ENDS ; COMDAT text$x text$x SEGMENT -Block$ = 8 -NewLink$ = 88 -AssembledSize$ = 116 -AssembledBlock$ = 152 -Tb$ = 184 -i$5 = 212 -$T6 = 440 -$T7 = 472 -$T8 = 500 -$T9 = 532 -$T10 = 568 -tv152 = 600 -tv88 = 600 -tv154 = 608 -tv157 = 616 -tv159 = 624 -tv170 = 632 -tv168 = 640 -__$ArrayPad$ = 648 +Return1776$ = 8 +RetInst$ = 40 +Pre1$ = 72 +Post1$ = 104 +Pre2$ = 136 +Post2$ = 168 +i$4 = 196 +i$5 = 228 +AsmLen$ = 260 +Asm$ = 296 +Tb$ = 328 +i$6 = 356 +ExecBuffer$ = 392 +$T7 = 808 +$T8 = 840 +$T9 = 872 +$T10 = 904 +$T11 = 932 +$T12 = 968 +tv183 = 996 +tv172 = 996 +tv206 = 1000 +tv128 = 1000 +tv82 = 1000 +tv208 = 1008 +tv211 = 1016 +tv213 = 1024 +tv224 = 1032 +tv222 = 1040 +__$ArrayPad$ = 1048 main$dtor$0 PROC 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -3573,35 +2977,48 @@ main$dtor$0 PROC 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] - 00014 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] - 00018 e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ - 0001d 48 83 c4 28 add rsp, 40 ; 00000028H - 00021 5f pop rdi - 00022 5d pop rbp - 00023 c3 ret 0 + 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 00019 48 8b 8d 48 03 + 00 00 mov rcx, QWORD PTR $T8[rbp] + 00020 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete + 00025 48 83 c4 28 add rsp, 40 ; 00000028H + 00029 5f pop rdi + 0002a 5d pop rbp + 0002b c3 ret 0 main$dtor$0 ENDP text$x ENDS ; COMDAT text$x text$x SEGMENT -Block$ = 8 -NewLink$ = 88 -AssembledSize$ = 116 -AssembledBlock$ = 152 -Tb$ = 184 -i$5 = 212 -$T6 = 440 -$T7 = 472 -$T8 = 500 -$T9 = 532 -$T10 = 568 -tv152 = 600 -tv88 = 600 -tv154 = 608 -tv157 = 616 -tv159 = 624 -tv170 = 632 -tv168 = 640 -__$ArrayPad$ = 648 +Return1776$ = 8 +RetInst$ = 40 +Pre1$ = 72 +Post1$ = 104 +Pre2$ = 136 +Post2$ = 168 +i$4 = 196 +i$5 = 228 +AsmLen$ = 260 +Asm$ = 296 +Tb$ = 328 +i$6 = 356 +ExecBuffer$ = 392 +$T7 = 808 +$T8 = 840 +$T9 = 872 +$T10 = 904 +$T11 = 932 +$T12 = 968 +tv183 = 996 +tv172 = 996 +tv206 = 1000 +tv128 = 1000 +tv82 = 1000 +tv208 = 1008 +tv211 = 1016 +tv213 = 1024 +tv224 = 1032 +tv222 = 1040 +__$ArrayPad$ = 1048 main$dtor$1 PROC 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -3610,8 +3027,8 @@ main$dtor$1 PROC 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 00019 48 8b 8d d8 01 - 00 00 mov rcx, QWORD PTR $T7[rbp] + 00019 48 8b 8d 88 03 + 00 00 mov rcx, QWORD PTR $T10[rbp] 00020 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete 00025 48 83 c4 28 add rsp, 40 ; 00000028H 00029 5f pop rdi @@ -3622,25 +3039,36 @@ text$x ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; COMDAT text$x text$x SEGMENT -Block$ = 8 -NewLink$ = 88 -AssembledSize$ = 116 -AssembledBlock$ = 152 -Tb$ = 184 -i$5 = 212 -$T6 = 440 -$T7 = 472 -$T8 = 500 -$T9 = 532 -$T10 = 568 -tv152 = 600 -tv88 = 600 -tv154 = 608 -tv157 = 616 -tv159 = 624 -tv170 = 632 -tv168 = 640 -__$ArrayPad$ = 648 +Return1776$ = 8 +RetInst$ = 40 +Pre1$ = 72 +Post1$ = 104 +Pre2$ = 136 +Post2$ = 168 +i$4 = 196 +i$5 = 228 +AsmLen$ = 260 +Asm$ = 296 +Tb$ = 328 +i$6 = 356 +ExecBuffer$ = 392 +$T7 = 808 +$T8 = 840 +$T9 = 872 +$T10 = 904 +$T11 = 932 +$T12 = 968 +tv183 = 996 +tv172 = 996 +tv206 = 1000 +tv128 = 1000 +tv82 = 1000 +tv208 = 1008 +tv211 = 1016 +tv213 = 1024 +tv224 = 1032 +tv222 = 1040 +__$ArrayPad$ = 1048 main$dtor$0 PROC 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -3648,36 +3076,49 @@ main$dtor$0 PROC 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] - 00014 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] - 00018 e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ - 0001d 48 83 c4 28 add rsp, 40 ; 00000028H - 00021 5f pop rdi - 00022 5d pop rbp - 00023 c3 ret 0 + 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 00019 48 8b 8d 48 03 + 00 00 mov rcx, QWORD PTR $T8[rbp] + 00020 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete + 00025 48 83 c4 28 add rsp, 40 ; 00000028H + 00029 5f pop rdi + 0002a 5d pop rbp + 0002b c3 ret 0 main$dtor$0 ENDP text$x ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; COMDAT text$x text$x SEGMENT -Block$ = 8 -NewLink$ = 88 -AssembledSize$ = 116 -AssembledBlock$ = 152 -Tb$ = 184 -i$5 = 212 -$T6 = 440 -$T7 = 472 -$T8 = 500 -$T9 = 532 -$T10 = 568 -tv152 = 600 -tv88 = 600 -tv154 = 608 -tv157 = 616 -tv159 = 624 -tv170 = 632 -tv168 = 640 -__$ArrayPad$ = 648 +Return1776$ = 8 +RetInst$ = 40 +Pre1$ = 72 +Post1$ = 104 +Pre2$ = 136 +Post2$ = 168 +i$4 = 196 +i$5 = 228 +AsmLen$ = 260 +Asm$ = 296 +Tb$ = 328 +i$6 = 356 +ExecBuffer$ = 392 +$T7 = 808 +$T8 = 840 +$T9 = 872 +$T10 = 904 +$T11 = 932 +$T12 = 968 +tv183 = 996 +tv172 = 996 +tv206 = 1000 +tv128 = 1000 +tv82 = 1000 +tv208 = 1008 +tv211 = 1016 +tv213 = 1024 +tv224 = 1032 +tv222 = 1040 +__$ArrayPad$ = 1048 main$dtor$1 PROC 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -3686,8 +3127,8 @@ main$dtor$1 PROC 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 00019 48 8b 8d d8 01 - 00 00 mov rcx, QWORD PTR $T7[rbp] + 00019 48 8b 8d 88 03 + 00 00 mov rcx, QWORD PTR $T10[rbp] 00020 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete 00025 48 83 c4 28 add rsp, 40 ; 00000028H 00029 5f pop rdi @@ -3770,445 +3211,6 @@ $LN1@MakeExecut: ?MakeExecutableBuffer@@YAPEAXPEAXK@Z ENDP ; MakeExecutableBuffer _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT ??1_NATIVE_CODE_BLOCK@@QEAA@XZ -_TEXT SEGMENT -this$ = 224 -??1_NATIVE_CODE_BLOCK@@QEAA@XZ PROC ; _NATIVE_CODE_BLOCK::~_NATIVE_CODE_BLOCK, COMDAT -$LN3: - 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00005 55 push rbp - 00006 57 push rdi - 00007 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00013 48 8b fc mov rdi, rsp - 00016 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002a 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00031 48 83 c0 10 add rax, 16 - 00035 48 8b c8 mov rcx, rax - 00038 e8 00 00 00 00 call ??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ ; std::vector >::~vector > - 0003d 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00044 5f pop rdi - 00045 5d pop rbp - 00046 c3 ret 0 -??1_NATIVE_CODE_BLOCK@@QEAA@XZ ENDP ; _NATIVE_CODE_BLOCK::~_NATIVE_CODE_BLOCK -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory -; COMDAT ?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ -_TEXT SEGMENT -this$ = 224 -?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ PROC ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first, COMDAT - -; 1343 : constexpr _Ty1& _Get_first() noexcept { - -$LN3: - 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00005 55 push rbp - 00006 57 push rdi - 00007 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00013 48 8b fc mov rdi, rsp - 00016 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1344 : return *this; - - 00036 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - -; 1345 : } - - 0003d 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00044 5f pop rdi - 00045 5d pop rbp - 00046 c3 ret 0 -?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ ENDP ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\vector -; COMDAT ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ -_TEXT SEGMENT -this$ = 224 -?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ PROC ; std::vector >::_Getal, COMDAT - -; 1731 : _Alty& _Getal() noexcept { - -$LN3: - 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00005 55 push rbp - 00006 57 push rdi - 00007 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00013 48 8b fc mov rdi, rsp - 00016 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1732 : return _Mypair._Get_first(); - - 00036 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0003d 48 8b c8 mov rcx, rax - 00040 e8 00 00 00 00 call ?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAAAEAV?$allocator@K@2@XZ ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first - 00045 90 npad 1 - -; 1733 : } - - 00046 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 0004d 5f pop rdi - 0004e 5d pop rbp - 0004f c3 ret 0 -?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ENDP ; std::vector >::_Getal -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\vector -; COMDAT ?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ -_TEXT SEGMENT -_My_data$ = 8 -_Myfirst$ = 40 -_Mylast$ = 72 -_Myend$ = 104 -tv90 = 312 -tv88 = 320 -tv86 = 328 -this$ = 368 -?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ PROC ; std::vector >::_Tidy, COMDAT - -; 1685 : void _Tidy() noexcept { // free all storage - -$LN4: - 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00005 55 push rbp - 00006 57 push rdi - 00007 48 81 ec 78 01 - 00 00 sub rsp, 376 ; 00000178H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00013 48 8b fc mov rdi, rsp - 00016 b9 5e 00 00 00 mov ecx, 94 ; 0000005eH - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 98 - 01 00 00 mov rcx, QWORD PTR [rsp+408] - 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1686 : auto& _My_data = _Mypair._Myval2; - - 00036 48 8b 85 70 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 0003d 48 89 45 08 mov QWORD PTR _My_data$[rbp], rax - -; 1687 : pointer& _Myfirst = _My_data._Myfirst; - - 00041 48 8b 45 08 mov rax, QWORD PTR _My_data$[rbp] - 00045 48 83 c0 08 add rax, 8 - 00049 48 89 45 28 mov QWORD PTR _Myfirst$[rbp], rax - -; 1688 : pointer& _Mylast = _My_data._Mylast; - - 0004d 48 8b 45 08 mov rax, QWORD PTR _My_data$[rbp] - 00051 48 83 c0 10 add rax, 16 - 00055 48 89 45 48 mov QWORD PTR _Mylast$[rbp], rax - -; 1689 : pointer& _Myend = _My_data._Myend; - - 00059 48 8b 45 08 mov rax, QWORD PTR _My_data$[rbp] - 0005d 48 83 c0 18 add rax, 24 - 00061 48 89 45 68 mov QWORD PTR _Myend$[rbp], rax - -; 1690 : -; 1691 : _My_data._Orphan_all(); - - 00065 48 8b 4d 08 mov rcx, QWORD PTR _My_data$[rbp] - 00069 e8 00 00 00 00 call ?_Orphan_all@_Container_base12@std@@QEAAXXZ ; std::_Container_base12::_Orphan_all - -; 1692 : -; 1693 : if (_Myfirst) { // destroy and deallocate old array - - 0006e 48 8b 45 28 mov rax, QWORD PTR _Myfirst$[rbp] - 00072 48 83 38 00 cmp QWORD PTR [rax], 0 - 00076 0f 84 92 00 00 - 00 je $LN2@Tidy - -; 1694 : _Destroy(_Myfirst, _Mylast); - - 0007c 48 8b 45 48 mov rax, QWORD PTR _Mylast$[rbp] - 00080 4c 8b 00 mov r8, QWORD PTR [rax] - 00083 48 8b 45 28 mov rax, QWORD PTR _Myfirst$[rbp] - 00087 48 8b 10 mov rdx, QWORD PTR [rax] - 0008a 48 8b 8d 70 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00091 e8 00 00 00 00 call ?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z ; std::vector >::_Destroy - -; 1695 : _Getal().deallocate(_Myfirst, static_cast(_Myend - _Myfirst)); - - 00096 48 8b 8d 70 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0009d e8 00 00 00 00 call ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ; std::vector >::_Getal - 000a2 48 89 85 38 01 - 00 00 mov QWORD PTR tv90[rbp], rax - 000a9 48 8b 45 68 mov rax, QWORD PTR _Myend$[rbp] - 000ad 48 8b 4d 28 mov rcx, QWORD PTR _Myfirst$[rbp] - 000b1 48 8b 09 mov rcx, QWORD PTR [rcx] - 000b4 48 8b 00 mov rax, QWORD PTR [rax] - 000b7 48 2b c1 sub rax, rcx - 000ba 48 c1 f8 02 sar rax, 2 - 000be 48 89 85 40 01 - 00 00 mov QWORD PTR tv88[rbp], rax - 000c5 48 8b 45 28 mov rax, QWORD PTR _Myfirst$[rbp] - 000c9 48 8b 00 mov rax, QWORD PTR [rax] - 000cc 48 89 85 48 01 - 00 00 mov QWORD PTR tv86[rbp], rax - 000d3 4c 8b 85 40 01 - 00 00 mov r8, QWORD PTR tv88[rbp] - 000da 48 8b 95 48 01 - 00 00 mov rdx, QWORD PTR tv86[rbp] - 000e1 48 8b 8d 38 01 - 00 00 mov rcx, QWORD PTR tv90[rbp] - 000e8 e8 00 00 00 00 call ?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z ; std::allocator::deallocate - -; 1696 : -; 1697 : _Myfirst = pointer(); - - 000ed 48 8b 45 28 mov rax, QWORD PTR _Myfirst$[rbp] - 000f1 48 c7 00 00 00 - 00 00 mov QWORD PTR [rax], 0 - -; 1698 : _Mylast = pointer(); - - 000f8 48 8b 45 48 mov rax, QWORD PTR _Mylast$[rbp] - 000fc 48 c7 00 00 00 - 00 00 mov QWORD PTR [rax], 0 - -; 1699 : _Myend = pointer(); - - 00103 48 8b 45 68 mov rax, QWORD PTR _Myend$[rbp] - 00107 48 c7 00 00 00 - 00 00 mov QWORD PTR [rax], 0 -$LN2@Tidy: - -; 1700 : } -; 1701 : } - - 0010e 48 8d a5 58 01 - 00 00 lea rsp, QWORD PTR [rbp+344] - 00115 5f pop rdi - 00116 5d pop rbp - 00117 c3 ret 0 -?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ ENDP ; std::vector >::_Tidy -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\vector -; COMDAT ?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z -_TEXT SEGMENT -this$ = 224 -_First$ = 232 -_Last$ = 240 -?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z PROC ; std::vector >::_Destroy, COMDAT - -; 1611 : void _Destroy(pointer _First, pointer _Last) { // destroy [_First, _Last) using allocator - -$LN3: - 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 - 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000f 55 push rbp - 00010 57 push rdi - 00011 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0001d 48 8b fc mov rdi, rsp - 00020 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 00034 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1612 : _Destroy_range(_First, _Last, _Getal()); - - 00040 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00047 e8 00 00 00 00 call ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ; std::vector >::_Getal - 0004c 4c 8b c0 mov r8, rax - 0004f 48 8b 95 f0 00 - 00 00 mov rdx, QWORD PTR _Last$[rbp] - 00056 48 8b 8d e8 00 - 00 00 mov rcx, QWORD PTR _First$[rbp] - 0005d e8 00 00 00 00 call ??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z ; std::_Destroy_range > - -; 1613 : } - - 00062 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00069 5f pop rdi - 0006a 5d pop rbp - 0006b c3 ret 0 -?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z ENDP ; std::vector >::_Destroy -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\vector -; COMDAT ??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ -_TEXT SEGMENT -_Alproxy$ = 8 -$S1$ = 36 -$T4 = 260 -__$ArrayPad$ = 280 -this$ = 320 -??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ PROC ; std::vector >::~vector >, COMDAT - -; 672 : ~vector() noexcept { - -$LN3: - 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00005 55 push rbp - 00006 57 push rdi - 00007 48 81 ec 48 01 - 00 00 sub rsp, 328 ; 00000148H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00013 48 8b fc mov rdi, rsp - 00016 b9 52 00 00 00 mov ecx, 82 ; 00000052H - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 68 - 01 00 00 mov rcx, QWORD PTR [rsp+360] - 0002a 48 8b 05 00 00 - 00 00 mov rax, QWORD PTR __security_cookie - 00031 48 33 c5 xor rax, rbp - 00034 48 89 85 18 01 - 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 0003b 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 673 : _Tidy(); - - 00047 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0004e e8 00 00 00 00 call ?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ ; std::vector >::_Tidy - -; 674 : #if _ITERATOR_DEBUG_LEVEL != 0 -; 675 : auto&& _Alproxy = _GET_PROXY_ALLOCATOR(_Alty, _Getal()); - - 00053 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0005a e8 00 00 00 00 call ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ; std::vector >::_Getal - 0005f 48 8b d0 mov rdx, rax - 00062 48 8d 4d 24 lea rcx, QWORD PTR $S1$[rbp] - 00066 e8 00 00 00 00 call ??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z ; std::allocator::allocator - 0006b 48 8d 45 24 lea rax, QWORD PTR $S1$[rbp] - 0006f 48 89 45 08 mov QWORD PTR _Alproxy$[rbp], rax - -; 676 : _Delete_plain_internal(_Alproxy, _STD exchange(_Mypair._Myval2._Myproxy, nullptr)); - - 00073 48 c7 85 04 01 - 00 00 00 00 00 - 00 mov QWORD PTR $T4[rbp], 0 - 0007e 48 8b 85 40 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00085 48 8d 95 04 01 - 00 00 lea rdx, QWORD PTR $T4[rbp] - 0008c 48 8b c8 mov rcx, rax - 0008f e8 00 00 00 00 call ??$exchange@PEAU_Container_proxy@std@@$$T@std@@YAPEAU_Container_proxy@0@AEAPEAU10@$$QEA$$T@Z ; std::exchange - 00094 48 8b d0 mov rdx, rax - 00097 48 8b 4d 08 mov rcx, QWORD PTR _Alproxy$[rbp] - 0009b e8 00 00 00 00 call ??$_Delete_plain_internal@V?$allocator@U_Container_proxy@std@@@std@@@std@@YAXAEAV?$allocator@U_Container_proxy@std@@@0@QEAU_Container_proxy@0@@Z ; std::_Delete_plain_internal > - -; 677 : #endif // _ITERATOR_DEBUG_LEVEL != 0 -; 678 : } - - 000a0 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 000a4 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ$rtcFrameData - 000ab e8 00 00 00 00 call _RTC_CheckStackVars - 000b0 90 npad 1 - 000b1 48 8b 8d 18 01 - 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 000b8 48 33 cd xor rcx, rbp - 000bb e8 00 00 00 00 call __security_check_cookie - 000c0 48 8d a5 28 01 - 00 00 lea rsp, QWORD PTR [rbp+296] - 000c7 5f pop rdi - 000c8 5d pop rbp - 000c9 c3 ret 0 -??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ ENDP ; std::vector >::~vector > -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory -; COMDAT ?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z -_TEXT SEGMENT -this$ = 224 -_Ptr$ = 232 -_Count$ = 240 -?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z PROC ; std::allocator::deallocate, COMDAT - -; 801 : void deallocate(_Ty* const _Ptr, const size_t _Count) { - -$LN3: - 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 - 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000f 55 push rbp - 00010 57 push rdi - 00011 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0001d 48 8b fc mov rdi, rsp - 00020 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 00034 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 802 : // no overflow check on the following multiply; we assume _Allocate did that check -; 803 : _Deallocate<_New_alignof<_Ty>>(_Ptr, sizeof(_Ty) * _Count); - - 00040 48 8b 85 f0 00 - 00 00 mov rax, QWORD PTR _Count$[rbp] - 00047 48 c1 e0 02 shl rax, 2 - 0004b 48 8b d0 mov rdx, rax - 0004e 48 8b 8d e8 00 - 00 00 mov rcx, QWORD PTR _Ptr$[rbp] - 00055 e8 00 00 00 00 call ??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z ; std::_Deallocate<16,0> - -; 804 : } - - 0005a 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00061 5f pop rdi - 00062 5d pop rbp - 00063 c3 ret 0 -?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z ENDP ; std::allocator::deallocate -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI ; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xloctime ; COMDAT ??$_Getvals@_W@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z _TEXT SEGMENT @@ -5204,332 +4206,6 @@ $LN4@eq_int_typ: ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z ENDP ; std::_Narrow_char_traits::eq_int_type _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory -; COMDAT ?_Orphan_all@_Container_base12@std@@QEAAXXZ -_TEXT SEGMENT -_Lock$4 = 4 -_Pnext$5 = 40 -__$ArrayPad$ = 248 -this$ = 288 -?_Orphan_all@_Container_base12@std@@QEAAXXZ PROC ; std::_Container_base12::_Orphan_all, COMDAT - -; 1205 : inline void _Container_base12::_Orphan_all() noexcept { - -$LN7: - 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00005 55 push rbp - 00006 57 push rdi - 00007 48 81 ec 28 01 - 00 00 sub rsp, 296 ; 00000128H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00013 48 8b fc mov rdi, rsp - 00016 b9 4a 00 00 00 mov ecx, 74 ; 0000004aH - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 48 - 01 00 00 mov rcx, QWORD PTR [rsp+328] - 0002a 48 8b 05 00 00 - 00 00 mov rax, QWORD PTR __security_cookie - 00031 48 33 c5 xor rax, rbp - 00034 48 89 85 f8 00 - 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 0003b 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1206 : #if _ITERATOR_DEBUG_LEVEL == 2 -; 1207 : if (_Myproxy) { // proxy allocated, drain it - - 00047 48 8b 85 20 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 0004e 48 83 38 00 cmp QWORD PTR [rax], 0 - 00052 74 6b je SHORT $LN5@Orphan_all - -; 1208 : _Lockit _Lock(_LOCK_DEBUG); - - 00054 ba 03 00 00 00 mov edx, 3 - 00059 48 8d 4d 04 lea rcx, QWORD PTR _Lock$4[rbp] - 0005d ff 15 00 00 00 - 00 call QWORD PTR __imp_??0_Lockit@std@@QEAA@H@Z - -; 1209 : -; 1210 : for (auto _Pnext = &_Myproxy->_Myfirstiter; *_Pnext; *_Pnext = (*_Pnext)->_Mynextiter) { - - 00063 48 8b 85 20 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 0006a 48 8b 00 mov rax, QWORD PTR [rax] - 0006d 48 83 c0 08 add rax, 8 - 00071 48 89 45 28 mov QWORD PTR _Pnext$5[rbp], rax - 00075 eb 12 jmp SHORT $LN4@Orphan_all -$LN2@Orphan_all: - 00077 48 8b 45 28 mov rax, QWORD PTR _Pnext$5[rbp] - 0007b 48 8b 00 mov rax, QWORD PTR [rax] - 0007e 48 8b 4d 28 mov rcx, QWORD PTR _Pnext$5[rbp] - 00082 48 8b 40 08 mov rax, QWORD PTR [rax+8] - 00086 48 89 01 mov QWORD PTR [rcx], rax -$LN4@Orphan_all: - 00089 48 8b 45 28 mov rax, QWORD PTR _Pnext$5[rbp] - 0008d 48 83 38 00 cmp QWORD PTR [rax], 0 - 00091 74 10 je SHORT $LN3@Orphan_all - -; 1211 : (*_Pnext)->_Myproxy = nullptr; - - 00093 48 8b 45 28 mov rax, QWORD PTR _Pnext$5[rbp] - 00097 48 8b 00 mov rax, QWORD PTR [rax] - 0009a 48 c7 00 00 00 - 00 00 mov QWORD PTR [rax], 0 - -; 1212 : } - - 000a1 eb d4 jmp SHORT $LN2@Orphan_all -$LN3@Orphan_all: - -; 1213 : -; 1214 : _Myproxy->_Myfirstiter = nullptr; - - 000a3 48 8b 85 20 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 000aa 48 8b 00 mov rax, QWORD PTR [rax] - 000ad 48 c7 40 08 00 - 00 00 00 mov QWORD PTR [rax+8], 0 - -; 1215 : } - - 000b5 48 8d 4d 04 lea rcx, QWORD PTR _Lock$4[rbp] - 000b9 ff 15 00 00 00 - 00 call QWORD PTR __imp_??1_Lockit@std@@QEAA@XZ -$LN5@Orphan_all: - -; 1216 : #endif // _ITERATOR_DEBUG_LEVEL == 2 -; 1217 : } - - 000bf 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 000c3 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:?_Orphan_all@_Container_base12@std@@QEAAXXZ$rtcFrameData - 000ca e8 00 00 00 00 call _RTC_CheckStackVars - 000cf 90 npad 1 - 000d0 48 8b 8d f8 00 - 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 000d7 48 33 cd xor rcx, rbp - 000da e8 00 00 00 00 call __security_check_cookie - 000df 48 8d a5 08 01 - 00 00 lea rsp, QWORD PTR [rbp+264] - 000e6 5f pop rdi - 000e7 5d pop rbp - 000e8 c3 ret 0 -?_Orphan_all@_Container_base12@std@@QEAAXXZ ENDP ; std::_Container_base12::_Orphan_all -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xmemory -; COMDAT ?_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z -_TEXT SEGMENT -_Ptr_user$ = 8 -_Ptr_container$ = 40 -_Min_back_shift$ = 72 -_Back_shift$ = 104 -_Ptr$ = 352 -_Bytes$ = 360 -?_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z PROC ; std::_Adjust_manually_vector_aligned, COMDAT - -; 132 : inline void _Adjust_manually_vector_aligned(void*& _Ptr, size_t& _Bytes) { - -$LN21: - 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx - 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000a 55 push rbp - 0000b 57 push rdi - 0000c 48 81 ec 78 01 - 00 00 sub rsp, 376 ; 00000178H - 00013 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] - 00018 48 8b fc mov rdi, rsp - 0001b b9 5e 00 00 00 mov ecx, 94 ; 0000005eH - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 98 - 01 00 00 mov rcx, QWORD PTR [rsp+408] - 0002f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 133 : // adjust parameters from _Allocate_manually_vector_aligned to pass to operator delete -; 134 : _Bytes += _Non_user_size; - - 0003b 48 8b 85 68 01 - 00 00 mov rax, QWORD PTR _Bytes$[rbp] - 00042 48 8b 00 mov rax, QWORD PTR [rax] - 00045 48 83 c0 2f add rax, 47 ; 0000002fH - 00049 48 8b 8d 68 01 - 00 00 mov rcx, QWORD PTR _Bytes$[rbp] - 00050 48 89 01 mov QWORD PTR [rcx], rax - -; 135 : -; 136 : const uintptr_t* const _Ptr_user = reinterpret_cast(_Ptr); - - 00053 48 8b 85 60 01 - 00 00 mov rax, QWORD PTR _Ptr$[rbp] - 0005a 48 8b 00 mov rax, QWORD PTR [rax] - 0005d 48 89 45 08 mov QWORD PTR _Ptr_user$[rbp], rax - -; 137 : const uintptr_t _Ptr_container = _Ptr_user[-1]; - - 00061 b8 08 00 00 00 mov eax, 8 - 00066 48 6b c0 ff imul rax, rax, -1 - 0006a 48 8b 4d 08 mov rcx, QWORD PTR _Ptr_user$[rbp] - 0006e 48 8b 04 01 mov rax, QWORD PTR [rcx+rax] - 00072 48 89 45 28 mov QWORD PTR _Ptr_container$[rbp], rax -$LN4@Adjust_man: - -; 138 : -; 139 : // If the following asserts, it likely means that we are performing -; 140 : // an aligned delete on memory coming from an unaligned allocation. -; 141 : _STL_ASSERT(_Ptr_user[-2] == _Big_allocation_sentinel, "invalid argument"); - - 00076 b8 08 00 00 00 mov eax, 8 - 0007b 48 6b c0 fe imul rax, rax, -2 - 0007f 48 8b 4d 08 mov rcx, QWORD PTR _Ptr_user$[rbp] - 00083 48 ba fa fa fa - fa fa fa fa fa mov rdx, -361700864190383366 ; fafafafafafafafaH - 0008d 48 39 14 01 cmp QWORD PTR [rcx+rax], rdx - 00091 75 02 jne SHORT $LN14@Adjust_man - 00093 eb 77 jmp SHORT $LN15@Adjust_man -$LN14@Adjust_man: -$LN7@Adjust_man: - 00095 8b 05 00 00 00 - 00 mov eax, DWORD PTR ?__LINE__Var@?0??_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z@4JA - 0009b 83 c0 09 add eax, 9 - 0009e 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@FCMFBGOM@invalid?5argument@ - 000a5 48 89 4c 24 28 mov QWORD PTR [rsp+40], rcx - 000aa 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_02DKCKIIND@?$CFs@ - 000b1 48 89 4c 24 20 mov QWORD PTR [rsp+32], rcx - 000b6 45 33 c9 xor r9d, r9d - 000b9 44 8b c0 mov r8d, eax - 000bc 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:??_C@_0GI@JMEOMKJO@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ - 000c3 b9 02 00 00 00 mov ecx, 2 - 000c8 ff 15 00 00 00 - 00 call QWORD PTR __imp__CrtDbgReport - 000ce 83 f8 01 cmp eax, 1 - 000d1 75 03 jne SHORT $LN19@Adjust_man - 000d3 cc int 3 - 000d4 33 c0 xor eax, eax -$LN19@Adjust_man: - 000d6 8b 05 00 00 00 - 00 mov eax, DWORD PTR ?__LINE__Var@?0??_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z@4JA - 000dc 83 c0 09 add eax, 9 - 000df 48 c7 44 24 20 - 00 00 00 00 mov QWORD PTR [rsp+32], 0 - 000e8 44 8b c8 mov r9d, eax - 000eb 4c 8d 05 00 00 - 00 00 lea r8, OFFSET FLAT:??_C@_1NA@FEEOBALC@?$AAC?$AA?3?$AA?2?$AAP?$AAr?$AAo?$AAg?$AAr?$AAa?$AAm?$AA?5?$AAF?$AAi?$AAl?$AAe@ - 000f2 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:??_C@_1EK@NIFDJFDG@?$AAs?$AAt?$AAd?$AA?3?$AA?3?$AA_?$AAA?$AAd?$AAj?$AAu?$AAs?$AAt?$AA_?$AAm?$AAa@ - 000f9 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_1CG@JNLFBNGN@?$AA?$CC?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?5?$AAa?$AAr?$AAg?$AAu?$AAm?$AAe@ - 00100 ff 15 00 00 00 - 00 call QWORD PTR __imp__invalid_parameter - 00106 33 c0 xor eax, eax - 00108 85 c0 test eax, eax - 0010a 75 89 jne SHORT $LN7@Adjust_man -$LN15@Adjust_man: - 0010c 33 c0 xor eax, eax - 0010e 85 c0 test eax, eax - 00110 0f 85 60 ff ff - ff jne $LN4@Adjust_man - -; 142 : -; 143 : // Extra paranoia on aligned allocation/deallocation; ensure _Ptr_container is -; 144 : // in range [_Min_back_shift, _Non_user_size] -; 145 : #ifdef _DEBUG -; 146 : constexpr uintptr_t _Min_back_shift = 2 * sizeof(void*); - - 00116 48 c7 45 48 10 - 00 00 00 mov QWORD PTR _Min_back_shift$[rbp], 16 - -; 147 : #else // ^^^ _DEBUG ^^^ // vvv !_DEBUG vvv -; 148 : constexpr uintptr_t _Min_back_shift = sizeof(void*); -; 149 : #endif // _DEBUG -; 150 : const uintptr_t _Back_shift = reinterpret_cast(_Ptr) - _Ptr_container; - - 0011e 48 8b 85 60 01 - 00 00 mov rax, QWORD PTR _Ptr$[rbp] - 00125 48 8b 4d 28 mov rcx, QWORD PTR _Ptr_container$[rbp] - 00129 48 8b 00 mov rax, QWORD PTR [rax] - 0012c 48 2b c1 sub rax, rcx - 0012f 48 89 45 68 mov QWORD PTR _Back_shift$[rbp], rax -$LN10@Adjust_man: - -; 151 : _STL_VERIFY(_Back_shift >= _Min_back_shift && _Back_shift <= _Non_user_size, "invalid argument"); - - 00133 48 83 7d 68 10 cmp QWORD PTR _Back_shift$[rbp], 16 - 00138 72 09 jb SHORT $LN16@Adjust_man - 0013a 48 83 7d 68 2f cmp QWORD PTR _Back_shift$[rbp], 47 ; 0000002fH - 0013f 77 02 ja SHORT $LN16@Adjust_man - 00141 eb 77 jmp SHORT $LN17@Adjust_man -$LN16@Adjust_man: -$LN13@Adjust_man: - 00143 8b 05 00 00 00 - 00 mov eax, DWORD PTR ?__LINE__Var@?0??_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z@4JA - 00149 83 c0 13 add eax, 19 - 0014c 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@FCMFBGOM@invalid?5argument@ - 00153 48 89 4c 24 28 mov QWORD PTR [rsp+40], rcx - 00158 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_02DKCKIIND@?$CFs@ - 0015f 48 89 4c 24 20 mov QWORD PTR [rsp+32], rcx - 00164 45 33 c9 xor r9d, r9d - 00167 44 8b c0 mov r8d, eax - 0016a 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:??_C@_0GI@JMEOMKJO@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ - 00171 b9 02 00 00 00 mov ecx, 2 - 00176 ff 15 00 00 00 - 00 call QWORD PTR __imp__CrtDbgReport - 0017c 83 f8 01 cmp eax, 1 - 0017f 75 03 jne SHORT $LN20@Adjust_man - 00181 cc int 3 - 00182 33 c0 xor eax, eax -$LN20@Adjust_man: - 00184 8b 05 00 00 00 - 00 mov eax, DWORD PTR ?__LINE__Var@?0??_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z@4JA - 0018a 83 c0 13 add eax, 19 - 0018d 48 c7 44 24 20 - 00 00 00 00 mov QWORD PTR [rsp+32], 0 - 00196 44 8b c8 mov r9d, eax - 00199 4c 8d 05 00 00 - 00 00 lea r8, OFFSET FLAT:??_C@_1NA@FEEOBALC@?$AAC?$AA?3?$AA?2?$AAP?$AAr?$AAo?$AAg?$AAr?$AAa?$AAm?$AA?5?$AAF?$AAi?$AAl?$AAe@ - 001a0 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:??_C@_1EK@NIFDJFDG@?$AAs?$AAt?$AAd?$AA?3?$AA?3?$AA_?$AAA?$AAd?$AAj?$AAu?$AAs?$AAt?$AA_?$AAm?$AAa@ - 001a7 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_1CG@JNLFBNGN@?$AA?$CC?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?5?$AAa?$AAr?$AAg?$AAu?$AAm?$AAe@ - 001ae ff 15 00 00 00 - 00 call QWORD PTR __imp__invalid_parameter - 001b4 33 c0 xor eax, eax - 001b6 85 c0 test eax, eax - 001b8 75 89 jne SHORT $LN13@Adjust_man -$LN17@Adjust_man: - 001ba 33 c0 xor eax, eax - 001bc 85 c0 test eax, eax - 001be 0f 85 6f ff ff - ff jne $LN10@Adjust_man - -; 152 : _Ptr = reinterpret_cast(_Ptr_container); - - 001c4 48 8b 85 60 01 - 00 00 mov rax, QWORD PTR _Ptr$[rbp] - 001cb 48 8b 4d 28 mov rcx, QWORD PTR _Ptr_container$[rbp] - 001cf 48 89 08 mov QWORD PTR [rax], rcx - -; 153 : } - - 001d2 48 8d a5 48 01 - 00 00 lea rsp, QWORD PTR [rbp+328] - 001d9 5f pop rdi - 001da 5d pop rbp - 001db c3 ret 0 -?_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z ENDP ; std::_Adjust_manually_vector_aligned -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI ; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\wchar.h ; COMDAT wmemcpy _TEXT SEGMENT diff --git a/CodeVirtualizer/x64/Debug/NativeCode.cod b/CodeVirtualizer/x64/Debug/NativeCode.cod index 54f3d19..fcfb9bf 100644 --- a/CodeVirtualizer/x64/Debug/NativeCode.cod +++ b/CodeVirtualizer/x64/Debug/NativeCode.cod @@ -764,7 +764,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z DD imagerel $LN5 - DD imagerel $LN5+211 + DD imagerel $LN5+252 DD imagerel $unwind$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z pdata ENDS ; COMDAT pdata @@ -1010,7 +1010,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcCalcBlockSize@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN7 - DD imagerel $LN7+143 + DD imagerel $LN7+156 DD imagerel $unwind$?NcCalcBlockSize@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT pdata @@ -1058,13 +1058,13 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z DD imagerel $LN10 - DD imagerel $LN10+409 + DD imagerel $LN10+429 DD imagerel $unwind$?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcInsertBlockBefore@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z DD imagerel $LN10 - DD imagerel $LN10+392 + DD imagerel $LN10+412 DD imagerel $unwind$?NcInsertBlockBefore@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z pdata ENDS ; COMDAT pdata @@ -1148,7 +1148,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcAssemble@@YAPEAXPEAU_NATIVE_CODE_BLOCK@@PEAK@Z DD imagerel $LN9 - DD imagerel $LN9+270 + DD imagerel $LN9+280 DD imagerel $unwind$?NcAssemble@@YAPEAXPEAU_NATIVE_CODE_BLOCK@@PEAK@Z pdata ENDS ; COMDAT pdata @@ -1160,13 +1160,13 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcDebugPrint@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN11 - DD imagerel $LN11+326 + DD imagerel $LN11+350 DD imagerel $unwind$?NcDebugPrint@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcPrintBlockCode@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN10 - DD imagerel $LN10+337 + DD imagerel $LN10+361 DD imagerel $unwind$?NcPrintBlockCode@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT pdata @@ -3962,7 +3962,7 @@ $ip2state$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z DB 06H DB 00H DB 0a2H DB 02H - DB 0e2H + DB 'i', 02H DB 00H xdata ENDS ; COMDAT xdata @@ -9737,16 +9737,16 @@ T$1 = 8 i$2 = 36 $T3 = 260 $T4 = 296 -tv90 = 328 -tv92 = 336 -tv95 = 344 -tv129 = 352 -tv141 = 360 -tv139 = 368 +tv93 = 328 +tv95 = 336 +tv130 = 344 +tv132 = 352 +tv144 = 360 +tv142 = 368 Block$ = 416 ?NcPrintBlockCode@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcPrintBlockCode, COMDAT -; 563 : { +; 565 : { $LN10: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -9765,7 +9765,7 @@ $LN10: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 564 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) +; 566 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) 00036 48 8b 85 a0 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -9778,108 +9778,115 @@ $LN2@NcPrintBlo: 0004d 48 89 45 08 mov QWORD PTR T$1[rbp], rax $LN4@NcPrintBlo: 00051 48 83 7d 08 00 cmp QWORD PTR T$1[rbp], 0 - 00056 0f 84 eb 00 00 + 00056 0f 84 03 01 00 + 00 je $LN3@NcPrintBlo + 0005c 48 8b 85 a0 01 + 00 00 mov rax, QWORD PTR Block$[rbp] + 00063 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 00067 48 8b 00 mov rax, QWORD PTR [rax] + 0006a 48 39 45 08 cmp QWORD PTR T$1[rbp], rax + 0006e 0f 84 eb 00 00 00 je $LN3@NcPrintBlo -; 565 : { -; 566 : if (!(T->Flags & CODE_FLAG_IS_LABEL)) +; 567 : { +; 568 : if (!(T->Flags & CODE_FLAG_IS_LABEL)) - 0005c 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] - 00060 8b 40 18 mov eax, DWORD PTR [rax+24] - 00063 83 e0 01 and eax, 1 - 00066 85 c0 test eax, eax - 00068 0f 85 d4 00 00 + 00074 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] + 00078 8b 40 18 mov eax, DWORD PTR [rax+24] + 0007b 83 e0 01 and eax, 1 + 0007e 85 c0 test eax, eax + 00080 0f 85 d4 00 00 00 jne $LN8@NcPrintBlo -; 567 : { -; 568 : for (uint32_t i = 0; i < T->RawDataSize; i++) +; 569 : { +; 570 : for (uint32_t i = 0; i < T->RawDataSize; i++) - 0006e c7 45 24 00 00 + 00086 c7 45 24 00 00 00 00 mov DWORD PTR i$2[rbp], 0 - 00075 eb 08 jmp SHORT $LN7@NcPrintBlo + 0008d eb 08 jmp SHORT $LN7@NcPrintBlo $LN5@NcPrintBlo: - 00077 8b 45 24 mov eax, DWORD PTR i$2[rbp] - 0007a ff c0 inc eax - 0007c 89 45 24 mov DWORD PTR i$2[rbp], eax + 0008f 8b 45 24 mov eax, DWORD PTR i$2[rbp] + 00092 ff c0 inc eax + 00094 89 45 24 mov DWORD PTR i$2[rbp], eax $LN7@NcPrintBlo: - 0007f 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] - 00083 8b 40 28 mov eax, DWORD PTR [rax+40] - 00086 39 45 24 cmp DWORD PTR i$2[rbp], eax - 00089 0f 83 b3 00 00 + 00097 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] + 0009b 8b 40 28 mov eax, DWORD PTR [rax+40] + 0009e 39 45 24 cmp DWORD PTR i$2[rbp], eax + 000a1 0f 83 b3 00 00 00 jae $LN6@NcPrintBlo -; 569 : { -; 570 : std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)T->RawData[i] << ' '; +; 571 : { +; 572 : std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)T->RawData[i] << ' '; - 0008f 48 8d 15 00 00 + 000a7 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?hex@std@@YAAEAVios_base@1@AEAV21@@Z ; std::hex - 00096 48 8b 0d 00 00 + 000ae 48 8b 0d 00 00 00 00 mov rcx, QWORD PTR __imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A - 0009d ff 15 00 00 00 + 000b5 ff 15 00 00 00 00 call QWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z - 000a3 48 89 85 48 01 - 00 00 mov QWORD PTR tv90[rbp], rax - 000aa ba 02 00 00 00 mov edx, 2 - 000af 48 8d 8d 28 01 + 000bb 48 89 85 48 01 + 00 00 mov QWORD PTR tv93[rbp], rax + 000c2 ba 02 00 00 00 mov edx, 2 + 000c7 48 8d 8d 28 01 00 00 lea rcx, QWORD PTR $T4[rbp] - 000b6 e8 00 00 00 00 call ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z ; std::setw - 000bb 48 89 85 50 01 - 00 00 mov QWORD PTR tv92[rbp], rax - 000c2 48 8b 95 50 01 - 00 00 mov rdx, QWORD PTR tv92[rbp] - 000c9 48 8b 8d 48 01 - 00 00 mov rcx, QWORD PTR tv90[rbp] - 000d0 e8 00 00 00 00 call ??$?6DU?$char_traits@D@std@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Smanip@_J@0@@Z ; std::operator<<,__int64> - 000d5 48 89 85 58 01 + 000ce e8 00 00 00 00 call ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z ; std::setw + 000d3 48 89 85 50 01 00 00 mov QWORD PTR tv95[rbp], rax - 000dc b2 30 mov dl, 48 ; 00000030H - 000de 48 8d 8d 04 01 + 000da 48 8b 95 50 01 + 00 00 mov rdx, QWORD PTR tv95[rbp] + 000e1 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR tv93[rbp] + 000e8 e8 00 00 00 00 call ??$?6DU?$char_traits@D@std@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Smanip@_J@0@@Z ; std::operator<<,__int64> + 000ed 48 89 85 58 01 + 00 00 mov QWORD PTR tv130[rbp], rax + 000f4 b2 30 mov dl, 48 ; 00000030H + 000f6 48 8d 8d 04 01 00 00 lea rcx, QWORD PTR $T3[rbp] - 000e5 e8 00 00 00 00 call ??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z ; std::setfill - 000ea 48 89 85 60 01 - 00 00 mov QWORD PTR tv129[rbp], rax - 000f1 48 8b 95 60 01 - 00 00 mov rdx, QWORD PTR tv129[rbp] - 000f8 48 8b 8d 58 01 - 00 00 mov rcx, QWORD PTR tv95[rbp] - 000ff e8 00 00 00 00 call ??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z ; std::operator<<,char> - 00104 48 89 85 68 01 - 00 00 mov QWORD PTR tv141[rbp], rax - 0010b 8b 45 24 mov eax, DWORD PTR i$2[rbp] - 0010e 48 8b 4d 08 mov rcx, QWORD PTR T$1[rbp] - 00112 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 00116 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] - 0011a 89 85 70 01 00 - 00 mov DWORD PTR tv139[rbp], eax - 00120 8b 95 70 01 00 - 00 mov edx, DWORD PTR tv139[rbp] - 00126 48 8b 8d 68 01 - 00 00 mov rcx, QWORD PTR tv141[rbp] - 0012d ff 15 00 00 00 + 000fd e8 00 00 00 00 call ??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z ; std::setfill + 00102 48 89 85 60 01 + 00 00 mov QWORD PTR tv132[rbp], rax + 00109 48 8b 95 60 01 + 00 00 mov rdx, QWORD PTR tv132[rbp] + 00110 48 8b 8d 58 01 + 00 00 mov rcx, QWORD PTR tv130[rbp] + 00117 e8 00 00 00 00 call ??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z ; std::operator<<,char> + 0011c 48 89 85 68 01 + 00 00 mov QWORD PTR tv144[rbp], rax + 00123 8b 45 24 mov eax, DWORD PTR i$2[rbp] + 00126 48 8b 4d 08 mov rcx, QWORD PTR T$1[rbp] + 0012a 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 0012e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 00132 89 85 70 01 00 + 00 mov DWORD PTR tv142[rbp], eax + 00138 8b 95 70 01 00 + 00 mov edx, DWORD PTR tv142[rbp] + 0013e 48 8b 8d 68 01 + 00 00 mov rcx, QWORD PTR tv144[rbp] + 00145 ff 15 00 00 00 00 call QWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z - 00133 b2 20 mov dl, 32 ; 00000020H - 00135 48 8b c8 mov rcx, rax - 00138 e8 00 00 00 00 call ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z ; std::operator<< > + 0014b b2 20 mov dl, 32 ; 00000020H + 0014d 48 8b c8 mov rcx, rax + 00150 e8 00 00 00 00 call ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z ; std::operator<< > -; 571 : } +; 573 : } - 0013d e9 35 ff ff ff jmp $LN5@NcPrintBlo + 00155 e9 35 ff ff ff jmp $LN5@NcPrintBlo $LN6@NcPrintBlo: $LN8@NcPrintBlo: -; 572 : } -; 573 : } +; 574 : } +; 575 : } - 00142 e9 ff fe ff ff jmp $LN2@NcPrintBlo + 0015a e9 e7 fe ff ff jmp $LN2@NcPrintBlo $LN3@NcPrintBlo: -; 574 : } +; 576 : } - 00147 48 8d a5 88 01 + 0015f 48 8d a5 88 01 00 00 lea rsp, QWORD PTR [rbp+392] - 0014e 5f pop rdi - 0014f 5d pop rbp - 00150 c3 ret 0 + 00166 5f pop rdi + 00167 5d pop rbp + 00168 c3 ret 0 ?NcPrintBlockCode@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; NcPrintBlockCode _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -9889,12 +9896,12 @@ _TEXT SEGMENT ConsoleHandle$ = 8 T$1 = 40 IClass$2 = 68 -tv128 = 276 -tv94 = 280 +tv131 = 276 +tv129 = 280 Block$ = 320 ?NcDebugPrint@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcDebugPrint, COMDAT -; 533 : { +; 535 : { $LN11: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -9913,25 +9920,25 @@ $LN11: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 534 : HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE); +; 536 : HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE); 00036 b9 f5 ff ff ff mov ecx, -11 ; fffffff5H 0003b ff 15 00 00 00 00 call QWORD PTR __imp_GetStdHandle 00041 48 89 45 08 mov QWORD PTR ConsoleHandle$[rbp], rax -; 535 : if (!ConsoleHandle) +; 537 : if (!ConsoleHandle) 00045 48 83 7d 08 00 cmp QWORD PTR ConsoleHandle$[rbp], 0 0004a 75 05 jne SHORT $LN5@NcDebugPri -; 536 : return; +; 538 : return; - 0004c e9 eb 00 00 00 jmp $LN1@NcDebugPri + 0004c e9 03 01 00 00 jmp $LN1@NcDebugPri $LN5@NcDebugPri: -; 537 : -; 538 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) +; 539 : +; 540 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) 00051 48 8b 85 40 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -9944,123 +9951,130 @@ $LN2@NcDebugPri: 00068 48 89 45 28 mov QWORD PTR T$1[rbp], rax $LN4@NcDebugPri: 0006c 48 83 7d 28 00 cmp QWORD PTR T$1[rbp], 0 - 00071 0f 84 c5 00 00 + 00071 0f 84 dd 00 00 + 00 je $LN3@NcDebugPri + 00077 48 8b 85 40 01 + 00 00 mov rax, QWORD PTR Block$[rbp] + 0007e 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 00082 48 8b 00 mov rax, QWORD PTR [rax] + 00085 48 39 45 28 cmp QWORD PTR T$1[rbp], rax + 00089 0f 84 c5 00 00 00 je $LN3@NcDebugPri -; 539 : { -; 540 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 541 : { +; 542 : if (T->Flags & CODE_FLAG_IS_LABEL) - 00077 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] - 0007b 8b 40 18 mov eax, DWORD PTR [rax+24] - 0007e 83 e0 01 and eax, 1 - 00081 85 c0 test eax, eax - 00083 74 26 je SHORT $LN6@NcDebugPri + 0008f 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 00093 8b 40 18 mov eax, DWORD PTR [rax+24] + 00096 83 e0 01 and eax, 1 + 00099 85 c0 test eax, eax + 0009b 74 26 je SHORT $LN6@NcDebugPri -; 541 : { -; 542 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_RED); +; 543 : { +; 544 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_RED); - 00085 66 ba 06 00 mov dx, 6 - 00089 48 8b 4d 08 mov rcx, QWORD PTR ConsoleHandle$[rbp] - 0008d ff 15 00 00 00 + 0009d 66 ba 06 00 mov dx, 6 + 000a1 48 8b 4d 08 mov rcx, QWORD PTR ConsoleHandle$[rbp] + 000a5 ff 15 00 00 00 00 call QWORD PTR __imp_SetConsoleTextAttribute -; 543 : printf("Label: %u\n", T->Label); +; 545 : printf("Label: %u\n", T->Label); - 00093 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] - 00097 8b 50 1c mov edx, DWORD PTR [rax+28] - 0009a 48 8d 0d 00 00 + 000ab 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 000af 8b 50 1c mov edx, DWORD PTR [rax+28] + 000b2 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_0L@ILJOJNOL@Label?3?5?$CFu?6@ - 000a1 e8 00 00 00 00 call printf + 000b9 e8 00 00 00 00 call printf -; 544 : } +; 546 : } - 000a6 e9 8c 00 00 00 jmp $LN7@NcDebugPri + 000be e9 8c 00 00 00 jmp $LN7@NcDebugPri $LN6@NcDebugPri: -; 545 : else -; 546 : { -; 547 : XED_ICLASS_ENUM IClass = XedDecodedInstGetIClass(&T->XedInstruction); +; 547 : else +; 548 : { +; 549 : XED_ICLASS_ENUM IClass = XedDecodedInstGetIClass(&T->XedInstruction); - 000ab 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] - 000af 48 83 c0 30 add rax, 48 ; 00000030H - 000b3 48 8b c8 mov rcx, rax - 000b6 e8 00 00 00 00 call xed_decoded_inst_get_iclass - 000bb 89 45 44 mov DWORD PTR IClass$2[rbp], eax + 000c3 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 000c7 48 83 c0 30 add rax, 48 ; 00000030H + 000cb 48 8b c8 mov rcx, rax + 000ce e8 00 00 00 00 call xed_decoded_inst_get_iclass + 000d3 89 45 44 mov DWORD PTR IClass$2[rbp], eax -; 548 : if (T->Flags & CODE_FLAG_IS_REL_JMP) +; 550 : if (T->Flags & CODE_FLAG_IS_REL_JMP) - 000be 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] - 000c2 8b 40 18 mov eax, DWORD PTR [rax+24] - 000c5 83 e0 02 and eax, 2 - 000c8 85 c0 test eax, eax - 000ca 74 46 je SHORT $LN8@NcDebugPri + 000d6 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 000da 8b 40 18 mov eax, DWORD PTR [rax+24] + 000dd 83 e0 02 and eax, 2 + 000e0 85 c0 test eax, eax + 000e2 74 46 je SHORT $LN8@NcDebugPri -; 549 : { -; 550 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_RED); +; 551 : { +; 552 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_RED); - 000cc 66 ba 06 00 mov dx, 6 - 000d0 48 8b 4d 08 mov rcx, QWORD PTR ConsoleHandle$[rbp] - 000d4 ff 15 00 00 00 + 000e4 66 ba 06 00 mov dx, 6 + 000e8 48 8b 4d 08 mov rcx, QWORD PTR ConsoleHandle$[rbp] + 000ec ff 15 00 00 00 00 call QWORD PTR __imp_SetConsoleTextAttribute -; 551 : printf("%s: %u\n", XedIClassEnumToString(IClass), T->Label); - - 000da 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] - 000de 8b 40 1c mov eax, DWORD PTR [rax+28] - 000e1 89 85 14 01 00 - 00 mov DWORD PTR tv128[rbp], eax - 000e7 8b 4d 44 mov ecx, DWORD PTR IClass$2[rbp] - 000ea e8 00 00 00 00 call xed_iclass_enum_t2str - 000ef 48 89 85 18 01 - 00 00 mov QWORD PTR tv94[rbp], rax - 000f6 44 8b 85 14 01 - 00 00 mov r8d, DWORD PTR tv128[rbp] - 000fd 48 8b 95 18 01 - 00 00 mov rdx, QWORD PTR tv94[rbp] - 00104 48 8d 0d 00 00 +; 553 : printf("%s: %u\n", XedIClassEnumToString(IClass), T->Label); + + 000f2 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 000f6 8b 40 1c mov eax, DWORD PTR [rax+28] + 000f9 89 85 14 01 00 + 00 mov DWORD PTR tv131[rbp], eax + 000ff 8b 4d 44 mov ecx, DWORD PTR IClass$2[rbp] + 00102 e8 00 00 00 00 call xed_iclass_enum_t2str + 00107 48 89 85 18 01 + 00 00 mov QWORD PTR tv129[rbp], rax + 0010e 44 8b 85 14 01 + 00 00 mov r8d, DWORD PTR tv131[rbp] + 00115 48 8b 95 18 01 + 00 00 mov rdx, QWORD PTR tv129[rbp] + 0011c 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_07KNNCJAOA@?$CFs?3?5?$CFu?6@ - 0010b e8 00 00 00 00 call printf + 00123 e8 00 00 00 00 call printf -; 552 : } +; 554 : } - 00110 eb 25 jmp SHORT $LN9@NcDebugPri + 00128 eb 25 jmp SHORT $LN9@NcDebugPri $LN8@NcDebugPri: -; 553 : else -; 554 : { -; 555 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_BLUE); +; 555 : else +; 556 : { +; 557 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_BLUE); - 00112 66 ba 03 00 mov dx, 3 - 00116 48 8b 4d 08 mov rcx, QWORD PTR ConsoleHandle$[rbp] - 0011a ff 15 00 00 00 + 0012a 66 ba 03 00 mov dx, 3 + 0012e 48 8b 4d 08 mov rcx, QWORD PTR ConsoleHandle$[rbp] + 00132 ff 15 00 00 00 00 call QWORD PTR __imp_SetConsoleTextAttribute -; 556 : printf("%s\n", XedIClassEnumToString(IClass)); +; 558 : printf("%s\n", XedIClassEnumToString(IClass)); - 00120 8b 4d 44 mov ecx, DWORD PTR IClass$2[rbp] - 00123 e8 00 00 00 00 call xed_iclass_enum_t2str - 00128 48 8b d0 mov rdx, rax - 0012b 48 8d 0d 00 00 + 00138 8b 4d 44 mov ecx, DWORD PTR IClass$2[rbp] + 0013b e8 00 00 00 00 call xed_iclass_enum_t2str + 00140 48 8b d0 mov rdx, rax + 00143 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_03OFAPEBGM@?$CFs?6@ - 00132 e8 00 00 00 00 call printf + 0014a e8 00 00 00 00 call printf $LN9@NcDebugPri: $LN7@NcDebugPri: -; 557 : } -; 558 : } -; 559 : } +; 559 : } +; 560 : } +; 561 : } - 00137 e9 25 ff ff ff jmp $LN2@NcDebugPri + 0014f e9 0d ff ff ff jmp $LN2@NcDebugPri $LN3@NcDebugPri: $LN1@NcDebugPri: -; 560 : } +; 562 : } - 0013c 48 8d a5 28 01 + 00154 48 8d a5 28 01 00 00 lea rsp, QWORD PTR [rbp+296] - 00143 5f pop rdi - 00144 5d pop rbp - 00145 c3 ret 0 + 0015b 5f pop rdi + 0015c 5d pop rbp + 0015d c3 ret 0 ?NcDebugPrint@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; NcDebugPrint _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -10074,7 +10088,7 @@ tv77 = 280 Block$ = 320 ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcDeleteBlock, COMDAT -; 520 : { +; 522 : { $LN10: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -10093,7 +10107,7 @@ $LN10: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 521 : if (!Block->Start || !Block->End) +; 523 : if (!Block->Start || !Block->End) 00036 48 8b 85 40 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -10105,13 +10119,13 @@ $LN10: 0004f 75 02 jne SHORT $LN5@NcDeleteBl $LN6@NcDeleteBl: -; 522 : return; +; 524 : return; 00051 eb 71 jmp SHORT $LN1@NcDeleteBl $LN5@NcDeleteBl: -; 523 : -; 524 : for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next;) +; 525 : +; 526 : for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next;) 00053 48 8b 85 40 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -10125,14 +10139,14 @@ $LN2@NcDeleteBl: 0006f 48 39 45 08 cmp QWORD PTR T$1[rbp], rax 00073 74 4f je SHORT $LN3@NcDeleteBl -; 525 : { -; 526 : PNATIVE_CODE_LINK Next = T->Next; +; 527 : { +; 528 : PNATIVE_CODE_LINK Next = T->Next; 00075 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] 00079 48 8b 00 mov rax, QWORD PTR [rax] 0007c 48 89 45 28 mov QWORD PTR Next$2[rbp], rax -; 527 : delete T; +; 529 : delete T; 00080 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] 00084 48 89 85 08 01 @@ -10153,18 +10167,18 @@ $LN8@NcDeleteBl: 00 mov QWORD PTR tv77[rbp], 0 $LN9@NcDeleteBl: -; 528 : T = Next; +; 530 : T = Next; 000ba 48 8b 45 28 mov rax, QWORD PTR Next$2[rbp] 000be 48 89 45 08 mov QWORD PTR T$1[rbp], rax -; 529 : } +; 531 : } 000c2 eb 9d jmp SHORT $LN2@NcDeleteBl $LN3@NcDeleteBl: $LN1@NcDeleteBl: -; 530 : } +; 532 : } 000c4 48 8d a5 28 01 00 00 lea rsp, QWORD PTR [rbp+296] @@ -10184,7 +10198,7 @@ Block$ = 320 OutSize$ = 328 ?NcAssemble@@YAPEAXPEAU_NATIVE_CODE_BLOCK@@PEAK@Z PROC ; NcAssemble, COMDAT -; 495 : { +; 497 : { $LN9: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -10204,7 +10218,7 @@ $LN9: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 496 : if (!NcFixRelJmps(Block)) +; 498 : if (!NcFixRelJmps(Block)) 0003b 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR Block$[rbp] @@ -10212,14 +10226,14 @@ $LN9: 00047 85 c0 test eax, eax 00049 75 07 jne SHORT $LN5@NcAssemble -; 497 : return NULL; +; 499 : return NULL; 0004b 33 c0 xor eax, eax - 0004d e9 b2 00 00 00 jmp $LN1@NcAssemble + 0004d e9 bc 00 00 00 jmp $LN1@NcAssemble $LN5@NcAssemble: -; 498 : -; 499 : *OutSize = NcCalcBlockSize(Block); +; 500 : +; 501 : *OutSize = NcCalcBlockSize(Block); 00052 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR Block$[rbp] @@ -10228,8 +10242,8 @@ $LN5@NcAssemble: 00 00 mov rcx, QWORD PTR OutSize$[rbp] 00065 89 01 mov DWORD PTR [rcx], eax -; 500 : -; 501 : PUCHAR Buffer = (PUCHAR)malloc(*OutSize); +; 502 : +; 503 : PUCHAR Buffer = (PUCHAR)malloc(*OutSize); 00067 48 8b 85 48 01 00 00 mov rax, QWORD PTR OutSize$[rbp] @@ -10239,95 +10253,97 @@ $LN5@NcAssemble: 00 call QWORD PTR __imp_malloc 00078 48 89 45 08 mov QWORD PTR Buffer$[rbp], rax -; 502 : if (!Buffer) +; 504 : if (!Buffer) 0007c 48 83 7d 08 00 cmp QWORD PTR Buffer$[rbp], 0 - 00081 75 04 jne SHORT $LN6@NcAssemble + 00081 75 07 jne SHORT $LN6@NcAssemble -; 503 : return NULL; +; 505 : return NULL; 00083 33 c0 xor eax, eax - 00085 eb 7d jmp SHORT $LN1@NcAssemble + 00085 e9 84 00 00 00 jmp $LN1@NcAssemble $LN6@NcAssemble: -; 504 : -; 505 : PUCHAR BufferOffset = Buffer; +; 506 : +; 507 : PUCHAR BufferOffset = Buffer; - 00087 48 8b 45 08 mov rax, QWORD PTR Buffer$[rbp] - 0008b 48 89 45 28 mov QWORD PTR BufferOffset$[rbp], rax + 0008a 48 8b 45 08 mov rax, QWORD PTR Buffer$[rbp] + 0008e 48 89 45 28 mov QWORD PTR BufferOffset$[rbp], rax -; 506 : -; 507 : for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next; T = T->Next) +; 508 : +; 509 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) - 0008f 48 8b 85 40 01 + 00092 48 8b 85 40 01 00 00 mov rax, QWORD PTR Block$[rbp] - 00096 48 8b 00 mov rax, QWORD PTR [rax] - 00099 48 89 45 48 mov QWORD PTR T$1[rbp], rax - 0009d eb 0b jmp SHORT $LN4@NcAssemble + 00099 48 8b 00 mov rax, QWORD PTR [rax] + 0009c 48 89 45 48 mov QWORD PTR T$1[rbp], rax + 000a0 eb 0b jmp SHORT $LN4@NcAssemble $LN2@NcAssemble: - 0009f 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] - 000a3 48 8b 00 mov rax, QWORD PTR [rax] - 000a6 48 89 45 48 mov QWORD PTR T$1[rbp], rax + 000a2 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] + 000a6 48 8b 00 mov rax, QWORD PTR [rax] + 000a9 48 89 45 48 mov QWORD PTR T$1[rbp], rax $LN4@NcAssemble: - 000aa 48 8b 85 40 01 + 000ad 48 83 7d 48 00 cmp QWORD PTR T$1[rbp], 0 + 000b2 74 56 je SHORT $LN3@NcAssemble + 000b4 48 8b 85 40 01 00 00 mov rax, QWORD PTR Block$[rbp] - 000b1 48 8b 40 08 mov rax, QWORD PTR [rax+8] - 000b5 48 8b 00 mov rax, QWORD PTR [rax] - 000b8 48 39 45 48 cmp QWORD PTR T$1[rbp], rax - 000bc 74 42 je SHORT $LN3@NcAssemble + 000bb 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 000bf 48 8b 00 mov rax, QWORD PTR [rax] + 000c2 48 39 45 48 cmp QWORD PTR T$1[rbp], rax + 000c6 74 42 je SHORT $LN3@NcAssemble -; 508 : { -; 509 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 510 : { +; 511 : if (T->Flags & CODE_FLAG_IS_LABEL) - 000be 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] - 000c2 8b 40 18 mov eax, DWORD PTR [rax+24] - 000c5 83 e0 01 and eax, 1 - 000c8 85 c0 test eax, eax - 000ca 74 02 je SHORT $LN7@NcAssemble + 000c8 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] + 000cc 8b 40 18 mov eax, DWORD PTR [rax+24] + 000cf 83 e0 01 and eax, 1 + 000d2 85 c0 test eax, eax + 000d4 74 02 je SHORT $LN7@NcAssemble -; 510 : continue; +; 512 : continue; - 000cc eb d1 jmp SHORT $LN2@NcAssemble + 000d6 eb ca jmp SHORT $LN2@NcAssemble $LN7@NcAssemble: -; 511 : -; 512 : RtlCopyMemory(BufferOffset, T->RawData, T->RawDataSize); +; 513 : +; 514 : RtlCopyMemory(BufferOffset, T->RawData, T->RawDataSize); - 000ce 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] - 000d2 8b 40 28 mov eax, DWORD PTR [rax+40] - 000d5 44 8b c0 mov r8d, eax 000d8 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] - 000dc 48 8b 50 20 mov rdx, QWORD PTR [rax+32] - 000e0 48 8b 4d 28 mov rcx, QWORD PTR BufferOffset$[rbp] - 000e4 e8 00 00 00 00 call memcpy + 000dc 8b 40 28 mov eax, DWORD PTR [rax+40] + 000df 44 8b c0 mov r8d, eax + 000e2 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] + 000e6 48 8b 50 20 mov rdx, QWORD PTR [rax+32] + 000ea 48 8b 4d 28 mov rcx, QWORD PTR BufferOffset$[rbp] + 000ee e8 00 00 00 00 call memcpy -; 513 : BufferOffset += T->RawDataSize; +; 515 : BufferOffset += T->RawDataSize; - 000e9 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] - 000ed 8b 40 28 mov eax, DWORD PTR [rax+40] - 000f0 48 8b 4d 28 mov rcx, QWORD PTR BufferOffset$[rbp] - 000f4 48 03 c8 add rcx, rax - 000f7 48 8b c1 mov rax, rcx - 000fa 48 89 45 28 mov QWORD PTR BufferOffset$[rbp], rax + 000f3 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] + 000f7 8b 40 28 mov eax, DWORD PTR [rax+40] + 000fa 48 8b 4d 28 mov rcx, QWORD PTR BufferOffset$[rbp] + 000fe 48 03 c8 add rcx, rax + 00101 48 8b c1 mov rax, rcx + 00104 48 89 45 28 mov QWORD PTR BufferOffset$[rbp], rax -; 514 : } +; 516 : } - 000fe eb 9f jmp SHORT $LN2@NcAssemble + 00108 eb 98 jmp SHORT $LN2@NcAssemble $LN3@NcAssemble: -; 515 : -; 516 : return Buffer; +; 517 : +; 518 : return Buffer; - 00100 48 8b 45 08 mov rax, QWORD PTR Buffer$[rbp] + 0010a 48 8b 45 08 mov rax, QWORD PTR Buffer$[rbp] $LN1@NcAssemble: -; 517 : } +; 519 : } - 00104 48 8d a5 28 01 + 0010e 48 8d a5 28 01 00 00 lea rsp, QWORD PTR [rbp+296] - 0010b 5f pop rdi - 0010c 5d pop rbp - 0010d c3 ret 0 + 00115 5f pop rdi + 00116 5d pop rbp + 00117 c3 ret 0 ?NcAssemble@@YAPEAXPEAU_NATIVE_CODE_BLOCK@@PEAK@Z ENDP ; NcAssemble _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -10351,7 +10367,7 @@ Buffer$ = 520 BufferSize$ = 528 ?NcDisassemble@@YAHPEAU_NATIVE_CODE_BLOCK@@PEAXK@Z PROC ; NcDisassemble, COMDAT -; 463 : { +; 465 : { $LN13: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -10372,20 +10388,20 @@ $LN13: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 464 : PUCHAR Buf = (PUCHAR)Buffer; +; 466 : PUCHAR Buf = (PUCHAR)Buffer; 00040 48 8b 85 08 02 00 00 mov rax, QWORD PTR Buffer$[rbp] 00047 48 89 45 08 mov QWORD PTR Buf$[rbp], rax -; 465 : ULONG Offset = 0; +; 467 : ULONG Offset = 0; 0004b c7 45 24 00 00 00 00 mov DWORD PTR Offset$[rbp], 0 $LN2@NcDisassem: -; 466 : -; 467 : while (Offset < BufferSize) +; 468 : +; 469 : while (Offset < BufferSize) 00052 8b 85 10 02 00 00 mov eax, DWORD PTR BufferSize$[rbp] @@ -10393,8 +10409,8 @@ $LN2@NcDisassem: 0005b 0f 83 b8 01 00 00 jae $LN3@NcDisassem -; 468 : { -; 469 : PNATIVE_CODE_LINK Link = new NATIVE_CODE_LINK; +; 470 : { +; 471 : PNATIVE_CODE_LINK Link = new NATIVE_CODE_LINK; 00061 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H 00066 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new @@ -10422,13 +10438,13 @@ $LN7@NcDisassem: 00 00 mov rax, QWORD PTR $T4[rbp] 000b1 48 89 45 48 mov QWORD PTR Link$1[rbp], rax -; 470 : Link->Flags = CODE_FLAG_IS_INST; +; 472 : Link->Flags = CODE_FLAG_IS_INST; 000b5 48 8b 45 48 mov rax, QWORD PTR Link$1[rbp] 000b9 c7 40 18 04 00 00 00 mov DWORD PTR [rax+24], 4 -; 471 : ULONG PossibleSize = min(15, BufferSize - Offset); +; 473 : ULONG PossibleSize = min(15, BufferSize - Offset); 000c0 8b 45 24 mov eax, DWORD PTR Offset$[rbp] 000c3 8b 8d 10 02 00 @@ -10453,7 +10469,7 @@ $LN9@NcDisassem: 00 mov eax, DWORD PTR tv80[rbp] 000f7 89 45 64 mov DWORD PTR PossibleSize$2[rbp], eax -; 472 : XED_ERROR_ENUM DecodeError = XedDecode(&Link->XedInstruction, (Buf + Offset), PossibleSize); +; 474 : XED_ERROR_ENUM DecodeError = XedDecode(&Link->XedInstruction, (Buf + Offset), PossibleSize); 000fa 8b 45 24 mov eax, DWORD PTR Offset$[rbp] 000fd 48 8b 4d 08 mov rcx, QWORD PTR Buf$[rbp] @@ -10467,14 +10483,14 @@ $LN9@NcDisassem: 0011b 89 85 84 00 00 00 mov DWORD PTR DecodeError$3[rbp], eax -; 473 : if (DecodeError != XED_ERROR_NONE) +; 475 : if (DecodeError != XED_ERROR_NONE) 00121 83 bd 84 00 00 00 00 cmp DWORD PTR DecodeError$3[rbp], 0 00128 74 67 je SHORT $LN4@NcDisassem -; 474 : { -; 475 : printf("XedDecode failed with error %s\n", XedErrorEnumToString(DecodeError)); +; 476 : { +; 477 : printf("XedDecode failed with error %s\n", XedErrorEnumToString(DecodeError)); 0012a 8b 8d 84 00 00 00 mov ecx, DWORD PTR DecodeError$3[rbp] @@ -10484,13 +10500,13 @@ $LN9@NcDisassem: 00 00 lea rcx, OFFSET FLAT:??_C@_0CA@KDIENFLL@XedDecode?5failed?5with?5error?5?$CFs?6@ 0013f e8 00 00 00 00 call printf -; 476 : NcDeleteBlock(Block); +; 478 : NcDeleteBlock(Block); 00144 48 8b 8d 00 02 00 00 mov rcx, QWORD PTR Block$[rbp] 0014b e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 477 : delete Link; +; 479 : delete Link; 00150 48 8b 45 48 mov rax, QWORD PTR Link$1[rbp] 00154 48 89 85 a8 01 @@ -10511,14 +10527,14 @@ $LN10@NcDisassem: 00 mov QWORD PTR tv130[rbp], 0 $LN11@NcDisassem: -; 478 : return FALSE; +; 480 : return FALSE; 0018a 33 c0 xor eax, eax 0018c e9 99 00 00 00 jmp $LN1@NcDisassem $LN4@NcDisassem: -; 479 : } -; 480 : Link->RawDataSize = XedDecodedInstGetLength(&Link->XedInstruction); +; 481 : } +; 482 : Link->RawDataSize = XedDecodedInstGetLength(&Link->XedInstruction); 00191 48 8b 45 48 mov rax, QWORD PTR Link$1[rbp] 00195 48 83 c0 30 add rax, 48 ; 00000030H @@ -10527,7 +10543,7 @@ $LN4@NcDisassem: 001a1 48 8b 4d 48 mov rcx, QWORD PTR Link$1[rbp] 001a5 89 41 28 mov DWORD PTR [rcx+40], eax -; 481 : Link->RawData = new UCHAR[Link->RawDataSize]; +; 483 : Link->RawData = new UCHAR[Link->RawDataSize]; 001a8 48 8b 45 48 mov rax, QWORD PTR Link$1[rbp] 001ac 8b 40 28 mov eax, DWORD PTR [rax+40] @@ -10540,7 +10556,7 @@ $LN4@NcDisassem: 00 00 mov rcx, QWORD PTR $T7[rbp] 001c8 48 89 48 20 mov QWORD PTR [rax+32], rcx -; 482 : RtlCopyMemory(Link->RawData, (Buf + Offset), Link->RawDataSize); +; 484 : RtlCopyMemory(Link->RawData, (Buf + Offset), Link->RawDataSize); 001cc 48 8b 45 48 mov rax, QWORD PTR Link$1[rbp] 001d0 8b 40 28 mov eax, DWORD PTR [rax+40] @@ -10554,16 +10570,16 @@ $LN4@NcDisassem: 001ea 48 8b 48 20 mov rcx, QWORD PTR [rax+32] 001ee e8 00 00 00 00 call memcpy -; 483 : -; 484 : NcAppendToBlock(Block, Link); +; 485 : +; 486 : NcAppendToBlock(Block, Link); 001f3 48 8b 55 48 mov rdx, QWORD PTR Link$1[rbp] 001f7 48 8b 8d 00 02 00 00 mov rcx, QWORD PTR Block$[rbp] 001fe e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock -; 485 : -; 486 : Offset += Link->RawDataSize; +; 487 : +; 488 : Offset += Link->RawDataSize; 00203 48 8b 45 48 mov rax, QWORD PTR Link$1[rbp] 00207 8b 40 28 mov eax, DWORD PTR [rax+40] @@ -10572,25 +10588,25 @@ $LN4@NcDisassem: 0020f 8b c1 mov eax, ecx 00211 89 45 24 mov DWORD PTR Offset$[rbp], eax -; 487 : } +; 489 : } 00214 e9 39 fe ff ff jmp $LN2@NcDisassem $LN3@NcDisassem: -; 488 : -; 489 : NcCreateLabels(Block); +; 490 : +; 491 : NcCreateLabels(Block); 00219 48 8b 8d 00 02 00 00 mov rcx, QWORD PTR Block$[rbp] 00220 e8 00 00 00 00 call ?NcCreateLabels@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z ; NcCreateLabels -; 490 : -; 491 : return TRUE; +; 492 : +; 493 : return TRUE; 00225 b8 01 00 00 00 mov eax, 1 $LN1@NcDisassem: -; 492 : } +; 494 : } 0022a 48 8d a5 e8 01 00 00 lea rsp, QWORD PTR [rbp+488] @@ -10691,7 +10707,7 @@ __$ArrayPad$ = 1784 Block$ = 1824 ?NcFixRelJmps@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcFixRelJmps, COMDAT -; 383 : { +; 385 : { $LN21: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -10716,7 +10732,7 @@ $LN21: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00043 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 384 : for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next;) +; 386 : for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next;) 00048 48 8b 85 20 07 00 00 mov rax, QWORD PTR Block$[rbp] @@ -10731,8 +10747,8 @@ $LN2@NcFixRelJm: 00068 0f 84 04 03 00 00 je $LN3@NcFixRelJm -; 385 : { -; 386 : if (T->Flags & CODE_FLAG_IS_REL_JMP) +; 387 : { +; 388 : if (T->Flags & CODE_FLAG_IS_REL_JMP) 0006e 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 00072 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -10741,13 +10757,13 @@ $LN2@NcFixRelJm: 0007a 0f 84 e2 02 00 00 je $LN7@NcFixRelJm -; 387 : { -; 388 : INT32 BranchDisp = 0; +; 389 : { +; 390 : INT32 BranchDisp = 0; 00080 c7 45 24 00 00 00 00 mov DWORD PTR BranchDisp$10[rbp], 0 -; 389 : if (!NcGetDeltaToLabel(T, &BranchDisp)) +; 391 : if (!NcGetDeltaToLabel(T, &BranchDisp)) 00087 48 8d 55 24 lea rdx, QWORD PTR BranchDisp$10[rbp] 0008b 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] @@ -10755,14 +10771,14 @@ $LN2@NcFixRelJm: 00094 85 c0 test eax, eax 00096 75 07 jne SHORT $LN8@NcFixRelJm -; 390 : return FALSE; +; 392 : return FALSE; 00098 33 c0 xor eax, eax 0009a e9 d8 02 00 00 jmp $LN1@NcFixRelJm $LN8@NcFixRelJm: -; 391 : -; 392 : ULONG DispWidth = XedDecodedInstGetBranchDisplacementWidthBits(&T->XedInstruction); +; 393 : +; 394 : ULONG DispWidth = XedDecodedInstGetBranchDisplacementWidthBits(&T->XedInstruction); 0009f 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 000a3 48 83 c0 30 add rax, 48 ; 00000030H @@ -10770,7 +10786,7 @@ $LN8@NcFixRelJm: 000aa e8 00 00 00 00 call xed_decoded_inst_get_branch_displacement_width_bits 000af 89 45 44 mov DWORD PTR DispWidth$11[rbp], eax -; 393 : if (log2(abs(BranchDisp)) + 1 > DispWidth) +; 395 : if (log2(abs(BranchDisp)) + 1 > DispWidth) 000b2 8b 4d 24 mov ecx, DWORD PTR BranchDisp$10[rbp] 000b5 e8 00 00 00 00 call abs @@ -10784,30 +10800,30 @@ $LN8@NcFixRelJm: 000d5 0f 86 f3 01 00 00 jbe $LN9@NcFixRelJm -; 394 : { -; 395 : //duh oh -; 396 : if (DispWidth == 32) +; 396 : { +; 397 : //duh oh +; 398 : if (DispWidth == 32) 000db 83 7d 44 20 cmp DWORD PTR DispWidth$11[rbp], 32 ; 00000020H 000df 75 07 jne SHORT $LN11@NcFixRelJm -; 397 : return FALSE; +; 399 : return FALSE; 000e1 33 c0 xor eax, eax 000e3 e9 8f 02 00 00 jmp $LN1@NcFixRelJm $LN11@NcFixRelJm: -; 398 : -; 399 : //Grow displacement width to required size -; 400 : DispWidth *= 2; +; 400 : +; 401 : //Grow displacement width to required size +; 402 : DispWidth *= 2; 000e8 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] 000eb d1 e0 shl eax, 1 000ed 89 45 44 mov DWORD PTR DispWidth$11[rbp], eax -; 401 : -; 402 : //Check again -; 403 : if (log2(abs(BranchDisp)) + 1 > DispWidth) +; 403 : +; 404 : //Check again +; 405 : if (log2(abs(BranchDisp)) + 1 > DispWidth) 000f0 8b 4d 24 mov ecx, DWORD PTR BranchDisp$10[rbp] 000f3 e8 00 00 00 00 call abs @@ -10820,46 +10836,46 @@ $LN11@NcFixRelJm: 0010f 66 0f 2f c1 comisd xmm0, xmm1 00113 76 15 jbe SHORT $LN12@NcFixRelJm -; 404 : { -; 405 : if (DispWidth == 32) +; 406 : { +; 407 : if (DispWidth == 32) 00115 83 7d 44 20 cmp DWORD PTR DispWidth$11[rbp], 32 ; 00000020H 00119 75 07 jne SHORT $LN13@NcFixRelJm -; 406 : return FALSE; +; 408 : return FALSE; 0011b 33 c0 xor eax, eax 0011d e9 55 02 00 00 jmp $LN1@NcFixRelJm $LN13@NcFixRelJm: -; 407 : -; 408 : //Grow once more if not already at 32 -; 409 : DispWidth *= 2; +; 409 : +; 410 : //Grow once more if not already at 32 +; 411 : DispWidth *= 2; 00122 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] 00125 d1 e0 shl eax, 1 00127 89 45 44 mov DWORD PTR DispWidth$11[rbp], eax $LN12@NcFixRelJm: -; 410 : } -; 411 : -; 412 : //Encode new instruction -; 413 : XED_STATE MachineState; -; 414 : MachineState.mmode = XED_MACHINE_MODE_LONG_64; +; 412 : } +; 413 : +; 414 : //Encode new instruction +; 415 : XED_STATE MachineState; +; 416 : MachineState.mmode = XED_MACHINE_MODE_LONG_64; 0012a c7 45 68 01 00 00 00 mov DWORD PTR MachineState$12[rbp], 1 -; 415 : MachineState.stack_addr_width = XED_ADDRESS_WIDTH_64b; +; 417 : MachineState.stack_addr_width = XED_ADDRESS_WIDTH_64b; 00131 c7 45 6c 08 00 00 00 mov DWORD PTR MachineState$12[rbp+4], 8 -; 416 : XED_ENCODER_INSTRUCTION EncoderInstruction; -; 417 : XED_ENCODER_REQUEST EncoderRequest; -; 418 : UCHAR EncodeBuffer[15]; -; 419 : UINT ReturnedSize; -; 420 : XED_ICLASS_ENUM IClass = XedDecodedInstGetIClass(&T->XedInstruction); +; 418 : XED_ENCODER_INSTRUCTION EncoderInstruction; +; 419 : XED_ENCODER_REQUEST EncoderRequest; +; 420 : UCHAR EncodeBuffer[15]; +; 421 : UINT ReturnedSize; +; 422 : XED_ICLASS_ENUM IClass = XedDecodedInstGetIClass(&T->XedInstruction); 00138 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 0013c 48 83 c0 30 add rax, 48 ; 00000030H @@ -10868,9 +10884,9 @@ $LN12@NcFixRelJm: 00148 89 85 74 03 00 00 mov DWORD PTR IClass$17[rbp], eax -; 421 : -; 422 : //Do the encoding -; 423 : XedInst1(&EncoderInstruction, MachineState, IClass, DispWidth, XedRelBr(0, DispWidth)); +; 423 : +; 424 : //Do the encoding +; 425 : XedInst1(&EncoderInstruction, MachineState, IClass, DispWidth, XedRelBr(0, DispWidth)); 0014e 44 8b 45 44 mov r8d, DWORD PTR DispWidth$11[rbp] 00152 33 d2 xor edx, edx @@ -10902,14 +10918,14 @@ $LN12@NcFixRelJm: 00 00 lea rcx, QWORD PTR EncoderInstruction$13[rbp] 001b1 e8 00 00 00 00 call xed_inst1 -; 424 : XedEncoderRequestZeroSetMode(&EncoderRequest, &MachineState); +; 426 : XedEncoderRequestZeroSetMode(&EncoderRequest, &MachineState); 001b6 48 8d 55 68 lea rdx, QWORD PTR MachineState$12[rbp] 001ba 48 8d 8d 50 02 00 00 lea rcx, QWORD PTR EncoderRequest$14[rbp] 001c1 e8 00 00 00 00 call xed_encoder_request_zero_set_mode -; 425 : if (!XedConvertToEncoderRequest(&EncoderRequest, &EncoderInstruction)) +; 427 : if (!XedConvertToEncoderRequest(&EncoderRequest, &EncoderInstruction)) 001c6 48 8d 95 90 00 00 00 lea rdx, QWORD PTR EncoderInstruction$13[rbp] @@ -10919,13 +10935,13 @@ $LN12@NcFixRelJm: 001d9 85 c0 test eax, eax 001db 75 07 jne SHORT $LN14@NcFixRelJm -; 426 : return FALSE; +; 428 : return FALSE; 001dd 33 c0 xor eax, eax 001df e9 93 01 00 00 jmp $LN1@NcFixRelJm $LN14@NcFixRelJm: -; 427 : if (XED_ERROR_NONE != XedEncode(&EncoderRequest, EncodeBuffer, 15, &ReturnedSize)) +; 429 : if (XED_ERROR_NONE != XedEncode(&EncoderRequest, EncodeBuffer, 15, &ReturnedSize)) 001e4 4c 8d 8d 54 03 00 00 lea r9, QWORD PTR ReturnedSize$16[rbp] @@ -10939,15 +10955,15 @@ $LN14@NcFixRelJm: 00204 85 c0 test eax, eax 00206 74 07 je SHORT $LN15@NcFixRelJm -; 428 : return FALSE; +; 430 : return FALSE; 00208 33 c0 xor eax, eax 0020a e9 68 01 00 00 jmp $LN1@NcFixRelJm $LN15@NcFixRelJm: -; 429 : -; 430 : //fixup T->RawData -; 431 : delete[] T->RawData; +; 431 : +; 432 : //fixup T->RawData +; 433 : delete[] T->RawData; 0020f 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 00213 48 8b 40 20 mov rax, QWORD PTR [rax+32] @@ -10957,14 +10973,14 @@ $LN15@NcFixRelJm: 00 00 mov rcx, QWORD PTR $T20[rbp] 00225 e8 00 00 00 00 call ??_V@YAXPEAX@Z ; operator delete[] -; 432 : T->RawDataSize = ReturnedSize; +; 434 : T->RawDataSize = ReturnedSize; 0022a 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 0022e 8b 8d 54 03 00 00 mov ecx, DWORD PTR ReturnedSize$16[rbp] 00234 89 48 28 mov DWORD PTR [rax+40], ecx -; 433 : T->RawData = new UCHAR[ReturnedSize]; +; 435 : T->RawData = new UCHAR[ReturnedSize]; 00237 8b 85 54 03 00 00 mov eax, DWORD PTR ReturnedSize$16[rbp] @@ -10977,7 +10993,7 @@ $LN15@NcFixRelJm: 00 00 mov rcx, QWORD PTR $T21[rbp] 00256 48 89 48 20 mov QWORD PTR [rax+32], rcx -; 434 : RtlCopyMemory(T->RawData, EncodeBuffer, ReturnedSize); +; 436 : RtlCopyMemory(T->RawData, EncodeBuffer, ReturnedSize); 0025a 8b 85 54 03 00 00 mov eax, DWORD PTR ReturnedSize$16[rbp] @@ -10988,9 +11004,9 @@ $LN15@NcFixRelJm: 0026e 48 8b 48 20 mov rcx, QWORD PTR [rax+32] 00272 e8 00 00 00 00 call memcpy -; 435 : -; 436 : //Decode instruction so its proper and all that -; 437 : XedDecodedInstZeroSetMode(&T->XedInstruction, &MachineState); +; 437 : +; 438 : //Decode instruction so its proper and all that +; 439 : XedDecodedInstZeroSetMode(&T->XedInstruction, &MachineState); 00277 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 0027b 48 83 c0 30 add rax, 48 ; 00000030H @@ -10998,7 +11014,7 @@ $LN15@NcFixRelJm: 00283 48 8b c8 mov rcx, rax 00286 e8 00 00 00 00 call xed_decoded_inst_zero_set_mode -; 438 : if (XED_ERROR_NONE != XedDecode(&T->XedInstruction, T->RawData, T->RawDataSize)) +; 440 : if (XED_ERROR_NONE != XedDecode(&T->XedInstruction, T->RawData, T->RawDataSize)) 0028b 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 0028f 48 83 c0 30 add rax, 48 ; 00000030H @@ -11011,33 +11027,33 @@ $LN15@NcFixRelJm: 002ab 85 c0 test eax, eax 002ad 74 07 je SHORT $LN16@NcFixRelJm -; 439 : return FALSE; +; 441 : return FALSE; 002af 33 c0 xor eax, eax 002b1 e9 c1 00 00 00 jmp $LN1@NcFixRelJm $LN16@NcFixRelJm: -; 440 : -; 441 : //Go back to the start and loop through all labels again because now this instruction is larger :)))) -; 442 : T = Block->Start; +; 442 : +; 443 : //Go back to the start and loop through all labels again because now this instruction is larger :)))) +; 444 : T = Block->Start; 002b6 48 8b 85 20 07 00 00 mov rax, QWORD PTR Block$[rbp] 002bd 48 8b 00 mov rax, QWORD PTR [rax] 002c0 48 89 45 08 mov QWORD PTR T$9[rbp], rax -; 443 : continue; +; 445 : continue; 002c4 e9 8d fd ff ff jmp $LN2@NcFixRelJm -; 444 : } +; 446 : } 002c9 e9 94 00 00 00 jmp $LN10@NcFixRelJm $LN9@NcFixRelJm: -; 445 : else -; 446 : { -; 447 : DispWidth = XedDecodedInstGetBranchDisplacementWidth(&T->XedInstruction); +; 447 : else +; 448 : { +; 449 : DispWidth = XedDecodedInstGetBranchDisplacementWidth(&T->XedInstruction); 002ce 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 002d2 48 83 c0 30 add rax, 48 ; 00000030H @@ -11045,7 +11061,7 @@ $LN9@NcFixRelJm: 002d9 e8 00 00 00 00 call xed_decoded_inst_get_branch_displacement_width 002de 89 45 44 mov DWORD PTR DispWidth$11[rbp], eax -; 448 : switch (DispWidth) +; 450 : switch (DispWidth) 002e1 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] 002e4 89 85 f4 06 00 @@ -11062,8 +11078,8 @@ $LN9@NcFixRelJm: 00305 eb 5b jmp SHORT $LN5@NcFixRelJm $LN17@NcFixRelJm: -; 449 : { -; 450 : case 1: *(PINT8)&T->RawData[T->RawDataSize - DispWidth] = (INT8)BranchDisp; break; +; 451 : { +; 452 : case 1: *(PINT8)&T->RawData[T->RawDataSize - DispWidth] = (INT8)BranchDisp; break; 00307 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 0030b 8b 4d 44 mov ecx, DWORD PTR DispWidth$11[rbp] @@ -11077,7 +11093,7 @@ $LN17@NcFixRelJm: 00324 eb 3c jmp SHORT $LN5@NcFixRelJm $LN18@NcFixRelJm: -; 451 : case 2: *(PINT16)&T->RawData[T->RawDataSize - DispWidth] = (INT16)BranchDisp; break; +; 453 : case 2: *(PINT16)&T->RawData[T->RawDataSize - DispWidth] = (INT16)BranchDisp; break; 00326 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 0032a 8b 4d 44 mov ecx, DWORD PTR DispWidth$11[rbp] @@ -11091,7 +11107,7 @@ $LN18@NcFixRelJm: 00344 eb 1c jmp SHORT $LN5@NcFixRelJm $LN19@NcFixRelJm: -; 452 : case 4: *(PINT32)&T->RawData[T->RawDataSize - DispWidth] = (INT32)BranchDisp; break; +; 454 : case 4: *(PINT32)&T->RawData[T->RawDataSize - DispWidth] = (INT32)BranchDisp; break; 00346 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 0034a 8b 4d 44 mov ecx, DWORD PTR DispWidth$11[rbp] @@ -11106,27 +11122,27 @@ $LN5@NcFixRelJm: $LN10@NcFixRelJm: $LN7@NcFixRelJm: -; 453 : } -; 454 : } -; 455 : } -; 456 : -; 457 : T = T->Next; +; 455 : } +; 456 : } +; 457 : } +; 458 : +; 459 : T = T->Next; 00362 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] 00366 48 8b 00 mov rax, QWORD PTR [rax] 00369 48 89 45 08 mov QWORD PTR T$9[rbp], rax -; 458 : } +; 460 : } 0036d e9 e4 fc ff ff jmp $LN2@NcFixRelJm $LN3@NcFixRelJm: -; 459 : return TRUE; +; 461 : return TRUE; 00372 b8 01 00 00 00 mov eax, 1 $LN1@NcFixRelJm: -; 460 : } +; 462 : } 00377 48 8b f8 mov rdi, rax 0037a 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] @@ -11157,7 +11173,7 @@ Link$ = 320 DeltaOut$ = 328 ?NcGetDeltaToLabel@@YAHPEAU_NATIVE_CODE_LINK@@PEAH@Z PROC ; NcGetDeltaToLabel, COMDAT -; 347 : { +; 349 : { $LN13: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -11177,13 +11193,13 @@ $LN13: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 348 : INT32 Delta = 0; +; 350 : INT32 Delta = 0; 0003b c7 45 04 00 00 00 00 mov DWORD PTR Delta$[rbp], 0 -; 349 : //First checking backwards because I feel like thats the direction most jmps are in -; 350 : for (PNATIVE_CODE_LINK T = Link; T; T = T->Prev) +; 351 : //First checking backwards because I feel like thats the direction most jmps are in +; 352 : for (PNATIVE_CODE_LINK T = Link; T; T = T->Prev) 00042 48 8b 85 40 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -11197,8 +11213,8 @@ $LN4@NcGetDelta: 0005b 48 83 7d 28 00 cmp QWORD PTR T$1[rbp], 0 00060 74 4c je SHORT $LN3@NcGetDelta -; 351 : { -; 352 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 353 : { +; 354 : if (T->Flags & CODE_FLAG_IS_LABEL) 00062 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] 00066 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -11206,8 +11222,8 @@ $LN4@NcGetDelta: 0006c 85 c0 test eax, eax 0006e 74 2b je SHORT $LN8@NcGetDelta -; 353 : { -; 354 : if (T->Label == Link->Label) +; 355 : { +; 356 : if (T->Label == Link->Label) 00070 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] 00074 48 8b 8d 40 01 @@ -11216,28 +11232,28 @@ $LN4@NcGetDelta: 0007e 39 48 1c cmp DWORD PTR [rax+28], ecx 00081 75 16 jne SHORT $LN9@NcGetDelta -; 355 : { -; 356 : *DeltaOut = Delta; +; 357 : { +; 358 : *DeltaOut = Delta; 00083 48 8b 85 48 01 00 00 mov rax, QWORD PTR DeltaOut$[rbp] 0008a 8b 4d 04 mov ecx, DWORD PTR Delta$[rbp] 0008d 89 08 mov DWORD PTR [rax], ecx -; 357 : return TRUE; +; 359 : return TRUE; 0008f b8 01 00 00 00 mov eax, 1 00094 e9 89 00 00 00 jmp $LN1@NcGetDelta $LN9@NcGetDelta: -; 358 : } -; 359 : continue; +; 360 : } +; 361 : continue; 00099 eb b4 jmp SHORT $LN2@NcGetDelta $LN8@NcGetDelta: -; 360 : } -; 361 : Delta -= T->RawDataSize; +; 362 : } +; 363 : Delta -= T->RawDataSize; 0009b 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] 0009f 8b 40 28 mov eax, DWORD PTR [rax+40] @@ -11246,19 +11262,19 @@ $LN8@NcGetDelta: 000a7 8b c1 mov eax, ecx 000a9 89 45 04 mov DWORD PTR Delta$[rbp], eax -; 362 : } +; 364 : } 000ac eb a1 jmp SHORT $LN2@NcGetDelta $LN3@NcGetDelta: -; 363 : -; 364 : //Now check forwards -; 365 : Delta = 0; +; 365 : +; 366 : //Now check forwards +; 367 : Delta = 0; 000ae c7 45 04 00 00 00 00 mov DWORD PTR Delta$[rbp], 0 -; 366 : for (PNATIVE_CODE_LINK T = Link->Next; T; T = T->Next) +; 368 : for (PNATIVE_CODE_LINK T = Link->Next; T; T = T->Next) 000b5 48 8b 85 40 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -11273,8 +11289,8 @@ $LN7@NcGetDelta: 000d0 48 83 7d 48 00 cmp QWORD PTR T$2[rbp], 0 000d5 74 49 je SHORT $LN6@NcGetDelta -; 367 : { -; 368 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 369 : { +; 370 : if (T->Flags & CODE_FLAG_IS_LABEL) 000d7 48 8b 45 48 mov rax, QWORD PTR T$2[rbp] 000db 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -11282,8 +11298,8 @@ $LN7@NcGetDelta: 000e1 85 c0 test eax, eax 000e3 74 28 je SHORT $LN10@NcGetDelta -; 369 : { -; 370 : if (T->Label == Link->Label) +; 371 : { +; 372 : if (T->Label == Link->Label) 000e5 48 8b 45 48 mov rax, QWORD PTR T$2[rbp] 000e9 48 8b 8d 40 01 @@ -11292,28 +11308,28 @@ $LN7@NcGetDelta: 000f3 39 48 1c cmp DWORD PTR [rax+28], ecx 000f6 75 13 jne SHORT $LN11@NcGetDelta -; 371 : { -; 372 : *DeltaOut = Delta; +; 373 : { +; 374 : *DeltaOut = Delta; 000f8 48 8b 85 48 01 00 00 mov rax, QWORD PTR DeltaOut$[rbp] 000ff 8b 4d 04 mov ecx, DWORD PTR Delta$[rbp] 00102 89 08 mov DWORD PTR [rax], ecx -; 373 : return TRUE; +; 375 : return TRUE; 00104 b8 01 00 00 00 mov eax, 1 00109 eb 17 jmp SHORT $LN1@NcGetDelta $LN11@NcGetDelta: -; 374 : } -; 375 : continue; +; 376 : } +; 377 : continue; 0010b eb b8 jmp SHORT $LN5@NcGetDelta $LN10@NcGetDelta: -; 376 : } -; 377 : Delta += T->RawDataSize; +; 378 : } +; 379 : Delta += T->RawDataSize; 0010d 48 8b 45 48 mov rax, QWORD PTR T$2[rbp] 00111 8b 40 28 mov eax, DWORD PTR [rax+40] @@ -11322,17 +11338,17 @@ $LN10@NcGetDelta: 00119 8b c1 mov eax, ecx 0011b 89 45 04 mov DWORD PTR Delta$[rbp], eax -; 378 : } +; 380 : } 0011e eb a5 jmp SHORT $LN5@NcGetDelta $LN6@NcGetDelta: -; 379 : return FALSE; +; 381 : return FALSE; 00120 33 c0 xor eax, eax $LN1@NcGetDelta: -; 380 : } +; 382 : } 00122 48 8d a5 28 01 00 00 lea rsp, QWORD PTR [rbp+296] @@ -11348,7 +11364,7 @@ _TEXT SEGMENT Block$ = 224 ?NcDeepCopyBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU1@@Z PROC ; NcDeepCopyBlock, COMDAT -; 342 : { +; 344 : { $LN3: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -11367,7 +11383,7 @@ $LN3: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 343 : return NcDeepCopyPartialBlock(Block->Start, Block->End); +; 345 : return NcDeepCopyPartialBlock(Block->Start, Block->End); 00036 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -11377,7 +11393,7 @@ $LN3: 00048 48 8b 08 mov rcx, QWORD PTR [rax] 0004b e8 00 00 00 00 call ?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z ; NcDeepCopyPartialBlock -; 344 : } +; 346 : } 00050 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -11408,7 +11424,7 @@ Start$ = 560 End$ = 568 ?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z PROC ; NcDeepCopyPartialBlock, COMDAT -; 315 : { +; 317 : { $LN18: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -11433,7 +11449,7 @@ $LN18: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00047 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 316 : if (!Start || !End || !Start->Block || Start->Block != End->Block) +; 318 : if (!Start || !End || !Start->Block || Start->Block != End->Block) 0004c 48 83 bd 30 02 00 00 00 cmp QWORD PTR Start$[rbp], 0 @@ -11454,14 +11470,14 @@ $LN18: 00084 74 07 je SHORT $LN8@NcDeepCopy $LN9@NcDeepCopy: -; 317 : return NULL; +; 319 : return NULL; 00086 33 c0 xor eax, eax 00088 e9 88 01 00 00 jmp $LN1@NcDeepCopy $LN8@NcDeepCopy: -; 318 : -; 319 : PNATIVE_CODE_BLOCK Block = new NATIVE_CODE_BLOCK; +; 320 : +; 321 : PNATIVE_CODE_BLOCK Block = new NATIVE_CODE_BLOCK; 0008d b9 30 00 00 00 mov ecx, 48 ; 00000030H 00092 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new @@ -11489,19 +11505,19 @@ $LN14@NcDeepCopy: 00 00 mov rax, QWORD PTR $T10[rbp] 000dd 48 89 45 08 mov QWORD PTR Block$[rbp], rax -; 320 : if (!Block) +; 322 : if (!Block) 000e1 48 83 7d 08 00 cmp QWORD PTR Block$[rbp], 0 000e6 75 07 jne SHORT $LN10@NcDeepCopy -; 321 : return NULL; +; 323 : return NULL; 000e8 33 c0 xor eax, eax 000ea e9 26 01 00 00 jmp $LN1@NcDeepCopy $LN10@NcDeepCopy: -; 322 : -; 323 : for (ULONG L : Start->Block->LabelIds) +; 324 : +; 325 : for (ULONG L : Start->Block->LabelIds) 000ef 48 8b 85 30 02 00 00 mov rax, QWORD PTR Start$[rbp] @@ -11528,7 +11544,7 @@ $LN4@NcDeepCopy: 0013a 89 85 84 00 00 00 mov DWORD PTR L$7[rbp], eax -; 324 : Block->LabelIds.push_back(L); +; 326 : Block->LabelIds.push_back(L); 00140 48 8b 45 08 mov rax, QWORD PTR Block$[rbp] 00144 48 83 c0 10 add rax, 16 @@ -11542,8 +11558,8 @@ $LN4@NcDeepCopy: 00162 eb ba jmp SHORT $LN2@NcDeepCopy $LN3@NcDeepCopy: -; 325 : -; 326 : for (PNATIVE_CODE_LINK CurLink = Start; CurLink != End->Next; CurLink = CurLink->Next) +; 327 : +; 328 : for (PNATIVE_CODE_LINK CurLink = Start; CurLink != End->Next; CurLink = CurLink->Next) 00164 48 8b 85 30 02 00 00 mov rax, QWORD PTR Start$[rbp] @@ -11564,8 +11580,8 @@ $LN7@NcDeepCopy: 00 00 cmp QWORD PTR CurLink$8[rbp], rax 00196 74 79 je SHORT $LN6@NcDeepCopy -; 327 : { -; 328 : PNATIVE_CODE_LINK Temp = NcDeepCopyLink(CurLink); +; 329 : { +; 330 : PNATIVE_CODE_LINK Temp = NcDeepCopyLink(CurLink); 00198 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR CurLink$8[rbp] @@ -11573,19 +11589,19 @@ $LN7@NcDeepCopy: 001a4 48 89 85 c8 00 00 00 mov QWORD PTR Temp$9[rbp], rax -; 329 : if (!Temp) +; 331 : if (!Temp) 001ab 48 83 bd c8 00 00 00 00 cmp QWORD PTR Temp$9[rbp], 0 001b3 75 47 jne SHORT $LN11@NcDeepCopy -; 330 : { -; 331 : NcDeleteBlock(Block); +; 332 : { +; 333 : NcDeleteBlock(Block); 001b5 48 8b 4d 08 mov rcx, QWORD PTR Block$[rbp] 001b9 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 332 : delete Block; +; 334 : delete Block; 001be 48 8b 45 08 mov rax, QWORD PTR Block$[rbp] 001c2 48 89 85 e8 01 @@ -11606,32 +11622,32 @@ $LN15@NcDeepCopy: 00 mov QWORD PTR tv139[rbp], 0 $LN16@NcDeepCopy: -; 333 : return NULL; +; 335 : return NULL; 001f8 33 c0 xor eax, eax 001fa eb 19 jmp SHORT $LN1@NcDeepCopy $LN11@NcDeepCopy: -; 334 : } -; 335 : NcAppendToBlock(Block, Temp); +; 336 : } +; 337 : NcAppendToBlock(Block, Temp); 001fc 48 8b 95 c8 00 00 00 mov rdx, QWORD PTR Temp$9[rbp] 00203 48 8b 4d 08 mov rcx, QWORD PTR Block$[rbp] 00207 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock -; 336 : } +; 338 : } 0020c e9 63 ff ff ff jmp $LN5@NcDeepCopy $LN6@NcDeepCopy: -; 337 : -; 338 : return Block; +; 339 : +; 340 : return Block; 00211 48 8b 45 08 mov rax, QWORD PTR Block$[rbp] $LN1@NcDeepCopy: -; 339 : } +; 341 : } 00215 48 8b f8 mov rdi, rax 00218 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] @@ -11738,7 +11754,7 @@ tv81 = 408 Link$ = 448 ?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z PROC ; NcDeepCopyLink, COMDAT -; 295 : { +; 297 : { $LN14: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -11757,7 +11773,7 @@ $LN14: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 296 : if (Link->Flags & CODE_FLAG_IS_LABEL) +; 298 : if (Link->Flags & CODE_FLAG_IS_LABEL) 00036 48 8b 85 c0 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -11766,8 +11782,8 @@ $LN14: 00043 85 c0 test eax, eax 00045 74 67 je SHORT $LN2@NcDeepCopy -; 297 : { -; 298 : return new NATIVE_CODE_LINK(Link->Label, NULL); +; 299 : { +; 300 : return new NATIVE_CODE_LINK(Link->Label, NULL); 00047 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H 0004c e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new @@ -11799,13 +11815,13 @@ $LN7@NcDeepCopy: 00 00 mov rax, QWORD PTR $T3[rbp] 000a4 e9 12 01 00 00 jmp $LN1@NcDeepCopy -; 299 : } +; 301 : } 000a9 e9 0d 01 00 00 jmp $LN1@NcDeepCopy $LN2@NcDeepCopy: -; 300 : else -; 301 : { PNATIVE_CODE_LINK NewLink = new NATIVE_CODE_LINK(Link->Flags, Link->RawData, Link->RawDataSize); +; 302 : else +; 303 : { PNATIVE_CODE_LINK NewLink = new NATIVE_CODE_LINK(Link->Flags, Link->RawData, Link->RawDataSize); 000ae b9 f0 00 00 00 mov ecx, 240 ; 000000f0H 000b3 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new @@ -11842,7 +11858,7 @@ $LN9@NcDeepCopy: 00 00 mov rax, QWORD PTR $T5[rbp] 0011e 48 89 45 08 mov QWORD PTR NewLink$1[rbp], rax -; 302 : NewLink->Label = Link->Label; +; 304 : NewLink->Label = Link->Label; 00122 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] 00126 48 8b 8d c0 01 @@ -11850,7 +11866,7 @@ $LN9@NcDeepCopy: 0012d 8b 49 1c mov ecx, DWORD PTR [rcx+28] 00130 89 48 1c mov DWORD PTR [rax+28], ecx -; 303 : XED_ERROR_ENUM DecodeError = XedDecode(&NewLink->XedInstruction, Link->RawData, Link->RawDataSize); +; 305 : XED_ERROR_ENUM DecodeError = XedDecode(&NewLink->XedInstruction, Link->RawData, Link->RawDataSize); 00133 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] 00137 48 83 c0 30 add rax, 48 ; 00000030H @@ -11864,13 +11880,13 @@ $LN9@NcDeepCopy: 00154 e8 00 00 00 00 call xed_decode 00159 89 45 24 mov DWORD PTR DecodeError$2[rbp], eax -; 304 : if (DecodeError != XED_ERROR_NONE) +; 306 : if (DecodeError != XED_ERROR_NONE) 0015c 83 7d 24 00 cmp DWORD PTR DecodeError$2[rbp], 0 00160 74 55 je SHORT $LN4@NcDeepCopy -; 305 : { -; 306 : printf("XedDecode failed in NcDeepCopyLink: %s\n", XedErrorEnumToString(DecodeError)); +; 307 : { +; 308 : printf("XedDecode failed in NcDeepCopyLink: %s\n", XedErrorEnumToString(DecodeError)); 00162 8b 4d 24 mov ecx, DWORD PTR DecodeError$2[rbp] 00165 e8 00 00 00 00 call xed_error_enum_t2str @@ -11879,7 +11895,7 @@ $LN9@NcDeepCopy: 00 00 lea rcx, OFFSET FLAT:??_C@_0CI@IAPEEFOG@XedDecode?5failed?5in?5NcDeepCopyL@ 00174 e8 00 00 00 00 call printf -; 307 : delete NewLink; +; 309 : delete NewLink; 00179 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] 0017d 48 89 85 88 01 @@ -11900,20 +11916,20 @@ $LN10@NcDeepCopy: 00 mov QWORD PTR tv148[rbp], 0 $LN11@NcDeepCopy: -; 308 : return NULL; +; 310 : return NULL; 001b3 33 c0 xor eax, eax 001b5 eb 04 jmp SHORT $LN1@NcDeepCopy $LN4@NcDeepCopy: -; 309 : } -; 310 : return NewLink; +; 311 : } +; 312 : return NewLink; 001b7 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] $LN1@NcDeepCopy: -; 311 : } -; 312 : } +; 313 : } +; 314 : } 001bb 48 8d a5 a8 01 00 00 lea rsp, QWORD PTR [rbp+424] @@ -12053,7 +12069,7 @@ Jmp$ = 256 Delta$ = 264 ?NcValidateJmp@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@H@Z PROC ; NcValidateJmp, COMDAT -; 255 : { +; 257 : { $LN23: 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx @@ -12073,16 +12089,16 @@ $LN23: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00035 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 256 : PNATIVE_CODE_LINK T; -; 257 : if (Delta > 0) +; 258 : PNATIVE_CODE_LINK T; +; 259 : if (Delta > 0) 0003a 83 bd 08 01 00 00 00 cmp DWORD PTR Delta$[rbp], 0 00041 0f 8e a2 00 00 00 jle $LN10@NcValidate -; 258 : { -; 259 : T = Jmp->Next; +; 260 : { +; 261 : T = Jmp->Next; 00047 48 8b 85 00 01 00 00 mov rax, QWORD PTR Jmp$[rbp] @@ -12091,7 +12107,7 @@ $LN23: $LN21@NcValidate: $LN2@NcValidate: -; 260 : while (Delta > 0 && T) +; 262 : while (Delta > 0 && T) 00055 83 bd 08 01 00 00 00 cmp DWORD PTR Delta$[rbp], 0 @@ -12099,8 +12115,8 @@ $LN2@NcValidate: 0005e 48 83 7d 08 00 cmp QWORD PTR T$[rbp], 0 00063 74 3d je SHORT $LN3@NcValidate -; 261 : { -; 262 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 263 : { +; 264 : if (T->Flags & CODE_FLAG_IS_LABEL) 00065 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 00069 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -12108,12 +12124,12 @@ $LN2@NcValidate: 0006f 85 c0 test eax, eax 00071 74 02 je SHORT $LN12@NcValidate -; 263 : continue; +; 265 : continue; 00073 eb e0 jmp SHORT $LN2@NcValidate $LN12@NcValidate: -; 264 : Delta -= XedDecodedInstGetLength(&T->XedInstruction); +; 266 : Delta -= XedDecodedInstGetLength(&T->XedInstruction); 00075 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 00079 48 83 c0 30 add rax, 48 ; 00000030H @@ -12126,18 +12142,18 @@ $LN12@NcValidate: 0008f 89 85 08 01 00 00 mov DWORD PTR Delta$[rbp], eax -; 265 : T = T->Next; +; 267 : T = T->Next; 00095 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 00099 48 8b 00 mov rax, QWORD PTR [rax] 0009c 48 89 45 08 mov QWORD PTR T$[rbp], rax -; 266 : } +; 268 : } 000a0 eb b3 jmp SHORT $LN21@NcValidate $LN3@NcValidate: -; 267 : if (Delta != 0 || !T) +; 269 : if (Delta != 0 || !T) 000a2 83 bd 08 01 00 00 00 cmp DWORD PTR Delta$[rbp], 0 @@ -12146,14 +12162,14 @@ $LN3@NcValidate: 000b0 75 07 jne SHORT $LN13@NcValidate $LN14@NcValidate: -; 268 : return NULL; +; 270 : return NULL; 000b2 33 c0 xor eax, eax 000b4 e9 db 00 00 00 jmp $LN1@NcValidate $LN13@NcValidate: $LN4@NcValidate: -; 269 : while (T && (T->Flags & CODE_FLAG_IS_LABEL)) +; 271 : while (T && (T->Flags & CODE_FLAG_IS_LABEL)) 000b9 48 83 7d 08 00 cmp QWORD PTR T$[rbp], 0 000be 74 1b je SHORT $LN5@NcValidate @@ -12163,7 +12179,7 @@ $LN4@NcValidate: 000ca 85 c0 test eax, eax 000cc 74 0d je SHORT $LN5@NcValidate -; 270 : T = T->Next; +; 272 : T = T->Next; 000ce 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 000d2 48 8b 00 mov rax, QWORD PTR [rax] @@ -12171,25 +12187,25 @@ $LN4@NcValidate: 000d9 eb de jmp SHORT $LN4@NcValidate $LN5@NcValidate: -; 271 : return T; +; 273 : return T; 000db 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 000df e9 b0 00 00 00 jmp $LN1@NcValidate -; 272 : } +; 274 : } 000e4 e9 a4 00 00 00 jmp $LN11@NcValidate $LN10@NcValidate: -; 273 : else if (Delta < 0) +; 275 : else if (Delta < 0) 000e9 83 bd 08 01 00 00 00 cmp DWORD PTR Delta$[rbp], 0 000f0 0f 8d 97 00 00 00 jge $LN15@NcValidate -; 274 : { -; 275 : T = Jmp; +; 276 : { +; 277 : T = Jmp; 000f6 48 8b 85 00 01 00 00 mov rax, QWORD PTR Jmp$[rbp] @@ -12197,13 +12213,13 @@ $LN10@NcValidate: $LN22@NcValidate: $LN6@NcValidate: -; 276 : while (T) +; 278 : while (T) 00101 48 83 7d 08 00 cmp QWORD PTR T$[rbp], 0 00106 74 49 je SHORT $LN7@NcValidate -; 277 : { -; 278 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 279 : { +; 280 : if (T->Flags & CODE_FLAG_IS_LABEL) 00108 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 0010c 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -12211,12 +12227,12 @@ $LN6@NcValidate: 00112 85 c0 test eax, eax 00114 74 02 je SHORT $LN16@NcValidate -; 279 : continue; +; 281 : continue; 00116 eb e9 jmp SHORT $LN6@NcValidate $LN16@NcValidate: -; 280 : Delta += XedDecodedInstGetLength(&T->XedInstruction); +; 282 : Delta += XedDecodedInstGetLength(&T->XedInstruction); 00118 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 0011c 48 83 c0 30 add rax, 48 ; 00000030H @@ -12229,29 +12245,29 @@ $LN16@NcValidate: 00132 89 85 08 01 00 00 mov DWORD PTR Delta$[rbp], eax -; 281 : if (Delta >= 0) +; 283 : if (Delta >= 0) 00138 83 bd 08 01 00 00 00 cmp DWORD PTR Delta$[rbp], 0 0013f 7c 02 jl SHORT $LN17@NcValidate -; 282 : break; +; 284 : break; 00141 eb 0e jmp SHORT $LN7@NcValidate $LN17@NcValidate: -; 283 : T = T->Prev; +; 285 : T = T->Prev; 00143 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 00147 48 8b 40 08 mov rax, QWORD PTR [rax+8] 0014b 48 89 45 08 mov QWORD PTR T$[rbp], rax -; 284 : } +; 286 : } 0014f eb b0 jmp SHORT $LN22@NcValidate $LN7@NcValidate: -; 285 : if (Delta != 0 || !T) +; 287 : if (Delta != 0 || !T) 00151 83 bd 08 01 00 00 00 cmp DWORD PTR Delta$[rbp], 0 @@ -12260,14 +12276,14 @@ $LN7@NcValidate: 0015f 75 04 jne SHORT $LN18@NcValidate $LN19@NcValidate: -; 286 : return NULL; +; 288 : return NULL; 00161 33 c0 xor eax, eax 00163 eb 2f jmp SHORT $LN1@NcValidate $LN18@NcValidate: $LN8@NcValidate: -; 287 : while (T && (T->Flags & CODE_FLAG_IS_LABEL)) +; 289 : while (T && (T->Flags & CODE_FLAG_IS_LABEL)) 00165 48 83 7d 08 00 cmp QWORD PTR T$[rbp], 0 0016a 74 1b je SHORT $LN9@NcValidate @@ -12277,7 +12293,7 @@ $LN8@NcValidate: 00176 85 c0 test eax, eax 00178 74 0d je SHORT $LN9@NcValidate -; 288 : T = T->Next; +; 290 : T = T->Next; 0017a 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 0017e 48 8b 00 mov rax, QWORD PTR [rax] @@ -12285,21 +12301,21 @@ $LN8@NcValidate: 00185 eb de jmp SHORT $LN8@NcValidate $LN9@NcValidate: -; 289 : return T; +; 291 : return T; 00187 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 0018b eb 07 jmp SHORT $LN1@NcValidate $LN15@NcValidate: $LN11@NcValidate: -; 290 : } -; 291 : return Jmp; +; 292 : } +; 293 : return Jmp; 0018d 48 8b 85 00 01 00 00 mov rax, QWORD PTR Jmp$[rbp] $LN1@NcValidate: -; 292 : } +; 294 : } 00194 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] @@ -12329,7 +12345,7 @@ __$ArrayPad$ = 544 Block$ = 592 ?NcCreateLabels@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcCreateLabels, COMDAT -; 203 : { +; 205 : { $LN18: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -12353,12 +12369,12 @@ $LN18: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 204 : ULONG CurrentLabelId = 0; +; 206 : ULONG CurrentLabelId = 0; 00047 c7 45 04 00 00 00 00 mov DWORD PTR CurrentLabelId$[rbp], 0 -; 205 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) +; 207 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) 0004e 48 8b 85 50 02 00 00 mov rax, QWORD PTR Block$[rbp] @@ -12374,8 +12390,8 @@ $LN4@NcCreateLa: 0006e 0f 84 07 02 00 00 je $LN3@NcCreateLa -; 206 : { -; 207 : if (!(T->Flags & CODE_FLAG_IS_INST)) +; 208 : { +; 209 : if (!(T->Flags & CODE_FLAG_IS_INST)) 00074 48 8b 45 28 mov rax, QWORD PTR T$4[rbp] 00078 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -12383,13 +12399,13 @@ $LN4@NcCreateLa: 0007e 85 c0 test eax, eax 00080 75 02 jne SHORT $LN5@NcCreateLa -; 208 : continue; +; 210 : continue; 00082 eb da jmp SHORT $LN2@NcCreateLa $LN5@NcCreateLa: -; 209 : -; 210 : XED_CATEGORY_ENUM Category = XedDecodedInstGetCategory(&T->XedInstruction); +; 211 : +; 212 : XED_CATEGORY_ENUM Category = XedDecodedInstGetCategory(&T->XedInstruction); 00084 48 8b 45 28 mov rax, QWORD PTR T$4[rbp] 00088 48 83 c0 30 add rax, 48 ; 00000030H @@ -12397,20 +12413,20 @@ $LN5@NcCreateLa: 0008f e8 00 00 00 00 call xed_decoded_inst_get_category 00094 89 45 44 mov DWORD PTR Category$5[rbp], eax -; 211 : if (Category != XED_CATEGORY_COND_BR && Category != XED_CATEGORY_UNCOND_BR) +; 213 : if (Category != XED_CATEGORY_COND_BR && Category != XED_CATEGORY_UNCOND_BR) 00097 83 7d 44 1c cmp DWORD PTR Category$5[rbp], 28 0009b 74 08 je SHORT $LN6@NcCreateLa 0009d 83 7d 44 5b cmp DWORD PTR Category$5[rbp], 91 ; 0000005bH 000a1 74 02 je SHORT $LN6@NcCreateLa -; 212 : continue; +; 214 : continue; 000a3 eb b9 jmp SHORT $LN2@NcCreateLa $LN6@NcCreateLa: -; 213 : -; 214 : ULONG OperandCount = XedDecodedInstNumOperands(&T->XedInstruction); +; 215 : +; 216 : ULONG OperandCount = XedDecodedInstNumOperands(&T->XedInstruction); 000a5 48 8b 45 28 mov rax, QWORD PTR T$4[rbp] 000a9 48 83 c0 30 add rax, 48 ; 00000030H @@ -12418,18 +12434,18 @@ $LN6@NcCreateLa: 000b0 e8 00 00 00 00 call xed_decoded_inst_noperands 000b5 89 45 64 mov DWORD PTR OperandCount$6[rbp], eax -; 215 : if (OperandCount < 1) +; 217 : if (OperandCount < 1) 000b8 83 7d 64 01 cmp DWORD PTR OperandCount$6[rbp], 1 000bc 73 02 jae SHORT $LN7@NcCreateLa -; 216 : continue; +; 218 : continue; 000be eb 9e jmp SHORT $LN2@NcCreateLa $LN7@NcCreateLa: -; 217 : -; 218 : CONST XED_INST* Inst = XedDecodedInstInst(&T->XedInstruction); +; 219 : +; 220 : CONST XED_INST* Inst = XedDecodedInstInst(&T->XedInstruction); 000c0 48 8b 45 28 mov rax, QWORD PTR T$4[rbp] 000c4 48 83 c0 30 add rax, 48 ; 00000030H @@ -12438,19 +12454,19 @@ $LN7@NcCreateLa: 000d0 48 89 85 88 00 00 00 mov QWORD PTR Inst$7[rbp], rax -; 219 : if (!Inst) +; 221 : if (!Inst) 000d7 48 83 bd 88 00 00 00 00 cmp QWORD PTR Inst$7[rbp], 0 000df 75 05 jne SHORT $LN8@NcCreateLa -; 220 : continue; +; 222 : continue; 000e1 e9 78 ff ff ff jmp $LN2@NcCreateLa $LN8@NcCreateLa: -; 221 : -; 222 : CONST XED_OPERAND* Operand = XedInstOperand(Inst, 0); +; 223 : +; 224 : CONST XED_OPERAND* Operand = XedInstOperand(Inst, 0); 000e6 33 d2 xor edx, edx 000e8 48 8b 8d 88 00 @@ -12459,19 +12475,19 @@ $LN8@NcCreateLa: 000f4 48 89 85 a8 00 00 00 mov QWORD PTR Operand$8[rbp], rax -; 223 : if (!Operand) +; 225 : if (!Operand) 000fb 48 83 bd a8 00 00 00 00 cmp QWORD PTR Operand$8[rbp], 0 00103 75 05 jne SHORT $LN9@NcCreateLa -; 224 : continue; +; 226 : continue; 00105 e9 54 ff ff ff jmp $LN2@NcCreateLa $LN9@NcCreateLa: -; 225 : -; 226 : XED_OPERAND_TYPE_ENUM OperandType = XedOperandType(Operand); +; 227 : +; 228 : XED_OPERAND_TYPE_ENUM OperandType = XedOperandType(Operand); 0010a 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR Operand$8[rbp] @@ -12479,7 +12495,7 @@ $LN9@NcCreateLa: 00116 89 85 c4 00 00 00 mov DWORD PTR OperandType$9[rbp], eax -; 227 : if (OperandType != XED_OPERAND_TYPE_IMM && OperandType != XED_OPERAND_TYPE_IMM_CONST) +; 229 : if (OperandType != XED_OPERAND_TYPE_IMM && OperandType != XED_OPERAND_TYPE_IMM_CONST) 0011c 83 bd c4 00 00 00 02 cmp DWORD PTR OperandType$9[rbp], 2 @@ -12488,13 +12504,13 @@ $LN9@NcCreateLa: 00 03 cmp DWORD PTR OperandType$9[rbp], 3 0012c 74 05 je SHORT $LN10@NcCreateLa -; 228 : continue; +; 230 : continue; 0012e e9 2b ff ff ff jmp $LN2@NcCreateLa $LN10@NcCreateLa: -; 229 : -; 230 : INT32 BranchDisplacement = XedDecodedInstGetBranchDisplacement(&T->XedInstruction); +; 231 : +; 232 : INT32 BranchDisplacement = XedDecodedInstGetBranchDisplacement(&T->XedInstruction); 00133 48 8b 45 28 mov rax, QWORD PTR T$4[rbp] 00137 48 83 c0 30 add rax, 48 ; 00000030H @@ -12503,7 +12519,7 @@ $LN10@NcCreateLa: 00143 89 85 e4 00 00 00 mov DWORD PTR BranchDisplacement$10[rbp], eax -; 231 : PNATIVE_CODE_LINK JmpPos = NcValidateJmp(T, BranchDisplacement); +; 233 : PNATIVE_CODE_LINK JmpPos = NcValidateJmp(T, BranchDisplacement); 00149 8b 95 e4 00 00 00 mov edx, DWORD PTR BranchDisplacement$10[rbp] @@ -12512,14 +12528,14 @@ $LN10@NcCreateLa: 00158 48 89 85 08 01 00 00 mov QWORD PTR JmpPos$11[rbp], rax -; 232 : if (!JmpPos) +; 234 : if (!JmpPos) 0015f 48 83 bd 08 01 00 00 00 cmp QWORD PTR JmpPos$11[rbp], 0 00167 75 25 jne SHORT $LN11@NcCreateLa -; 233 : { -; 234 : printf("Failed to validate jump. Type: %s, Displacement: %d\n", XedCategoryEnumToString(Category), BranchDisplacement); +; 235 : { +; 236 : printf("Failed to validate jump. Type: %s, Displacement: %d\n", XedCategoryEnumToString(Category), BranchDisplacement); 00169 8b 4d 44 mov ecx, DWORD PTR Category$5[rbp] 0016c e8 00 00 00 00 call xed_category_enum_t2str @@ -12530,15 +12546,15 @@ $LN10@NcCreateLa: 00 00 lea rcx, OFFSET FLAT:??_C@_0DF@KKBEBOEB@Failed?5to?5validate?5jump?4?5Type?3?5@ 00182 e8 00 00 00 00 call printf -; 235 : return FALSE; +; 237 : return FALSE; 00187 33 c0 xor eax, eax 00189 e9 f2 00 00 00 jmp $LN1@NcCreateLa $LN11@NcCreateLa: -; 236 : } -; 237 : -; 238 : if (JmpPos->Prev && (JmpPos->Prev->Flags & CODE_FLAG_IS_LABEL)) +; 238 : } +; 239 : +; 240 : if (JmpPos->Prev && (JmpPos->Prev->Flags & CODE_FLAG_IS_LABEL)) 0018e 48 8b 85 08 01 00 00 mov rax, QWORD PTR JmpPos$11[rbp] @@ -12552,8 +12568,8 @@ $LN11@NcCreateLa: 001ad 85 c0 test eax, eax 001af 74 1a je SHORT $LN12@NcCreateLa -; 239 : { -; 240 : T->Label = JmpPos->Prev->Label; +; 241 : { +; 242 : T->Label = JmpPos->Prev->Label; 001b1 48 8b 85 08 01 00 00 mov rax, QWORD PTR JmpPos$11[rbp] @@ -12562,14 +12578,14 @@ $LN11@NcCreateLa: 001c0 8b 40 1c mov eax, DWORD PTR [rax+28] 001c3 89 41 1c mov DWORD PTR [rcx+28], eax -; 241 : } +; 243 : } 001c6 e9 9a 00 00 00 jmp $LN13@NcCreateLa $LN12@NcCreateLa: -; 242 : else -; 243 : { -; 244 : NcInsertLinkBefore(JmpPos, new NATIVE_CODE_LINK(CurrentLabelId, Block)); +; 244 : else +; 245 : { +; 246 : NcInsertLinkBefore(JmpPos, new NATIVE_CODE_LINK(CurrentLabelId, Block)); 001cb b9 f0 00 00 00 mov ecx, 240 ; 000000f0H 001d0 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new @@ -12602,7 +12618,7 @@ $LN16@NcCreateLa: 00 00 mov rcx, QWORD PTR JmpPos$11[rbp] 0022c e8 00 00 00 00 call ?NcInsertLinkBefore@@YAXPEAU_NATIVE_CODE_LINK@@0@Z ; NcInsertLinkBefore -; 245 : Block->LabelIds.push_back(CurrentLabelId); +; 247 : Block->LabelIds.push_back(CurrentLabelId); 00231 48 8b 85 50 02 00 00 mov rax, QWORD PTR Block$[rbp] @@ -12614,21 +12630,21 @@ $LN16@NcCreateLa: 00 00 mov rcx, QWORD PTR tv163[rbp] 0024e e8 00 00 00 00 call ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ; std::vector >::push_back -; 246 : T->Label = CurrentLabelId; +; 248 : T->Label = CurrentLabelId; 00253 48 8b 45 28 mov rax, QWORD PTR T$4[rbp] 00257 8b 4d 04 mov ecx, DWORD PTR CurrentLabelId$[rbp] 0025a 89 48 1c mov DWORD PTR [rax+28], ecx -; 247 : ++CurrentLabelId; +; 249 : ++CurrentLabelId; 0025d 8b 45 04 mov eax, DWORD PTR CurrentLabelId$[rbp] 00260 ff c0 inc eax 00262 89 45 04 mov DWORD PTR CurrentLabelId$[rbp], eax $LN13@NcCreateLa: -; 248 : } -; 249 : T->Flags |= CODE_FLAG_IS_REL_JMP; +; 250 : } +; 251 : T->Flags |= CODE_FLAG_IS_REL_JMP; 00265 48 8b 45 28 mov rax, QWORD PTR T$4[rbp] 00269 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -12636,17 +12652,17 @@ $LN13@NcCreateLa: 0026f 48 8b 4d 28 mov rcx, QWORD PTR T$4[rbp] 00273 89 41 18 mov DWORD PTR [rcx+24], eax -; 250 : } +; 252 : } 00276 e9 e3 fd ff ff jmp $LN2@NcCreateLa $LN3@NcCreateLa: -; 251 : return TRUE; +; 253 : return TRUE; 0027b b8 01 00 00 00 mov eax, 1 $LN1@NcCreateLa: -; 252 : } +; 254 : } 00280 48 8b f8 mov rdi, rax 00283 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] @@ -12744,7 +12760,7 @@ Block$ = 264 FixLabels$ = 272 ?NcInsertBlockBefore@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z PROC ; NcInsertBlockBefore, COMDAT -; 183 : { +; 185 : { $LN10: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -12765,7 +12781,7 @@ $LN10: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 184 : if (!Link || !Link->Block || !Block || !Block->Start || !Block->End) +; 186 : if (!Link || !Link->Block || !Block || !Block->Start || !Block->End) 00040 48 83 bd 00 01 00 00 00 cmp QWORD PTR Link$[rbp], 0 @@ -12787,14 +12803,14 @@ $LN10: 0007b 75 07 jne SHORT $LN5@NcInsertBl $LN6@NcInsertBl: -; 185 : return FALSE; +; 187 : return FALSE; 0007d 33 c0 xor eax, eax - 0007f e9 fa 00 00 00 jmp $LN1@NcInsertBl + 0007f e9 0e 01 00 00 jmp $LN1@NcInsertBl $LN5@NcInsertBl: -; 186 : -; 187 : if (FixLabels && Block->LabelIds.size() && Link->Block->LabelIds.size()) +; 188 : +; 189 : if (FixLabels && Block->LabelIds.size() && Link->Block->LabelIds.size()) 00084 83 bd 10 01 00 00 00 cmp DWORD PTR FixLabels$[rbp], 0 @@ -12815,7 +12831,7 @@ $LN5@NcInsertBl: 000bc 48 85 c0 test rax, rax 000bf 74 17 je SHORT $LN7@NcInsertBl -; 188 : NcFixLabelsForBlocks(Link->Block, Block); +; 190 : NcFixLabelsForBlocks(Link->Block, Block); 000c1 48 8b 95 08 01 00 00 mov rdx, QWORD PTR Block$[rbp] @@ -12825,15 +12841,15 @@ $LN5@NcInsertBl: 000d3 e8 00 00 00 00 call ?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z ; NcFixLabelsForBlocks $LN7@NcInsertBl: -; 189 : -; 190 : if (Link->Prev) +; 191 : +; 192 : if (Link->Prev) 000d8 48 8b 85 00 01 00 00 mov rax, QWORD PTR Link$[rbp] 000df 48 83 78 08 00 cmp QWORD PTR [rax+8], 0 000e4 74 18 je SHORT $LN8@NcInsertBl -; 191 : Link->Prev->Next = Block->Start; +; 193 : Link->Prev->Next = Block->Start; 000e6 48 8b 85 00 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -12844,7 +12860,7 @@ $LN7@NcInsertBl: 000fb 48 89 08 mov QWORD PTR [rax], rcx $LN8@NcInsertBl: -; 192 : Block->Start->Prev = Link->Prev; +; 194 : Block->Start->Prev = Link->Prev; 000fe 48 8b 85 08 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -12854,7 +12870,7 @@ $LN8@NcInsertBl: 0010f 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] 00113 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 193 : Block->End->Next = Link; +; 195 : Block->End->Next = Link; 00117 48 8b 85 08 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -12863,7 +12879,7 @@ $LN8@NcInsertBl: 00 00 mov rcx, QWORD PTR Link$[rbp] 00129 48 89 08 mov QWORD PTR [rax], rcx -; 194 : Link->Prev = Block->End; +; 196 : Link->Prev = Block->End; 0012c 48 8b 85 00 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -12872,8 +12888,8 @@ $LN8@NcInsertBl: 0013a 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] 0013e 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 195 : -; 196 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) +; 197 : +; 198 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) 00142 48 8b 85 08 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -12886,31 +12902,37 @@ $LN2@NcInsertBl: 00159 48 89 45 08 mov QWORD PTR T$1[rbp], rax $LN4@NcInsertBl: 0015d 48 83 7d 08 00 cmp QWORD PTR T$1[rbp], 0 - 00162 74 15 je SHORT $LN3@NcInsertBl + 00162 74 29 je SHORT $LN3@NcInsertBl + 00164 48 8b 85 08 01 + 00 00 mov rax, QWORD PTR Block$[rbp] + 0016b 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 0016f 48 8b 00 mov rax, QWORD PTR [rax] + 00172 48 39 45 08 cmp QWORD PTR T$1[rbp], rax + 00176 74 15 je SHORT $LN3@NcInsertBl -; 197 : T->Block = Link->Block; +; 199 : T->Block = Link->Block; - 00164 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] - 00168 48 8b 8d 00 01 + 00178 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] + 0017c 48 8b 8d 00 01 00 00 mov rcx, QWORD PTR Link$[rbp] - 0016f 48 8b 49 10 mov rcx, QWORD PTR [rcx+16] - 00173 48 89 48 10 mov QWORD PTR [rax+16], rcx - 00177 eb d9 jmp SHORT $LN2@NcInsertBl + 00183 48 8b 49 10 mov rcx, QWORD PTR [rcx+16] + 00187 48 89 48 10 mov QWORD PTR [rax+16], rcx + 0018b eb c5 jmp SHORT $LN2@NcInsertBl $LN3@NcInsertBl: -; 198 : -; 199 : return TRUE; +; 200 : +; 201 : return TRUE; - 00179 b8 01 00 00 00 mov eax, 1 + 0018d b8 01 00 00 00 mov eax, 1 $LN1@NcInsertBl: -; 200 : } +; 202 : } - 0017e 48 8d a5 e8 00 + 00192 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] - 00185 5f pop rdi - 00186 5d pop rbp - 00187 c3 ret 0 + 00199 5f pop rdi + 0019a 5d pop rbp + 0019b c3 ret 0 ?NcInsertBlockBefore@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z ENDP ; NcInsertBlockBefore _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -12923,7 +12945,7 @@ Block$ = 264 FixLabels$ = 272 ?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z PROC ; NcInsertBlockAfter, COMDAT -; 163 : { +; 165 : { $LN10: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -12944,7 +12966,7 @@ $LN10: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 164 : if (!Link || !Link->Block || !Block || !Block->Start || !Block->End || Link->Block == Block) +; 166 : if (!Link || !Link->Block || !Block || !Block->Start || !Block->End || Link->Block == Block) 00040 48 83 bd 00 01 00 00 00 cmp QWORD PTR Link$[rbp], 0 @@ -12972,14 +12994,14 @@ $LN10: 0008f 75 07 jne SHORT $LN5@NcInsertBl $LN6@NcInsertBl: -; 165 : return FALSE; +; 167 : return FALSE; 00091 33 c0 xor eax, eax - 00093 e9 f7 00 00 00 jmp $LN1@NcInsertBl + 00093 e9 0b 01 00 00 jmp $LN1@NcInsertBl $LN5@NcInsertBl: -; 166 : -; 167 : if (FixLabels && Block->LabelIds.size() && Link->Block->LabelIds.size()) +; 168 : +; 169 : if (FixLabels && Block->LabelIds.size() && Link->Block->LabelIds.size()) 00098 83 bd 10 01 00 00 00 cmp DWORD PTR FixLabels$[rbp], 0 @@ -13000,7 +13022,7 @@ $LN5@NcInsertBl: 000d0 48 85 c0 test rax, rax 000d3 74 17 je SHORT $LN7@NcInsertBl -; 168 : NcFixLabelsForBlocks(Link->Block, Block); +; 170 : NcFixLabelsForBlocks(Link->Block, Block); 000d5 48 8b 95 08 01 00 00 mov rdx, QWORD PTR Block$[rbp] @@ -13010,15 +13032,15 @@ $LN5@NcInsertBl: 000e7 e8 00 00 00 00 call ?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z ; NcFixLabelsForBlocks $LN7@NcInsertBl: -; 169 : -; 170 : if (Link->Next) +; 171 : +; 172 : if (Link->Next) 000ec 48 8b 85 00 01 00 00 mov rax, QWORD PTR Link$[rbp] 000f3 48 83 38 00 cmp QWORD PTR [rax], 0 000f7 74 19 je SHORT $LN8@NcInsertBl -; 171 : Link->Next->Prev = Block->End; +; 173 : Link->Next->Prev = Block->End; 000f9 48 8b 85 00 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -13029,7 +13051,7 @@ $LN7@NcInsertBl: 0010e 48 89 48 08 mov QWORD PTR [rax+8], rcx $LN8@NcInsertBl: -; 172 : Block->End->Next = Link->Next; +; 174 : Block->End->Next = Link->Next; 00112 48 8b 85 08 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -13039,7 +13061,7 @@ $LN8@NcInsertBl: 00124 48 8b 09 mov rcx, QWORD PTR [rcx] 00127 48 89 08 mov QWORD PTR [rax], rcx -; 173 : Block->Start->Prev = Link; +; 175 : Block->Start->Prev = Link; 0012a 48 8b 85 08 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -13048,7 +13070,7 @@ $LN8@NcInsertBl: 00 00 mov rcx, QWORD PTR Link$[rbp] 0013b 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 174 : Link->Next = Block->Start; +; 176 : Link->Next = Block->Start; 0013f 48 8b 85 00 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -13057,8 +13079,8 @@ $LN8@NcInsertBl: 0014d 48 8b 09 mov rcx, QWORD PTR [rcx] 00150 48 89 08 mov QWORD PTR [rax], rcx -; 175 : -; 176 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) +; 177 : +; 178 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) 00153 48 8b 85 08 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -13071,31 +13093,37 @@ $LN2@NcInsertBl: 0016a 48 89 45 08 mov QWORD PTR T$1[rbp], rax $LN4@NcInsertBl: 0016e 48 83 7d 08 00 cmp QWORD PTR T$1[rbp], 0 - 00173 74 15 je SHORT $LN3@NcInsertBl + 00173 74 29 je SHORT $LN3@NcInsertBl + 00175 48 8b 85 08 01 + 00 00 mov rax, QWORD PTR Block$[rbp] + 0017c 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 00180 48 8b 00 mov rax, QWORD PTR [rax] + 00183 48 39 45 08 cmp QWORD PTR T$1[rbp], rax + 00187 74 15 je SHORT $LN3@NcInsertBl -; 177 : T->Block = Link->Block; +; 179 : T->Block = Link->Block; - 00175 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] - 00179 48 8b 8d 00 01 + 00189 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] + 0018d 48 8b 8d 00 01 00 00 mov rcx, QWORD PTR Link$[rbp] - 00180 48 8b 49 10 mov rcx, QWORD PTR [rcx+16] - 00184 48 89 48 10 mov QWORD PTR [rax+16], rcx - 00188 eb d9 jmp SHORT $LN2@NcInsertBl + 00194 48 8b 49 10 mov rcx, QWORD PTR [rcx+16] + 00198 48 89 48 10 mov QWORD PTR [rax+16], rcx + 0019c eb c5 jmp SHORT $LN2@NcInsertBl $LN3@NcInsertBl: -; 178 : -; 179 : return TRUE; +; 180 : +; 181 : return TRUE; - 0018a b8 01 00 00 00 mov eax, 1 + 0019e b8 01 00 00 00 mov eax, 1 $LN1@NcInsertBl: -; 180 : } +; 182 : } - 0018f 48 8d a5 e8 00 + 001a3 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] - 00196 5f pop rdi - 00197 5d pop rbp - 00198 c3 ret 0 + 001aa 5f pop rdi + 001ab 5d pop rbp + 001ac c3 ret 0 ?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z ENDP ; NcInsertBlockAfter _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -13132,7 +13160,7 @@ Block1$ = 720 Block2$ = 728 ?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z PROC ; NcFixLabelsForBlocks, COMDAT -; 150 : { +; 152 : { $LN17: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -13159,7 +13187,7 @@ $LN17: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00051 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 151 : for (PNATIVE_CODE_LINK T = Block2->Start; T; T = T->Next) +; 153 : for (PNATIVE_CODE_LINK T = Block2->Start; T; T = T->Next) 00056 48 8b 85 d8 02 00 00 mov rax, QWORD PTR Block2$[rbp] @@ -13175,8 +13203,8 @@ $LN4@NcFixLabel: 00076 0f 84 26 02 00 00 je $LN3@NcFixLabel -; 152 : { -; 153 : if ((T->Flags & CODE_FLAG_IS_LABEL) && StdFind(Block1->LabelIds.begin(), Block1->LabelIds.end(), T->Label) != Block1->LabelIds.end()) +; 154 : { +; 155 : if ((T->Flags & CODE_FLAG_IS_LABEL) && StdFind(Block1->LabelIds.begin(), Block1->LabelIds.end(), T->Label) != Block1->LabelIds.end()) 0007c 48 8b 45 08 mov rax, QWORD PTR T$4[rbp] 00080 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -13321,15 +13349,15 @@ $LN16@NcFixLabel: 00251 85 c0 test eax, eax 00253 74 48 je SHORT $LN5@NcFixLabel -; 154 : { -; 155 : ULONG Lid = NcGenUnusedLabelId(Block1); +; 156 : { +; 157 : ULONG Lid = NcGenUnusedLabelId(Block1); 00255 48 8b 8d d0 02 00 00 mov rcx, QWORD PTR Block1$[rbp] 0025c e8 00 00 00 00 call ?NcGenUnusedLabelId@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z ; NcGenUnusedLabelId 00261 89 45 24 mov DWORD PTR Lid$5[rbp], eax -; 156 : NcChangeLabelId(Block2, T->Label, Lid); +; 158 : NcChangeLabelId(Block2, T->Label, Lid); 00264 44 8b 45 24 mov r8d, DWORD PTR Lid$5[rbp] 00268 48 8b 45 08 mov rax, QWORD PTR T$4[rbp] @@ -13338,7 +13366,7 @@ $LN16@NcFixLabel: 00 00 mov rcx, QWORD PTR Block2$[rbp] 00276 e8 00 00 00 00 call ?NcChangeLabelId@@YAXPEAU_NATIVE_CODE_BLOCK@@KK@Z ; NcChangeLabelId -; 157 : Block1->LabelIds.push_back(Lid); +; 159 : Block1->LabelIds.push_back(Lid); 0027b 48 8b 85 d0 02 00 00 mov rax, QWORD PTR Block1$[rbp] @@ -13351,13 +13379,13 @@ $LN16@NcFixLabel: 00298 e8 00 00 00 00 call ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ; std::vector >::push_back $LN5@NcFixLabel: -; 158 : } -; 159 : } +; 160 : } +; 161 : } 0029d e9 c4 fd ff ff jmp $LN2@NcFixLabel $LN3@NcFixLabel: -; 160 : } +; 162 : } 002a2 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] 002a6 48 8d 15 00 00 @@ -13621,7 +13649,7 @@ __$ArrayPad$ = 608 Block$ = 656 ?NcGenUnusedLabelId@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcGenUnusedLabelId, COMDAT -; 133 : { +; 135 : { $LN9: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -13645,14 +13673,14 @@ $LN9: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 134 : ULONG ReturnLabelId = rand(); +; 136 : ULONG ReturnLabelId = rand(); 00047 ff 15 00 00 00 00 call QWORD PTR __imp_rand 0004d 89 45 04 mov DWORD PTR ReturnLabelId$[rbp], eax $LN2@NcGenUnuse: -; 135 : while (StdFind(Block->LabelIds.begin(), Block->LabelIds.end(), ReturnLabelId) != Block->LabelIds.end()) +; 137 : while (StdFind(Block->LabelIds.begin(), Block->LabelIds.end(), ReturnLabelId) != Block->LabelIds.end()) 00050 48 8d 85 08 01 00 00 lea rax, QWORD PTR $T5[rbp] @@ -13751,7 +13779,7 @@ $LN2@NcGenUnuse: 001a2 85 c0 test eax, eax 001a4 74 0e je SHORT $LN3@NcGenUnuse -; 136 : ReturnLabelId = rand(); +; 138 : ReturnLabelId = rand(); 001a6 ff 15 00 00 00 00 call QWORD PTR __imp_rand @@ -13759,11 +13787,11 @@ $LN2@NcGenUnuse: 001af e9 9c fe ff ff jmp $LN2@NcGenUnuse $LN3@NcGenUnuse: -; 137 : return ReturnLabelId; +; 139 : return ReturnLabelId; 001b4 8b 45 04 mov eax, DWORD PTR ReturnLabelId$[rbp] -; 138 : } +; 140 : } 001b7 8b f8 mov edi, eax 001b9 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] @@ -13958,7 +13986,7 @@ Original$ = 264 New$ = 272 ?NcChangeLabelId@@YAXPEAU_NATIVE_CODE_BLOCK@@KK@Z PROC ; NcChangeLabelId, COMDAT -; 141 : { +; 143 : { $LN8: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -13979,7 +14007,7 @@ $LN8: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 0003a e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 142 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) +; 144 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) 0003f 48 8b 85 00 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -13994,8 +14022,8 @@ $LN4@NcChangeLa: 0005a 48 83 7d 08 00 cmp QWORD PTR T$1[rbp], 0 0005f 74 3a je SHORT $LN3@NcChangeLa -; 143 : { -; 144 : if (((T->Flags & CODE_FLAG_IS_LABEL) || (T->Flags & CODE_FLAG_IS_REL_JMP)) && T->Label == Original) +; 145 : { +; 146 : if (((T->Flags & CODE_FLAG_IS_LABEL) || (T->Flags & CODE_FLAG_IS_REL_JMP)) && T->Label == Original) 00061 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] 00065 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -14014,7 +14042,7 @@ $LN6@NcChangeLa: 00087 39 48 1c cmp DWORD PTR [rax+28], ecx 0008a 75 0d jne SHORT $LN5@NcChangeLa -; 145 : T->Label = New; +; 147 : T->Label = New; 0008c 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] 00090 8b 8d 10 01 00 @@ -14022,12 +14050,12 @@ $LN6@NcChangeLa: 00096 89 48 1c mov DWORD PTR [rax+28], ecx $LN5@NcChangeLa: -; 146 : } +; 148 : } 00099 eb b4 jmp SHORT $LN2@NcChangeLa $LN3@NcChangeLa: -; 147 : } +; 149 : } 0009b 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] @@ -14045,7 +14073,7 @@ T$1 = 40 Block$ = 288 ?NcCalcBlockSize@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcCalcBlockSize, COMDAT -; 121 : { +; 123 : { $LN7: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -14064,12 +14092,12 @@ $LN7: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 122 : ULONG TotalSize = 0; +; 124 : ULONG TotalSize = 0; 00036 c7 45 04 00 00 00 00 mov DWORD PTR TotalSize$[rbp], 0 -; 123 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) +; 125 : for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next; T = T->Next) 0003d 48 8b 85 20 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14081,48 +14109,52 @@ $LN2@NcCalcBloc: 00051 48 8b 00 mov rax, QWORD PTR [rax] 00054 48 89 45 28 mov QWORD PTR T$1[rbp], rax $LN4@NcCalcBloc: - 00058 48 83 7d 28 00 cmp QWORD PTR T$1[rbp], 0 - 0005d 74 23 je SHORT $LN3@NcCalcBloc + 00058 48 8b 85 20 01 + 00 00 mov rax, QWORD PTR Block$[rbp] + 0005f 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 00063 48 8b 00 mov rax, QWORD PTR [rax] + 00066 48 39 45 28 cmp QWORD PTR T$1[rbp], rax + 0006a 74 23 je SHORT $LN3@NcCalcBloc -; 124 : { -; 125 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 126 : { +; 127 : if (T->Flags & CODE_FLAG_IS_LABEL) - 0005f 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] - 00063 8b 40 18 mov eax, DWORD PTR [rax+24] - 00066 83 e0 01 and eax, 1 - 00069 85 c0 test eax, eax - 0006b 74 02 je SHORT $LN5@NcCalcBloc + 0006c 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 00070 8b 40 18 mov eax, DWORD PTR [rax+24] + 00073 83 e0 01 and eax, 1 + 00076 85 c0 test eax, eax + 00078 74 02 je SHORT $LN5@NcCalcBloc -; 126 : continue; +; 128 : continue; - 0006d eb de jmp SHORT $LN2@NcCalcBloc + 0007a eb d1 jmp SHORT $LN2@NcCalcBloc $LN5@NcCalcBloc: -; 127 : TotalSize += T->RawDataSize; +; 129 : TotalSize += T->RawDataSize; - 0006f 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] - 00073 8b 40 28 mov eax, DWORD PTR [rax+40] - 00076 8b 4d 04 mov ecx, DWORD PTR TotalSize$[rbp] - 00079 03 c8 add ecx, eax - 0007b 8b c1 mov eax, ecx - 0007d 89 45 04 mov DWORD PTR TotalSize$[rbp], eax + 0007c 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 00080 8b 40 28 mov eax, DWORD PTR [rax+40] + 00083 8b 4d 04 mov ecx, DWORD PTR TotalSize$[rbp] + 00086 03 c8 add ecx, eax + 00088 8b c1 mov eax, ecx + 0008a 89 45 04 mov DWORD PTR TotalSize$[rbp], eax -; 128 : } +; 130 : } - 00080 eb cb jmp SHORT $LN2@NcCalcBloc + 0008d eb be jmp SHORT $LN2@NcCalcBloc $LN3@NcCalcBloc: -; 129 : return TotalSize; +; 131 : return TotalSize; - 00082 8b 45 04 mov eax, DWORD PTR TotalSize$[rbp] + 0008f 8b 45 04 mov eax, DWORD PTR TotalSize$[rbp] -; 130 : } +; 132 : } - 00085 48 8d a5 08 01 + 00092 48 8d a5 08 01 00 00 lea rsp, QWORD PTR [rbp+264] - 0008c 5f pop rdi - 0008d 5d pop rbp - 0008e c3 ret 0 + 00099 5f pop rdi + 0009a 5d pop rbp + 0009b c3 ret 0 ?NcCalcBlockSize@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; NcCalcBlockSize _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -14132,7 +14164,7 @@ _TEXT SEGMENT Link$ = 224 ?NcUnlink@@YAXPEAU_NATIVE_CODE_LINK@@@Z PROC ; NcUnlink, COMDAT -; 110 : { +; 112 : { $LN6: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -14151,21 +14183,21 @@ $LN6: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 111 : if (Link) +; 113 : if (Link) 00036 48 83 bd e0 00 00 00 00 cmp QWORD PTR Link$[rbp], 0 0003e 74 4c je SHORT $LN2@NcUnlink -; 112 : { -; 113 : if (Link->Next) +; 114 : { +; 115 : if (Link->Next) 00040 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Link$[rbp] 00047 48 83 38 00 cmp QWORD PTR [rax], 0 0004b 74 19 je SHORT $LN3@NcUnlink -; 114 : Link->Next->Prev = Link->Prev; +; 116 : Link->Next->Prev = Link->Prev; 0004d 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14176,14 +14208,14 @@ $LN6: 00062 48 89 48 08 mov QWORD PTR [rax+8], rcx $LN3@NcUnlink: -; 115 : if (Link->Prev) +; 117 : if (Link->Prev) 00066 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Link$[rbp] 0006d 48 83 78 08 00 cmp QWORD PTR [rax+8], 0 00072 74 18 je SHORT $LN4@NcUnlink -; 116 : Link->Prev->Next = Link->Next; +; 118 : Link->Prev->Next = Link->Next; 00074 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14195,8 +14227,8 @@ $LN3@NcUnlink: $LN4@NcUnlink: $LN2@NcUnlink: -; 117 : } -; 118 : } +; 119 : } +; 120 : } 0008c 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -14213,7 +14245,7 @@ Link1$ = 224 Link2$ = 232 ?NcInsertLinkBefore@@YAXPEAU_NATIVE_CODE_LINK@@0@Z PROC ; NcInsertLinkBefore, COMDAT -; 98 : { +; 100 : { $LN5: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -14233,14 +14265,14 @@ $LN5: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 99 : if (Link1) +; 101 : if (Link1) 0003b 48 83 bd e0 00 00 00 00 cmp QWORD PTR Link1$[rbp], 0 00043 74 5c je SHORT $LN2@NcInsertLi -; 100 : { -; 101 : Link2->Next = Link1; +; 102 : { +; 103 : Link2->Next = Link1; 00045 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14248,7 +14280,7 @@ $LN5: 00 00 mov rcx, QWORD PTR Link1$[rbp] 00053 48 89 08 mov QWORD PTR [rax], rcx -; 102 : Link2->Prev = Link1->Prev; +; 104 : Link2->Prev = Link1->Prev; 00056 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14257,7 +14289,7 @@ $LN5: 00064 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] 00068 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 103 : Link1->Prev = Link2; +; 105 : Link1->Prev = Link2; 0006c 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Link1$[rbp] @@ -14265,14 +14297,14 @@ $LN5: 00 00 mov rcx, QWORD PTR Link2$[rbp] 0007a 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 104 : if (Link2->Prev) +; 106 : if (Link2->Prev) 0007e 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] 00085 48 83 78 08 00 cmp QWORD PTR [rax+8], 0 0008a 74 15 je SHORT $LN3@NcInsertLi -; 105 : Link2->Prev->Next = Link2; +; 107 : Link2->Prev->Next = Link2; 0008c 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14283,8 +14315,8 @@ $LN5: $LN3@NcInsertLi: $LN2@NcInsertLi: -; 106 : } -; 107 : } +; 108 : } +; 109 : } 000a1 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -14301,7 +14333,7 @@ Link1$ = 224 Link2$ = 232 ?NcInsertLinkAfter@@YAXPEAU_NATIVE_CODE_LINK@@0@Z PROC ; NcInsertLinkAfter, COMDAT -; 86 : { +; 88 : { $LN5: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -14321,14 +14353,14 @@ $LN5: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 87 : if (Link1) +; 89 : if (Link1) 0003b 48 83 bd e0 00 00 00 00 cmp QWORD PTR Link1$[rbp], 0 00043 74 59 je SHORT $LN2@NcInsertLi -; 88 : { -; 89 : Link2->Prev = Link1; +; 90 : { +; 91 : Link2->Prev = Link1; 00045 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14336,7 +14368,7 @@ $LN5: 00 00 mov rcx, QWORD PTR Link1$[rbp] 00053 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 90 : Link2->Next = Link1->Next; +; 92 : Link2->Next = Link1->Next; 00057 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14345,7 +14377,7 @@ $LN5: 00065 48 8b 09 mov rcx, QWORD PTR [rcx] 00068 48 89 08 mov QWORD PTR [rax], rcx -; 91 : Link1->Next = Link2; +; 93 : Link1->Next = Link2; 0006b 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Link1$[rbp] @@ -14353,14 +14385,14 @@ $LN5: 00 00 mov rcx, QWORD PTR Link2$[rbp] 00079 48 89 08 mov QWORD PTR [rax], rcx -; 92 : if (Link2->Next) +; 94 : if (Link2->Next) 0007c 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] 00083 48 83 38 00 cmp QWORD PTR [rax], 0 00087 74 15 je SHORT $LN3@NcInsertLi -; 93 : Link2->Next->Prev = Link2; +; 95 : Link2->Next->Prev = Link2; 00089 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14371,8 +14403,8 @@ $LN5: $LN3@NcInsertLi: $LN2@NcInsertLi: -; 94 : } -; 95 : } +; 96 : } +; 97 : } 0009e 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -14389,7 +14421,7 @@ Block$ = 224 Link$ = 232 ?NcPrependToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z PROC ; NcPrependToBlock, COMDAT -; 66 : { +; 68 : { $LN7: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -14409,19 +14441,19 @@ $LN7: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 67 : if (!Link) +; 69 : if (!Link) 0003b 48 83 bd e8 00 00 00 00 cmp QWORD PTR Link$[rbp], 0 00043 75 05 jne SHORT $LN2@NcPrependT -; 68 : return; +; 70 : return; 00045 e9 9b 00 00 00 jmp $LN1@NcPrependT $LN2@NcPrependT: -; 69 : -; 70 : Link->Block = Block; +; 71 : +; 72 : Link->Block = Block; 0004a 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14429,7 +14461,7 @@ $LN2@NcPrependT: 00 00 mov rcx, QWORD PTR Block$[rbp] 00058 48 89 48 10 mov QWORD PTR [rax+16], rcx -; 71 : Link->Next = Block->Start; +; 73 : Link->Next = Block->Start; 0005c 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14438,15 +14470,15 @@ $LN2@NcPrependT: 0006a 48 8b 09 mov rcx, QWORD PTR [rcx] 0006d 48 89 08 mov QWORD PTR [rax], rcx -; 72 : Link->Prev = NULL; +; 74 : Link->Prev = NULL; 00070 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link$[rbp] 00077 48 c7 40 08 00 00 00 00 mov QWORD PTR [rax+8], 0 -; 73 : -; 74 : if (!Block->End || !Block->Start) +; 75 : +; 76 : if (!Block->End || !Block->Start) 0007f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14458,8 +14490,8 @@ $LN2@NcPrependT: 00098 75 25 jne SHORT $LN3@NcPrependT $LN5@NcPrependT: -; 75 : { -; 76 : Block->Start = Block->End = Link; +; 77 : { +; 78 : Block->Start = Block->End = Link; 0009a 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14472,14 +14504,14 @@ $LN5@NcPrependT: 00 00 mov rcx, QWORD PTR Link$[rbp] 000ba 48 89 08 mov QWORD PTR [rax], rcx -; 77 : } +; 79 : } 000bd eb 26 jmp SHORT $LN4@NcPrependT $LN3@NcPrependT: -; 78 : else -; 79 : { -; 80 : Block->Start->Prev = Link; +; 80 : else +; 81 : { +; 82 : Block->Start->Prev = Link; 000bf 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14488,7 +14520,7 @@ $LN3@NcPrependT: 00 00 mov rcx, QWORD PTR Link$[rbp] 000d0 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 81 : Block->Start = Link; +; 83 : Block->Start = Link; 000d4 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14498,8 +14530,8 @@ $LN3@NcPrependT: $LN4@NcPrependT: $LN1@NcPrependT: -; 82 : } -; 83 : } +; 84 : } +; 85 : } 000e5 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -14516,7 +14548,7 @@ Block$ = 224 Link$ = 232 ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z PROC ; NcAppendToBlock, COMDAT -; 46 : { +; 48 : { $LN7: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -14536,19 +14568,19 @@ $LN7: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 47 : if (!Link) +; 49 : if (!Link) 0003b 48 83 bd e8 00 00 00 00 cmp QWORD PTR Link$[rbp], 0 00043 75 05 jne SHORT $LN2@NcAppendTo -; 48 : return; +; 50 : return; 00045 e9 9d 00 00 00 jmp $LN1@NcAppendTo $LN2@NcAppendTo: -; 49 : -; 50 : Link->Block = Block; +; 51 : +; 52 : Link->Block = Block; 0004a 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14556,7 +14588,7 @@ $LN2@NcAppendTo: 00 00 mov rcx, QWORD PTR Block$[rbp] 00058 48 89 48 10 mov QWORD PTR [rax+16], rcx -; 51 : Link->Prev = Block->End; +; 53 : Link->Prev = Block->End; 0005c 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14565,15 +14597,15 @@ $LN2@NcAppendTo: 0006a 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] 0006e 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 52 : Link->Next = NULL; +; 54 : Link->Next = NULL; 00072 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link$[rbp] 00079 48 c7 00 00 00 00 00 mov QWORD PTR [rax], 0 -; 53 : -; 54 : if (!Block->End || !Block->Start) +; 55 : +; 56 : if (!Block->End || !Block->Start) 00080 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14585,8 +14617,8 @@ $LN2@NcAppendTo: 00099 75 25 jne SHORT $LN3@NcAppendTo $LN5@NcAppendTo: -; 55 : { -; 56 : Block->Start = Block->End = Link; +; 57 : { +; 58 : Block->Start = Block->End = Link; 0009b 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14599,14 +14631,14 @@ $LN5@NcAppendTo: 00 00 mov rcx, QWORD PTR Link$[rbp] 000bb 48 89 08 mov QWORD PTR [rax], rcx -; 57 : } +; 59 : } 000be eb 27 jmp SHORT $LN4@NcAppendTo $LN3@NcAppendTo: -; 58 : else -; 59 : { -; 60 : Block->End->Next = Link; +; 60 : else +; 61 : { +; 62 : Block->End->Next = Link; 000c0 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14615,7 +14647,7 @@ $LN3@NcAppendTo: 00 00 mov rcx, QWORD PTR Link$[rbp] 000d2 48 89 08 mov QWORD PTR [rax], rcx -; 61 : Block->End = Link; +; 63 : Block->End = Link; 000d5 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14625,8 +14657,8 @@ $LN3@NcAppendTo: $LN4@NcAppendTo: $LN1@NcAppendTo: -; 62 : } -; 63 : } +; 64 : } +; 65 : } 000e7 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -14714,7 +14746,7 @@ _TEXT SEGMENT this$ = 224 ??0_NATIVE_CODE_BLOCK@@QEAA@XZ PROC ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK, COMDAT -; 40 : { +; 42 : { $LN4: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -14738,7 +14770,7 @@ $LN4: 00041 48 8b c8 mov rcx, rax 00044 e8 00 00 00 00 call ??0?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ ; std::vector >::vector > -; 41 : Start = End = NULL; +; 43 : Start = End = NULL; 00049 48 8b 85 e0 00 00 00 mov rax, QWORD PTR this$[rbp] @@ -14749,7 +14781,7 @@ $LN4: 0005f 48 c7 00 00 00 00 00 mov QWORD PTR [rax], 0 -; 42 : LabelIds.clear(); +; 44 : LabelIds.clear(); 00066 48 8b 85 e0 00 00 00 mov rax, QWORD PTR this$[rbp] @@ -14757,7 +14789,7 @@ $LN4: 00071 48 8b c8 mov rcx, rax 00074 e8 00 00 00 00 call ?clear@?$vector@KV?$allocator@K@std@@@std@@QEAAXXZ ; std::vector >::clear -; 43 : } +; 45 : } 00079 48 8b 85 e0 00 00 00 mov rax, QWORD PTR this$[rbp] @@ -16660,7 +16692,7 @@ $T1 = 200 this$ = 256 ??1_NATIVE_CODE_LINK@@QEAA@XZ PROC ; _NATIVE_CODE_LINK::~_NATIVE_CODE_LINK, COMDAT -; 34 : { +; 36 : { $LN4: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -16679,14 +16711,14 @@ $LN4: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 35 : if (RawData) +; 37 : if (RawData) 00036 48 8b 85 00 01 00 00 mov rax, QWORD PTR this$[rbp] 0003d 48 83 78 20 00 cmp QWORD PTR [rax+32], 0 00042 74 24 je SHORT $LN2@NATIVE_COD -; 36 : delete RawData; +; 38 : delete RawData; 00044 48 8b 85 00 01 00 00 mov rax, QWORD PTR this$[rbp] @@ -16700,7 +16732,7 @@ $LN4: 00067 90 npad 1 $LN2@NATIVE_COD: -; 37 : } +; 39 : } 00068 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] @@ -16783,7 +16815,7 @@ $LN5: 00097 48 83 bd 10 01 00 00 00 cmp QWORD PTR Rd$[rbp], 0 - 0009f 74 21 je SHORT $LN2@NATIVE_COD + 0009f 74 20 je SHORT $LN2@NATIVE_COD ; 30 : RtlCopyMemory(RawData, Rd, Rds); @@ -16796,18 +16828,33 @@ $LN5: 00 00 mov rax, QWORD PTR this$[rbp] 000b8 48 8b 48 20 mov rcx, QWORD PTR [rax+32] 000bc e8 00 00 00 00 call memcpy - 000c1 90 npad 1 $LN2@NATIVE_COD: -; 31 : } +; 31 : +; 32 : XedDecode(&XedInstruction, RawData, RawDataSize); + + 000c1 48 8b 85 00 01 + 00 00 mov rax, QWORD PTR this$[rbp] + 000c8 48 83 c0 30 add rax, 48 ; 00000030H + 000cc 48 8b 8d 00 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 000d3 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 000d7 48 8b 8d 00 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 000de 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 000e2 48 8b c8 mov rcx, rax + 000e5 e8 00 00 00 00 call xed_decode + 000ea 90 npad 1 + +; 33 : } - 000c2 48 8b 85 00 01 + 000eb 48 8b 85 00 01 00 00 mov rax, QWORD PTR this$[rbp] - 000c9 48 8d a5 e8 00 + 000f2 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] - 000d0 5f pop rdi - 000d1 5d pop rbp - 000d2 c3 ret 0 + 000f9 5f pop rdi + 000fa 5d pop rbp + 000fb c3 ret 0 ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ENDP ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK _TEXT ENDS ; COMDAT text$x diff --git a/CodeVirtualizer/x64/Debug/OpaqueBranching.cod b/CodeVirtualizer/x64/Debug/OpaqueBranching.cod index 18dfb5f..162ee00 100644 --- a/CodeVirtualizer/x64/Debug/OpaqueBranching.cod +++ b/CodeVirtualizer/x64/Debug/OpaqueBranching.cod @@ -607,7 +607,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DD imagerel $LN29 - DD imagerel $LN29+1160 + DD imagerel $LN29+1176 DD imagerel $unwind$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z pdata ENDS ; COMDAT pdata @@ -4232,7 +4232,7 @@ $T12 = 808 $T13 = 840 $T14 = 872 $T15 = 904 -tv214 = 920 +tv216 = 920 tv204 = 920 tv189 = 920 tv171 = 920 @@ -4297,7 +4297,7 @@ $LN3@ObfGenOpaq: ; 91 : return NULL; 00086 33 c0 xor eax, eax - 00088 e9 cc 03 00 00 jmp $LN1@ObfGenOpaq + 00088 e9 dc 03 00 00 jmp $LN1@ObfGenOpaq $LN2@ObfGenOpaq: ; 92 : @@ -4319,7 +4319,7 @@ $LN2@ObfGenOpaq: ; 96 : return NULL; 000ab 33 c0 xor eax, eax - 000ad e9 a7 03 00 00 jmp $LN1@ObfGenOpaq + 000ad e9 b7 03 00 00 jmp $LN1@ObfGenOpaq $LN4@ObfGenOpaq: ; 97 : } @@ -4367,7 +4367,7 @@ $LN10@ObfGenOpaq: ; 103 : return NULL; 00113 33 c0 xor eax, eax - 00115 e9 3f 03 00 00 jmp $LN1@ObfGenOpaq + 00115 e9 4f 03 00 00 jmp $LN1@ObfGenOpaq $LN5@ObfGenOpaq: ; 104 : } @@ -4486,7 +4486,7 @@ $LN14@ObfGenOpaq: ; 118 : return NULL; 00234 33 c0 xor eax, eax - 00236 e9 1e 02 00 00 jmp $LN1@ObfGenOpaq + 00236 e9 2e 02 00 00 jmp $LN1@ObfGenOpaq $LN6@ObfGenOpaq: ; 119 : } @@ -4583,7 +4583,7 @@ $LN20@ObfGenOpaq: ; 128 : return NULL; 00320 33 c0 xor eax, eax - 00322 e9 32 01 00 00 jmp $LN1@ObfGenOpaq + 00322 e9 42 01 00 00 jmp $LN1@ObfGenOpaq $LN7@ObfGenOpaq: ; 129 : } @@ -4674,50 +4674,57 @@ $LN24@ObfGenOpaq: 00412 48 8b 48 08 mov rcx, QWORD PTR [rax+8] 00416 e8 00 00 00 00 call ?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z ; NcInsertBlockAfter -; 138 : -; 139 : delete Taken; +; 138 : NotTaken->End = Taken->End; + + 0041b 48 8b 45 08 mov rax, QWORD PTR NotTaken$[rbp] + 0041f 48 8b 4d 28 mov rcx, QWORD PTR Taken$[rbp] + 00423 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] + 00427 48 89 48 08 mov QWORD PTR [rax+8], rcx + +; 139 : +; 140 : delete Taken; - 0041b 48 8b 45 28 mov rax, QWORD PTR Taken$[rbp] - 0041f 48 89 85 88 03 + 0042b 48 8b 45 28 mov rax, QWORD PTR Taken$[rbp] + 0042f 48 89 85 88 03 00 00 mov QWORD PTR $T15[rbp], rax - 00426 48 83 bd 88 03 + 00436 48 83 bd 88 03 00 00 00 cmp QWORD PTR $T15[rbp], 0 - 0042e 74 1a je SHORT $LN25@ObfGenOpaq - 00430 ba 01 00 00 00 mov edx, 1 - 00435 48 8b 8d 88 03 + 0043e 74 1a je SHORT $LN25@ObfGenOpaq + 00440 ba 01 00 00 00 mov edx, 1 + 00445 48 8b 8d 88 03 00 00 mov rcx, QWORD PTR $T15[rbp] - 0043c e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 00441 48 89 85 98 03 - 00 00 mov QWORD PTR tv214[rbp], rax - 00448 eb 0b jmp SHORT $LN26@ObfGenOpaq + 0044c e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z + 00451 48 89 85 98 03 + 00 00 mov QWORD PTR tv216[rbp], rax + 00458 eb 0b jmp SHORT $LN26@ObfGenOpaq $LN25@ObfGenOpaq: - 0044a 48 c7 85 98 03 + 0045a 48 c7 85 98 03 00 00 00 00 00 - 00 mov QWORD PTR tv214[rbp], 0 + 00 mov QWORD PTR tv216[rbp], 0 $LN26@ObfGenOpaq: -; 140 : return NotTaken; +; 141 : return NotTaken; - 00455 48 8b 45 08 mov rax, QWORD PTR NotTaken$[rbp] + 00465 48 8b 45 08 mov rax, QWORD PTR NotTaken$[rbp] $LN1@ObfGenOpaq: -; 141 : } +; 142 : } - 00459 48 8b f8 mov rdi, rax - 0045c 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 00460 48 8d 15 00 00 + 00469 48 8b f8 mov rdi, rax + 0046c 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] + 00470 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcFrameData - 00467 e8 00 00 00 00 call _RTC_CheckStackVars - 0046c 48 8b c7 mov rax, rdi - 0046f 48 8b 8d a0 03 + 00477 e8 00 00 00 00 call _RTC_CheckStackVars + 0047c 48 8b c7 mov rax, rdi + 0047f 48 8b 8d a0 03 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00476 48 33 cd xor rcx, rbp - 00479 e8 00 00 00 00 call __security_check_cookie - 0047e 48 8d a5 b8 03 + 00486 48 33 cd xor rcx, rbp + 00489 e8 00 00 00 00 call __security_check_cookie + 0048e 48 8d a5 b8 03 00 00 lea rsp, QWORD PTR [rbp+952] - 00485 5f pop rdi - 00486 5d pop rbp - 00487 c3 ret 0 + 00495 5f pop rdi + 00496 5d pop rbp + 00497 c3 ret 0 ?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z ENDP ; ObfGenOpaqueBranch _TEXT ENDS ; COMDAT text$x @@ -4739,7 +4746,7 @@ $T12 = 808 $T13 = 840 $T14 = 872 $T15 = 904 -tv214 = 920 +tv216 = 920 tv204 = 920 tv189 = 920 tv171 = 920 @@ -4789,7 +4796,7 @@ $T12 = 808 $T13 = 840 $T14 = 872 $T15 = 904 -tv214 = 920 +tv216 = 920 tv204 = 920 tv189 = 920 tv171 = 920 @@ -4840,7 +4847,7 @@ $T12 = 808 $T13 = 840 $T14 = 872 $T15 = 904 -tv214 = 920 +tv216 = 920 tv204 = 920 tv189 = 920 tv171 = 920 @@ -4891,7 +4898,7 @@ $T12 = 808 $T13 = 840 $T14 = 872 $T15 = 904 -tv214 = 920 +tv216 = 920 tv204 = 920 tv189 = 920 tv171 = 920 diff --git a/x64/Debug/CodeVirtualizer.ilk b/x64/Debug/CodeVirtualizer.ilk index 824e7a6..f9f7387 100644 Binary files a/x64/Debug/CodeVirtualizer.ilk and b/x64/Debug/CodeVirtualizer.ilk differ