diff --git a/CodeVirtualizer/Main.cpp b/CodeVirtualizer/Main.cpp index 9386a91..9fecd80 100644 --- a/CodeVirtualizer/Main.cpp +++ b/CodeVirtualizer/Main.cpp @@ -45,56 +45,73 @@ 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; + NcDisassemble(&Block, TestBuffer, TestBufferSize); + NATIVE_CODE_BLOCK NotTaken; + NATIVE_CODE_BLOCK Taken; + printf("\n\nOriginal\n"); + NcDebugPrint(&Block); + ObfCreateOpaqueBranches(Block.Start->Next, Block.Start->Next->Next->Next->Next, &NotTaken, &Taken); + //printf("\n\nNotTaken\n"); + //NcDebugPrint(&NotTaken); + //printf("\n\nTaken\n"); + //NcDebugPrint(&Taken); + //printf("\n\nCombined\n"); + ObfCombineOpaqueBranches(&NotTaken, &Taken, NcGenUnusedLabelId(&Block), NcGenUnusedLabelId(&Block)); + ObfInsertOpaqueBranchBlock(Block.Start->Next, Block.Start->Next->Next->Next->Next, &NotTaken); + printf("\n\nNew\n"); + NcDebugPrint(&Block); + + + //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(); + + + + //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()); + + //} //NcDebugPrint(Post); @@ -124,8 +141,6 @@ int main() //PNATIVE_CODE_BLOCK OpaqueBranch = ObfGenOpaqueBranch(Block.Start, Block.End); //NcDebugPrint(OpaqueBranch); - system("pause"); - diff --git a/CodeVirtualizer/NativeCode.cpp b/CodeVirtualizer/NativeCode.cpp index 887f57d..cddfa30 100644 --- a/CodeVirtualizer/NativeCode.cpp +++ b/CodeVirtualizer/NativeCode.cpp @@ -20,16 +20,18 @@ _NATIVE_CODE_LINK::_NATIVE_CODE_LINK(ULONG LabelId, _NATIVE_CODE_BLOCK* B) Flags = CODE_FLAG_IS_LABEL; } -_NATIVE_CODE_LINK::_NATIVE_CODE_LINK(ULONG F, PVOID Rd, ULONG Rds) +_NATIVE_CODE_LINK::_NATIVE_CODE_LINK(ULONG F, PVOID Rd, ULONG Rds, BOOL Decode) : _NATIVE_CODE_LINK() { Flags = F; RawDataSize = Rds; RawData = new UCHAR[Rds]; if (Rd) + { RtlCopyMemory(RawData, Rd, Rds); - - XedDecode(&XedInstruction, RawData, RawDataSize); + if (Decode) + XedDecode(&XedInstruction, RawData, RawDataSize); + } } _NATIVE_CODE_LINK::~_NATIVE_CODE_LINK() @@ -122,7 +124,7 @@ VOID NcUnlink(PNATIVE_CODE_LINK Link) ULONG NcCalcBlockSize(PNATIVE_CODE_BLOCK Block) { ULONG TotalSize = 0; - 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; @@ -141,7 +143,7 @@ ULONG NcGenUnusedLabelId(PNATIVE_CODE_BLOCK Block) VOID NcChangeLabelId(PNATIVE_CODE_BLOCK Block, ULONG Original, ULONG New) { - 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) || (T->Flags & CODE_FLAG_IS_REL_JMP)) && T->Label == Original) T->Label = New; @@ -150,7 +152,7 @@ VOID NcChangeLabelId(PNATIVE_CODE_BLOCK Block, ULONG Original, ULONG New) VOID NcFixLabelsForBlocks(PNATIVE_CODE_BLOCK Block1, PNATIVE_CODE_BLOCK Block2) { - for (PNATIVE_CODE_LINK T = Block2->Start; T; T = T->Next) + for (PNATIVE_CODE_LINK T = Block2->Start; T && T != Block2->End->Next; T = T->Next) { if ((T->Flags & CODE_FLAG_IS_LABEL) && StdFind(Block1->LabelIds.begin(), Block1->LabelIds.end(), T->Label) != Block1->LabelIds.end()) { @@ -300,12 +302,13 @@ PNATIVE_CODE_LINK NcDeepCopyLink(PNATIVE_CODE_LINK Link) return new NATIVE_CODE_LINK(Link->Label, NULL); } else - { PNATIVE_CODE_LINK NewLink = new NATIVE_CODE_LINK(Link->Flags, Link->RawData, Link->RawDataSize); + { + PNATIVE_CODE_LINK NewLink = new NATIVE_CODE_LINK(Link->Flags, Link->RawData, Link->RawDataSize); NewLink->Label = Link->Label; XED_ERROR_ENUM DecodeError = XedDecode(&NewLink->XedInstruction, Link->RawData, Link->RawDataSize); if (DecodeError != XED_ERROR_NONE) { - printf("XedDecode failed in NcDeepCopyLink: %s\n", XedErrorEnumToString(DecodeError)); + printf("XedDecode failed in NcDeepCopyLink: %s %u\n", XedErrorEnumToString(DecodeError), Link->RawDataSize); delete NewLink; return NULL; } @@ -313,36 +316,34 @@ PNATIVE_CODE_LINK NcDeepCopyLink(PNATIVE_CODE_LINK Link) } } -PNATIVE_CODE_BLOCK NcDeepCopyPartialBlock(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK End) +BOOL NcDeepCopyPartialBlock(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK End, PNATIVE_CODE_BLOCK Block) { - if (!Start || !End || !Start->Block || Start->Block != End->Block) - return NULL; + if (!Start || !End || !Start->Block || Start->Block != End->Block || !Block) + return FALSE; - PNATIVE_CODE_BLOCK Block = new NATIVE_CODE_BLOCK; - if (!Block) - return NULL; + Block->LabelIds.clear(); + Block->Start = Block->End = NULL; for (ULONG L : Start->Block->LabelIds) Block->LabelIds.push_back(L); - for (PNATIVE_CODE_LINK CurLink = Start; CurLink != End->Next; CurLink = CurLink->Next) + for (PNATIVE_CODE_LINK CurLink = Start; CurLink && CurLink != End->Next; CurLink = CurLink->Next) { PNATIVE_CODE_LINK Temp = NcDeepCopyLink(CurLink); if (!Temp) { NcDeleteBlock(Block); - delete Block; - return NULL; + return FALSE; } NcAppendToBlock(Block, Temp); } - return Block; + return TRUE; } -PNATIVE_CODE_BLOCK NcDeepCopyBlock(PNATIVE_CODE_BLOCK Block) +BOOL NcDeepCopyBlock(PNATIVE_CODE_BLOCK Block, PNATIVE_CODE_BLOCK BlockCopy) { - return NcDeepCopyPartialBlock(Block->Start, Block->End); + return NcDeepCopyPartialBlock(Block->Start, Block->End, BlockCopy); } BOOL NcGetDeltaToLabel(PNATIVE_CODE_LINK Link, PINT32 DeltaOut) @@ -383,7 +384,7 @@ BOOL NcGetDeltaToLabel(PNATIVE_CODE_LINK Link, PINT32 DeltaOut) BOOL NcFixRelJmps(PNATIVE_CODE_BLOCK Block) { - for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next;) + for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next;) { if (T->Flags & CODE_FLAG_IS_REL_JMP) { @@ -523,7 +524,9 @@ VOID NcDeleteBlock(PNATIVE_CODE_BLOCK Block) if (!Block->Start || !Block->End) return; - for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next;) + PNATIVE_CODE_LINK BlockEnding = Block->End->Next; + + for (PNATIVE_CODE_LINK T = Block->Start; T && T != BlockEnding;) { PNATIVE_CODE_LINK Next = T->Next; delete T; diff --git a/CodeVirtualizer/NativeCode.h b/CodeVirtualizer/NativeCode.h index ffdb0be..c1a7d6a 100644 --- a/CodeVirtualizer/NativeCode.h +++ b/CodeVirtualizer/NativeCode.h @@ -19,7 +19,7 @@ typedef struct _NATIVE_CODE_LINK XED_DECODED_INST XedInstruction; _NATIVE_CODE_LINK(); _NATIVE_CODE_LINK(ULONG LabelId, _NATIVE_CODE_BLOCK* B); - _NATIVE_CODE_LINK(ULONG F, PVOID Rd, ULONG Rds); + _NATIVE_CODE_LINK(ULONG F, PVOID Rd, ULONG Rds, BOOL Decode = FALSE); ~_NATIVE_CODE_LINK(); }NATIVE_CODE_LINK, *PNATIVE_CODE_LINK; @@ -59,9 +59,9 @@ PNATIVE_CODE_LINK NcValidateJmp(PNATIVE_CODE_LINK Link, INT32 Delta); PNATIVE_CODE_LINK NcDeepCopyLink(PNATIVE_CODE_LINK Link); -PNATIVE_CODE_BLOCK NcDeepCopyPartialBlock(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK End); +BOOL NcDeepCopyPartialBlock(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK End, PNATIVE_CODE_BLOCK Block); -PNATIVE_CODE_BLOCK NcDeepCopyBlock(PNATIVE_CODE_BLOCK Block); +BOOL NcDeepCopyBlock(PNATIVE_CODE_BLOCK Block, PNATIVE_CODE_BLOCK BlockCopy); BOOL NcGetDeltaToLabel(PNATIVE_CODE_LINK Link, PINT32 DeltaOut); diff --git a/CodeVirtualizer/Obfuscator.h b/CodeVirtualizer/Obfuscator.h index 4a5f4db..33122f4 100644 --- a/CodeVirtualizer/Obfuscator.h +++ b/CodeVirtualizer/Obfuscator.h @@ -4,4 +4,7 @@ +#define OBF_FLAG_IS_CODE_WRITEABLE (1<<0) //If this is set, JIT can be used + + #endif \ No newline at end of file diff --git a/CodeVirtualizer/OpaqueBranching.cpp b/CodeVirtualizer/OpaqueBranching.cpp index 98006e4..0fe926b 100644 --- a/CodeVirtualizer/OpaqueBranching.cpp +++ b/CodeVirtualizer/OpaqueBranching.cpp @@ -85,47 +85,21 @@ PNATIVE_CODE_LINK ObfGenJmpToLabel(ULONG LabelId, ULONG DisplacementWidth) return Link; } -PNATIVE_CODE_BLOCK ObfGenOpaqueBranch(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK End) +BOOL ObfCreateOpaqueBranches(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK End, PNATIVE_CODE_BLOCK NotTaken, PNATIVE_CODE_BLOCK Taken) { - if (!Start || !End || !Start->Block || Start->Block != End->Block) - return NULL; - - PNATIVE_CODE_BLOCK NotTaken = NcDeepCopyPartialBlock(Start, End); - if (!NotTaken) - { - return NULL; - } - PNATIVE_CODE_BLOCK Taken = NcDeepCopyPartialBlock(Start, End); - if (!Taken) - { - NcDeleteBlock(NotTaken); - delete NotTaken; - return NULL; - } - - ULONG JccLabel = NcGenUnusedLabelId(Start->Block); - ULONG JmpLabel = NcGenUnusedLabelId(Start->Block); - Start->Block->LabelIds.push_back(JccLabel); - Start->Block->LabelIds.push_back(JmpLabel); + return (NcDeepCopyPartialBlock(Start, End, Taken) && !NcDeepCopyPartialBlock(Start, End, NotTaken)); +} +BOOL ObfCombineOpaqueBranches(PNATIVE_CODE_BLOCK NotTaken, PNATIVE_CODE_BLOCK Taken, ULONG JccLabel, ULONG JmpLabel) +{ PNATIVE_CODE_LINK Jcc = ObfGenRandomJcc(JccLabel); if (!Jcc) - { - NcDeleteBlock(Taken); - delete Taken; - NcDeleteBlock(NotTaken); - delete NotTaken; - return NULL; - } + return FALSE; PNATIVE_CODE_LINK Jmp = ObfGenJmpToLabel(JmpLabel); if (!Jmp) { delete Jcc; - NcDeleteBlock(Taken); - delete Taken; - NcDeleteBlock(NotTaken); - delete NotTaken; - return NULL; + return FALSE; } NcPrependToBlock(NotTaken, Jcc); @@ -136,7 +110,29 @@ PNATIVE_CODE_BLOCK ObfGenOpaqueBranch(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK NcInsertBlockAfter(NotTaken->End, Taken, FALSE); NotTaken->End = Taken->End; + return TRUE; +} - delete Taken; - return NotTaken; +BOOL ObfInsertOpaqueBranchBlock(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK End, PNATIVE_CODE_BLOCK OpaqueBranchBlock) +{ + OpaqueBranchBlock->Start->Prev = Start->Prev; + OpaqueBranchBlock->End->Next = End->Next; + + if (Start->Prev) + Start->Prev->Next = OpaqueBranchBlock->Start; + if (End->Next) + End->Next->Prev = OpaqueBranchBlock->End; + + //Update group for the current isntructions + for (PNATIVE_CODE_LINK T = OpaqueBranchBlock->Start; T && T != OpaqueBranchBlock->End->Next; T = T->Next) + T->Block = Start->Block; + + PNATIVE_CODE_LINK EndBlock = End->Next; + for (PNATIVE_CODE_LINK T = Start; T && T != EndBlock;) + { + PNATIVE_CODE_LINK RealNext = T->Next; + delete T; + T = RealNext; + } + return TRUE; } \ No newline at end of file diff --git a/CodeVirtualizer/OpaqueBranching.h b/CodeVirtualizer/OpaqueBranching.h index aa22f3c..451f7f5 100644 --- a/CodeVirtualizer/OpaqueBranching.h +++ b/CodeVirtualizer/OpaqueBranching.h @@ -11,8 +11,13 @@ PNATIVE_CODE_LINK ObfGenRandomJcc(ULONG LabelId, ULONG DisplacementSize = 32); PNATIVE_CODE_LINK ObfGenJmpToLabel(ULONG LabelId, ULONG DisplacementSize = 32); -PNATIVE_CODE_BLOCK ObfGenOpaqueBranch(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK End); +BOOL ObfCreateOpaqueBranches(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK End, PNATIVE_CODE_BLOCK NotTaken, PNATIVE_CODE_BLOCK Taken); +//Combines the two branches into one block that can easily be patched into the code +//Resulting block is put into NotTaken +BOOL ObfCombineOpaqueBranches(PNATIVE_CODE_BLOCK NotTaken, PNATIVE_CODE_BLOCK Taken, ULONG JccLabel, ULONG JmpLabel); + +BOOL ObfInsertOpaqueBranchBlock(PNATIVE_CODE_LINK Start, PNATIVE_CODE_LINK End, PNATIVE_CODE_BLOCK OpaqueBranchBlock); #endif \ No newline at end of file diff --git a/CodeVirtualizer/Virtualizer.cpp b/CodeVirtualizer/Virtualizer.cpp index f596c5a..8b4f5eb 100644 --- a/CodeVirtualizer/Virtualizer.cpp +++ b/CodeVirtualizer/Virtualizer.cpp @@ -6,7 +6,7 @@ BOOL ViCanHandleInst(PNATIVE_CODE_LINK Link) } BOOL ViValidateNativeCodeBlock(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 (!ViCanHandleInst(T)) return FALSE; diff --git a/CodeVirtualizer/x64/Debug/Jit.cod b/CodeVirtualizer/x64/Debug/Jit.cod index fc3f3f4..af9c399 100644 --- a/CodeVirtualizer/x64/Debug/Jit.cod +++ b/CodeVirtualizer/x64/Debug/Jit.cod @@ -164,7 +164,7 @@ EXTRN xed_simple_flag_get_undefined_flag_set:PROC EXTRN xed_decode:PROC EXTRN xed_decoded_inst_get_rflags_info:PROC EXTRN ??0_NATIVE_CODE_LINK@@QEAA@XZ:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK -EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK +EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK EXTRN ??1_NATIVE_CODE_LINK@@QEAA@XZ:PROC ; _NATIVE_CODE_LINK::~_NATIVE_CODE_LINK EXTRN ??0_NATIVE_CODE_BLOCK@@QEAA@XZ:PROC ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK EXTRN ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z:PROC ; NcAppendToBlock @@ -319,7 +319,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN6 - DD imagerel $LN6+270 + DD imagerel $LN6+278 DD imagerel $unwind$?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT pdata @@ -331,7 +331,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN6 - DD imagerel $LN6+270 + DD imagerel $LN6+278 DD imagerel $unwind$?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT pdata @@ -1015,7 +1015,7 @@ $ip2state$?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DB 06H DB 00H DB 0b8H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -1032,13 +1032,13 @@ $cppxdata$?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DD 025053b19H - DD 010e2313H - DD 07007002fH +$unwind$?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DD 035053b19H + DD 010e3313H + DD 070070031H DD 05006H DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z - DD 0162H + DD 0172H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -1051,7 +1051,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z$rtcVarDesc DD 024H ; JitEmitPopfqInst +?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z$rtcVarDesc DD 034H ; JitEmitPopfqInst DD 01H DQ FLAT:?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z$rtcName$0 ORG $+48 @@ -1072,7 +1072,7 @@ $ip2state$?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DB 06H DB 00H DB 0b8H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -1089,13 +1089,13 @@ $cppxdata$?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DD 025053b19H - DD 010e2313H - DD 07007002fH +$unwind$?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DD 035053b19H + DD 010e3313H + DD 070070031H DD 05006H DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z - DD 0162H + DD 0172H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -1108,7 +1108,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z$rtcVarDesc DD 024H ; JitEmitPushfqInst +?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z$rtcVarDesc DD 034H ; JitEmitPushfqInst DD 01H DQ FLAT:?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z$rtcName$0 ORG $+48 @@ -5875,7 +5875,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 ?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; JitEmitPopfqInst, COMDAT @@ -5886,15 +5886,15 @@ $LN6: 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] + 00007 48 81 ec 88 01 + 00 00 sub rsp, 392 ; 00000188H + 0000e 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 00013 48 8b fc mov rdi, rsp - 00016 b9 5e 00 00 00 mov ecx, 94 ; 0000005eH + 00016 b9 62 00 00 00 mov ecx, 98 ; 00000062H 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] + 00022 48 8b 8c 24 a8 + 01 00 00 mov rcx, QWORD PTR [rsp+424] 0002a 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 00031 48 33 c5 xor rax, rbp @@ -5916,69 +5916,71 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 0005c 48 83 bd 28 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00064 74 24 je SHORT $LN3@JitEmitPop - 00066 41 b9 01 00 00 + 00064 74 2c je SHORT $LN3@JitEmitPop + 00066 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0006e 41 b9 01 00 00 00 mov r9d, 1 - 0006c 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] - 00070 ba 04 00 00 00 mov edx, 4 - 00075 48 8b 8d 28 01 + 00074 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] + 00078 ba 04 00 00 00 mov edx, 4 + 0007d 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 0007c e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 00081 48 89 85 38 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 00088 eb 0b jmp SHORT $LN4@JitEmitPop + 00084 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 00089 48 89 85 38 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 00090 eb 0b jmp SHORT $LN4@JitEmitPop $LN3@JitEmitPop: - 0008a 48 c7 85 38 01 + 00092 48 c7 85 38 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitPop: - 00095 48 8b 85 38 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 0009c 48 89 85 08 01 + 0009d 48 8b 85 38 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000a4 48 89 85 08 01 00 00 mov QWORD PTR $T4[rbp], rax - 000a3 48 8b 85 08 01 + 000ab 48 8b 85 08 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000aa 48 89 45 28 mov QWORD PTR Link$[rbp], rax + 000b2 48 89 45 28 mov QWORD PTR Link$[rbp], rax ; 21 : XedDecode(&Link->XedInstruction, Link->RawData, 1); - 000ae 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] - 000b2 48 83 c0 30 add rax, 48 ; 00000030H - 000b6 41 b8 01 00 00 + 000b6 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] + 000ba 48 83 c0 30 add rax, 48 ; 00000030H + 000be 41 b8 01 00 00 00 mov r8d, 1 - 000bc 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000c0 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 000c4 48 8b c8 mov rcx, rax - 000c7 e8 00 00 00 00 call xed_decode + 000c4 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000c8 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 000cc 48 8b c8 mov rcx, rax + 000cf e8 00 00 00 00 call xed_decode ; 22 : NcAppendToBlock(Block, Link); - 000cc 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] - 000d0 48 8b 8d 70 01 + 000d4 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] + 000d8 48 8b 8d 70 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 000d7 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 000df e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 23 : return TRUE; - 000dc b8 01 00 00 00 mov eax, 1 + 000e4 b8 01 00 00 00 mov eax, 1 ; 24 : } - 000e1 8b f8 mov edi, eax - 000e3 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 000e7 48 8d 15 00 00 + 000e9 8b f8 mov edi, eax + 000eb 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 000ef 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z$rtcFrameData - 000ee e8 00 00 00 00 call _RTC_CheckStackVars - 000f3 8b c7 mov eax, edi - 000f5 48 8b 8d 40 01 + 000f6 e8 00 00 00 00 call _RTC_CheckStackVars + 000fb 8b c7 mov eax, edi + 000fd 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 000fc 48 33 cd xor rcx, rbp - 000ff e8 00 00 00 00 call __security_check_cookie - 00104 48 8d a5 58 01 + 00104 48 33 cd xor rcx, rbp + 00107 e8 00 00 00 00 call __security_check_cookie + 0010c 48 8d a5 58 01 00 00 lea rsp, QWORD PTR [rbp+344] - 0010b 5f pop rdi - 0010c 5d pop rbp - 0010d c3 ret 0 + 00113 5f pop rdi + 00114 5d pop rbp + 00115 c3 ret 0 ?JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; JitEmitPopfqInst _TEXT ENDS ; COMDAT text$x @@ -5987,7 +5989,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 ?dtor$0@?0??JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z@4HA PROC ; `JitEmitPopfqInst'::`1'::dtor$0 @@ -5996,7 +5998,7 @@ Block$ = 368 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -6014,7 +6016,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 ?dtor$0@?0??JitEmitPopfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z@4HA PROC ; `JitEmitPopfqInst'::`1'::dtor$0 @@ -6023,7 +6025,7 @@ Block$ = 368 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -6042,7 +6044,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 ?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; JitEmitPushfqInst, COMDAT @@ -6053,15 +6055,15 @@ $LN6: 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] + 00007 48 81 ec 88 01 + 00 00 sub rsp, 392 ; 00000188H + 0000e 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 00013 48 8b fc mov rdi, rsp - 00016 b9 5e 00 00 00 mov ecx, 94 ; 0000005eH + 00016 b9 62 00 00 00 mov ecx, 98 ; 00000062H 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] + 00022 48 8b 8c 24 a8 + 01 00 00 mov rcx, QWORD PTR [rsp+424] 0002a 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 00031 48 33 c5 xor rax, rbp @@ -6083,69 +6085,71 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 0005c 48 83 bd 28 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00064 74 24 je SHORT $LN3@JitEmitPus - 00066 41 b9 01 00 00 + 00064 74 2c je SHORT $LN3@JitEmitPus + 00066 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0006e 41 b9 01 00 00 00 mov r9d, 1 - 0006c 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] - 00070 ba 04 00 00 00 mov edx, 4 - 00075 48 8b 8d 28 01 + 00074 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] + 00078 ba 04 00 00 00 mov edx, 4 + 0007d 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 0007c e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 00081 48 89 85 38 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 00088 eb 0b jmp SHORT $LN4@JitEmitPus + 00084 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 00089 48 89 85 38 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 00090 eb 0b jmp SHORT $LN4@JitEmitPus $LN3@JitEmitPus: - 0008a 48 c7 85 38 01 + 00092 48 c7 85 38 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitPus: - 00095 48 8b 85 38 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 0009c 48 89 85 08 01 + 0009d 48 8b 85 38 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000a4 48 89 85 08 01 00 00 mov QWORD PTR $T4[rbp], rax - 000a3 48 8b 85 08 01 + 000ab 48 8b 85 08 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000aa 48 89 45 28 mov QWORD PTR Link$[rbp], rax + 000b2 48 89 45 28 mov QWORD PTR Link$[rbp], rax ; 12 : XedDecode(&Link->XedInstruction, Link->RawData, 1); - 000ae 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] - 000b2 48 83 c0 30 add rax, 48 ; 00000030H - 000b6 41 b8 01 00 00 + 000b6 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] + 000ba 48 83 c0 30 add rax, 48 ; 00000030H + 000be 41 b8 01 00 00 00 mov r8d, 1 - 000bc 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000c0 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 000c4 48 8b c8 mov rcx, rax - 000c7 e8 00 00 00 00 call xed_decode + 000c4 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000c8 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 000cc 48 8b c8 mov rcx, rax + 000cf e8 00 00 00 00 call xed_decode ; 13 : NcAppendToBlock(Block, Link); - 000cc 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] - 000d0 48 8b 8d 70 01 + 000d4 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] + 000d8 48 8b 8d 70 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 000d7 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 000df e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 14 : return TRUE; - 000dc b8 01 00 00 00 mov eax, 1 + 000e4 b8 01 00 00 00 mov eax, 1 ; 15 : } - 000e1 8b f8 mov edi, eax - 000e3 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 000e7 48 8d 15 00 00 + 000e9 8b f8 mov edi, eax + 000eb 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 000ef 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z$rtcFrameData - 000ee e8 00 00 00 00 call _RTC_CheckStackVars - 000f3 8b c7 mov eax, edi - 000f5 48 8b 8d 40 01 + 000f6 e8 00 00 00 00 call _RTC_CheckStackVars + 000fb 8b c7 mov eax, edi + 000fd 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 000fc 48 33 cd xor rcx, rbp - 000ff e8 00 00 00 00 call __security_check_cookie - 00104 48 8d a5 58 01 + 00104 48 33 cd xor rcx, rbp + 00107 e8 00 00 00 00 call __security_check_cookie + 0010c 48 8d a5 58 01 00 00 lea rsp, QWORD PTR [rbp+344] - 0010b 5f pop rdi - 0010c 5d pop rbp - 0010d c3 ret 0 + 00113 5f pop rdi + 00114 5d pop rbp + 00115 c3 ret 0 ?JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; JitEmitPushfqInst _TEXT ENDS ; COMDAT text$x @@ -6154,7 +6158,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 ?dtor$0@?0??JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z@4HA PROC ; `JitEmitPushfqInst'::`1'::dtor$0 @@ -6163,7 +6167,7 @@ Block$ = 368 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -6181,7 +6185,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 ?dtor$0@?0??JitEmitPushfqInst@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z@4HA PROC ; `JitEmitPushfqInst'::`1'::dtor$0 @@ -6190,7 +6194,7 @@ Block$ = 368 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] diff --git a/CodeVirtualizer/x64/Debug/Main.cod b/CodeVirtualizer/x64/Debug/Main.cod index 70e2ba9..cfde90d 100644 --- a/CodeVirtualizer/x64/Debug/Main.cod +++ b/CodeVirtualizer/x64/Debug/Main.cod @@ -78,6 +78,7 @@ __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 @@ -86,7 +87,6 @@ __3E6EDFAA_iosfwd DB 01H __CF1C1A3F_utility DB 01H __38038D2D_xstddef DB 01H __EE19A480_xatomic@h DB 01H -__8266A2FD_iomanip DB 01H msvcjmc ENDS _DATA SEGMENT ?TestBuffer@@3PAEA DB 048H ; TestBuffer @@ -152,48 +152,58 @@ PUBLIC __local_stdio_printf_options PUBLIC _vfprintf_l PUBLIC printf PUBLIC wmemcpy -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 ?_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 ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ; std::_Maklocstr PUBLIC ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs PUBLIC ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ; std::_Maklocstr -PUBLIC ?hex@std@@YAAEAVios_base@1@AEAV21@@Z ; std::hex PUBLIC ??$_Getvals@_W@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z ; std::time_get > >::_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<< > -PUBLIC ??$?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> -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 ??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 ??$?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 ??$_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@_05PDJBBECF@pause@ ; `string' -PUBLIC ??_C@_0BD@FOIEMPBM@The?5numba?5was?3?5?$CFX?6@ ; `string' +PUBLIC ??_C@_0M@INKCCKOG@?6?6Original?6@ ; `string' +PUBLIC ??_C@_06CHBCCLOP@?6?6New?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 ?uncaught_exception@std@@YA_NXZ:PROC ; std::uncaught_exception +EXTRN __imp__CrtDbgReport:PROC +EXTRN __imp_??0_Lockit@std@@QEAA@H@Z:PROC +EXTRN __imp_??1_Lockit@std@@QEAA@XZ:PROC EXTRN ?_Xbad_alloc@std@@YAXXZ:PROC ; std::_Xbad_alloc EXTRN _Mbrtowc:PROC EXTRN __imp_?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ:PROC @@ -201,30 +211,15 @@ EXTRN __imp_?_Getdays@_Locinfo@std@@QEBAPEBDXZ:PROC EXTRN __imp_?_Getmonths@_Locinfo@std@@QEBAPEBDXZ:PROC EXTRN __imp_?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN __imp_?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ:PROC -EXTRN __imp_?good@ios_base@std@@QEBA_NXZ:PROC -EXTRN __imp_?flags@ios_base@std@@QEBAHXZ:PROC -EXTRN __imp_?setf@ios_base@std@@QEAAHHH@Z:PROC -EXTRN __imp_?width@ios_base@std@@QEBA_JXZ:PROC -EXTRN __imp_?width@ios_base@std@@QEAA_J_J@Z:PROC -EXTRN __imp_?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z:PROC -EXTRN __imp_?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z:PROC -EXTRN __imp_?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ:PROC -EXTRN __imp_?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ:PROC -EXTRN __imp_?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ:PROC -EXTRN __imp_?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z:PROC -EXTRN __imp_?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ:PROC -EXTRN __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z:PROC -EXTRN __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z:PROC -EXTRN __imp_?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ:PROC 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 ?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 ??0_NATIVE_CODE_BLOCK@@QEAA@XZ:PROC ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK +EXTRN ?NcGenUnusedLabelId@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z:PROC ; NcGenUnusedLabelId +EXTRN ?NcDisassemble@@YAHPEAU_NATIVE_CODE_BLOCK@@PEAXK@Z:PROC ; NcDisassemble +EXTRN ?NcDebugPrint@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z:PROC ; NcDebugPrint +EXTRN ?ObfCreateOpaqueBranches@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@1@Z:PROC ; ObfCreateOpaqueBranches +EXTRN ?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z:PROC ; ObfCombineOpaqueBranches +EXTRN ?ObfInsertOpaqueBranchBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z:PROC ; ObfInsertOpaqueBranchBlock EXTRN _RTC_CheckStackVars:PROC EXTRN _RTC_InitBase:PROC EXTRN _RTC_Shutdown:PROC @@ -233,7 +228,6 @@ EXTRN __CxxFrameHandler4:PROC EXTRN __GSHandlerCheck:PROC EXTRN __GSHandlerCheck_EH4:PROC EXTRN __security_check_cookie:PROC -EXTRN __imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A:BYTE EXTRN __security_cookie:QWORD ; COMDAT ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA _BSS SEGMENT @@ -289,15 +283,15 @@ $pdata$wmemcpy DD imagerel $LN3 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 +$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$?eof@?$_Narrow_char_traits@DH@std@@SAHXZ DD imagerel $LN3 - DD imagerel $LN3+57 - DD imagerel $unwind$?eof@?$_Narrow_char_traits@DH@std@@SAHXZ +$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 @@ -319,12 +313,6 @@ $pdata$??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z DD imagerel $LN7 pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?hex@std@@YAAEAVios_base@1@AEAV21@@Z DD imagerel $LN3 - DD imagerel $LN3+95 - DD imagerel $unwind$?hex@std@@YAAEAVios_base@1@AEAV21@@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT $pdata$time DD imagerel time DD imagerel time+77 DD imagerel $unwind$time @@ -343,105 +331,117 @@ $pdata$??$_Getvals@_W@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@st pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?MakeExecutableBuffer@@YAPEAXPEAXK@Z DD imagerel $LN4 - DD imagerel $LN4+136 - DD imagerel $unwind$?MakeExecutableBuffer@@YAPEAXPEAXK@Z +$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$main DD imagerel $LN19 - DD imagerel $LN19+1107 - DD imagerel $unwind$main +$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$main$dtor$0 DD imagerel main$dtor$0 - DD imagerel main$dtor$0+44 - DD imagerel $unwind$main$dtor$0 +$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$main$dtor$1 DD imagerel main$dtor$1 - DD imagerel main$dtor$1+44 - DD imagerel $unwind$main$dtor$1 +$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$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z DD imagerel $LN23 - DD imagerel $LN23+1095 - DD imagerel $unwind$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z +$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$?dtor$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA DD imagerel ?dtor$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA - DD imagerel ?dtor$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA+36 - DD imagerel $unwind$?dtor$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA +$pdata$?MakeExecutableBuffer@@YAPEAXPEAXK@Z DD imagerel $LN4 + DD imagerel $LN4+136 + DD imagerel $unwind$?MakeExecutableBuffer@@YAPEAXPEAXK@Z pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?catch$1@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA DD imagerel ?catch$1@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA - DD imagerel ?catch$1@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA+91 - DD imagerel $unwind$?catch$1@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA +$pdata$main DD imagerel $LN6 + DD imagerel $LN6+388 + DD imagerel $unwind$main pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$??$?6DU?$char_traits@D@std@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Smanip@_J@0@@Z DD imagerel $LN3 - DD imagerel $LN3+140 - DD imagerel $unwind$??$?6DU?$char_traits@D@std@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Smanip@_J@0@@Z +$pdata$main$dtor$0 DD imagerel main$dtor$0 + DD imagerel main$dtor$0+36 + DD imagerel $unwind$main$dtor$0 pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z DD imagerel $LN3 - DD imagerel $LN3+94 - DD imagerel $unwind$??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z +$pdata$main$dtor$1 DD imagerel main$dtor$1 + DD imagerel main$dtor$1+36 + DD imagerel $unwind$main$dtor$1 pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$??0?$_Fillobj@D@std@@QEAA@D@Z DD imagerel $LN3 - DD imagerel $LN3+91 - DD imagerel $unwind$??0?$_Fillobj@D@std@@QEAA@D@Z +$pdata$main$dtor$2 DD imagerel main$dtor$2 + DD imagerel main$dtor$2+39 + DD imagerel $unwind$main$dtor$2 pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z DD imagerel $LN3 - DD imagerel $LN3+133 - DD imagerel $unwind$??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z +$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$??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 +$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$??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ DD imagerel $LN4 - DD imagerel $LN4+143 - DD imagerel $unwind$??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ +$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$??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z DD imagerel $LN7 - DD imagerel $LN7+284 - DD imagerel $unwind$??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z +$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$?dtor$0@?0???0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z@4HA DD imagerel ?dtor$0@?0???0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z@4HA - DD imagerel ?dtor$0@?0???0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z@4HA+39 - DD imagerel $unwind$?dtor$0@?0???0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z@4HA +$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$??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ DD imagerel $LN6 - DD imagerel $LN6+139 - DD imagerel $unwind$??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ +$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$??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ DD imagerel $LN3 - DD imagerel $LN3+75 - DD imagerel $unwind$??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ +$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 @@ -461,14 +461,13 @@ CONST ENDS CONST SEGMENT ??_C@_0N@LPFKKEBD@?3AM?3am?3PM?3pm@ DB ':AM:am:PM:pm', 00H ; `string' CONST ENDS -; COMDAT ??_C@_0BD@FOIEMPBM@The?5numba?5was?3?5?$CFX?6@ +; COMDAT ??_C@_06CHBCCLOP@?6?6New?6@ CONST SEGMENT -??_C@_0BD@FOIEMPBM@The?5numba?5was?3?5?$CFX?6@ DB 'The numba was: %X', 0aH - DB 00H ; `string' +??_C@_06CHBCCLOP@?6?6New?6@ DB 0aH, 0aH, 'New', 0aH, 00H ; `string' CONST ENDS -; COMDAT ??_C@_05PDJBBECF@pause@ +; COMDAT ??_C@_0M@INKCCKOG@?6?6Original?6@ CONST SEGMENT -??_C@_05PDJBBECF@pause@ DB 'pause', 00H ; `string' +??_C@_0M@INKCCKOG@?6?6Original?6@ DB 0aH, 0aH, 'Original', 0aH, 00H ; `string' CONST ENDS ; COMDAT ??_C@_0GI@LHMPPKJI@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ CONST SEGMENT @@ -486,280 +485,413 @@ 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$??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ DD 025052a01H - DD 010e2313H - DD 07007001dH - DD 05006H +$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$??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ DB 02H +$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$??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ DB 060H - DD imagerel $ip2state$??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ +$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$??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ DD 025052a19H - DD 010e2313H - DD 070070021H - DD 05006H +$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$??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ + 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 -$unwind$?dtor$0@?0???0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z@4HA DD 031001H - DD 0700c4210H +$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$??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z DB 06H - DB 00H +$ip2state$??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z DB 02H DB 00H - DB 09eH - DB 02H - DB 0f1H, 02H DB 00H xdata ENDS ; COMDAT xdata xdata SEGMENT -$stateUnwindMap$??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z DB 02H - DB 0eH - DD imagerel ?dtor$0@?0???0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z@4HA +$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 +$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$??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z DB 028H - DD imagerel $stateUnwindMap$??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z - DD imagerel $ip2state$??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z +$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$??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z DD 025052f11H +$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 0700c0021H + DD 0700c001dH DD 0500bH DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z + 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$??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ DB 02H +$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$??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ DB 060H - DD imagerel $ip2state$??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ DD 025052a19H - DD 010e2313H - DD 070070021H - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ +$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$??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z DD 025052f01H +$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 -$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 - DD 0500bH +$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 -$unwind$??0?$_Fillobj@D@std@@QEAA@D@Z DD 025052e01H - DD 01122317H - DD 0700b001dH - DD 0500aH +$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$??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z DD 025052e01H - DD 01122317H - DD 0700b001dH - DD 0500aH +$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@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Smanip@_J@0@@Z DD 025052f01H - DD 01132318H - DD 0700c001fH +$unwind$main$dtor$2 DD 031001H + DD 0700c4210H DD 0500bH xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?catch$1@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA DD 031001H +$unwind$main$dtor$1 DD 031001H DD 0700c4210H DD 0500bH xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?dtor$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA DD 031001H +$unwind$main$dtor$0 DD 031001H DD 0700c4210H DD 0500bH xdata ENDS ; COMDAT xdata xdata SEGMENT -$ip2state$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z DB 0aH +$ip2state$main DB 0eH DB 00H DB 00H - DB 0c6H + DB 0b2H DB 02H - DB 011H, 02H + DB 'B' + DB 04H + DB 01aH + DB 06H + DB 0b9H, 02H DB 04H - DB 0adH, 0aH + DB 01aH DB 02H - DB 0ecH + DB 014H DB 00H xdata ENDS ; COMDAT xdata xdata SEGMENT -$handlerMap$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z DB 02H - DB 01H - DB 080H - DD imagerel ?catch$1@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$tryMap$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z DB 02H - DB 02H - DB 02H - DB 04H - DD imagerel $handlerMap$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$stateUnwindMap$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z DB 06H +$stateUnwindMap$main DB 06H DB 0eH - DD imagerel ?dtor$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA - DB 028H - DB 030H + DD imagerel main$dtor$0 + DB 02eH + DD imagerel main$dtor$1 + DB 02eH + DD imagerel main$dtor$2 xdata ENDS ; COMDAT xdata xdata SEGMENT -$cppxdata$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z DB 038H - DD imagerel $stateUnwindMap$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z - DD imagerel $tryMap$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z - DD imagerel $ip2state$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z +$cppxdata$main DB 028H + DD imagerel $stateUnwindMap$main + DD imagerel $ip2state$main xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z DD 025053f19H - DD 01122317H - DD 0700b004bH - DD 0500aH +$unwind$main DD 025052f19H + DD 010a230fH + DD 07003003dH + DD 05002H DD imagerel __GSHandlerCheck_EH4 - DD imagerel $cppxdata$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z - DD 0243H + DD imagerel $cppxdata$main + DD 01d2H xdata ENDS ; COMDAT CONST CONST SEGMENT -??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z$rtcName$0 DB 05fH ; std::operator<< > - DB 04fH +main$rtcName$0 DB 042H + DB 06cH + DB 06fH + DB 063H DB 06bH DB 00H - ORG $+12 -??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z$rtcVarDesc DD 048H ; std::operator<< > - DD 010H - DQ FLAT:??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z$rtcName$0 - ORG $+48 -??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z$rtcFrameData DD 01H ; std::operator<< > + ORG $+2 +main$rtcName$1 DB 04eH + DB 06fH + DB 074H + DB 054H + DB 061H + DB 06bH + DB 065H + DB 06eH + DB 00H + ORG $+3 +main$rtcName$2 DB 054H + DB 061H + DB 06bH + DB 065H + DB 06eH + DB 00H + ORG $+6 +main$rtcVarDesc DD 0c8H + DD 030H + DQ FLAT:main$rtcName$2 + DD 078H + DD 030H + DQ FLAT:main$rtcName$1 + DD 028H + DD 030H + DQ FLAT:main$rtcName$0 + ORG $+144 +main$rtcFrameData DD 03H DD 00H - DQ FLAT:??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z$rtcVarDesc + DQ FLAT:main$rtcVarDesc CONST ENDS ; COMDAT xdata xdata SEGMENT -$unwind$main$dtor$1 DD 031001H - DD 0700c4210H - DD 0500bH +$unwind$?MakeExecutableBuffer@@YAPEAXPEAXK@Z DD 025052e01H + DD 01122317H + DD 0700b0021H + DD 0500aH xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$main$dtor$0 DD 031001H - DD 0700c4210H - DD 0500bH +$unwind$??1_NATIVE_CODE_BLOCK@@QEAA@XZ DD 025052a01H + DD 010e2313H + DD 07007001dH + DD 05006H xdata ENDS ; COMDAT xdata xdata SEGMENT -$ip2state$main DB 0aH +$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 - DB 0c0H - DB 02H - DB 094H +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 '8' - DB 04H - DB 094H DB 00H xdata ENDS ; COMDAT xdata xdata SEGMENT -$stateUnwindMap$main DB 04H - DB 0eH - DD imagerel main$dtor$0 - DB 036H - DD imagerel main$dtor$1 +$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 -$cppxdata$main DB 028H - DD imagerel $stateUnwindMap$main - DD imagerel $ip2state$main +$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 -$unwind$main DD 025052f19H - DD 010a230fH - DD 070030089H - DD 05002H +$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$main - DD 043aH + DD imagerel $cppxdata$??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ + DD 013bH xdata ENDS ; COMDAT CONST CONST SEGMENT -main$rtcName$0 DB 041H - DB 073H - DB 06dH - DB 04cH - DB 065H - DB 06eH +??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ$rtcName$0 DB 024H ; std::vector >::~vector > + DB 053H + DB 031H DB 00H - ORG $+9 -main$rtcVarDesc DD 0124H - DD 04H - DQ FLAT:main$rtcName$0 + 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 -main$rtcFrameData DD 01H +??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ$rtcFrameData DD 01H ; std::vector >::~vector > DD 00H - DQ FLAT:main$rtcVarDesc + DQ FLAT:??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ$rtcVarDesc CONST ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?MakeExecutableBuffer@@YAPEAXPEAXK@Z DD 025052e01H - DD 01122317H - DD 0700b0021H - DD 0500aH +$unwind$?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z DD 025053401H + DD 0118231dH + DD 07011001dH + DD 05010H xdata ENDS ; COMDAT xdata xdata SEGMENT @@ -784,13 +916,6 @@ $unwind$time DD 025052a01H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?hex@std@@YAAEAVios_base@1@AEAV21@@Z DD 025052a01H - DD 010e2313H - DD 07007001dH - DD 05006H -xdata ENDS -; COMDAT xdata -xdata SEGMENT $unwind$??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z DD 035053401H DD 0118331dH DD 07011002bH @@ -850,43 +975,48 @@ CONST SEGMENT CONST ENDS ; COMDAT xdata xdata SEGMENT -$ip2state$?eof@?$_Narrow_char_traits@DH@std@@SAHXZ DB 02H +$ip2state$?_Orphan_all@_Container_base12@std@@QEAAXXZ DB 02H DB 00H DB 00H xdata ENDS ; COMDAT xdata xdata SEGMENT -$cppxdata$?eof@?$_Narrow_char_traits@DH@std@@SAHXZ DB 060H - DD imagerel $ip2state$?eof@?$_Narrow_char_traits@DH@std@@SAHXZ +$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$?eof@?$_Narrow_char_traits@DH@std@@SAHXZ DD 025051e19H - DD 010a230fH - DD 07003001dH - DD 05002H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?eof@?$_Narrow_char_traits@DH@std@@SAHXZ +$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 -$ip2state$?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z DB 060H - DD imagerel $ip2state$?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z DD 025052f19H - DD 01132318H - DD 0700c001fH +$unwind$?_Adjust_manually_vector_aligned@std@@YAXAEAPEAXAEA_K@Z DD 035052f01H + DD 01133318H + DD 0700c002fH DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z xdata ENDS ; COMDAT xdata xdata SEGMENT @@ -1026,2189 +1156,1297 @@ __JustMyCode_Default PROC ; COMDAT __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 -; COMDAT ??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ +; 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 -this$ = 224 -??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ PROC ; std::basic_ostream >::sentry::operator bool, COMDAT +__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 -; 125 : explicit __CLR_OR_THIS_CALL operator bool() const { +; 687 : static void deallocate(_Alloc&, const pointer _Ptr, const size_type _Count) { $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 + 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 - 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 + 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] - 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__1D745195_ostream - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory + 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 126 : return _Ok; +; 688 : // no overflow check on the following multiply; we assume _Allocate did that check +; 689 : _Deallocate<_New_alignof>(_Ptr, sizeof(value_type) * _Count); - 00036 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0003d 0f b6 40 08 movzx eax, BYTE PTR [rax+8] + 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> -; 127 : } +; 690 : } - 00041 48 8d a5 c8 00 + 00057 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 -??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ ENDP ; std::basic_ostream >::sentry::operator bool + 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\ostream -; COMDAT ??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ +; 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 -_Zero_uncaught_exceptions$ = 4 -tv72 = 212 -this$ = 256 -??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ PROC ; std::basic_ostream >::sentry::~sentry, COMDAT - -; 110 : __CLR_OR_THIS_CALL ~sentry() noexcept { - -$LN6: - 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00005 55 push rbp - 00006 57 push rdi - 00007 48 81 ec 08 01 - 00 00 sub rsp, 264 ; 00000108H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00013 48 8b fc mov rdi, rsp - 00016 b9 42 00 00 00 mov ecx, 66 ; 00000042H - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 28 - 01 00 00 mov rcx, QWORD PTR [rsp+296] - 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__1D745195_ostream - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +_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 -; 111 : #if !_HAS_EXCEPTIONS -; 112 : const bool _Zero_uncaught_exceptions = true; -; 113 : #elif _HAS_DEPRECATED_UNCAUGHT_EXCEPTION -; 114 : const bool _Zero_uncaught_exceptions = !_STD uncaught_exception(); // TRANSITION, ArchivedOS-12000909 - - 00036 e8 00 00 00 00 call ?uncaught_exception@std@@YA_NXZ ; std::uncaught_exception - 0003b 0f b6 c0 movzx eax, al - 0003e 85 c0 test eax, eax - 00040 75 09 jne SHORT $LN4@sentry - 00042 c6 85 d4 00 00 - 00 01 mov BYTE PTR tv72[rbp], 1 - 00049 eb 07 jmp SHORT $LN5@sentry -$LN4@sentry: - 0004b c6 85 d4 00 00 - 00 00 mov BYTE PTR tv72[rbp], 0 -$LN5@sentry: - 00052 0f b6 85 d4 00 - 00 00 movzx eax, BYTE PTR tv72[rbp] - 00059 88 45 04 mov BYTE PTR _Zero_uncaught_exceptions$[rbp], al - -; 115 : #else // ^^^ _HAS_DEPRECATED_UNCAUGHT_EXCEPTION / !_HAS_DEPRECATED_UNCAUGHT_EXCEPTION vvv -; 116 : const bool _Zero_uncaught_exceptions = _STD uncaught_exceptions() == 0; -; 117 : #endif // !_HAS_DEPRECATED_UNCAUGHT_EXCEPTION -; 118 : -; 119 : if (_Zero_uncaught_exceptions) { +; 998 : void _Deallocate_plain(_Alloc& _Al, typename _Alloc::value_type* const _Ptr) noexcept { - 0005c 0f b6 45 04 movzx eax, BYTE PTR _Zero_uncaught_exceptions$[rbp] - 00060 85 c0 test eax, eax - 00062 74 10 je SHORT $LN2@sentry +$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 -; 120 : this->_Myostr._Osfx(); +; 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); - 00064 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 0006b 48 8b 08 mov rcx, QWORD PTR [rax] - 0006e ff 15 00 00 00 - 00 call QWORD PTR __imp_?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ -$LN2@sentry: + 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 -; 121 : } -; 122 : } +; 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 : } - 00074 48 8b 8d 00 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0007b e8 00 00 00 00 call ??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ ; std::basic_ostream >::_Sentry_base::~_Sentry_base - 00080 90 npad 1 - 00081 48 8d a5 e8 00 - 00 00 lea rsp, QWORD PTR [rbp+232] - 00088 5f pop rdi - 00089 5d pop rbp - 0008a c3 ret 0 -??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ ENDP ; std::basic_ostream >::sentry::~sentry + 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\ostream -; COMDAT ??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z +; 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 -_Tied$ = 8 -this$ = 256 -_Ostr$ = 264 -??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z PROC ; std::basic_ostream >::sentry::sentry, COMDAT +_Ptr$ = 224 +_Bytes$ = 232 +??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K@Z PROC ; std::_Deallocate<16,0>, COMDAT -; 92 : explicit __CLR_OR_THIS_CALL sentry(basic_ostream& _Ostr) : _Sentry_base(_Ostr) { +; 213 : void _Deallocate(void* _Ptr, size_t _Bytes) noexcept { -$LN7: +$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 08 01 - 00 00 sub rsp, 264 ; 00000108H + 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 42 00 00 00 mov ecx, 66 ; 00000042H + 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 28 - 01 00 00 mov rcx, QWORD PTR [rsp+296] + 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:__1D745195_ostream + 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 0003b 48 8b 95 08 01 - 00 00 mov rdx, QWORD PTR _Ostr$[rbp] - 00042 48 8b 8d 00 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00049 e8 00 00 00 00 call ??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z ; std::basic_ostream >::_Sentry_base::_Sentry_base - 0004e 90 npad 1 - -; 93 : if (!_Ostr.good()) { - - 0004f 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 00056 48 8b 00 mov rax, QWORD PTR [rax] - 00059 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 0005d 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 00064 48 03 c8 add rcx, rax - 00067 48 8b c1 mov rax, rcx - 0006a 48 8b c8 mov rcx, rax - 0006d ff 15 00 00 00 - 00 call QWORD PTR __imp_?good@ios_base@std@@QEBA_NXZ - 00073 0f b6 c0 movzx eax, al - 00076 85 c0 test eax, eax - 00078 75 10 jne SHORT $LN2@sentry - -; 94 : _Ok = false; - - 0007a 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00081 c6 40 08 00 mov BYTE PTR [rax+8], 0 - -; 95 : return; - - 00085 e9 81 00 00 00 jmp $LN1@sentry -$LN2@sentry: - -; 96 : } -; 97 : -; 98 : const auto _Tied = _Ostr.tie(); - - 0008a 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 00091 48 8b 00 mov rax, QWORD PTR [rax] - 00094 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 00098 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 0009f 48 03 c8 add rcx, rax - 000a2 48 8b c1 mov rax, rcx - 000a5 48 8b c8 mov rcx, rax - 000a8 ff 15 00 00 00 - 00 call QWORD PTR __imp_?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ - 000ae 48 89 45 08 mov QWORD PTR _Tied$[rbp], rax - -; 99 : if (!_Tied || _Tied == &_Ostr) { - 000b2 48 83 7d 08 00 cmp QWORD PTR _Tied$[rbp], 0 - 000b7 74 0d je SHORT $LN4@sentry - 000b9 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 000c0 48 39 45 08 cmp QWORD PTR _Tied$[rbp], rax - 000c4 75 0d jne SHORT $LN3@sentry -$LN4@sentry: +; 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 -; 100 : _Ok = true; + 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 - 000c6 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 000cd c6 40 08 01 mov BYTE PTR [rax+8], 1 - -; 101 : return; - - 000d1 eb 38 jmp SHORT $LN1@sentry -$LN3@sentry: - -; 102 : } -; 103 : -; 104 : -; 105 : _Tied->flush(); +; 217 : _Adjust_manually_vector_aligned(_Ptr, _Bytes); - 000d3 48 8b 4d 08 mov rcx, QWORD PTR _Tied$[rbp] - 000d7 ff 15 00 00 00 - 00 call QWORD PTR __imp_?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ + 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: -; 106 : _Ok = _Ostr.good(); // store test only after flushing tie +; 218 : } +; 219 : #endif // defined(_M_IX86) || defined(_M_X64) +; 220 : +; 221 : ::operator delete(_Ptr, _Bytes); - 000dd 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 000e4 48 8b 00 mov rax, QWORD PTR [rax] - 000e7 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 000eb 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 000f2 48 03 c8 add rcx, rax - 000f5 48 8b c1 mov rax, rcx - 000f8 48 8b c8 mov rcx, rax - 000fb ff 15 00 00 00 - 00 call QWORD PTR __imp_?good@ios_base@std@@QEBA_NXZ - 00101 48 8b 8d 00 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00108 88 41 08 mov BYTE PTR [rcx+8], al -$LN1@sentry: + 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 -; 107 : } +; 222 : } - 0010b 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00112 48 8d a5 e8 00 - 00 00 lea rsp, QWORD PTR [rbp+232] - 00119 5f pop rdi - 0011a 5d pop rbp - 0011b c3 ret 0 -??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z ENDP ; std::basic_ostream >::sentry::sentry + 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 -; COMDAT text$x -text$x SEGMENT -_Tied$ = 8 -this$ = 256 -_Ostr$ = 264 -?dtor$0@?0???0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z@4HA PROC ; `std::basic_ostream >::sentry::sentry'::`1'::dtor$0 - 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 55 push rbp - 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 8b 8d 00 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0001b e8 00 00 00 00 call ??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ ; std::basic_ostream >::_Sentry_base::~_Sentry_base - 00020 48 83 c4 28 add rsp, 40 ; 00000028H - 00024 5f pop rdi - 00025 5d pop rbp - 00026 c3 ret 0 -?dtor$0@?0???0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z@4HA ENDP ; `std::basic_ostream >::sentry::sentry'::`1'::dtor$0 -text$x ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT text$x -text$x SEGMENT -_Tied$ = 8 -this$ = 256 -_Ostr$ = 264 -?dtor$0@?0???0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z@4HA PROC ; `std::basic_ostream >::sentry::sentry'::`1'::dtor$0 - 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 55 push rbp - 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 8b 8d 00 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0001b e8 00 00 00 00 call ??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ ; std::basic_ostream >::_Sentry_base::~_Sentry_base - 00020 48 83 c4 28 add rsp, 40 ; 00000028H - 00024 5f pop rdi - 00025 5d pop rbp - 00026 c3 ret 0 -?dtor$0@?0???0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z@4HA ENDP ; `std::basic_ostream >::sentry::sentry'::`1'::dtor$0 -text$x 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 -; COMDAT ??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ +; 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 _TEXT SEGMENT -_Rdbuf$ = 8 -tv72 = 216 -this$ = 256 -??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ PROC ; std::basic_ostream >::_Sentry_base::~_Sentry_base, COMDAT +_First$ = 224 +_Last$ = 232 +_Al$ = 240 +??$_Destroy_range@V?$allocator@K@std@@@std@@YAXPEAKQEAKAEAV?$allocator@K@0@@Z PROC ; std::_Destroy_range >, COMDAT -; 78 : __CLR_OR_THIS_CALL ~_Sentry_base() noexcept { // destroy after unlocking +; 955 : void _Destroy_range(_Alloc_ptr_t<_Alloc> _First, const _Alloc_ptr_t<_Alloc> _Last, _Alloc& _Al) noexcept { -$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 08 01 - 00 00 sub rsp, 264 ; 00000108H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00013 48 8b fc mov rdi, rsp - 00016 b9 42 00 00 00 mov ecx, 66 ; 00000042H - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 28 - 01 00 00 mov rcx, QWORD PTR [rsp+296] - 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__1D745195_ostream - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +$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 -; 79 : const auto _Rdbuf = _Myostr.rdbuf(); +; 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 : } - 00036 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 0003d 48 8b 00 mov rax, QWORD PTR [rax] - 00040 48 89 85 d8 00 - 00 00 mov QWORD PTR tv72[rbp], rax - 00047 48 8b 85 d8 00 - 00 00 mov rax, QWORD PTR tv72[rbp] - 0004e 48 8b 00 mov rax, QWORD PTR [rax] - 00051 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 00055 48 8b 8d d8 00 - 00 00 mov rcx, QWORD PTR tv72[rbp] - 0005c 48 03 c8 add rcx, rax - 0005f 48 8b c1 mov rax, rcx - 00062 48 8b c8 mov rcx, rax - 00065 ff 15 00 00 00 - 00 call QWORD PTR __imp_?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ - 0006b 48 89 45 08 mov QWORD PTR _Rdbuf$[rbp], rax - -; 80 : if (_Rdbuf) { - - 0006f 48 83 7d 08 00 cmp QWORD PTR _Rdbuf$[rbp], 0 - 00074 74 0f je SHORT $LN2@Sentry_bas - -; 81 : _Rdbuf->_Unlock(); - - 00076 48 8b 45 08 mov rax, QWORD PTR _Rdbuf$[rbp] - 0007a 48 8b 00 mov rax, QWORD PTR [rax] - 0007d 48 8b 4d 08 mov rcx, QWORD PTR _Rdbuf$[rbp] - 00081 ff 50 10 call QWORD PTR [rax+16] - 00084 90 npad 1 -$LN2@Sentry_bas: - -; 82 : } -; 83 : } - - 00085 48 8d a5 e8 00 - 00 00 lea rsp, QWORD PTR [rbp+232] - 0008c 5f pop rdi - 0008d 5d pop rbp - 0008e c3 ret 0 -??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ ENDP ; std::basic_ostream >::_Sentry_base::~_Sentry_base + 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 > _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 -; COMDAT ??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z +; 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 -_Rdbuf$ = 8 -tv73 = 216 -this$ = 256 -_Ostr$ = 264 -??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z PROC ; std::basic_ostream >::_Sentry_base::_Sentry_base, COMDAT +_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 -; 71 : __CLR_OR_THIS_CALL _Sentry_base(basic_ostream& _Ostr) : _Myostr(_Ostr) { // lock the stream buffer, if there +; 1026 : void _Delete_plain_internal(_Alloc& _Al, typename _Alloc::value_type* const _Ptr) noexcept { -$LN4: +$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 + 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 42 00 00 00 mov ecx, 66 ; 00000042H + 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 28 - 01 00 00 mov rcx, QWORD PTR [rsp+296] + 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:__1D745195_ostream + 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 0003b 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00042 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 00049 48 89 08 mov QWORD PTR [rax], rcx -; 72 : const auto _Rdbuf = _Myostr.rdbuf(); +; 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); - 0004c 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00053 48 8b 00 mov rax, QWORD PTR [rax] - 00056 48 89 85 d8 00 - 00 00 mov QWORD PTR tv73[rbp], rax - 0005d 48 8b 85 d8 00 - 00 00 mov rax, QWORD PTR tv73[rbp] - 00064 48 8b 00 mov rax, QWORD PTR [rax] - 00067 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 0006b 48 8b 8d d8 00 - 00 00 mov rcx, QWORD PTR tv73[rbp] - 00072 48 03 c8 add rcx, rax - 00075 48 8b c1 mov rax, rcx - 00078 48 8b c8 mov rcx, rax - 0007b ff 15 00 00 00 - 00 call QWORD PTR __imp_?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ - 00081 48 89 45 08 mov QWORD PTR _Rdbuf$[rbp], rax - -; 73 : if (_Rdbuf) { - - 00085 48 83 7d 08 00 cmp QWORD PTR _Rdbuf$[rbp], 0 - 0008a 74 0e je SHORT $LN2@Sentry_bas - -; 74 : _Rdbuf->_Lock(); - - 0008c 48 8b 45 08 mov rax, QWORD PTR _Rdbuf$[rbp] - 00090 48 8b 00 mov rax, QWORD PTR [rax] - 00093 48 8b 4d 08 mov rcx, QWORD PTR _Rdbuf$[rbp] - 00097 ff 50 08 call QWORD PTR [rax+8] -$LN2@Sentry_bas: - -; 75 : } -; 76 : } - - 0009a 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 000a1 48 8d a5 e8 00 - 00 00 lea rsp, QWORD PTR [rbp+232] - 000a8 5f pop rdi - 000a9 5d pop rbp - 000aa c3 ret 0 -??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z ENDP ; std::basic_ostream >::_Sentry_base::_Sentry_base + 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\iomanip -; COMDAT ??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z +; 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 -tv79 = 192 -_Ostr$ = 240 -_Manip$ = 248 -??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z PROC ; std::operator<<,char>, COMDAT +_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 -; 49 : const _Fillobj<_Elem2>& _Manip) { // set fill character in output stream +; 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 f8 00 - 00 00 sub rsp, 248 ; 000000f8H + 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 3e 00 00 00 mov ecx, 62 ; 0000003eH + 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 18 - 01 00 00 mov rcx, QWORD PTR [rsp+280] + 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:__8266A2FD_iomanip + 00 00 lea rcx, OFFSET FLAT:__CF1C1A3F_utility 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 50 : static_assert(is_same_v<_Elem, _Elem2>, "wrong character type for setfill"); -; 51 : -; 52 : _Ostr.fill(_Manip._Fill); +; 598 : // assign _New_val to _Val, return previous _Val +; 599 : _Ty _Old_val = static_cast<_Ty&&>(_Val); - 0003b 48 8b 85 f0 00 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] + 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 63 40 04 movsxd rax, DWORD PTR [rax+4] - 00049 48 8b 8d f0 00 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 00050 48 03 c8 add rcx, rax - 00053 48 8b c1 mov rax, rcx - 00056 48 89 85 c0 00 - 00 00 mov QWORD PTR tv79[rbp], rax - 0005d 48 8b 85 f8 00 - 00 00 mov rax, QWORD PTR _Manip$[rbp] - 00064 0f b6 10 movzx edx, BYTE PTR [rax] - 00067 48 8b 8d c0 00 - 00 00 mov rcx, QWORD PTR tv79[rbp] - 0006e ff 15 00 00 00 - 00 call QWORD PTR __imp_?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z + 00045 48 89 45 08 mov QWORD PTR _Old_val$[rbp], rax + +; 600 : _Val = static_cast<_Other&&>(_New_val); -; 53 : return _Ostr; + 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 - 00074 48 8b 85 f0 00 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] +; 601 : return _Old_val; -; 54 : } + 0005d 48 8b 45 08 mov rax, QWORD PTR _Old_val$[rbp] - 0007b 48 8d a5 d8 00 - 00 00 lea rsp, QWORD PTR [rbp+216] - 00082 5f pop rdi - 00083 5d pop rbp - 00084 c3 ret 0 -??$?6DU?$char_traits@D@std@@D@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Fillobj@D@0@@Z ENDP ; std::operator<<,char> +; 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\iomanip -; COMDAT ??0?$_Fillobj@D@std@@QEAA@D@Z +; 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 -_Ch$ = 232 -??0?$_Fillobj@D@std@@QEAA@D@Z PROC ; std::_Fillobj::_Fillobj, COMDAT +__formal$ = 232 +??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z PROC ; std::allocator::allocator, COMDAT -; 27 : _Fillobj(_Elem _Ch) : _Fill(_Ch) {} +; 799 : constexpr allocator(const allocator<_Other>&) noexcept {} $LN3: - 00000 88 54 24 10 mov BYTE PTR [rsp+16], dl - 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00009 55 push rbp - 0000a 57 push rdi - 0000b 48 81 ec e8 00 + 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 - 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00017 48 8b fc mov rdi, rsp - 0001a b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 48 8b 8c 24 08 + 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] - 0002e 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__8266A2FD_iomanip - 00035 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 0003a 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00041 0f b6 8d e8 00 - 00 00 movzx ecx, BYTE PTR _Ch$[rbp] - 00048 88 08 mov BYTE PTR [rax], cl - 0004a 48 8b 85 e0 00 + 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] - 00051 48 8d a5 c8 00 + 00042 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] - 00058 5f pop rdi - 00059 5d pop rbp - 0005a c3 ret 0 -??0?$_Fillobj@D@std@@QEAA@D@Z ENDP ; std::_Fillobj::_Fillobj + 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 ??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z +; File C:\$Fanta\code-virtualizer\CodeVirtualizer\Main.cpp +; COMDAT main _TEXT SEGMENT -__$ReturnUdt$ = 224 -_Ch$ = 232 -??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z PROC ; std::setfill, COMDAT +Block$ = 8 +NotTaken$ = 88 +Taken$ = 168 +tv135 = 420 +tv133 = 424 +__$ArrayPad$ = 432 +main PROC ; COMDAT -; 34 : _NODISCARD _Fillobj<_Elem> setfill(_Elem _Ch) { +; 44 : { -$LN3: - 00000 88 54 24 10 mov BYTE PTR [rsp+16], dl - 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00009 55 push rbp - 0000a 57 push rdi - 0000b 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00017 48 8b fc mov rdi, rsp - 0001a b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002e 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__8266A2FD_iomanip - 00035 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 35 : return _Fillobj<_Elem>(_Ch); - - 0003a 0f b6 95 e8 00 - 00 00 movzx edx, BYTE PTR _Ch$[rbp] - 00041 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR __$ReturnUdt$[rbp] - 00048 e8 00 00 00 00 call ??0?$_Fillobj@D@std@@QEAA@D@Z ; std::_Fillobj::_Fillobj - 0004d 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR __$ReturnUdt$[rbp] - -; 36 : } +$LN6: + 00000 40 55 push rbp + 00002 57 push rdi + 00003 48 81 ec e8 01 + 00 00 sub rsp, 488 ; 000001e8H + 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0000f 48 8b fc mov rdi, rsp + 00012 b9 7a 00 00 00 mov ecx, 122 ; 0000007aH + 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 b0 01 + 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 - 00054 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 0005b 5f pop rdi - 0005c 5d pop rbp - 0005d c3 ret 0 -??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z ENDP ; std::setfill -_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@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Smanip@_J@0@@Z -_TEXT SEGMENT -tv79 = 192 -_Ostr$ = 240 -_Manip$ = 248 -??$?6DU?$char_traits@D@std@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Smanip@_J@0@@Z PROC ; std::operator<<,__int64>, COMDAT +; 45 : XedTablesInit(); -; 423 : const _Smanip<_Arg>& _Manip) { // insert by calling function with output stream and argument + 0003b e8 00 00 00 00 call xed_tables_init -$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 f8 00 - 00 00 sub rsp, 248 ; 000000f8H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 3e 00 00 00 mov ecx, 62 ; 0000003eH - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 18 - 01 00 00 mov rcx, QWORD PTR [rsp+280] - 0002f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__8266A2FD_iomanip - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +; 46 : srand(time(NULL)); -; 424 : (*_Manip._Pfun)(_Ostr, _Manip._Manarg); + 00040 33 c9 xor ecx, ecx + 00042 e8 00 00 00 00 call time + 00047 8b c8 mov ecx, eax + 00049 ff 15 00 00 00 + 00 call QWORD PTR __imp_srand - 0003b 48 8b 85 f8 00 - 00 00 mov rax, QWORD PTR _Manip$[rbp] - 00042 48 8b 00 mov rax, QWORD PTR [rax] - 00045 48 89 85 c0 00 - 00 00 mov QWORD PTR tv79[rbp], rax - 0004c 48 8b 85 f0 00 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 00053 48 8b 00 mov rax, QWORD PTR [rax] - 00056 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 0005a 48 8b 8d f0 00 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 00061 48 03 c8 add rcx, rax - 00064 48 8b c1 mov rax, rcx - 00067 48 8b 8d f8 00 - 00 00 mov rcx, QWORD PTR _Manip$[rbp] - 0006e 48 8b 51 08 mov rdx, QWORD PTR [rcx+8] - 00072 48 8b c8 mov rcx, rax - 00075 ff 95 c0 00 00 - 00 call QWORD PTR tv79[rbp] - -; 425 : return _Ostr; - - 0007b 48 8b 85 f0 00 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - -; 426 : } - - 00082 48 8d a5 d8 00 - 00 00 lea rsp, QWORD PTR [rbp+216] - 00089 5f pop rdi - 0008a 5d pop rbp - 0008b c3 ret 0 -??$?6DU?$char_traits@D@std@@_J@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBU?$_Smanip@_J@0@@Z ENDP ; std::operator<<,__int64> -_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 -; COMDAT ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z -_TEXT SEGMENT -_State$ = 4 -_Ok$ = 40 -_Pad$4 = 88 -$T5 = 308 -$T6 = 340 -$T7 = 372 -$T8 = 404 -$T9 = 436 -$T10 = 468 -$T11 = 504 -tv65 = 516 -tv305 = 520 -tv303 = 520 -tv300 = 520 -tv295 = 520 -tv281 = 520 -tv266 = 520 -tv130 = 520 -tv245 = 528 -tv204 = 528 -tv179 = 528 -tv306 = 536 -tv304 = 536 -tv301 = 536 -tv243 = 537 -tv177 = 537 -tv307 = 540 -tv302 = 540 -__$ArrayPad$ = 544 -_Ostr$ = 592 -_Ch$ = 600 -??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z PROC ; std::operator<< >, COMDAT - -; 780 : basic_ostream& _Ostr, char _Ch) { // insert a char into char stream - -$LN23: - 00000 88 54 24 10 mov BYTE PTR [rsp+16], dl - 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00009 55 push rbp - 0000a 57 push rdi - 0000b 48 81 ec 58 02 - 00 00 sub rsp, 600 ; 00000258H - 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00017 48 8b fc mov rdi, rsp - 0001a b9 96 00 00 00 mov ecx, 150 ; 00000096H - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 48 8b 8c 24 78 - 02 00 00 mov rcx, QWORD PTR [rsp+632] - 0002e 48 8b 05 00 00 - 00 00 mov rax, QWORD PTR __security_cookie - 00035 48 33 c5 xor rax, rbp - 00038 48 89 85 20 02 - 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 0003f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__1D745195_ostream - 00046 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 781 : using _Elem = char; -; 782 : using _Myos = basic_ostream<_Elem, _Traits>; -; 783 : -; 784 : ios_base::iostate _State = ios_base::goodbit; - - 0004b c7 45 04 00 00 - 00 00 mov DWORD PTR _State$[rbp], 0 - -; 785 : const typename _Myos::sentry _Ok(_Ostr); - - 00052 48 8b 95 50 02 - 00 00 mov rdx, QWORD PTR _Ostr$[rbp] - 00059 48 8d 4d 28 lea rcx, QWORD PTR _Ok$[rbp] - 0005d e8 00 00 00 00 call ??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z ; std::basic_ostream >::sentry::sentry - 00062 90 npad 1 - -; 786 : -; 787 : if (_Ok) { // state okay, insert - - 00063 48 8d 4d 28 lea rcx, QWORD PTR _Ok$[rbp] - 00067 e8 00 00 00 00 call ??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEBA_NXZ ; std::basic_ostream >::sentry::operator bool - 0006c 0f b6 c0 movzx eax, al - 0006f 85 c0 test eax, eax - 00071 0f 84 1d 03 00 - 00 je $LN8@operator - -; 788 : streamsize _Pad = _Ostr.width() <= 1 ? 0 : _Ostr.width() - 1; - - 00077 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 0007e 48 8b 00 mov rax, QWORD PTR [rax] - 00081 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 00085 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 0008c 48 03 c8 add rcx, rax - 0008f 48 8b c1 mov rax, rcx - 00092 48 8b c8 mov rcx, rax - 00095 ff 15 00 00 00 - 00 call QWORD PTR __imp_?width@ios_base@std@@QEBA_JXZ - 0009b 48 83 f8 01 cmp rax, 1 - 0009f 7f 0d jg SHORT $LN15@operator - 000a1 48 c7 85 08 02 - 00 00 00 00 00 - 00 mov QWORD PTR tv130[rbp], 0 - 000ac eb 2e jmp SHORT $LN16@operator -$LN15@operator: - 000ae 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 000b5 48 8b 00 mov rax, QWORD PTR [rax] - 000b8 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 000bc 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 000c3 48 03 c8 add rcx, rax - 000c6 48 8b c1 mov rax, rcx - 000c9 48 8b c8 mov rcx, rax - 000cc ff 15 00 00 00 - 00 call QWORD PTR __imp_?width@ios_base@std@@QEBA_JXZ - 000d2 48 ff c8 dec rax - 000d5 48 89 85 08 02 - 00 00 mov QWORD PTR tv130[rbp], rax -$LN16@operator: - 000dc 48 8b 85 08 02 - 00 00 mov rax, QWORD PTR tv130[rbp] - 000e3 48 89 45 58 mov QWORD PTR _Pad$4[rbp], rax - -; 789 : -; 790 : _TRY_IO_BEGIN -; 791 : if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left) { - - 000e7 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 000ee 48 8b 00 mov rax, QWORD PTR [rax] - 000f1 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 000f5 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 000fc 48 03 c8 add rcx, rax - 000ff 48 8b c1 mov rax, rcx - 00102 48 8b c8 mov rcx, rax - 00105 ff 15 00 00 00 - 00 call QWORD PTR __imp_?flags@ios_base@std@@QEBAHXZ - 0010b 89 85 04 02 00 - 00 mov DWORD PTR tv65[rbp], eax - 00111 8b 85 04 02 00 - 00 mov eax, DWORD PTR tv65[rbp] - 00117 25 c0 01 00 00 and eax, 448 ; 000001c0H - 0011c 83 f8 40 cmp eax, 64 ; 00000040H - 0011f 0f 84 eb 00 00 - 00 je $LN10@operator - -; 792 : for (; _State == ios_base::goodbit && 0 < _Pad; --_Pad) { // pad on left - - 00125 eb 0b jmp SHORT $LN4@operator -$LN2@operator: - 00127 48 8b 45 58 mov rax, QWORD PTR _Pad$4[rbp] - 0012b 48 ff c8 dec rax - 0012e 48 89 45 58 mov QWORD PTR _Pad$4[rbp], rax -$LN4@operator: - 00132 83 7d 04 00 cmp DWORD PTR _State$[rbp], 0 - 00136 0f 85 d4 00 00 - 00 jne $LN10@operator - 0013c 48 83 7d 58 00 cmp QWORD PTR _Pad$4[rbp], 0 - 00141 0f 8e c9 00 00 - 00 jle $LN10@operator - -; 793 : if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) { - - 00147 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 0014e 48 8b 00 mov rax, QWORD PTR [rax] - 00151 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 00155 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 0015c 48 03 c8 add rcx, rax - 0015f 48 8b c1 mov rax, rcx - 00162 48 8b c8 mov rcx, rax - 00165 ff 15 00 00 00 - 00 call QWORD PTR __imp_?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ - 0016b 48 89 85 08 02 - 00 00 mov QWORD PTR tv300[rbp], rax - 00172 48 8b 85 08 02 - 00 00 mov rax, QWORD PTR tv300[rbp] - 00179 48 89 85 10 02 - 00 00 mov QWORD PTR tv179[rbp], rax - 00180 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 00187 48 8b 00 mov rax, QWORD PTR [rax] - 0018a 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 0018e 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 00195 48 03 c8 add rcx, rax - 00198 48 8b c1 mov rax, rcx - 0019b 48 8b c8 mov rcx, rax - 0019e ff 15 00 00 00 - 00 call QWORD PTR __imp_?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ - 001a4 88 85 18 02 00 - 00 mov BYTE PTR tv301[rbp], al - 001aa 0f b6 85 18 02 - 00 00 movzx eax, BYTE PTR tv301[rbp] - 001b1 88 85 19 02 00 - 00 mov BYTE PTR tv177[rbp], al - 001b7 0f b6 95 19 02 - 00 00 movzx edx, BYTE PTR tv177[rbp] - 001be 48 8b 8d 10 02 - 00 00 mov rcx, QWORD PTR tv179[rbp] - 001c5 ff 15 00 00 00 - 00 call QWORD PTR __imp_?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z - 001cb 89 85 1c 02 00 - 00 mov DWORD PTR tv302[rbp], eax - 001d1 8b 85 1c 02 00 - 00 mov eax, DWORD PTR tv302[rbp] - 001d7 89 85 34 01 00 - 00 mov DWORD PTR $T5[rbp], eax - 001dd e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof - 001e2 89 85 54 01 00 - 00 mov DWORD PTR $T6[rbp], eax - 001e8 48 8d 95 34 01 - 00 00 lea rdx, QWORD PTR $T5[rbp] - 001ef 48 8d 8d 54 01 - 00 00 lea rcx, QWORD PTR $T6[rbp] - 001f6 e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z ; std::_Narrow_char_traits::eq_int_type - 001fb 0f b6 c0 movzx eax, al - 001fe 85 c0 test eax, eax - 00200 74 09 je SHORT $LN11@operator - -; 794 : _State |= ios_base::badbit; - - 00202 8b 45 04 mov eax, DWORD PTR _State$[rbp] - 00205 83 c8 04 or eax, 4 - 00208 89 45 04 mov DWORD PTR _State$[rbp], eax -$LN11@operator: - -; 795 : } -; 796 : } - - 0020b e9 17 ff ff ff jmp $LN2@operator -$LN10@operator: - -; 797 : } -; 798 : -; 799 : if (_State == ios_base::goodbit && _Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ch))) { - - 00210 83 7d 04 00 cmp DWORD PTR _State$[rbp], 0 - 00214 0f 85 8d 00 00 - 00 jne $LN12@operator - 0021a 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 00221 48 8b 00 mov rax, QWORD PTR [rax] - 00224 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 00228 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 0022f 48 03 c8 add rcx, rax - 00232 48 8b c1 mov rax, rcx - 00235 48 8b c8 mov rcx, rax - 00238 ff 15 00 00 00 - 00 call QWORD PTR __imp_?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ - 0023e 48 89 85 08 02 - 00 00 mov QWORD PTR tv303[rbp], rax - 00245 48 8b 85 08 02 - 00 00 mov rax, QWORD PTR tv303[rbp] - 0024c 48 89 85 10 02 - 00 00 mov QWORD PTR tv204[rbp], rax - 00253 0f b6 95 58 02 - 00 00 movzx edx, BYTE PTR _Ch$[rbp] - 0025a 48 8b 8d 10 02 - 00 00 mov rcx, QWORD PTR tv204[rbp] - 00261 ff 15 00 00 00 - 00 call QWORD PTR __imp_?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z - 00267 89 85 18 02 00 - 00 mov DWORD PTR tv304[rbp], eax - 0026d 8b 85 18 02 00 - 00 mov eax, DWORD PTR tv304[rbp] - 00273 89 85 74 01 00 - 00 mov DWORD PTR $T7[rbp], eax - 00279 e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof - 0027e 89 85 94 01 00 - 00 mov DWORD PTR $T8[rbp], eax - 00284 48 8d 95 74 01 - 00 00 lea rdx, QWORD PTR $T7[rbp] - 0028b 48 8d 8d 94 01 - 00 00 lea rcx, QWORD PTR $T8[rbp] - 00292 e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z ; std::_Narrow_char_traits::eq_int_type - 00297 0f b6 c0 movzx eax, al - 0029a 85 c0 test eax, eax - 0029c 74 09 je SHORT $LN12@operator - -; 800 : _State |= ios_base::badbit; - - 0029e 8b 45 04 mov eax, DWORD PTR _State$[rbp] - 002a1 83 c8 04 or eax, 4 - 002a4 89 45 04 mov DWORD PTR _State$[rbp], eax -$LN12@operator: - -; 801 : } -; 802 : -; 803 : for (; _State == ios_base::goodbit && 0 < _Pad; --_Pad) { // pad on right - - 002a7 eb 0b jmp SHORT $LN7@operator -$LN5@operator: - 002a9 48 8b 45 58 mov rax, QWORD PTR _Pad$4[rbp] - 002ad 48 ff c8 dec rax - 002b0 48 89 45 58 mov QWORD PTR _Pad$4[rbp], rax -$LN7@operator: - 002b4 83 7d 04 00 cmp DWORD PTR _State$[rbp], 0 - 002b8 0f 85 d4 00 00 - 00 jne $LN6@operator - 002be 48 83 7d 58 00 cmp QWORD PTR _Pad$4[rbp], 0 - 002c3 0f 8e c9 00 00 - 00 jle $LN6@operator - -; 804 : if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) { - - 002c9 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 002d0 48 8b 00 mov rax, QWORD PTR [rax] - 002d3 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 002d7 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 002de 48 03 c8 add rcx, rax - 002e1 48 8b c1 mov rax, rcx - 002e4 48 8b c8 mov rcx, rax - 002e7 ff 15 00 00 00 - 00 call QWORD PTR __imp_?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ - 002ed 48 89 85 08 02 - 00 00 mov QWORD PTR tv305[rbp], rax - 002f4 48 8b 85 08 02 - 00 00 mov rax, QWORD PTR tv305[rbp] - 002fb 48 89 85 10 02 - 00 00 mov QWORD PTR tv245[rbp], rax - 00302 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 00309 48 8b 00 mov rax, QWORD PTR [rax] - 0030c 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 00310 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 00317 48 03 c8 add rcx, rax - 0031a 48 8b c1 mov rax, rcx - 0031d 48 8b c8 mov rcx, rax - 00320 ff 15 00 00 00 - 00 call QWORD PTR __imp_?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ - 00326 88 85 18 02 00 - 00 mov BYTE PTR tv306[rbp], al - 0032c 0f b6 85 18 02 - 00 00 movzx eax, BYTE PTR tv306[rbp] - 00333 88 85 19 02 00 - 00 mov BYTE PTR tv243[rbp], al - 00339 0f b6 95 19 02 - 00 00 movzx edx, BYTE PTR tv243[rbp] - 00340 48 8b 8d 10 02 - 00 00 mov rcx, QWORD PTR tv245[rbp] - 00347 ff 15 00 00 00 - 00 call QWORD PTR __imp_?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z - 0034d 89 85 1c 02 00 - 00 mov DWORD PTR tv307[rbp], eax - 00353 8b 85 1c 02 00 - 00 mov eax, DWORD PTR tv307[rbp] - 00359 89 85 b4 01 00 - 00 mov DWORD PTR $T9[rbp], eax - 0035f e8 00 00 00 00 call ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ; std::_Narrow_char_traits::eof - 00364 89 85 d4 01 00 - 00 mov DWORD PTR $T10[rbp], eax - 0036a 48 8d 95 b4 01 - 00 00 lea rdx, QWORD PTR $T9[rbp] - 00371 48 8d 8d d4 01 - 00 00 lea rcx, QWORD PTR $T10[rbp] - 00378 e8 00 00 00 00 call ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z ; std::_Narrow_char_traits::eq_int_type - 0037d 0f b6 c0 movzx eax, al - 00380 85 c0 test eax, eax - 00382 74 09 je SHORT $LN13@operator - -; 805 : _State |= ios_base::badbit; - - 00384 8b 45 04 mov eax, DWORD PTR _State$[rbp] - 00387 83 c8 04 or eax, 4 - 0038a 89 45 04 mov DWORD PTR _State$[rbp], eax -$LN13@operator: - -; 806 : } -; 807 : } - - 0038d e9 17 ff ff ff jmp $LN5@operator -$LN6@operator: - 00392 eb 00 jmp SHORT $LN8@operator -$LN21@operator: -$LN8@operator: - -; 808 : _CATCH_IO_(ios_base, _Ostr) -; 809 : } -; 810 : -; 811 : _Ostr.width(0); - - 00394 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 0039b 48 8b 00 mov rax, QWORD PTR [rax] - 0039e 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 003a2 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 003a9 48 03 c8 add rcx, rax - 003ac 48 8b c1 mov rax, rcx - 003af 48 89 85 08 02 - 00 00 mov QWORD PTR tv281[rbp], rax - 003b6 33 d2 xor edx, edx - 003b8 48 8b 8d 08 02 - 00 00 mov rcx, QWORD PTR tv281[rbp] - 003bf ff 15 00 00 00 - 00 call QWORD PTR __imp_?width@ios_base@std@@QEAA_J_J@Z - -; 812 : _Ostr.setstate(_State); - - 003c5 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 003cc 48 8b 00 mov rax, QWORD PTR [rax] - 003cf 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 003d3 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 003da 48 03 c8 add rcx, rax - 003dd 48 8b c1 mov rax, rcx - 003e0 48 89 85 08 02 - 00 00 mov QWORD PTR tv295[rbp], rax - 003e7 45 33 c0 xor r8d, r8d - 003ea 8b 55 04 mov edx, DWORD PTR _State$[rbp] - 003ed 48 8b 8d 08 02 - 00 00 mov rcx, QWORD PTR tv295[rbp] - 003f4 ff 15 00 00 00 - 00 call QWORD PTR __imp_?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z - -; 813 : return _Ostr; - - 003fa 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 00401 48 89 85 f8 01 - 00 00 mov QWORD PTR $T11[rbp], rax - 00408 48 8d 4d 28 lea rcx, QWORD PTR _Ok$[rbp] - 0040c e8 00 00 00 00 call ??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ ; std::basic_ostream >::sentry::~sentry - 00411 48 8b 85 f8 01 - 00 00 mov rax, QWORD PTR $T11[rbp] - -; 814 : } - - 00418 48 8b f8 mov rdi, rax - 0041b 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 0041f 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z$rtcFrameData - 00426 e8 00 00 00 00 call _RTC_CheckStackVars - 0042b 48 8b c7 mov rax, rdi - 0042e 48 8b 8d 20 02 +; 47 : +; 48 : +; 49 : NATIVE_CODE_BLOCK Block; + + 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 + +; 50 : NcDisassemble(&Block, TestBuffer, TestBufferSize); + + 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 + +; 51 : NATIVE_CODE_BLOCK NotTaken; + + 00070 48 8d 4d 58 lea rcx, QWORD PTR NotTaken$[rbp] + 00074 e8 00 00 00 00 call ??0_NATIVE_CODE_BLOCK@@QEAA@XZ ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK + 00079 90 npad 1 + +; 52 : NATIVE_CODE_BLOCK Taken; + + 0007a 48 8d 8d a8 00 + 00 00 lea rcx, QWORD PTR Taken$[rbp] + 00081 e8 00 00 00 00 call ??0_NATIVE_CODE_BLOCK@@QEAA@XZ ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK + 00086 90 npad 1 + +; 53 : printf("\n\nOriginal\n"); + + 00087 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0M@INKCCKOG@?6?6Original?6@ + 0008e e8 00 00 00 00 call printf + +; 54 : NcDebugPrint(&Block); + + 00093 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] + 00097 e8 00 00 00 00 call ?NcDebugPrint@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDebugPrint + +; 55 : ObfCreateOpaqueBranches(Block.Start->Next, Block.Start->Next->Next->Next->Next, &NotTaken, &Taken); + + 0009c 48 8b 45 08 mov rax, QWORD PTR Block$[rbp] + 000a0 48 8b 00 mov rax, QWORD PTR [rax] + 000a3 48 8b 00 mov rax, QWORD PTR [rax] + 000a6 48 8b 00 mov rax, QWORD PTR [rax] + 000a9 4c 8d 8d a8 00 + 00 00 lea r9, QWORD PTR Taken$[rbp] + 000b0 4c 8d 45 58 lea r8, QWORD PTR NotTaken$[rbp] + 000b4 48 8b 10 mov rdx, QWORD PTR [rax] + 000b7 48 8b 45 08 mov rax, QWORD PTR Block$[rbp] + 000bb 48 8b 08 mov rcx, QWORD PTR [rax] + 000be e8 00 00 00 00 call ?ObfCreateOpaqueBranches@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@1@Z ; ObfCreateOpaqueBranches + +; 56 : //printf("\n\nNotTaken\n"); +; 57 : //NcDebugPrint(&NotTaken); +; 58 : //printf("\n\nTaken\n"); +; 59 : //NcDebugPrint(&Taken); +; 60 : //printf("\n\nCombined\n"); +; 61 : ObfCombineOpaqueBranches(&NotTaken, &Taken, NcGenUnusedLabelId(&Block), NcGenUnusedLabelId(&Block)); + + 000c3 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] + 000c7 e8 00 00 00 00 call ?NcGenUnusedLabelId@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z ; NcGenUnusedLabelId + 000cc 89 85 a4 01 00 + 00 mov DWORD PTR tv135[rbp], eax + 000d2 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] + 000d6 e8 00 00 00 00 call ?NcGenUnusedLabelId@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z ; NcGenUnusedLabelId + 000db 89 85 a8 01 00 + 00 mov DWORD PTR tv133[rbp], eax + 000e1 44 8b 8d a4 01 + 00 00 mov r9d, DWORD PTR tv135[rbp] + 000e8 44 8b 85 a8 01 + 00 00 mov r8d, DWORD PTR tv133[rbp] + 000ef 48 8d 95 a8 00 + 00 00 lea rdx, QWORD PTR Taken$[rbp] + 000f6 48 8d 4d 58 lea rcx, QWORD PTR NotTaken$[rbp] + 000fa e8 00 00 00 00 call ?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z ; ObfCombineOpaqueBranches + +; 62 : ObfInsertOpaqueBranchBlock(Block.Start->Next, Block.Start->Next->Next->Next->Next, &NotTaken); + + 000ff 48 8b 45 08 mov rax, QWORD PTR Block$[rbp] + 00103 48 8b 00 mov rax, QWORD PTR [rax] + 00106 48 8b 00 mov rax, QWORD PTR [rax] + 00109 48 8b 00 mov rax, QWORD PTR [rax] + 0010c 4c 8d 45 58 lea r8, QWORD PTR NotTaken$[rbp] + 00110 48 8b 10 mov rdx, QWORD PTR [rax] + 00113 48 8b 45 08 mov rax, QWORD PTR Block$[rbp] + 00117 48 8b 08 mov rcx, QWORD PTR [rax] + 0011a e8 00 00 00 00 call ?ObfInsertOpaqueBranchBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z ; ObfInsertOpaqueBranchBlock + +; 63 : printf("\n\nNew\n"); + + 0011f 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_06CHBCCLOP@?6?6New?6@ + 00126 e8 00 00 00 00 call printf + +; 64 : NcDebugPrint(&Block); + + 0012b 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] + 0012f e8 00 00 00 00 call ?NcDebugPrint@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDebugPrint + 00134 90 npad 1 + +; 65 : +; 66 : +; 67 : //PNATIVE_CODE_LINK Return1776 = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, meme1, sizeof(meme1)); +; 68 : //PNATIVE_CODE_LINK RetInst = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, meme2, sizeof(meme2)); +; 69 : //PNATIVE_CODE_BLOCK Pre1 = JitEmitPreRipMov(Return1776); +; 70 : //PNATIVE_CODE_BLOCK Post1 = JitEmitPostRipMov(Return1776); +; 71 : //PNATIVE_CODE_BLOCK Pre2 = JitEmitPreRipMov(RetInst); +; 72 : //PNATIVE_CODE_BLOCK Post2 = JitEmitPostRipMov(RetInst); +; 73 : +; 74 : //NcAppendToBlock(Pre1, Return1776); +; 75 : //NcInsertBlockAfter(Pre1->End, Post1, 0); +; 76 : //Pre1->End = Post1->End; +; 77 : //NcInsertBlockAfter(Pre1->End, Pre2, 0); +; 78 : //Pre1->End = Pre2->End; +; 79 : //NcAppendToBlock(Pre1, RetInst); +; 80 : //NcInsertBlockAfter(Pre1->End, Post2, 0); +; 81 : //Pre1->End = Post2->End; +; 82 : +; 83 : ///*Pre->Start = Return1776; +; 84 : //Pre->End = Return1776;*/ +; 85 : +; 86 : //for (ULONG i = 0; i < Return1776->RawDataSize; i++) +; 87 : // Return1776->RawData[i] = (UCHAR)rand(); +; 88 : //for (ULONG i = 0; i < RetInst->RawDataSize; i++) +; 89 : // RetInst->RawData[i] = (UCHAR)rand(); +; 90 : +; 91 : +; 92 : +; 93 : //ULONG AsmLen; +; 94 : //PVOID Asm = NcAssemble(Pre1, &AsmLen); +; 95 : //PUCHAR Tb = (PUCHAR)Asm; +; 96 : //for (uint32_t i = 0; i < AsmLen; i++) +; 97 : //{ +; 98 : // std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)Tb[i] << ' '; +; 99 : //} +; 100 : +; 101 : //system("pause"); +; 102 : +; 103 : //typedef ULONG64(*FnGet1776)(); +; 104 : //FnGet1776 ExecBuffer = (FnGet1776)MakeExecutableBuffer(Asm, AsmLen); +; 105 : //if (ExecBuffer) +; 106 : //{ +; 107 : // printf("The numba was: %X\n", ExecBuffer()); +; 108 : // printf("The numba was: %X\n", ExecBuffer()); +; 109 : +; 110 : // printf("The numba was: %X\n", ExecBuffer()); +; 111 : +; 112 : // printf("The numba was: %X\n", ExecBuffer()); +; 113 : +; 114 : //} +; 115 : +; 116 : +; 117 : //NcDebugPrint(Post); +; 118 : +; 119 : +; 120 : +; 121 : /*NATIVE_CODE_BLOCK Block; +; 122 : NcDisassemble(&Block, TestBuffer, TestBufferSize); +; 123 : PNATIVE_CODE_LINK NewLink = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, meme1, sizeof(meme1)); +; 124 : +; 125 : NcInsertLinkBefore(Block.End->Prev->Prev->Prev->Prev, NewLink); +; 126 : ULONG AssembledSize; +; 127 : PVOID AssembledBlock = NcAssemble(&Block, &AssembledSize); +; 128 : if (!AssembledBlock || !AssembledSize) +; 129 : { +; 130 : printf("Something failed nicka.\n"); +; 131 : system("pause"); +; 132 : return -1; +; 133 : } +; 134 : PUCHAR Tb = (PUCHAR)AssembledBlock; +; 135 : for (uint32_t i = 0; i < AssembledSize; i++) +; 136 : { +; 137 : std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)Tb[i] << ' '; +; 138 : } +; 139 : */ +; 140 : +; 141 : +; 142 : //PNATIVE_CODE_BLOCK OpaqueBranch = ObfGenOpaqueBranch(Block.Start, Block.End); +; 143 : //NcDebugPrint(OpaqueBranch); +; 144 : +; 145 : +; 146 : +; 147 : /*NATIVE_CODE_LINK T; +; 148 : T.RawDataSize = 10; +; 149 : T.RawData = new UCHAR[10]; +; 150 : memset(T.RawData, 0xAA, 10); +; 151 : JIT_BITWISE_DATA Data; +; 152 : RtlSecureZeroMemory(&Data, sizeof(JIT_BITWISE_DATA)); +; 153 : PNATIVE_CODE_BLOCK NewBlock = JitEmitPreRipMov(&T); +; 154 : if (NewBlock) +; 155 : { +; 156 : printf("\n"); +; 157 : NcDebugPrint(NewBlock); +; 158 : printf("\n"); +; 159 : NcPrintBlockCode(NewBlock); +; 160 : } +; 161 : system("pause");*/ +; 162 : +; 163 : } + + 00135 48 8d 8d a8 00 + 00 00 lea rcx, QWORD PTR Taken$[rbp] + 0013c e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ + 00141 90 npad 1 + 00142 48 8d 4d 58 lea rcx, QWORD PTR NotTaken$[rbp] + 00146 e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ + 0014b 90 npad 1 + 0014c 48 8d 4d 08 lea rcx, QWORD PTR Block$[rbp] + 00150 e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ + 00155 33 c0 xor eax, eax + 00157 8b f8 mov edi, eax + 00159 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] + 0015d 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:main$rtcFrameData + 00164 e8 00 00 00 00 call _RTC_CheckStackVars + 00169 8b c7 mov eax, edi + 0016b 48 8b 8d b0 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00435 48 33 cd xor rcx, rbp - 00438 e8 00 00 00 00 call __security_check_cookie - 0043d 48 8d a5 38 02 - 00 00 lea rsp, QWORD PTR [rbp+568] - 00444 5f pop rdi - 00445 5d pop rbp - 00446 c3 ret 0 -??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z ENDP ; std::operator<< > + 00172 48 33 cd xor rcx, rbp + 00175 e8 00 00 00 00 call __security_check_cookie + 0017a 48 8d a5 c8 01 + 00 00 lea rsp, QWORD PTR [rbp+456] + 00181 5f pop rdi + 00182 5d pop rbp + 00183 c3 ret 0 +main ENDP _TEXT ENDS ; COMDAT text$x text$x SEGMENT -_State$ = 4 -_Ok$ = 40 -_Pad$4 = 88 -$T5 = 308 -$T6 = 340 -$T7 = 372 -$T8 = 404 -$T9 = 436 -$T10 = 468 -$T11 = 504 -tv65 = 516 -tv305 = 520 -tv303 = 520 -tv300 = 520 -tv295 = 520 -tv281 = 520 -tv266 = 520 -tv130 = 520 -tv245 = 528 -tv204 = 528 -tv179 = 528 -tv306 = 536 -tv304 = 536 -tv301 = 536 -tv243 = 537 -tv177 = 537 -tv307 = 540 -tv302 = 540 -__$ArrayPad$ = 544 -_Ostr$ = 592 -_Ch$ = 600 -?dtor$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA PROC ; `std::operator<< >'::`1'::dtor$0 +Block$ = 8 +NotTaken$ = 88 +Taken$ = 168 +tv135 = 420 +tv133 = 424 +__$ArrayPad$ = 432 +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 0000a 55 push rbp 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 28 lea rcx, QWORD PTR _Ok$[rbp] - 00018 e8 00 00 00 00 call ??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ ; std::basic_ostream >::sentry::~sentry + 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 -?dtor$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA ENDP ; `std::operator<< >'::`1'::dtor$0 +main$dtor$0 ENDP text$x ENDS ; COMDAT text$x text$x SEGMENT -_State$ = 4 -_Ok$ = 40 -_Pad$4 = 88 -$T5 = 308 -$T6 = 340 -$T7 = 372 -$T8 = 404 -$T9 = 436 -$T10 = 468 -$T11 = 504 -tv65 = 516 -tv305 = 520 -tv303 = 520 -tv300 = 520 -tv295 = 520 -tv281 = 520 -tv266 = 520 -tv130 = 520 -tv245 = 528 -tv204 = 528 -tv179 = 528 -tv306 = 536 -tv304 = 536 -tv301 = 536 -tv243 = 537 -tv177 = 537 -tv307 = 540 -tv302 = 540 -__$ArrayPad$ = 544 -_Ostr$ = 592 -_Ch$ = 600 -?catch$1@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA PROC ; `std::operator<< >'::`1'::catch$1 - -; 808 : _CATCH_IO_(ios_base, _Ostr) - +Block$ = 8 +NotTaken$ = 88 +Taken$ = 168 +tv135 = 420 +tv133 = 424 +__$ArrayPad$ = 432 +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 + 0000a 55 push rbp + 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 58 lea rcx, QWORD PTR NotTaken$[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 +main$dtor$1 ENDP +text$x ENDS +; COMDAT text$x +text$x SEGMENT +Block$ = 8 +NotTaken$ = 88 +Taken$ = 168 +tv135 = 420 +tv133 = 424 +__$ArrayPad$ = 432 +main$dtor$2 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 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] -__catch$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z$0: - 00014 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 0001b 48 8b 00 mov rax, QWORD PTR [rax] - 0001e 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 00022 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 00029 48 03 c8 add rcx, rax - 0002c 48 8b c1 mov rax, rcx - 0002f 48 89 85 08 02 - 00 00 mov QWORD PTR tv266[rbp], rax - 00036 41 b0 01 mov r8b, 1 - 00039 ba 04 00 00 00 mov edx, 4 - 0003e 48 8b 8d 08 02 - 00 00 mov rcx, QWORD PTR tv266[rbp] - 00045 ff 15 00 00 00 - 00 call QWORD PTR __imp_?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z - 0004b 90 npad 1 - 0004c 48 8d 05 00 00 - 00 00 lea rax, $LN21@catch$1 - 00053 48 83 c4 28 add rsp, 40 ; 00000028H - 00057 5f pop rdi - 00058 5d pop rbp - 00059 c3 ret 0 - 0005a cc int 3 -?catch$1@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA ENDP ; `std::operator<< >'::`1'::catch$1 + 00014 48 8d 8d a8 00 + 00 00 lea rcx, QWORD PTR Taken$[rbp] + 0001b e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ + 00020 48 83 c4 28 add rsp, 40 ; 00000028H + 00024 5f pop rdi + 00025 5d pop rbp + 00026 c3 ret 0 +main$dtor$2 ENDP text$x ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; COMDAT text$x text$x SEGMENT -_State$ = 4 -_Ok$ = 40 -_Pad$4 = 88 -$T5 = 308 -$T6 = 340 -$T7 = 372 -$T8 = 404 -$T9 = 436 -$T10 = 468 -$T11 = 504 -tv65 = 516 -tv305 = 520 -tv303 = 520 -tv300 = 520 -tv295 = 520 -tv281 = 520 -tv266 = 520 -tv130 = 520 -tv245 = 528 -tv204 = 528 -tv179 = 528 -tv306 = 536 -tv304 = 536 -tv301 = 536 -tv243 = 537 -tv177 = 537 -tv307 = 540 -tv302 = 540 -__$ArrayPad$ = 544 -_Ostr$ = 592 -_Ch$ = 600 -?dtor$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA PROC ; `std::operator<< >'::`1'::dtor$0 +Block$ = 8 +NotTaken$ = 88 +Taken$ = 168 +tv135 = 420 +tv133 = 424 +__$ArrayPad$ = 432 +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 0000a 55 push rbp 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 28 lea rcx, QWORD PTR _Ok$[rbp] - 00018 e8 00 00 00 00 call ??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ ; std::basic_ostream >::sentry::~sentry + 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 -?dtor$0@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA ENDP ; `std::operator<< >'::`1'::dtor$0 +main$dtor$0 ENDP text$x ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; COMDAT text$x text$x SEGMENT -_State$ = 4 -_Ok$ = 40 -_Pad$4 = 88 -$T5 = 308 -$T6 = 340 -$T7 = 372 -$T8 = 404 -$T9 = 436 -$T10 = 468 -$T11 = 504 -tv65 = 516 -tv305 = 520 -tv303 = 520 -tv300 = 520 -tv295 = 520 -tv281 = 520 -tv266 = 520 -tv130 = 520 -tv245 = 528 -tv204 = 528 -tv179 = 528 -tv306 = 536 -tv304 = 536 -tv301 = 536 -tv243 = 537 -tv177 = 537 -tv307 = 540 -tv302 = 540 -__$ArrayPad$ = 544 -_Ostr$ = 592 -_Ch$ = 600 -?catch$1@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA PROC ; `std::operator<< >'::`1'::catch$1 - -; 808 : _CATCH_IO_(ios_base, _Ostr) - +Block$ = 8 +NotTaken$ = 88 +Taken$ = 168 +tv135 = 420 +tv133 = 424 +__$ArrayPad$ = 432 +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 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] -__catch$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z$0: - 00014 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR _Ostr$[rbp] - 0001b 48 8b 00 mov rax, QWORD PTR [rax] - 0001e 48 63 40 04 movsxd rax, DWORD PTR [rax+4] - 00022 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR _Ostr$[rbp] - 00029 48 03 c8 add rcx, rax - 0002c 48 8b c1 mov rax, rcx - 0002f 48 89 85 08 02 - 00 00 mov QWORD PTR tv266[rbp], rax - 00036 41 b0 01 mov r8b, 1 - 00039 ba 04 00 00 00 mov edx, 4 - 0003e 48 8b 8d 08 02 - 00 00 mov rcx, QWORD PTR tv266[rbp] - 00045 ff 15 00 00 00 - 00 call QWORD PTR __imp_?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z - 0004b 90 npad 1 - 0004c 48 8d 05 00 00 - 00 00 lea rax, $LN21@catch$1 - 00053 48 83 c4 28 add rsp, 40 ; 00000028H - 00057 5f pop rdi - 00058 5d pop rbp - 00059 c3 ret 0 - 0005a cc int 3 -?catch$1@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z@4HA ENDP ; `std::operator<< >'::`1'::catch$1 + 00014 48 8d 4d 58 lea rcx, QWORD PTR NotTaken$[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 +main$dtor$1 ENDP +text$x ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; COMDAT text$x +text$x SEGMENT +Block$ = 8 +NotTaken$ = 88 +Taken$ = 168 +tv135 = 420 +tv133 = 424 +__$ArrayPad$ = 432 +main$dtor$2 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 + 0000a 55 push rbp + 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 8d a8 00 + 00 00 lea rcx, QWORD PTR Taken$[rbp] + 0001b e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ + 00020 48 83 c4 28 add rsp, 40 ; 00000028H + 00024 5f pop rdi + 00025 5d pop rbp + 00026 c3 ret 0 +main$dtor$2 ENDP text$x ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\$Fanta\code-virtualizer\CodeVirtualizer\Main.cpp -; COMDAT main +; COMDAT ?MakeExecutableBuffer@@YAPEAXPEAXK@Z +_TEXT SEGMENT +ExecBuffer$ = 8 +Buffer$ = 256 +BufferSize$ = 264 +?MakeExecutableBuffer@@YAPEAXPEAXK@Z PROC ; MakeExecutableBuffer, COMDAT + +; 14 : { + +$LN4: + 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx + 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 00009 55 push rbp + 0000a 57 push rdi + 0000b 48 81 ec 08 01 + 00 00 sub rsp, 264 ; 00000108H + 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00017 48 8b fc mov rdi, rsp + 0001a b9 42 00 00 00 mov ecx, 66 ; 00000042H + 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00024 f3 ab rep stosd + 00026 48 8b 8c 24 28 + 01 00 00 mov rcx, QWORD PTR [rsp+296] + 0002e 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__4031338C_Main@cpp + 00035 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + +; 15 : PVOID ExecBuffer = VirtualAlloc(nullptr, BufferSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE); + + 0003a 8b 85 08 01 00 + 00 mov eax, DWORD PTR BufferSize$[rbp] + 00040 41 b9 40 00 00 + 00 mov r9d, 64 ; 00000040H + 00046 41 b8 00 10 00 + 00 mov r8d, 4096 ; 00001000H + 0004c 8b d0 mov edx, eax + 0004e 33 c9 xor ecx, ecx + 00050 ff 15 00 00 00 + 00 call QWORD PTR __imp_VirtualAlloc + 00056 48 89 45 08 mov QWORD PTR ExecBuffer$[rbp], rax + +; 16 : if (!ExecBuffer) + + 0005a 48 83 7d 08 00 cmp QWORD PTR ExecBuffer$[rbp], 0 + 0005f 75 04 jne SHORT $LN2@MakeExecut + +; 17 : return NULL; + + 00061 33 c0 xor eax, eax + 00063 eb 19 jmp SHORT $LN1@MakeExecut +$LN2@MakeExecut: + +; 18 : RtlCopyMemory(ExecBuffer, Buffer, BufferSize); + + 00065 8b 85 08 01 00 + 00 mov eax, DWORD PTR BufferSize$[rbp] + 0006b 44 8b c0 mov r8d, eax + 0006e 48 8b 95 00 01 + 00 00 mov rdx, QWORD PTR Buffer$[rbp] + 00075 48 8b 4d 08 mov rcx, QWORD PTR ExecBuffer$[rbp] + 00079 e8 00 00 00 00 call memcpy +$LN1@MakeExecut: + +; 19 : } + + 0007e 48 8d a5 e8 00 + 00 00 lea rsp, QWORD PTR [rbp+232] + 00085 5f pop rdi + 00086 5d pop rbp + 00087 c3 ret 0 +?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 -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 +_Alproxy$ = 8 +$S1$ = 36 +$T4 = 260 +__$ArrayPad$ = 280 +this$ = 320 +??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ PROC ; std::vector >::~vector >, COMDAT -; 44 : { +; 672 : ~vector() noexcept { -$LN19: - 00000 40 55 push rbp - 00002 57 push rdi - 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 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 +$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 - 00025 48 33 c5 xor rax, rbp - 00028 48 89 85 18 04 + 00031 48 33 c5 xor rax, rbp + 00034 48 89 85 18 01 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 - -; 45 : XedTablesInit(); + 0003b 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector + 00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 0003b e8 00 00 00 00 call xed_tables_init - -; 46 : srand(time(NULL)); - - 00040 33 c9 xor ecx, ecx - 00042 e8 00 00 00 00 call time - 00047 8b c8 mov ecx, eax - 00049 ff 15 00 00 00 - 00 call QWORD PTR __imp_srand +; 673 : _Tidy(); -; 47 : -; 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 - -; 54 : -; 55 : NcAppendToBlock(Pre1, Return1776); - - 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 - -; 56 : NcInsertBlockAfter(Pre1->End, Post1, 0); - - 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 - -; 57 : Pre1->End = Post1->End; - - 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 - -; 58 : NcInsertBlockAfter(Pre1->End, Pre2, 0); - - 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 - -; 59 : Pre1->End = Pre2->End; - - 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 : NcAppendToBlock(Pre1, RetInst); - - 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 : NcInsertBlockAfter(Pre1->End, Post2, 0); - - 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 : Pre1->End = Post2->End; - - 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 - -; 63 : -; 64 : /*Pre->Start = Return1776; -; 65 : Pre->End = Return1776;*/ -; 66 : -; 67 : for (ULONG i = 0; i < Return1776->RawDataSize; i++) - - 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: - 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] - 00250 ff c0 inc eax - 00252 89 85 e4 00 00 - 00 mov DWORD PTR i$5[rbp], eax -$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 - 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 - -; 79 : for (uint32_t i = 0; i < AsmLen; i++) - - 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 - 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 - 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 - 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] - 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 - 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<< > - -; 82 : } - - 0038e e9 2b ff ff ff jmp $LN8@main -$LN9@main: - -; 83 : -; 84 : system("pause"); - - 00393 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_05PDJBBECF@pause@ - 0039a ff 15 00 00 00 - 00 call QWORD PTR __imp_system + 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 -; 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 +; 674 : #if _ITERATOR_DEBUG_LEVEL != 0 +; 675 : auto&& _Alproxy = _GET_PROXY_ALLOCATOR(_Alty, _Getal()); -; 92 : -; 93 : printf("The numba was: %X\n", ExecBuffer()); + 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 - 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 +; 676 : _Delete_plain_internal(_Alproxy, _STD exchange(_Mypair._Myval2._Myproxy, nullptr)); -; 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 - 00433 e8 00 00 00 00 call _RTC_CheckStackVars - 00438 8b c7 mov eax, edi - 0043a 48 8b 8d 18 04 + 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] - 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 + 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 -; COMDAT text$x -text$x SEGMENT -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 - 0000a 55 push rbp - 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 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 -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 - 0000a 55 push rbp - 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 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 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 - 0002a 5d pop rbp - 0002b c3 ret 0 -main$dtor$1 ENDP -text$x ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT text$x -text$x SEGMENT -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 - 0000a 55 push rbp - 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 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 -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 - 0000a 55 push rbp - 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 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 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 - 0002a 5d pop rbp - 0002b c3 ret 0 -main$dtor$1 ENDP -text$x ENDS ; Function compile flags: /Odtp /RTCsu /ZI -; File C:\$Fanta\code-virtualizer\CodeVirtualizer\Main.cpp -; COMDAT ?MakeExecutableBuffer@@YAPEAXPEAXK@Z +; 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 -ExecBuffer$ = 8 -Buffer$ = 256 -BufferSize$ = 264 -?MakeExecutableBuffer@@YAPEAXPEAXK@Z PROC ; MakeExecutableBuffer, COMDAT - -; 14 : { - -$LN4: - 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx - 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00009 55 push rbp - 0000a 57 push rdi - 0000b 48 81 ec 08 01 - 00 00 sub rsp, 264 ; 00000108H - 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00017 48 8b fc mov rdi, rsp - 0001a b9 42 00 00 00 mov ecx, 66 ; 00000042H - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 48 8b 8c 24 28 - 01 00 00 mov rcx, QWORD PTR [rsp+296] - 0002e 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__4031338C_Main@cpp - 00035 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 15 : PVOID ExecBuffer = VirtualAlloc(nullptr, BufferSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE); - - 0003a 8b 85 08 01 00 - 00 mov eax, DWORD PTR BufferSize$[rbp] - 00040 41 b9 40 00 00 - 00 mov r9d, 64 ; 00000040H - 00046 41 b8 00 10 00 - 00 mov r8d, 4096 ; 00001000H - 0004c 8b d0 mov edx, eax - 0004e 33 c9 xor ecx, ecx - 00050 ff 15 00 00 00 - 00 call QWORD PTR __imp_VirtualAlloc - 00056 48 89 45 08 mov QWORD PTR ExecBuffer$[rbp], rax - -; 16 : if (!ExecBuffer) - - 0005a 48 83 7d 08 00 cmp QWORD PTR ExecBuffer$[rbp], 0 - 0005f 75 04 jne SHORT $LN2@MakeExecut +this$ = 224 +_Ptr$ = 232 +_Count$ = 240 +?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z PROC ; std::allocator::deallocate, COMDAT -; 17 : return NULL; +; 801 : void deallocate(_Ty* const _Ptr, const size_t _Count) { - 00061 33 c0 xor eax, eax - 00063 eb 19 jmp SHORT $LN1@MakeExecut -$LN2@MakeExecut: +$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 -; 18 : RtlCopyMemory(ExecBuffer, Buffer, BufferSize); +; 802 : // no overflow check on the following multiply; we assume _Allocate did that check +; 803 : _Deallocate<_New_alignof<_Ty>>(_Ptr, sizeof(_Ty) * _Count); - 00065 8b 85 08 01 00 - 00 mov eax, DWORD PTR BufferSize$[rbp] - 0006b 44 8b c0 mov r8d, eax - 0006e 48 8b 95 00 01 - 00 00 mov rdx, QWORD PTR Buffer$[rbp] - 00075 48 8b 4d 08 mov rcx, QWORD PTR ExecBuffer$[rbp] - 00079 e8 00 00 00 00 call memcpy -$LN1@MakeExecut: + 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> -; 19 : } +; 804 : } - 0007e 48 8d a5 e8 00 - 00 00 lea rsp, QWORD PTR [rbp+232] - 00085 5f pop rdi - 00086 5d pop rbp - 00087 c3 ret 0 -?MakeExecutableBuffer@@YAPEAXPEAXK@Z ENDP ; MakeExecutableBuffer + 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 @@ -3578,56 +2816,6 @@ time PROC ; COMDAT time 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\ios -; COMDAT ?hex@std@@YAAEAVios_base@1@AEAV21@@Z -_TEXT SEGMENT -_Iosbase$ = 224 -?hex@std@@YAAEAVios_base@1@AEAV21@@Z PROC ; std::hex, COMDAT - -; 206 : inline ios_base& __CLRCALL_OR_CDECL hex(ios_base& _Iosbase) { // set basefield to hex - -$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:__165C22CB_ios - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 207 : _Iosbase.setf(ios_base::hex, ios_base::basefield); - - 00036 41 b8 00 0e 00 - 00 mov r8d, 3584 ; 00000e00H - 0003c ba 00 08 00 00 mov edx, 2048 ; 00000800H - 00041 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR _Iosbase$[rbp] - 00048 ff 15 00 00 00 - 00 call QWORD PTR __imp_?setf@ios_base@std@@QEAAHHH@Z - -; 208 : return _Iosbase; - - 0004e 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR _Iosbase$[rbp] - -; 209 : } - - 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 -?hex@std@@YAAEAVios_base@1@AEAV21@@Z ENDP ; std::hex -_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\xlocale ; COMDAT ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z _TEXT SEGMENT @@ -4114,96 +3302,330 @@ $LN11@Maklocstr: ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ENDP ; std::_Maklocstr _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\xstring -; COMDAT ?eof@?$_Narrow_char_traits@DH@std@@SAHXZ +; 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 -?eof@?$_Narrow_char_traits@DH@std@@SAHXZ PROC ; std::_Narrow_char_traits::eof, COMDAT +_Lock$4 = 4 +_Pnext$5 = 40 +__$ArrayPad$ = 248 +this$ = 288 +?_Orphan_all@_Container_base12@std@@QEAAXXZ PROC ; std::_Container_base12::_Orphan_all, COMDAT -; 400 : _NODISCARD static constexpr int_type eof() noexcept { +; 1205 : inline void _Container_base12::_Orphan_all() noexcept { -$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:__D15AFF60_xstring - 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +$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 -; 401 : return static_cast(EOF); + 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 - 0002a b8 ff ff ff ff mov eax, -1 +; 1208 : _Lockit _Lock(_LOCK_DEBUG); -; 402 : } + 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 - 0002f 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00036 5f pop rdi - 00037 5d pop rbp - 00038 c3 ret 0 -?eof@?$_Narrow_char_traits@DH@std@@SAHXZ ENDP ; std::_Narrow_char_traits::eof +; 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\xstring -; COMDAT ?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z +; 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 -tv65 = 192 -_Left$ = 240 -_Right$ = 248 -?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z PROC ; std::_Narrow_char_traits::eq_int_type, COMDAT +_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 -; 392 : _NODISCARD static constexpr bool eq_int_type(const int_type& _Left, const int_type& _Right) noexcept { +; 132 : inline void _Adjust_manually_vector_aligned(void*& _Ptr, size_t& _Bytes) { -$LN5: +$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 f8 00 - 00 00 sub rsp, 248 ; 000000f8H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 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 3e 00 00 00 mov ecx, 62 ; 0000003eH + 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 18 - 01 00 00 mov rcx, QWORD PTR [rsp+280] + 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:__D15AFF60_xstring + 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 393 : return _Left == _Right; - - 0003b 48 8b 85 f0 00 - 00 00 mov rax, QWORD PTR _Left$[rbp] - 00042 48 8b 8d f8 00 - 00 00 mov rcx, QWORD PTR _Right$[rbp] - 00049 8b 09 mov ecx, DWORD PTR [rcx] - 0004b 39 08 cmp DWORD PTR [rax], ecx - 0004d 75 0c jne SHORT $LN3@eq_int_typ - 0004f c7 85 c0 00 00 - 00 01 00 00 00 mov DWORD PTR tv65[rbp], 1 - 00059 eb 0a jmp SHORT $LN4@eq_int_typ -$LN3@eq_int_typ: - 0005b c7 85 c0 00 00 - 00 00 00 00 00 mov DWORD PTR tv65[rbp], 0 -$LN4@eq_int_typ: - 00065 0f b6 85 c0 00 - 00 00 movzx eax, BYTE PTR tv65[rbp] - -; 394 : } - - 0006c 48 8d a5 d8 00 - 00 00 lea rsp, QWORD PTR [rbp+216] - 00073 5f pop rdi - 00074 5d pop rbp - 00075 c3 ret 0 -?eq_int_type@?$_Narrow_char_traits@DH@std@@SA_NAEBH0@Z ENDP ; std::_Narrow_char_traits::eq_int_type +; 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 diff --git a/CodeVirtualizer/x64/Debug/NativeCode.cod b/CodeVirtualizer/x64/Debug/NativeCode.cod index fcfb9bf..600581e 100644 --- a/CodeVirtualizer/x64/Debug/NativeCode.cod +++ b/CodeVirtualizer/x64/Debug/NativeCode.cod @@ -133,7 +133,7 @@ PUBLIC ??$_Getvals@_W@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@ 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 ??0_NATIVE_CODE_LINK@@QEAA@XZ ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK PUBLIC ??0_NATIVE_CODE_LINK@@QEAA@KPEAU_NATIVE_CODE_BLOCK@@@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK -PUBLIC ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK +PUBLIC ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK PUBLIC ??1_NATIVE_CODE_LINK@@QEAA@XZ ; _NATIVE_CODE_LINK::~_NATIVE_CODE_LINK PUBLIC ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z ; _NATIVE_CODE_LINK::`scalar deleting destructor' PUBLIC ??0?$allocator@K@std@@QEAA@XZ ; std::allocator::allocator @@ -141,7 +141,6 @@ PUBLIC ?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z ; std::allocator::allocate PUBLIC ?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z ; std::_Default_allocator_traits >::max_size PUBLIC ??0?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ ; std::vector >::vector > -PUBLIC ??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ ; std::vector >::~vector > PUBLIC ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ; std::vector >::push_back PUBLIC ?clear@?$vector@KV?$allocator@K@std@@@std@@QEAAXXZ ; std::vector >::clear PUBLIC ?begin@?$vector@KV?$allocator@K@std@@@std@@QEAA?AV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@2@XZ ; std::vector >::begin @@ -157,7 +156,6 @@ PUBLIC ?_Umove_if_noexcept@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00@Z ; s PUBLIC ?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z ; std::vector >::_Destroy PUBLIC ?_Calculate_growth@?$vector@KV?$allocator@K@std@@@std@@AEBA_K_K@Z ; std::vector >::_Calculate_growth PUBLIC ?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z ; std::vector >::_Change_array -PUBLIC ?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ ; std::vector >::_Tidy PUBLIC ?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ ; std::vector >::_Xlength PUBLIC ?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z ; std::vector >::_Orphan_range PUBLIC ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ; std::vector >::_Getal @@ -166,8 +164,6 @@ PUBLIC ??0?$_Vector_val@U?$_Simple_types@K@std@@@std@@QEAA@XZ ; std::_Vector_val 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 ?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEBAAEBV?$allocator@K@2@XZ ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first PUBLIC ??0_NATIVE_CODE_BLOCK@@QEAA@XZ ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK -PUBLIC ??1_NATIVE_CODE_BLOCK@@QEAA@XZ ; _NATIVE_CODE_BLOCK::~_NATIVE_CODE_BLOCK -PUBLIC ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z ; _NATIVE_CODE_BLOCK::`scalar deleting destructor' PUBLIC ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock PUBLIC ?NcPrependToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcPrependToBlock PUBLIC ?NcInsertLinkAfter@@YAXPEAU_NATIVE_CODE_LINK@@0@Z ; NcInsertLinkAfter @@ -182,8 +178,8 @@ PUBLIC ?NcInsertBlockBefore@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H PUBLIC ?NcCreateLabels@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z ; NcCreateLabels PUBLIC ?NcValidateJmp@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@H@Z ; NcValidateJmp PUBLIC ?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z ; NcDeepCopyLink -PUBLIC ?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z ; NcDeepCopyPartialBlock -PUBLIC ?NcDeepCopyBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU1@@Z ; NcDeepCopyBlock +PUBLIC ?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeepCopyPartialBlock +PUBLIC ?NcDeepCopyBlock@@YAHPEAU_NATIVE_CODE_BLOCK@@0@Z ; NcDeepCopyBlock PUBLIC ?NcGetDeltaToLabel@@YAHPEAU_NATIVE_CODE_LINK@@PEAH@Z ; NcGetDeltaToLabel PUBLIC ?NcFixRelJmps@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z ; NcFixRelJmps PUBLIC ?NcDisassemble@@YAHPEAU_NATIVE_CODE_BLOCK@@PEAXK@Z ; NcDisassemble @@ -219,8 +215,6 @@ PUBLIC ??$construct@KAEBK@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@ PUBLIC ??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z ; std::vector >::_Emplace_reallocate PUBLIC ?allocate@?$allocator@U_Container_proxy@std@@@std@@QEAAPEAU_Container_proxy@2@_K@Z ; std::allocator::allocate 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$$V@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z ; std::_Compressed_pair,std::_Vector_val >,1>::_Compressed_pair,std::_Vector_val >,1><> PUBLIC ??$_Alloc_proxy@V?$allocator@U_Container_proxy@std@@@std@@@_Container_base12@std@@QEAAX$$QEAV?$allocator@U_Container_proxy@std@@@1@@Z ; std::_Container_base12::_Alloc_proxy > PUBLIC ??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEAV12@@Z ; std::basic_ostream >::_Sentry_base::_Sentry_base @@ -241,12 +235,10 @@ PUBLIC ??$_Get_unwrapped@AEAV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@ PUBLIC ??$_Get_unwrapped@AEBV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@@std@@YA@AEBV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@0@@Z ; std::_Get_unwrapped > > const &> PUBLIC ??$_Find_unchecked@PEAKK@std@@YAPEAKQEAK0AEBK@Z ; std::_Find_unchecked PUBLIC ??$_Seek_wrapped@V?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@PEAK@std@@YAXAEAV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@0@$$QEAPEAK@Z ; std::_Seek_wrapped > >,unsigned long *> -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 ??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z ; std::_Allocate_manually_vector_aligned PUBLIC ??$_Uninitialized_move@PEAKV?$allocator@K@std@@@std@@YAPEAKQEAK0PEAKAEAV?$allocator@K@0@@Z ; std::_Uninitialized_move > PUBLIC ??$_Get_size_of_n@$03@std@@YA_K_K@Z ; std::_Get_size_of_n<4> PUBLIC ??$_Find_unchecked1@PEAKK@std@@YAPEAKPEAKQEAKAEBKU?$integral_constant@_N$0A@@0@@Z ; std::_Find_unchecked1 -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 ??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z ; std::_Get_unwrapped PUBLIC ??$_Copy_memmove@PEAKPEAK@std@@YAPEAKPEAK00@Z ; std::_Copy_memmove PUBLIC ??$_Refancy@PEAK$0A@@std@@YAPEAKPEAK@Z ; std::_Refancy @@ -279,7 +271,7 @@ 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@_0DF@KKBEBOEB@Failed?5to?5validate?5jump?4?5Type?3?5@ ; `string' -PUBLIC ??_C@_0CI@IAPEEFOG@XedDecode?5failed?5in?5NcDeepCopyL@ ; `string' +PUBLIC ??_C@_0CL@COPJALEP@XedDecode?5failed?5in?5NcDeepCopyL@ ; `string' PUBLIC ??_C@_0CA@KDIENFLL@XedDecode?5failed?5with?5error?5?$CFs?6@ ; `string' PUBLIC ??_C@_0L@ILJOJNOL@Label?3?5?$CFu?6@ ; `string' PUBLIC ??_C@_07KNNCJAOA@?$CFs?3?5?$CFu?6@ ; `string' @@ -763,15 +755,15 @@ $pdata$??0_NATIVE_CODE_LINK@@QEAA@KPEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN4 pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z DD imagerel $LN5 - DD imagerel $LN5+252 - DD imagerel $unwind$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z +$pdata$??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z DD imagerel $LN6 + DD imagerel $LN6+261 + DD imagerel $unwind$??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z@4HA DD imagerel ?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z@4HA - DD imagerel ?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z@4HA+39 - DD imagerel $unwind$?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z@4HA +$pdata$?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z@4HA DD imagerel ?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z@4HA + DD imagerel ?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z@4HA+39 + DD imagerel $unwind$?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z@4HA pdata ENDS ; COMDAT pdata pdata SEGMENT @@ -817,12 +809,6 @@ $pdata$??0?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ DD imagerel $LN3 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$?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z DD imagerel $LN3 DD imagerel $LN3+88 DD imagerel $unwind$?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z @@ -913,12 +899,6 @@ $pdata$?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z DD imag 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$?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ DD imagerel $LN3 DD imagerel $LN3+64 DD imagerel $unwind$?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ @@ -967,18 +947,6 @@ $pdata$??0_NATIVE_CODE_BLOCK@@QEAA@XZ DD imagerel $LN4 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$??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z DD imagerel $LN4 - DD imagerel $LN4+105 - DD imagerel $unwind$??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT $pdata$?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z DD imagerel $LN7 DD imagerel $LN7+241 DD imagerel $unwind$?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z @@ -1010,13 +978,13 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcCalcBlockSize@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN7 - DD imagerel $LN7+156 + DD imagerel $LN7+163 DD imagerel $unwind$?NcCalcBlockSize@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcChangeLabelId@@YAXPEAU_NATIVE_CODE_BLOCK@@KK@Z DD imagerel $LN8 - DD imagerel $LN8+165 + DD imagerel $LN8+185 DD imagerel $unwind$?NcChangeLabelId@@YAXPEAU_NATIVE_CODE_BLOCK@@KK@Z pdata ENDS ; COMDAT pdata @@ -1040,7 +1008,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z DD imagerel $LN17 - DD imagerel $LN17+715 + DD imagerel $LN17+739 DD imagerel $unwind$?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z pdata ENDS ; COMDAT pdata @@ -1088,7 +1056,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z DD imagerel $LN14 - DD imagerel $LN14+453 + DD imagerel $LN14+495 DD imagerel $unwind$?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z pdata ENDS ; COMDAT pdata @@ -1105,21 +1073,15 @@ $pdata$?dtor$1@?0??NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z@4HA DD imag pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DD imagerel $LN18 - DD imagerel $LN18+580 - DD imagerel $unwind$?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?dtor$0@?0??NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA DD imagerel ?dtor$0@?0??NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA - DD imagerel ?dtor$0@?0??NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA+44 - DD imagerel $unwind$?dtor$0@?0??NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA +$pdata$?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN12 + DD imagerel $LN12+498 + DD imagerel $unwind$?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?NcDeepCopyBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU1@@Z DD imagerel $LN3 - DD imagerel $LN3+90 - DD imagerel $unwind$?NcDeepCopyBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU1@@Z +$pdata$?NcDeepCopyBlock@@YAHPEAU_NATIVE_CODE_BLOCK@@0@Z DD imagerel $LN3 + DD imagerel $LN3+102 + DD imagerel $unwind$?NcDeepCopyBlock@@YAHPEAU_NATIVE_CODE_BLOCK@@0@Z pdata ENDS ; COMDAT pdata pdata SEGMENT @@ -1130,7 +1092,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcFixRelJmps@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN21 - DD imagerel $LN21+935 + DD imagerel $LN21+946 DD imagerel $unwind$?NcFixRelJmps@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT pdata @@ -1154,7 +1116,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN10 - DD imagerel $LN10+206 + DD imagerel $LN10+224 DD imagerel $unwind$?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT pdata @@ -1369,18 +1331,6 @@ $pdata$??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@ 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$$V@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z DD imagerel $LN3 DD imagerel $LN3+102 DD imagerel $unwind$??$?0$$V@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEAA@U_Zero_then_variadic_args_t@1@@Z @@ -1507,12 +1457,6 @@ $pdata$??$_Seek_wrapped@V?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@st 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$??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z DD imagerel $LN13 DD imagerel $LN13+300 DD imagerel $unwind$??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z @@ -1537,12 +1481,6 @@ $pdata$??$_Find_unchecked1@PEAKK@std@@YAPEAKPEAKQEAKAEBKU?$integral_constant@_N$ 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 pdata -pdata SEGMENT $pdata$??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z DD imagerel $LN3 DD imagerel $LN3+74 DD imagerel $unwind$??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z @@ -1809,10 +1747,10 @@ CONST SEGMENT ??_C@_0CA@KDIENFLL@XedDecode?5failed?5with?5error?5?$CFs?6@ DB 'XedDecode' DB ' failed with error %s', 0aH, 00H ; `string' CONST ENDS -; COMDAT ??_C@_0CI@IAPEEFOG@XedDecode?5failed?5in?5NcDeepCopyL@ +; COMDAT ??_C@_0CL@COPJALEP@XedDecode?5failed?5in?5NcDeepCopyL@ CONST SEGMENT -??_C@_0CI@IAPEEFOG@XedDecode?5failed?5in?5NcDeepCopyL@ DB 'XedDecode fail' - DB 'ed in NcDeepCopyLink: %s', 0aH, 00H ; `string' +??_C@_0CL@COPJALEP@XedDecode?5failed?5in?5NcDeepCopyL@ DB 'XedDecode fail' + DB 'ed in NcDeepCopyLink: %s %u', 0aH, 00H ; `string' CONST ENDS ; COMDAT ??_C@_0DF@KKBEBOEB@Failed?5to?5validate?5jump?4?5Type?3?5@ CONST SEGMENT @@ -2038,13 +1976,6 @@ $unwind$??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z DD 025052a01H xdata 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 $unwind$??$_Find_unchecked1@PEAKK@std@@YAPEAKPEAKQEAKAEBKU?$integral_constant@_N$0A@@0@@Z DD 025053901H DD 011d2322H DD 07016001dH @@ -2073,26 +2004,6 @@ $unwind$??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std 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 $unwind$??$_Seek_wrapped@V?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@PEAK@std@@YAXAEAV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@0@$$QEAPEAK@Z DD 025052f01H DD 01132318H DD 0700c001dH @@ -2380,46 +2291,6 @@ $unwind$??$?0$$V@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simpl 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 @@ -2870,7 +2741,7 @@ xdata ENDS xdata SEGMENT $unwind$?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z DD 025052a01H DD 010e2313H - DD 070070029H + DD 07007002dH DD 05006H xdata ENDS ; COMDAT xdata @@ -3050,61 +2921,32 @@ $unwind$?NcGetDeltaToLabel@@YAHPEAU_NATIVE_CODE_LINK@@PEAH@Z DD 025052f01H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?NcDeepCopyBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU1@@Z DD 025052a01H - DD 010e2313H - DD 07007001dH - DD 05006H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?dtor$0@?0??NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA DD 031001H - DD 0700c4210H +$unwind$?NcDeepCopyBlock@@YAHPEAU_NATIVE_CODE_BLOCK@@0@Z DD 025052f01H + DD 01132318H + DD 0700c001dH DD 0500bH xdata ENDS ; COMDAT xdata xdata SEGMENT -$ip2state$?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DB 06H - DB 00H - DB 00H - DB 'y', 02H - DB 02H - DB 'p' - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$stateUnwindMap$?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DB 02H - DB 0eH - DD imagerel ?dtor$0@?0??NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DB 028H - DD imagerel $stateUnwindMap$?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z - DD imagerel $ip2state$?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DD 025054019H - DD 01132318H - DD 0700c0047H - DD 0500bH - DD imagerel __GSHandlerCheck_EH4 - DD imagerel $cppxdata$?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z - DD 0222H +$unwind$?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z DD 025054519H + DD 0118231dH + DD 070110037H + DD 05010H + DD imagerel __GSHandlerCheck + DD 01a0H xdata ENDS ; COMDAT CONST CONST SEGMENT -?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcName$0 DB 04cH ; NcDeepCopyPartialBlock +?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z$rtcName$0 DB 04cH ; NcDeepCopyPartialBlock DB 00H ORG $+14 -?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcVarDesc DD 0a4H ; NcDeepCopyPartialBlock +?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z$rtcVarDesc DD 084H ; NcDeepCopyPartialBlock DD 04H - DQ FLAT:?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcName$0 + DQ FLAT:?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z$rtcName$0 ORG $+48 -?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcFrameData DD 01H ; NcDeepCopyPartialBlock +?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z$rtcFrameData DD 01H ; NcDeepCopyPartialBlock DD 00H - DQ FLAT:?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcVarDesc + DQ FLAT:?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z$rtcVarDesc CONST ENDS ; COMDAT xdata xdata SEGMENT @@ -3129,7 +2971,7 @@ $ip2state$?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z DB 0aH DB 00H DB 'D' DB 04H - DB 0b0H + DB 0c0H DB 00H xdata ENDS ; COMDAT xdata @@ -3148,9 +2990,9 @@ $cppxdata$?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z DD 025052a11H - DD 010e2313H - DD 070070039H +$unwind$?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z DD 035052a11H + DD 010e3313H + DD 07007003bH DD 05006H DD imagerel __CxxFrameHandler4 DD imagerel $cppxdata$?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z @@ -3257,7 +3099,7 @@ xdata SEGMENT $ip2state$?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z DB 0aH DB 00H DB 00H - DB 'a', 05H + DB 0c1H, 05H DB 02H DB 0aeH DB 04H @@ -3431,20 +3273,6 @@ $unwind$?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z D xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z DD 025052e01H - DD 01122317H - DD 0700b001dH - DD 0500aH -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 $unwind$??0_NATIVE_CODE_BLOCK@@QEAA@XZ DD 025052a01H DD 010e2313H DD 07007001dH @@ -3585,26 +3413,6 @@ $unwind$?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ DD 025051e01H 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$?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z DD 025053901H DD 011d2322H DD 07016002fH @@ -3814,42 +3622,6 @@ $unwind$?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z DD 025052f01H 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 $ip2state$??0?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ DB 02H DB 00H DB 00H @@ -3951,40 +3723,40 @@ $unwind$??1_NATIVE_CODE_LINK@@QEAA@XZ DD 025052a19H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z@4HA DD 031001H +$unwind$?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z@4HA DD 031001H DD 0700c4210H DD 0500bH xdata ENDS ; COMDAT xdata xdata SEGMENT -$ip2state$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z DB 06H +$ip2state$??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z DB 06H DB 00H DB 00H DB 0a2H DB 02H - DB 'i', 02H + DB 08dH, 02H DB 00H xdata ENDS ; COMDAT xdata xdata SEGMENT -$stateUnwindMap$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z DB 02H +$stateUnwindMap$??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z DB 02H DB 0eH - DD imagerel ?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z@4HA + DD imagerel ?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z@4HA xdata ENDS ; COMDAT xdata xdata SEGMENT -$cppxdata$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z DB 028H - DD imagerel $stateUnwindMap$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z - DD imagerel $ip2state$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z +$cppxdata$??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z DB 028H + DD imagerel $stateUnwindMap$??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z + DD imagerel $ip2state$??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z DD 025053811H +$unwind$??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z DD 025053811H DD 011c2321H DD 070150021H DD 05014H DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z + DD imagerel $cppxdata$??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z xdata ENDS ; COMDAT xdata xdata SEGMENT @@ -5081,55 +4853,6 @@ $LN3: ??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z ENDP ; std::_Get_unwrapped _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\xutility ; COMDAT ??$_Find_unchecked1@PEAKK@std@@YAPEAKPEAKQEAKAEBKU?$integral_constant@_N$0A@@0@@Z _TEXT SEGMENT @@ -5523,61 +5246,6 @@ $LN11@Allocate_m: ??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z ENDP ; std::_Allocate_manually_vector_aligned _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\xutility ; COMDAT ??$_Seek_wrapped@V?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@PEAK@std@@YAXAEAV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@0@$$QEAPEAK@Z _TEXT SEGMENT @@ -6858,121 +6526,13 @@ $LN3: _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 +; COMDAT ??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@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 +this$ = 224 +__formal$ = 232 +??$?0K@?$allocator@U_Container_proxy@std@@@std@@QEAA@AEBV?$allocator@K@1@@Z PROC ; std::allocator::allocator, 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 {} +; 799 : constexpr allocator(const allocator<_Other>&) noexcept {} $LN3: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -9746,7 +9306,7 @@ tv142 = 368 Block$ = 416 ?NcPrintBlockCode@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcPrintBlockCode, COMDAT -; 565 : { +; 568 : { $LN10: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -9765,7 +9325,7 @@ $LN10: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 566 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) +; 569 : 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] @@ -9788,8 +9348,8 @@ $LN4@NcPrintBlo: 0006e 0f 84 eb 00 00 00 je $LN3@NcPrintBlo -; 567 : { -; 568 : if (!(T->Flags & CODE_FLAG_IS_LABEL)) +; 570 : { +; 571 : if (!(T->Flags & CODE_FLAG_IS_LABEL)) 00074 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] 00078 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -9798,8 +9358,8 @@ $LN4@NcPrintBlo: 00080 0f 85 d4 00 00 00 jne $LN8@NcPrintBlo -; 569 : { -; 570 : for (uint32_t i = 0; i < T->RawDataSize; i++) +; 572 : { +; 573 : for (uint32_t i = 0; i < T->RawDataSize; i++) 00086 c7 45 24 00 00 00 00 mov DWORD PTR i$2[rbp], 0 @@ -9815,8 +9375,8 @@ $LN7@NcPrintBlo: 000a1 0f 83 b3 00 00 00 jae $LN6@NcPrintBlo -; 571 : { -; 572 : std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)T->RawData[i] << ' '; +; 574 : { +; 575 : std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)T->RawData[i] << ' '; 000a7 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?hex@std@@YAAEAVios_base@1@AEAV21@@Z ; std::hex @@ -9868,19 +9428,19 @@ $LN7@NcPrintBlo: 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<< > -; 573 : } +; 576 : } 00155 e9 35 ff ff ff jmp $LN5@NcPrintBlo $LN6@NcPrintBlo: $LN8@NcPrintBlo: -; 574 : } -; 575 : } +; 577 : } +; 578 : } 0015a e9 e7 fe ff ff jmp $LN2@NcPrintBlo $LN3@NcPrintBlo: -; 576 : } +; 579 : } 0015f 48 8d a5 88 01 00 00 lea rsp, QWORD PTR [rbp+392] @@ -9901,7 +9461,7 @@ tv129 = 280 Block$ = 320 ?NcDebugPrint@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcDebugPrint, COMDAT -; 535 : { +; 538 : { $LN11: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -9920,25 +9480,25 @@ $LN11: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 536 : HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE); +; 539 : 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 -; 537 : if (!ConsoleHandle) +; 540 : if (!ConsoleHandle) 00045 48 83 7d 08 00 cmp QWORD PTR ConsoleHandle$[rbp], 0 0004a 75 05 jne SHORT $LN5@NcDebugPri -; 538 : return; +; 541 : return; 0004c e9 03 01 00 00 jmp $LN1@NcDebugPri $LN5@NcDebugPri: -; 539 : -; 540 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) +; 542 : +; 543 : 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] @@ -9961,8 +9521,8 @@ $LN4@NcDebugPri: 00089 0f 84 c5 00 00 00 je $LN3@NcDebugPri -; 541 : { -; 542 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 544 : { +; 545 : if (T->Flags & CODE_FLAG_IS_LABEL) 0008f 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] 00093 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -9970,15 +9530,15 @@ $LN4@NcDebugPri: 00099 85 c0 test eax, eax 0009b 74 26 je SHORT $LN6@NcDebugPri -; 543 : { -; 544 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_RED); +; 546 : { +; 547 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_RED); 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 -; 545 : printf("Label: %u\n", T->Label); +; 548 : printf("Label: %u\n", T->Label); 000ab 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] 000af 8b 50 1c mov edx, DWORD PTR [rax+28] @@ -9986,14 +9546,14 @@ $LN4@NcDebugPri: 00 00 lea rcx, OFFSET FLAT:??_C@_0L@ILJOJNOL@Label?3?5?$CFu?6@ 000b9 e8 00 00 00 00 call printf -; 546 : } +; 549 : } 000be e9 8c 00 00 00 jmp $LN7@NcDebugPri $LN6@NcDebugPri: -; 547 : else -; 548 : { -; 549 : XED_ICLASS_ENUM IClass = XedDecodedInstGetIClass(&T->XedInstruction); +; 550 : else +; 551 : { +; 552 : XED_ICLASS_ENUM IClass = XedDecodedInstGetIClass(&T->XedInstruction); 000c3 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] 000c7 48 83 c0 30 add rax, 48 ; 00000030H @@ -10001,7 +9561,7 @@ $LN6@NcDebugPri: 000ce e8 00 00 00 00 call xed_decoded_inst_get_iclass 000d3 89 45 44 mov DWORD PTR IClass$2[rbp], eax -; 550 : if (T->Flags & CODE_FLAG_IS_REL_JMP) +; 553 : if (T->Flags & CODE_FLAG_IS_REL_JMP) 000d6 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] 000da 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -10009,15 +9569,15 @@ $LN6@NcDebugPri: 000e0 85 c0 test eax, eax 000e2 74 46 je SHORT $LN8@NcDebugPri -; 551 : { -; 552 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_RED); +; 554 : { +; 555 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_RED); 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 -; 553 : printf("%s: %u\n", XedIClassEnumToString(IClass), T->Label); +; 556 : 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] @@ -10035,21 +9595,21 @@ $LN6@NcDebugPri: 00 00 lea rcx, OFFSET FLAT:??_C@_07KNNCJAOA@?$CFs?3?5?$CFu?6@ 00123 e8 00 00 00 00 call printf -; 554 : } +; 557 : } 00128 eb 25 jmp SHORT $LN9@NcDebugPri $LN8@NcDebugPri: -; 555 : else -; 556 : { -; 557 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_BLUE); +; 558 : else +; 559 : { +; 560 : SetConsoleTextAttribute(ConsoleHandle, FOREGROUND_GREEN | FOREGROUND_BLUE); 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 -; 558 : printf("%s\n", XedIClassEnumToString(IClass)); +; 561 : printf("%s\n", XedIClassEnumToString(IClass)); 00138 8b 4d 44 mov ecx, DWORD PTR IClass$2[rbp] 0013b e8 00 00 00 00 call xed_iclass_enum_t2str @@ -10060,15 +9620,15 @@ $LN8@NcDebugPri: $LN9@NcDebugPri: $LN7@NcDebugPri: -; 559 : } -; 560 : } -; 561 : } +; 562 : } +; 563 : } +; 564 : } 0014f e9 0d ff ff ff jmp $LN2@NcDebugPri $LN3@NcDebugPri: $LN1@NcDebugPri: -; 562 : } +; 565 : } 00154 48 8d a5 28 01 00 00 lea rsp, QWORD PTR [rbp+296] @@ -10081,110 +9641,119 @@ _TEXT ENDS ; File C:\$Fanta\code-virtualizer\CodeVirtualizer\NativeCode.cpp ; COMDAT ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z _TEXT SEGMENT -T$1 = 8 -Next$2 = 40 -$T3 = 264 -tv77 = 280 -Block$ = 320 +BlockEnding$ = 8 +T$1 = 40 +Next$2 = 72 +$T3 = 296 +tv78 = 312 +Block$ = 352 ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcDeleteBlock, COMDAT -; 522 : { +; 523 : { $LN10: 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 + 00007 48 81 ec 68 01 + 00 00 sub rsp, 360 ; 00000168H 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 + 00016 b9 5a 00 00 00 mov ecx, 90 ; 0000005aH 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] + 00022 48 8b 8c 24 88 + 01 00 00 mov rcx, QWORD PTR [rsp+392] 0002a 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 523 : if (!Block->Start || !Block->End) +; 524 : if (!Block->Start || !Block->End) - 00036 48 8b 85 40 01 + 00036 48 8b 85 60 01 00 00 mov rax, QWORD PTR Block$[rbp] 0003d 48 83 38 00 cmp QWORD PTR [rax], 0 00041 74 0e je SHORT $LN6@NcDeleteBl - 00043 48 8b 85 40 01 + 00043 48 8b 85 60 01 00 00 mov rax, QWORD PTR Block$[rbp] 0004a 48 83 78 08 00 cmp QWORD PTR [rax+8], 0 - 0004f 75 02 jne SHORT $LN5@NcDeleteBl + 0004f 75 05 jne SHORT $LN5@NcDeleteBl $LN6@NcDeleteBl: -; 524 : return; +; 525 : return; - 00051 eb 71 jmp SHORT $LN1@NcDeleteBl + 00051 e9 80 00 00 00 jmp $LN1@NcDeleteBl $LN5@NcDeleteBl: -; 525 : -; 526 : for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next;) +; 526 : +; 527 : PNATIVE_CODE_LINK BlockEnding = Block->End->Next; - 00053 48 8b 85 40 01 + 00056 48 8b 85 60 01 00 00 mov rax, QWORD PTR Block$[rbp] - 0005a 48 8b 00 mov rax, QWORD PTR [rax] - 0005d 48 89 45 08 mov QWORD PTR T$1[rbp], rax -$LN2@NcDeleteBl: - 00061 48 8b 85 40 01 + 0005d 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 00061 48 8b 00 mov rax, QWORD PTR [rax] + 00064 48 89 45 08 mov QWORD PTR BlockEnding$[rbp], rax + +; 528 : +; 529 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != BlockEnding;) + + 00068 48 8b 85 60 01 00 00 mov rax, QWORD PTR Block$[rbp] - 00068 48 8b 40 08 mov rax, QWORD PTR [rax+8] - 0006c 48 8b 00 mov rax, QWORD PTR [rax] - 0006f 48 39 45 08 cmp QWORD PTR T$1[rbp], rax - 00073 74 4f je SHORT $LN3@NcDeleteBl + 0006f 48 8b 00 mov rax, QWORD PTR [rax] + 00072 48 89 45 28 mov QWORD PTR T$1[rbp], rax +$LN2@NcDeleteBl: + 00076 48 83 7d 28 00 cmp QWORD PTR T$1[rbp], 0 + 0007b 74 59 je SHORT $LN3@NcDeleteBl + 0007d 48 8b 45 08 mov rax, QWORD PTR BlockEnding$[rbp] + 00081 48 39 45 28 cmp QWORD PTR T$1[rbp], rax + 00085 74 4f je SHORT $LN3@NcDeleteBl -; 527 : { -; 528 : PNATIVE_CODE_LINK Next = T->Next; +; 530 : { +; 531 : 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 + 00087 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 0008b 48 8b 00 mov rax, QWORD PTR [rax] + 0008e 48 89 45 48 mov QWORD PTR Next$2[rbp], rax -; 529 : delete T; +; 532 : delete T; - 00080 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] - 00084 48 89 85 08 01 + 00092 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 00096 48 89 85 28 01 00 00 mov QWORD PTR $T3[rbp], rax - 0008b 48 83 bd 08 01 + 0009d 48 83 bd 28 01 00 00 00 cmp QWORD PTR $T3[rbp], 0 - 00093 74 1a je SHORT $LN8@NcDeleteBl - 00095 ba 01 00 00 00 mov edx, 1 - 0009a 48 8b 8d 08 01 + 000a5 74 1a je SHORT $LN8@NcDeleteBl + 000a7 ba 01 00 00 00 mov edx, 1 + 000ac 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T3[rbp] - 000a1 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z - 000a6 48 89 85 18 01 - 00 00 mov QWORD PTR tv77[rbp], rax - 000ad eb 0b jmp SHORT $LN9@NcDeleteBl + 000b3 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z + 000b8 48 89 85 38 01 + 00 00 mov QWORD PTR tv78[rbp], rax + 000bf eb 0b jmp SHORT $LN9@NcDeleteBl $LN8@NcDeleteBl: - 000af 48 c7 85 18 01 + 000c1 48 c7 85 38 01 00 00 00 00 00 - 00 mov QWORD PTR tv77[rbp], 0 + 00 mov QWORD PTR tv78[rbp], 0 $LN9@NcDeleteBl: -; 530 : T = Next; +; 533 : 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 + 000cc 48 8b 45 48 mov rax, QWORD PTR Next$2[rbp] + 000d0 48 89 45 28 mov QWORD PTR T$1[rbp], rax -; 531 : } +; 534 : } - 000c2 eb 9d jmp SHORT $LN2@NcDeleteBl + 000d4 eb a0 jmp SHORT $LN2@NcDeleteBl $LN3@NcDeleteBl: $LN1@NcDeleteBl: -; 532 : } +; 535 : } - 000c4 48 8d a5 28 01 - 00 00 lea rsp, QWORD PTR [rbp+296] - 000cb 5f pop rdi - 000cc 5d pop rbp - 000cd c3 ret 0 + 000d6 48 8d a5 48 01 + 00 00 lea rsp, QWORD PTR [rbp+328] + 000dd 5f pop rdi + 000de 5d pop rbp + 000df c3 ret 0 ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; NcDeleteBlock _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -10198,7 +9767,7 @@ Block$ = 320 OutSize$ = 328 ?NcAssemble@@YAPEAXPEAU_NATIVE_CODE_BLOCK@@PEAK@Z PROC ; NcAssemble, COMDAT -; 497 : { +; 498 : { $LN9: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -10218,7 +9787,7 @@ $LN9: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 498 : if (!NcFixRelJmps(Block)) +; 499 : if (!NcFixRelJmps(Block)) 0003b 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR Block$[rbp] @@ -10226,14 +9795,14 @@ $LN9: 00047 85 c0 test eax, eax 00049 75 07 jne SHORT $LN5@NcAssemble -; 499 : return NULL; +; 500 : return NULL; 0004b 33 c0 xor eax, eax 0004d e9 bc 00 00 00 jmp $LN1@NcAssemble $LN5@NcAssemble: -; 500 : -; 501 : *OutSize = NcCalcBlockSize(Block); +; 501 : +; 502 : *OutSize = NcCalcBlockSize(Block); 00052 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR Block$[rbp] @@ -10242,8 +9811,8 @@ $LN5@NcAssemble: 00 00 mov rcx, QWORD PTR OutSize$[rbp] 00065 89 01 mov DWORD PTR [rcx], eax -; 502 : -; 503 : PUCHAR Buffer = (PUCHAR)malloc(*OutSize); +; 503 : +; 504 : PUCHAR Buffer = (PUCHAR)malloc(*OutSize); 00067 48 8b 85 48 01 00 00 mov rax, QWORD PTR OutSize$[rbp] @@ -10253,25 +9822,25 @@ $LN5@NcAssemble: 00 call QWORD PTR __imp_malloc 00078 48 89 45 08 mov QWORD PTR Buffer$[rbp], rax -; 504 : if (!Buffer) +; 505 : if (!Buffer) 0007c 48 83 7d 08 00 cmp QWORD PTR Buffer$[rbp], 0 00081 75 07 jne SHORT $LN6@NcAssemble -; 505 : return NULL; +; 506 : return NULL; 00083 33 c0 xor eax, eax 00085 e9 84 00 00 00 jmp $LN1@NcAssemble $LN6@NcAssemble: -; 506 : -; 507 : PUCHAR BufferOffset = Buffer; +; 507 : +; 508 : PUCHAR BufferOffset = Buffer; 0008a 48 8b 45 08 mov rax, QWORD PTR Buffer$[rbp] 0008e 48 89 45 28 mov QWORD PTR BufferOffset$[rbp], rax -; 508 : -; 509 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) +; 509 : +; 510 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) 00092 48 8b 85 40 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -10292,8 +9861,8 @@ $LN4@NcAssemble: 000c2 48 39 45 48 cmp QWORD PTR T$1[rbp], rax 000c6 74 42 je SHORT $LN3@NcAssemble -; 510 : { -; 511 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 511 : { +; 512 : if (T->Flags & CODE_FLAG_IS_LABEL) 000c8 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] 000cc 8b 40 18 mov eax, DWORD PTR [rax+24] @@ -10301,13 +9870,13 @@ $LN4@NcAssemble: 000d2 85 c0 test eax, eax 000d4 74 02 je SHORT $LN7@NcAssemble -; 512 : continue; +; 513 : continue; 000d6 eb ca jmp SHORT $LN2@NcAssemble $LN7@NcAssemble: -; 513 : -; 514 : RtlCopyMemory(BufferOffset, T->RawData, T->RawDataSize); +; 514 : +; 515 : RtlCopyMemory(BufferOffset, T->RawData, T->RawDataSize); 000d8 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] 000dc 8b 40 28 mov eax, DWORD PTR [rax+40] @@ -10317,7 +9886,7 @@ $LN7@NcAssemble: 000ea 48 8b 4d 28 mov rcx, QWORD PTR BufferOffset$[rbp] 000ee e8 00 00 00 00 call memcpy -; 515 : BufferOffset += T->RawDataSize; +; 516 : BufferOffset += T->RawDataSize; 000f3 48 8b 45 48 mov rax, QWORD PTR T$1[rbp] 000f7 8b 40 28 mov eax, DWORD PTR [rax+40] @@ -10326,18 +9895,18 @@ $LN7@NcAssemble: 00101 48 8b c1 mov rax, rcx 00104 48 89 45 28 mov QWORD PTR BufferOffset$[rbp], rax -; 516 : } +; 517 : } 00108 eb 98 jmp SHORT $LN2@NcAssemble $LN3@NcAssemble: -; 517 : -; 518 : return Buffer; +; 518 : +; 519 : return Buffer; 0010a 48 8b 45 08 mov rax, QWORD PTR Buffer$[rbp] $LN1@NcAssemble: -; 519 : } +; 520 : } 0010e 48 8d a5 28 01 00 00 lea rsp, QWORD PTR [rbp+296] @@ -10367,7 +9936,7 @@ Buffer$ = 520 BufferSize$ = 528 ?NcDisassemble@@YAHPEAU_NATIVE_CODE_BLOCK@@PEAXK@Z PROC ; NcDisassemble, COMDAT -; 465 : { +; 466 : { $LN13: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -10388,20 +9957,20 @@ $LN13: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 466 : PUCHAR Buf = (PUCHAR)Buffer; +; 467 : 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 -; 467 : ULONG Offset = 0; +; 468 : ULONG Offset = 0; 0004b c7 45 24 00 00 00 00 mov DWORD PTR Offset$[rbp], 0 $LN2@NcDisassem: -; 468 : -; 469 : while (Offset < BufferSize) +; 469 : +; 470 : while (Offset < BufferSize) 00052 8b 85 10 02 00 00 mov eax, DWORD PTR BufferSize$[rbp] @@ -10409,8 +9978,8 @@ $LN2@NcDisassem: 0005b 0f 83 b8 01 00 00 jae $LN3@NcDisassem -; 470 : { -; 471 : PNATIVE_CODE_LINK Link = new NATIVE_CODE_LINK; +; 471 : { +; 472 : 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 @@ -10438,13 +10007,13 @@ $LN7@NcDisassem: 00 00 mov rax, QWORD PTR $T4[rbp] 000b1 48 89 45 48 mov QWORD PTR Link$1[rbp], rax -; 472 : Link->Flags = CODE_FLAG_IS_INST; +; 473 : 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 -; 473 : ULONG PossibleSize = min(15, BufferSize - Offset); +; 474 : ULONG PossibleSize = min(15, BufferSize - Offset); 000c0 8b 45 24 mov eax, DWORD PTR Offset$[rbp] 000c3 8b 8d 10 02 00 @@ -10469,7 +10038,7 @@ $LN9@NcDisassem: 00 mov eax, DWORD PTR tv80[rbp] 000f7 89 45 64 mov DWORD PTR PossibleSize$2[rbp], eax -; 474 : XED_ERROR_ENUM DecodeError = XedDecode(&Link->XedInstruction, (Buf + Offset), PossibleSize); +; 475 : 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] @@ -10483,14 +10052,14 @@ $LN9@NcDisassem: 0011b 89 85 84 00 00 00 mov DWORD PTR DecodeError$3[rbp], eax -; 475 : if (DecodeError != XED_ERROR_NONE) +; 476 : 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 -; 476 : { -; 477 : printf("XedDecode failed with error %s\n", XedErrorEnumToString(DecodeError)); +; 477 : { +; 478 : printf("XedDecode failed with error %s\n", XedErrorEnumToString(DecodeError)); 0012a 8b 8d 84 00 00 00 mov ecx, DWORD PTR DecodeError$3[rbp] @@ -10500,13 +10069,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 -; 478 : NcDeleteBlock(Block); +; 479 : 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 -; 479 : delete Link; +; 480 : delete Link; 00150 48 8b 45 48 mov rax, QWORD PTR Link$1[rbp] 00154 48 89 85 a8 01 @@ -10527,14 +10096,14 @@ $LN10@NcDisassem: 00 mov QWORD PTR tv130[rbp], 0 $LN11@NcDisassem: -; 480 : return FALSE; +; 481 : return FALSE; 0018a 33 c0 xor eax, eax 0018c e9 99 00 00 00 jmp $LN1@NcDisassem $LN4@NcDisassem: -; 481 : } -; 482 : Link->RawDataSize = XedDecodedInstGetLength(&Link->XedInstruction); +; 482 : } +; 483 : 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 @@ -10543,7 +10112,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 -; 483 : Link->RawData = new UCHAR[Link->RawDataSize]; +; 484 : 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] @@ -10556,7 +10125,7 @@ $LN4@NcDisassem: 00 00 mov rcx, QWORD PTR $T7[rbp] 001c8 48 89 48 20 mov QWORD PTR [rax+32], rcx -; 484 : RtlCopyMemory(Link->RawData, (Buf + Offset), Link->RawDataSize); +; 485 : 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] @@ -10570,16 +10139,16 @@ $LN4@NcDisassem: 001ea 48 8b 48 20 mov rcx, QWORD PTR [rax+32] 001ee e8 00 00 00 00 call memcpy -; 485 : -; 486 : NcAppendToBlock(Block, Link); +; 486 : +; 487 : 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 -; 487 : -; 488 : Offset += Link->RawDataSize; +; 488 : +; 489 : 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] @@ -10588,25 +10157,25 @@ $LN4@NcDisassem: 0020f 8b c1 mov eax, ecx 00211 89 45 24 mov DWORD PTR Offset$[rbp], eax -; 489 : } +; 490 : } 00214 e9 39 fe ff ff jmp $LN2@NcDisassem $LN3@NcDisassem: -; 490 : -; 491 : NcCreateLabels(Block); +; 491 : +; 492 : 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 -; 492 : -; 493 : return TRUE; +; 493 : +; 494 : return TRUE; 00225 b8 01 00 00 00 mov eax, 1 $LN1@NcDisassem: -; 494 : } +; 495 : } 0022a 48 8d a5 e8 01 00 00 lea rsp, QWORD PTR [rbp+488] @@ -10702,12 +10271,12 @@ $T19 = 1576 $T20 = 1656 $T21 = 1688 $T22 = 1728 -tv183 = 1780 +tv184 = 1780 __$ArrayPad$ = 1784 Block$ = 1824 ?NcFixRelJmps@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcFixRelJmps, COMDAT -; 385 : { +; 386 : { $LN21: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -10732,434 +10301,437 @@ $LN21: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00043 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 386 : for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next;) +; 387 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next;) 00048 48 8b 85 20 07 00 00 mov rax, QWORD PTR Block$[rbp] 0004f 48 8b 00 mov rax, QWORD PTR [rax] 00052 48 89 45 08 mov QWORD PTR T$9[rbp], rax $LN2@NcFixRelJm: - 00056 48 8b 85 20 07 + 00056 48 83 7d 08 00 cmp QWORD PTR T$9[rbp], 0 + 0005b 0f 84 1c 03 00 + 00 je $LN3@NcFixRelJm + 00061 48 8b 85 20 07 00 00 mov rax, QWORD PTR Block$[rbp] - 0005d 48 8b 40 08 mov rax, QWORD PTR [rax+8] - 00061 48 8b 00 mov rax, QWORD PTR [rax] - 00064 48 39 45 08 cmp QWORD PTR T$9[rbp], rax - 00068 0f 84 04 03 00 + 00068 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 0006c 48 8b 00 mov rax, QWORD PTR [rax] + 0006f 48 39 45 08 cmp QWORD PTR T$9[rbp], rax + 00073 0f 84 04 03 00 00 je $LN3@NcFixRelJm -; 387 : { -; 388 : if (T->Flags & CODE_FLAG_IS_REL_JMP) +; 388 : { +; 389 : 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] - 00075 83 e0 02 and eax, 2 - 00078 85 c0 test eax, eax - 0007a 0f 84 e2 02 00 + 00079 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 0007d 8b 40 18 mov eax, DWORD PTR [rax+24] + 00080 83 e0 02 and eax, 2 + 00083 85 c0 test eax, eax + 00085 0f 84 e2 02 00 00 je $LN7@NcFixRelJm -; 389 : { -; 390 : INT32 BranchDisp = 0; +; 390 : { +; 391 : INT32 BranchDisp = 0; - 00080 c7 45 24 00 00 + 0008b c7 45 24 00 00 00 00 mov DWORD PTR BranchDisp$10[rbp], 0 -; 391 : if (!NcGetDeltaToLabel(T, &BranchDisp)) +; 392 : 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] - 0008f e8 00 00 00 00 call ?NcGetDeltaToLabel@@YAHPEAU_NATIVE_CODE_LINK@@PEAH@Z ; NcGetDeltaToLabel - 00094 85 c0 test eax, eax - 00096 75 07 jne SHORT $LN8@NcFixRelJm + 00092 48 8d 55 24 lea rdx, QWORD PTR BranchDisp$10[rbp] + 00096 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] + 0009a e8 00 00 00 00 call ?NcGetDeltaToLabel@@YAHPEAU_NATIVE_CODE_LINK@@PEAH@Z ; NcGetDeltaToLabel + 0009f 85 c0 test eax, eax + 000a1 75 07 jne SHORT $LN8@NcFixRelJm -; 392 : return FALSE; +; 393 : return FALSE; - 00098 33 c0 xor eax, eax - 0009a e9 d8 02 00 00 jmp $LN1@NcFixRelJm + 000a3 33 c0 xor eax, eax + 000a5 e9 d8 02 00 00 jmp $LN1@NcFixRelJm $LN8@NcFixRelJm: -; 393 : -; 394 : ULONG DispWidth = XedDecodedInstGetBranchDisplacementWidthBits(&T->XedInstruction); +; 394 : +; 395 : 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 - 000a7 48 8b c8 mov rcx, rax - 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 + 000aa 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 000ae 48 83 c0 30 add rax, 48 ; 00000030H + 000b2 48 8b c8 mov rcx, rax + 000b5 e8 00 00 00 00 call xed_decoded_inst_get_branch_displacement_width_bits + 000ba 89 45 44 mov DWORD PTR DispWidth$11[rbp], eax -; 395 : if (log2(abs(BranchDisp)) + 1 > DispWidth) +; 396 : 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 - 000ba 8b c8 mov ecx, eax - 000bc e8 00 00 00 00 call ??$log2@H$0A@@@YANH@Z ; log2 - 000c1 f2 0f 58 05 00 + 000bd 8b 4d 24 mov ecx, DWORD PTR BranchDisp$10[rbp] + 000c0 e8 00 00 00 00 call abs + 000c5 8b c8 mov ecx, eax + 000c7 e8 00 00 00 00 call ??$log2@H$0A@@@YANH@Z ; log2 + 000cc f2 0f 58 05 00 00 00 00 addsd xmm0, QWORD PTR __real@3ff0000000000000 - 000c9 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] - 000cc f2 48 0f 2a c8 cvtsi2sd xmm1, rax - 000d1 66 0f 2f c1 comisd xmm0, xmm1 - 000d5 0f 86 f3 01 00 + 000d4 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] + 000d7 f2 48 0f 2a c8 cvtsi2sd xmm1, rax + 000dc 66 0f 2f c1 comisd xmm0, xmm1 + 000e0 0f 86 f3 01 00 00 jbe $LN9@NcFixRelJm -; 396 : { -; 397 : //duh oh -; 398 : if (DispWidth == 32) +; 397 : { +; 398 : //duh oh +; 399 : if (DispWidth == 32) - 000db 83 7d 44 20 cmp DWORD PTR DispWidth$11[rbp], 32 ; 00000020H - 000df 75 07 jne SHORT $LN11@NcFixRelJm + 000e6 83 7d 44 20 cmp DWORD PTR DispWidth$11[rbp], 32 ; 00000020H + 000ea 75 07 jne SHORT $LN11@NcFixRelJm -; 399 : return FALSE; +; 400 : return FALSE; - 000e1 33 c0 xor eax, eax - 000e3 e9 8f 02 00 00 jmp $LN1@NcFixRelJm + 000ec 33 c0 xor eax, eax + 000ee e9 8f 02 00 00 jmp $LN1@NcFixRelJm $LN11@NcFixRelJm: -; 400 : -; 401 : //Grow displacement width to required size -; 402 : DispWidth *= 2; +; 401 : +; 402 : //Grow displacement width to required size +; 403 : 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 + 000f3 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] + 000f6 d1 e0 shl eax, 1 + 000f8 89 45 44 mov DWORD PTR DispWidth$11[rbp], eax -; 403 : -; 404 : //Check again -; 405 : if (log2(abs(BranchDisp)) + 1 > DispWidth) +; 404 : +; 405 : //Check again +; 406 : 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 - 000f8 8b c8 mov ecx, eax - 000fa e8 00 00 00 00 call ??$log2@H$0A@@@YANH@Z ; log2 - 000ff f2 0f 58 05 00 + 000fb 8b 4d 24 mov ecx, DWORD PTR BranchDisp$10[rbp] + 000fe e8 00 00 00 00 call abs + 00103 8b c8 mov ecx, eax + 00105 e8 00 00 00 00 call ??$log2@H$0A@@@YANH@Z ; log2 + 0010a f2 0f 58 05 00 00 00 00 addsd xmm0, QWORD PTR __real@3ff0000000000000 - 00107 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] - 0010a f2 48 0f 2a c8 cvtsi2sd xmm1, rax - 0010f 66 0f 2f c1 comisd xmm0, xmm1 - 00113 76 15 jbe SHORT $LN12@NcFixRelJm + 00112 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] + 00115 f2 48 0f 2a c8 cvtsi2sd xmm1, rax + 0011a 66 0f 2f c1 comisd xmm0, xmm1 + 0011e 76 15 jbe SHORT $LN12@NcFixRelJm -; 406 : { -; 407 : if (DispWidth == 32) +; 407 : { +; 408 : if (DispWidth == 32) - 00115 83 7d 44 20 cmp DWORD PTR DispWidth$11[rbp], 32 ; 00000020H - 00119 75 07 jne SHORT $LN13@NcFixRelJm + 00120 83 7d 44 20 cmp DWORD PTR DispWidth$11[rbp], 32 ; 00000020H + 00124 75 07 jne SHORT $LN13@NcFixRelJm -; 408 : return FALSE; +; 409 : return FALSE; - 0011b 33 c0 xor eax, eax - 0011d e9 55 02 00 00 jmp $LN1@NcFixRelJm + 00126 33 c0 xor eax, eax + 00128 e9 55 02 00 00 jmp $LN1@NcFixRelJm $LN13@NcFixRelJm: -; 409 : -; 410 : //Grow once more if not already at 32 -; 411 : DispWidth *= 2; +; 410 : +; 411 : //Grow once more if not already at 32 +; 412 : 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 + 0012d 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] + 00130 d1 e0 shl eax, 1 + 00132 89 45 44 mov DWORD PTR DispWidth$11[rbp], eax $LN12@NcFixRelJm: -; 412 : } -; 413 : -; 414 : //Encode new instruction -; 415 : XED_STATE MachineState; -; 416 : MachineState.mmode = XED_MACHINE_MODE_LONG_64; +; 413 : } +; 414 : +; 415 : //Encode new instruction +; 416 : XED_STATE MachineState; +; 417 : MachineState.mmode = XED_MACHINE_MODE_LONG_64; - 0012a c7 45 68 01 00 + 00135 c7 45 68 01 00 00 00 mov DWORD PTR MachineState$12[rbp], 1 -; 417 : MachineState.stack_addr_width = XED_ADDRESS_WIDTH_64b; +; 418 : MachineState.stack_addr_width = XED_ADDRESS_WIDTH_64b; - 00131 c7 45 6c 08 00 + 0013c c7 45 6c 08 00 00 00 mov DWORD PTR MachineState$12[rbp+4], 8 -; 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 - 00140 48 8b c8 mov rcx, rax - 00143 e8 00 00 00 00 call xed_decoded_inst_get_iclass - 00148 89 85 74 03 00 +; 419 : XED_ENCODER_INSTRUCTION EncoderInstruction; +; 420 : XED_ENCODER_REQUEST EncoderRequest; +; 421 : UCHAR EncodeBuffer[15]; +; 422 : UINT ReturnedSize; +; 423 : XED_ICLASS_ENUM IClass = XedDecodedInstGetIClass(&T->XedInstruction); + + 00143 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 00147 48 83 c0 30 add rax, 48 ; 00000030H + 0014b 48 8b c8 mov rcx, rax + 0014e e8 00 00 00 00 call xed_decoded_inst_get_iclass + 00153 89 85 74 03 00 00 mov DWORD PTR IClass$17[rbp], eax -; 423 : -; 424 : //Do the encoding -; 425 : XedInst1(&EncoderInstruction, MachineState, IClass, DispWidth, XedRelBr(0, DispWidth)); +; 424 : +; 425 : //Do the encoding +; 426 : 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 - 00154 48 8d 8d 28 06 + 00159 44 8b 45 44 mov r8d, DWORD PTR DispWidth$11[rbp] + 0015d 33 d2 xor edx, edx + 0015f 48 8d 8d 28 06 00 00 lea rcx, QWORD PTR $T19[rbp] - 0015b e8 00 00 00 00 call xed_relbr - 00160 48 8d 8d d8 05 + 00166 e8 00 00 00 00 call xed_relbr + 0016b 48 8d 8d d8 05 00 00 lea rcx, QWORD PTR $T18[rbp] - 00167 48 8b f9 mov rdi, rcx - 0016a 48 8b f0 mov rsi, rax - 0016d b9 30 00 00 00 mov ecx, 48 ; 00000030H - 00172 f3 a4 rep movsb - 00174 48 8d 85 c0 06 + 00172 48 8b f9 mov rdi, rcx + 00175 48 8b f0 mov rsi, rax + 00178 b9 30 00 00 00 mov ecx, 48 ; 00000030H + 0017d f3 a4 rep movsb + 0017f 48 8d 85 c0 06 00 00 lea rax, QWORD PTR $T22[rbp] - 0017b 48 8d 8d d8 05 + 00186 48 8d 8d d8 05 00 00 lea rcx, QWORD PTR $T18[rbp] - 00182 48 8b f8 mov rdi, rax - 00185 48 8b f1 mov rsi, rcx - 00188 b9 30 00 00 00 mov ecx, 48 ; 00000030H - 0018d f3 a4 rep movsb - 0018f 48 8d 85 c0 06 + 0018d 48 8b f8 mov rdi, rax + 00190 48 8b f1 mov rsi, rcx + 00193 b9 30 00 00 00 mov ecx, 48 ; 00000030H + 00198 f3 a4 rep movsb + 0019a 48 8d 85 c0 06 00 00 lea rax, QWORD PTR $T22[rbp] - 00196 48 89 44 24 20 mov QWORD PTR [rsp+32], rax - 0019b 44 8b 4d 44 mov r9d, DWORD PTR DispWidth$11[rbp] - 0019f 44 8b 85 74 03 + 001a1 48 89 44 24 20 mov QWORD PTR [rsp+32], rax + 001a6 44 8b 4d 44 mov r9d, DWORD PTR DispWidth$11[rbp] + 001aa 44 8b 85 74 03 00 00 mov r8d, DWORD PTR IClass$17[rbp] - 001a6 48 8b 55 68 mov rdx, QWORD PTR MachineState$12[rbp] - 001aa 48 8d 8d 90 00 + 001b1 48 8b 55 68 mov rdx, QWORD PTR MachineState$12[rbp] + 001b5 48 8d 8d 90 00 00 00 lea rcx, QWORD PTR EncoderInstruction$13[rbp] - 001b1 e8 00 00 00 00 call xed_inst1 + 001bc e8 00 00 00 00 call xed_inst1 -; 426 : XedEncoderRequestZeroSetMode(&EncoderRequest, &MachineState); +; 427 : XedEncoderRequestZeroSetMode(&EncoderRequest, &MachineState); - 001b6 48 8d 55 68 lea rdx, QWORD PTR MachineState$12[rbp] - 001ba 48 8d 8d 50 02 + 001c1 48 8d 55 68 lea rdx, QWORD PTR MachineState$12[rbp] + 001c5 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 + 001cc e8 00 00 00 00 call xed_encoder_request_zero_set_mode -; 427 : if (!XedConvertToEncoderRequest(&EncoderRequest, &EncoderInstruction)) +; 428 : if (!XedConvertToEncoderRequest(&EncoderRequest, &EncoderInstruction)) - 001c6 48 8d 95 90 00 + 001d1 48 8d 95 90 00 00 00 lea rdx, QWORD PTR EncoderInstruction$13[rbp] - 001cd 48 8d 8d 50 02 + 001d8 48 8d 8d 50 02 00 00 lea rcx, QWORD PTR EncoderRequest$14[rbp] - 001d4 e8 00 00 00 00 call xed_convert_to_encoder_request - 001d9 85 c0 test eax, eax - 001db 75 07 jne SHORT $LN14@NcFixRelJm + 001df e8 00 00 00 00 call xed_convert_to_encoder_request + 001e4 85 c0 test eax, eax + 001e6 75 07 jne SHORT $LN14@NcFixRelJm -; 428 : return FALSE; +; 429 : return FALSE; - 001dd 33 c0 xor eax, eax - 001df e9 93 01 00 00 jmp $LN1@NcFixRelJm + 001e8 33 c0 xor eax, eax + 001ea e9 93 01 00 00 jmp $LN1@NcFixRelJm $LN14@NcFixRelJm: -; 429 : if (XED_ERROR_NONE != XedEncode(&EncoderRequest, EncodeBuffer, 15, &ReturnedSize)) +; 430 : if (XED_ERROR_NONE != XedEncode(&EncoderRequest, EncodeBuffer, 15, &ReturnedSize)) - 001e4 4c 8d 8d 54 03 + 001ef 4c 8d 8d 54 03 00 00 lea r9, QWORD PTR ReturnedSize$16[rbp] - 001eb 41 b8 0f 00 00 + 001f6 41 b8 0f 00 00 00 mov r8d, 15 - 001f1 48 8d 95 28 03 + 001fc 48 8d 95 28 03 00 00 lea rdx, QWORD PTR EncodeBuffer$15[rbp] - 001f8 48 8d 8d 50 02 + 00203 48 8d 8d 50 02 00 00 lea rcx, QWORD PTR EncoderRequest$14[rbp] - 001ff e8 00 00 00 00 call xed_encode - 00204 85 c0 test eax, eax - 00206 74 07 je SHORT $LN15@NcFixRelJm + 0020a e8 00 00 00 00 call xed_encode + 0020f 85 c0 test eax, eax + 00211 74 07 je SHORT $LN15@NcFixRelJm -; 430 : return FALSE; +; 431 : return FALSE; - 00208 33 c0 xor eax, eax - 0020a e9 68 01 00 00 jmp $LN1@NcFixRelJm + 00213 33 c0 xor eax, eax + 00215 e9 68 01 00 00 jmp $LN1@NcFixRelJm $LN15@NcFixRelJm: -; 431 : -; 432 : //fixup T->RawData -; 433 : delete[] T->RawData; +; 432 : +; 433 : //fixup T->RawData +; 434 : 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] - 00217 48 89 85 78 06 + 0021a 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 0021e 48 8b 40 20 mov rax, QWORD PTR [rax+32] + 00222 48 89 85 78 06 00 00 mov QWORD PTR $T20[rbp], rax - 0021e 48 8b 8d 78 06 + 00229 48 8b 8d 78 06 00 00 mov rcx, QWORD PTR $T20[rbp] - 00225 e8 00 00 00 00 call ??_V@YAXPEAX@Z ; operator delete[] + 00230 e8 00 00 00 00 call ??_V@YAXPEAX@Z ; operator delete[] -; 434 : T->RawDataSize = ReturnedSize; +; 435 : T->RawDataSize = ReturnedSize; - 0022a 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] - 0022e 8b 8d 54 03 00 + 00235 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 00239 8b 8d 54 03 00 00 mov ecx, DWORD PTR ReturnedSize$16[rbp] - 00234 89 48 28 mov DWORD PTR [rax+40], ecx + 0023f 89 48 28 mov DWORD PTR [rax+40], ecx -; 435 : T->RawData = new UCHAR[ReturnedSize]; +; 436 : T->RawData = new UCHAR[ReturnedSize]; - 00237 8b 85 54 03 00 + 00242 8b 85 54 03 00 00 mov eax, DWORD PTR ReturnedSize$16[rbp] - 0023d 8b c8 mov ecx, eax - 0023f e8 00 00 00 00 call ??_U@YAPEAX_K@Z ; operator new[] - 00244 48 89 85 98 06 + 00248 8b c8 mov ecx, eax + 0024a e8 00 00 00 00 call ??_U@YAPEAX_K@Z ; operator new[] + 0024f 48 89 85 98 06 00 00 mov QWORD PTR $T21[rbp], rax - 0024b 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] - 0024f 48 8b 8d 98 06 + 00256 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 0025a 48 8b 8d 98 06 00 00 mov rcx, QWORD PTR $T21[rbp] - 00256 48 89 48 20 mov QWORD PTR [rax+32], rcx + 00261 48 89 48 20 mov QWORD PTR [rax+32], rcx -; 436 : RtlCopyMemory(T->RawData, EncodeBuffer, ReturnedSize); +; 437 : RtlCopyMemory(T->RawData, EncodeBuffer, ReturnedSize); - 0025a 8b 85 54 03 00 + 00265 8b 85 54 03 00 00 mov eax, DWORD PTR ReturnedSize$16[rbp] - 00260 44 8b c0 mov r8d, eax - 00263 48 8d 95 28 03 + 0026b 44 8b c0 mov r8d, eax + 0026e 48 8d 95 28 03 00 00 lea rdx, QWORD PTR EncodeBuffer$15[rbp] - 0026a 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] - 0026e 48 8b 48 20 mov rcx, QWORD PTR [rax+32] - 00272 e8 00 00 00 00 call memcpy - -; 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 - 0027f 48 8d 55 68 lea rdx, QWORD PTR MachineState$12[rbp] - 00283 48 8b c8 mov rcx, rax - 00286 e8 00 00 00 00 call xed_decoded_inst_zero_set_mode - -; 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 - 00293 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] - 00297 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] - 0029b 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] - 0029f 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 002a3 48 8b c8 mov rcx, rax - 002a6 e8 00 00 00 00 call xed_decode - 002ab 85 c0 test eax, eax - 002ad 74 07 je SHORT $LN16@NcFixRelJm - -; 441 : return FALSE; - - 002af 33 c0 xor eax, eax - 002b1 e9 c1 00 00 00 jmp $LN1@NcFixRelJm + 00275 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 00279 48 8b 48 20 mov rcx, QWORD PTR [rax+32] + 0027d e8 00 00 00 00 call memcpy + +; 438 : +; 439 : //Decode instruction so its proper and all that +; 440 : XedDecodedInstZeroSetMode(&T->XedInstruction, &MachineState); + + 00282 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 00286 48 83 c0 30 add rax, 48 ; 00000030H + 0028a 48 8d 55 68 lea rdx, QWORD PTR MachineState$12[rbp] + 0028e 48 8b c8 mov rcx, rax + 00291 e8 00 00 00 00 call xed_decoded_inst_zero_set_mode + +; 441 : if (XED_ERROR_NONE != XedDecode(&T->XedInstruction, T->RawData, T->RawDataSize)) + + 00296 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 0029a 48 83 c0 30 add rax, 48 ; 00000030H + 0029e 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] + 002a2 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 002a6 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] + 002aa 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 002ae 48 8b c8 mov rcx, rax + 002b1 e8 00 00 00 00 call xed_decode + 002b6 85 c0 test eax, eax + 002b8 74 07 je SHORT $LN16@NcFixRelJm + +; 442 : return FALSE; + + 002ba 33 c0 xor eax, eax + 002bc e9 c1 00 00 00 jmp $LN1@NcFixRelJm $LN16@NcFixRelJm: -; 442 : -; 443 : //Go back to the start and loop through all labels again because now this instruction is larger :)))) -; 444 : T = Block->Start; +; 443 : +; 444 : //Go back to the start and loop through all labels again because now this instruction is larger :)))) +; 445 : T = Block->Start; - 002b6 48 8b 85 20 07 + 002c1 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 + 002c8 48 8b 00 mov rax, QWORD PTR [rax] + 002cb 48 89 45 08 mov QWORD PTR T$9[rbp], rax -; 445 : continue; +; 446 : continue; - 002c4 e9 8d fd ff ff jmp $LN2@NcFixRelJm + 002cf e9 82 fd ff ff jmp $LN2@NcFixRelJm -; 446 : } +; 447 : } - 002c9 e9 94 00 00 00 jmp $LN10@NcFixRelJm + 002d4 e9 94 00 00 00 jmp $LN10@NcFixRelJm $LN9@NcFixRelJm: -; 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 - 002d6 48 8b c8 mov rcx, rax - 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 - -; 450 : switch (DispWidth) - - 002e1 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] - 002e4 89 85 f4 06 00 - 00 mov DWORD PTR tv183[rbp], eax - 002ea 83 bd f4 06 00 - 00 01 cmp DWORD PTR tv183[rbp], 1 - 002f1 74 14 je SHORT $LN17@NcFixRelJm - 002f3 83 bd f4 06 00 - 00 02 cmp DWORD PTR tv183[rbp], 2 - 002fa 74 2a je SHORT $LN18@NcFixRelJm - 002fc 83 bd f4 06 00 - 00 04 cmp DWORD PTR tv183[rbp], 4 - 00303 74 41 je SHORT $LN19@NcFixRelJm - 00305 eb 5b jmp SHORT $LN5@NcFixRelJm +; 448 : else +; 449 : { +; 450 : DispWidth = XedDecodedInstGetBranchDisplacementWidth(&T->XedInstruction); + + 002d9 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 002dd 48 83 c0 30 add rax, 48 ; 00000030H + 002e1 48 8b c8 mov rcx, rax + 002e4 e8 00 00 00 00 call xed_decoded_inst_get_branch_displacement_width + 002e9 89 45 44 mov DWORD PTR DispWidth$11[rbp], eax + +; 451 : switch (DispWidth) + + 002ec 8b 45 44 mov eax, DWORD PTR DispWidth$11[rbp] + 002ef 89 85 f4 06 00 + 00 mov DWORD PTR tv184[rbp], eax + 002f5 83 bd f4 06 00 + 00 01 cmp DWORD PTR tv184[rbp], 1 + 002fc 74 14 je SHORT $LN17@NcFixRelJm + 002fe 83 bd f4 06 00 + 00 02 cmp DWORD PTR tv184[rbp], 2 + 00305 74 2a je SHORT $LN18@NcFixRelJm + 00307 83 bd f4 06 00 + 00 04 cmp DWORD PTR tv184[rbp], 4 + 0030e 74 41 je SHORT $LN19@NcFixRelJm + 00310 eb 5b jmp SHORT $LN5@NcFixRelJm $LN17@NcFixRelJm: -; 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] - 0030e 8b 40 28 mov eax, DWORD PTR [rax+40] - 00311 2b c1 sub eax, ecx - 00313 8b c0 mov eax, eax - 00315 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] - 00319 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 0031d 0f b6 55 24 movzx edx, BYTE PTR BranchDisp$10[rbp] - 00321 88 14 01 mov BYTE PTR [rcx+rax], dl - 00324 eb 3c jmp SHORT $LN5@NcFixRelJm +; 452 : { +; 453 : case 1: *(PINT8)&T->RawData[T->RawDataSize - DispWidth] = (INT8)BranchDisp; break; + + 00312 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 00316 8b 4d 44 mov ecx, DWORD PTR DispWidth$11[rbp] + 00319 8b 40 28 mov eax, DWORD PTR [rax+40] + 0031c 2b c1 sub eax, ecx + 0031e 8b c0 mov eax, eax + 00320 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] + 00324 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 00328 0f b6 55 24 movzx edx, BYTE PTR BranchDisp$10[rbp] + 0032c 88 14 01 mov BYTE PTR [rcx+rax], dl + 0032f eb 3c jmp SHORT $LN5@NcFixRelJm $LN18@NcFixRelJm: -; 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] - 0032d 8b 40 28 mov eax, DWORD PTR [rax+40] - 00330 2b c1 sub eax, ecx - 00332 8b c0 mov eax, eax - 00334 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] - 00338 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 0033c 0f b7 55 24 movzx edx, WORD PTR BranchDisp$10[rbp] - 00340 66 89 14 01 mov WORD PTR [rcx+rax], dx - 00344 eb 1c jmp SHORT $LN5@NcFixRelJm +; 454 : case 2: *(PINT16)&T->RawData[T->RawDataSize - DispWidth] = (INT16)BranchDisp; break; + + 00331 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 00335 8b 4d 44 mov ecx, DWORD PTR DispWidth$11[rbp] + 00338 8b 40 28 mov eax, DWORD PTR [rax+40] + 0033b 2b c1 sub eax, ecx + 0033d 8b c0 mov eax, eax + 0033f 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] + 00343 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 00347 0f b7 55 24 movzx edx, WORD PTR BranchDisp$10[rbp] + 0034b 66 89 14 01 mov WORD PTR [rcx+rax], dx + 0034f eb 1c jmp SHORT $LN5@NcFixRelJm $LN19@NcFixRelJm: -; 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] - 0034d 8b 40 28 mov eax, DWORD PTR [rax+40] - 00350 2b c1 sub eax, ecx - 00352 8b c0 mov eax, eax - 00354 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] - 00358 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 0035c 8b 55 24 mov edx, DWORD PTR BranchDisp$10[rbp] - 0035f 89 14 01 mov DWORD PTR [rcx+rax], edx +; 455 : case 4: *(PINT32)&T->RawData[T->RawDataSize - DispWidth] = (INT32)BranchDisp; break; + + 00351 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 00355 8b 4d 44 mov ecx, DWORD PTR DispWidth$11[rbp] + 00358 8b 40 28 mov eax, DWORD PTR [rax+40] + 0035b 2b c1 sub eax, ecx + 0035d 8b c0 mov eax, eax + 0035f 48 8b 4d 08 mov rcx, QWORD PTR T$9[rbp] + 00363 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 00367 8b 55 24 mov edx, DWORD PTR BranchDisp$10[rbp] + 0036a 89 14 01 mov DWORD PTR [rcx+rax], edx $LN5@NcFixRelJm: $LN10@NcFixRelJm: $LN7@NcFixRelJm: -; 455 : } -; 456 : } -; 457 : } -; 458 : -; 459 : T = T->Next; +; 456 : } +; 457 : } +; 458 : } +; 459 : +; 460 : 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 + 0036d 48 8b 45 08 mov rax, QWORD PTR T$9[rbp] + 00371 48 8b 00 mov rax, QWORD PTR [rax] + 00374 48 89 45 08 mov QWORD PTR T$9[rbp], rax -; 460 : } +; 461 : } - 0036d e9 e4 fc ff ff jmp $LN2@NcFixRelJm + 00378 e9 d9 fc ff ff jmp $LN2@NcFixRelJm $LN3@NcFixRelJm: -; 461 : return TRUE; +; 462 : return TRUE; - 00372 b8 01 00 00 00 mov eax, 1 + 0037d b8 01 00 00 00 mov eax, 1 $LN1@NcFixRelJm: -; 462 : } +; 463 : } - 00377 48 8b f8 mov rdi, rax - 0037a 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] - 0037e 48 8d 15 00 00 + 00382 48 8b f8 mov rdi, rax + 00385 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00389 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?NcFixRelJmps@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z$rtcFrameData - 00385 e8 00 00 00 00 call _RTC_CheckStackVars - 0038a 48 8b c7 mov rax, rdi - 0038d 48 8b 8d f8 06 + 00390 e8 00 00 00 00 call _RTC_CheckStackVars + 00395 48 8b c7 mov rax, rdi + 00398 48 8b 8d f8 06 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00394 48 33 cd xor rcx, rbp - 00397 e8 00 00 00 00 call __security_check_cookie - 0039c 48 8d a5 00 07 + 0039f 48 33 cd xor rcx, rbp + 003a2 e8 00 00 00 00 call __security_check_cookie + 003a7 48 8d a5 00 07 00 00 lea rsp, QWORD PTR [rbp+1792] - 003a3 5f pop rdi - 003a4 5e pop rsi - 003a5 5d pop rbp - 003a6 c3 ret 0 + 003ae 5f pop rdi + 003af 5e pop rsi + 003b0 5d pop rbp + 003b1 c3 ret 0 ?NcFixRelJmps@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; NcFixRelJmps _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -11173,7 +10745,7 @@ Link$ = 320 DeltaOut$ = 328 ?NcGetDeltaToLabel@@YAHPEAU_NATIVE_CODE_LINK@@PEAH@Z PROC ; NcGetDeltaToLabel, COMDAT -; 349 : { +; 350 : { $LN13: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -11193,13 +10765,13 @@ $LN13: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 350 : INT32 Delta = 0; +; 351 : INT32 Delta = 0; 0003b c7 45 04 00 00 00 00 mov DWORD PTR Delta$[rbp], 0 -; 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) +; 352 : //First checking backwards because I feel like thats the direction most jmps are in +; 353 : for (PNATIVE_CODE_LINK T = Link; T; T = T->Prev) 00042 48 8b 85 40 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -11213,8 +10785,8 @@ $LN4@NcGetDelta: 0005b 48 83 7d 28 00 cmp QWORD PTR T$1[rbp], 0 00060 74 4c je SHORT $LN3@NcGetDelta -; 353 : { -; 354 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 354 : { +; 355 : 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] @@ -11222,8 +10794,8 @@ $LN4@NcGetDelta: 0006c 85 c0 test eax, eax 0006e 74 2b je SHORT $LN8@NcGetDelta -; 355 : { -; 356 : if (T->Label == Link->Label) +; 356 : { +; 357 : if (T->Label == Link->Label) 00070 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] 00074 48 8b 8d 40 01 @@ -11232,28 +10804,28 @@ $LN4@NcGetDelta: 0007e 39 48 1c cmp DWORD PTR [rax+28], ecx 00081 75 16 jne SHORT $LN9@NcGetDelta -; 357 : { -; 358 : *DeltaOut = Delta; +; 358 : { +; 359 : *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 -; 359 : return TRUE; +; 360 : return TRUE; 0008f b8 01 00 00 00 mov eax, 1 00094 e9 89 00 00 00 jmp $LN1@NcGetDelta $LN9@NcGetDelta: -; 360 : } -; 361 : continue; +; 361 : } +; 362 : continue; 00099 eb b4 jmp SHORT $LN2@NcGetDelta $LN8@NcGetDelta: -; 362 : } -; 363 : Delta -= T->RawDataSize; +; 363 : } +; 364 : 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] @@ -11262,19 +10834,19 @@ $LN8@NcGetDelta: 000a7 8b c1 mov eax, ecx 000a9 89 45 04 mov DWORD PTR Delta$[rbp], eax -; 364 : } +; 365 : } 000ac eb a1 jmp SHORT $LN2@NcGetDelta $LN3@NcGetDelta: -; 365 : -; 366 : //Now check forwards -; 367 : Delta = 0; +; 366 : +; 367 : //Now check forwards +; 368 : Delta = 0; 000ae c7 45 04 00 00 00 00 mov DWORD PTR Delta$[rbp], 0 -; 368 : for (PNATIVE_CODE_LINK T = Link->Next; T; T = T->Next) +; 369 : 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] @@ -11289,8 +10861,8 @@ $LN7@NcGetDelta: 000d0 48 83 7d 48 00 cmp QWORD PTR T$2[rbp], 0 000d5 74 49 je SHORT $LN6@NcGetDelta -; 369 : { -; 370 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 370 : { +; 371 : 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] @@ -11298,8 +10870,8 @@ $LN7@NcGetDelta: 000e1 85 c0 test eax, eax 000e3 74 28 je SHORT $LN10@NcGetDelta -; 371 : { -; 372 : if (T->Label == Link->Label) +; 372 : { +; 373 : if (T->Label == Link->Label) 000e5 48 8b 45 48 mov rax, QWORD PTR T$2[rbp] 000e9 48 8b 8d 40 01 @@ -11308,28 +10880,28 @@ $LN7@NcGetDelta: 000f3 39 48 1c cmp DWORD PTR [rax+28], ecx 000f6 75 13 jne SHORT $LN11@NcGetDelta -; 373 : { -; 374 : *DeltaOut = Delta; +; 374 : { +; 375 : *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 -; 375 : return TRUE; +; 376 : return TRUE; 00104 b8 01 00 00 00 mov eax, 1 00109 eb 17 jmp SHORT $LN1@NcGetDelta $LN11@NcGetDelta: -; 376 : } -; 377 : continue; +; 377 : } +; 378 : continue; 0010b eb b8 jmp SHORT $LN5@NcGetDelta $LN10@NcGetDelta: -; 378 : } -; 379 : Delta += T->RawDataSize; +; 379 : } +; 380 : 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] @@ -11338,17 +10910,17 @@ $LN10@NcGetDelta: 00119 8b c1 mov eax, ecx 0011b 89 45 04 mov DWORD PTR Delta$[rbp], eax -; 380 : } +; 381 : } 0011e eb a5 jmp SHORT $LN5@NcGetDelta $LN6@NcGetDelta: -; 381 : return FALSE; +; 382 : return FALSE; 00120 33 c0 xor eax, eax $LN1@NcGetDelta: -; 382 : } +; 383 : } 00122 48 8d a5 28 01 00 00 lea rsp, QWORD PTR [rbp+296] @@ -11359,384 +10931,279 @@ $LN1@NcGetDelta: _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\$Fanta\code-virtualizer\CodeVirtualizer\NativeCode.cpp -; COMDAT ?NcDeepCopyBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU1@@Z +; COMDAT ?NcDeepCopyBlock@@YAHPEAU_NATIVE_CODE_BLOCK@@0@Z _TEXT SEGMENT Block$ = 224 -?NcDeepCopyBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU1@@Z PROC ; NcDeepCopyBlock, COMDAT +BlockCopy$ = 232 +?NcDeepCopyBlock@@YAHPEAU_NATIVE_CODE_BLOCK@@0@Z PROC ; NcDeepCopyBlock, COMDAT -; 344 : { +; 345 : { $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 + 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 - 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 + 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] - 0002a 48 8d 0d 00 00 + 0002f 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 345 : return NcDeepCopyPartialBlock(Block->Start, Block->End); +; 346 : return NcDeepCopyPartialBlock(Block->Start, Block->End, BlockCopy); - 00036 48 8b 85 e0 00 + 0003b 4c 8b 85 e8 00 + 00 00 mov r8, QWORD PTR BlockCopy$[rbp] + 00042 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] - 0003d 48 8b 50 08 mov rdx, QWORD PTR [rax+8] - 00041 48 8b 85 e0 00 + 00049 48 8b 50 08 mov rdx, QWORD PTR [rax+8] + 0004d 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] - 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 + 00054 48 8b 08 mov rcx, QWORD PTR [rax] + 00057 e8 00 00 00 00 call ?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeepCopyPartialBlock -; 346 : } +; 347 : } - 00050 48 8d a5 c8 00 + 0005c 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] - 00057 5f pop rdi - 00058 5d pop rbp - 00059 c3 ret 0 -?NcDeepCopyBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU1@@Z ENDP ; NcDeepCopyBlock + 00063 5f pop rdi + 00064 5d pop rbp + 00065 c3 ret 0 +?NcDeepCopyBlock@@YAHPEAU_NATIVE_CODE_BLOCK@@0@Z ENDP ; NcDeepCopyBlock _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\$Fanta\code-virtualizer\CodeVirtualizer\NativeCode.cpp -; COMDAT ?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z +; COMDAT ?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z _TEXT SEGMENT -Block$ = 8 -$L0$4 = 40 -$L0$5 = 72 -$L0$6 = 104 -L$7 = 132 -CurLink$8 = 168 -Temp$9 = 200 -$T10 = 424 -$T11 = 456 -$T12 = 488 -tv139 = 504 -tv95 = 504 -tv82 = 504 -__$ArrayPad$ = 512 -Start$ = 560 -End$ = 568 -?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z PROC ; NcDeepCopyPartialBlock, COMDAT - -; 317 : { +$L0$4 = 8 +$L0$5 = 40 +$L0$6 = 72 +L$7 = 100 +CurLink$8 = 136 +Temp$9 = 168 +tv88 = 376 +__$ArrayPad$ = 384 +Start$ = 432 +End$ = 440 +Block$ = 448 +?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcDeepCopyPartialBlock, COMDAT + +; 320 : { -$LN18: - 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 38 02 - 00 00 sub rsp, 568 ; 00000238H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 8e 00 00 00 mov ecx, 142 ; 0000008eH - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 58 - 02 00 00 mov rcx, QWORD PTR [rsp+600] - 0002f 48 8b 05 00 00 +$LN12: + 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 b8 01 + 00 00 sub rsp, 440 ; 000001b8H + 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001d 48 8b fc mov rdi, rsp + 00020 b9 6e 00 00 00 mov ecx, 110 ; 0000006eH + 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 0002a f3 ab rep stosd + 0002c 48 8b 8c 24 d8 + 01 00 00 mov rcx, QWORD PTR [rsp+472] + 00034 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie - 00036 48 33 c5 xor rax, rbp - 00039 48 89 85 00 02 + 0003b 48 33 c5 xor rax, rbp + 0003e 48 89 85 80 01 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 00040 48 8d 0d 00 00 + 00045 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp - 00047 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0004c e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 318 : if (!Start || !End || !Start->Block || Start->Block != End->Block) +; 321 : if (!Start || !End || !Start->Block || Start->Block != End->Block || !Block) - 0004c 48 83 bd 30 02 + 00051 48 83 bd b0 01 00 00 00 cmp QWORD PTR Start$[rbp], 0 - 00054 74 30 je SHORT $LN9@NcDeepCopy - 00056 48 83 bd 38 02 + 00059 74 3a je SHORT $LN9@NcDeepCopy + 0005b 48 83 bd b8 01 00 00 00 cmp QWORD PTR End$[rbp], 0 - 0005e 74 26 je SHORT $LN9@NcDeepCopy - 00060 48 8b 85 30 02 + 00063 74 30 je SHORT $LN9@NcDeepCopy + 00065 48 8b 85 b0 01 00 00 mov rax, QWORD PTR Start$[rbp] - 00067 48 83 78 10 00 cmp QWORD PTR [rax+16], 0 - 0006c 74 18 je SHORT $LN9@NcDeepCopy - 0006e 48 8b 85 30 02 + 0006c 48 83 78 10 00 cmp QWORD PTR [rax+16], 0 + 00071 74 22 je SHORT $LN9@NcDeepCopy + 00073 48 8b 85 b0 01 00 00 mov rax, QWORD PTR Start$[rbp] - 00075 48 8b 8d 38 02 + 0007a 48 8b 8d b8 01 00 00 mov rcx, QWORD PTR End$[rbp] - 0007c 48 8b 49 10 mov rcx, QWORD PTR [rcx+16] - 00080 48 39 48 10 cmp QWORD PTR [rax+16], rcx - 00084 74 07 je SHORT $LN8@NcDeepCopy + 00081 48 8b 49 10 mov rcx, QWORD PTR [rcx+16] + 00085 48 39 48 10 cmp QWORD PTR [rax+16], rcx + 00089 75 0a jne SHORT $LN9@NcDeepCopy + 0008b 48 83 bd c0 01 + 00 00 00 cmp QWORD PTR Block$[rbp], 0 + 00093 75 07 jne SHORT $LN8@NcDeepCopy $LN9@NcDeepCopy: -; 319 : return NULL; +; 322 : return FALSE; - 00086 33 c0 xor eax, eax - 00088 e9 88 01 00 00 jmp $LN1@NcDeepCopy + 00095 33 c0 xor eax, eax + 00097 e9 27 01 00 00 jmp $LN1@NcDeepCopy $LN8@NcDeepCopy: -; 320 : -; 321 : PNATIVE_CODE_BLOCK Block = new NATIVE_CODE_BLOCK; +; 323 : +; 324 : Block->LabelIds.clear(); - 0008d b9 30 00 00 00 mov ecx, 48 ; 00000030H - 00092 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new - 00097 48 89 85 c8 01 - 00 00 mov QWORD PTR $T11[rbp], rax - 0009e 48 83 bd c8 01 - 00 00 00 cmp QWORD PTR $T11[rbp], 0 - 000a6 74 15 je SHORT $LN13@NcDeepCopy - 000a8 48 8b 8d c8 01 - 00 00 mov rcx, QWORD PTR $T11[rbp] - 000af e8 00 00 00 00 call ??0_NATIVE_CODE_BLOCK@@QEAA@XZ ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK - 000b4 48 89 85 f8 01 - 00 00 mov QWORD PTR tv82[rbp], rax - 000bb eb 0b jmp SHORT $LN14@NcDeepCopy -$LN13@NcDeepCopy: - 000bd 48 c7 85 f8 01 - 00 00 00 00 00 - 00 mov QWORD PTR tv82[rbp], 0 -$LN14@NcDeepCopy: - 000c8 48 8b 85 f8 01 - 00 00 mov rax, QWORD PTR tv82[rbp] - 000cf 48 89 85 a8 01 - 00 00 mov QWORD PTR $T10[rbp], rax - 000d6 48 8b 85 a8 01 - 00 00 mov rax, QWORD PTR $T10[rbp] - 000dd 48 89 45 08 mov QWORD PTR Block$[rbp], rax - -; 322 : if (!Block) - - 000e1 48 83 7d 08 00 cmp QWORD PTR Block$[rbp], 0 - 000e6 75 07 jne SHORT $LN10@NcDeepCopy + 0009c 48 8b 85 c0 01 + 00 00 mov rax, QWORD PTR Block$[rbp] + 000a3 48 83 c0 10 add rax, 16 + 000a7 48 8b c8 mov rcx, rax + 000aa e8 00 00 00 00 call ?clear@?$vector@KV?$allocator@K@std@@@std@@QEAAXXZ ; std::vector >::clear -; 323 : return NULL; +; 325 : Block->Start = Block->End = NULL; - 000e8 33 c0 xor eax, eax - 000ea e9 26 01 00 00 jmp $LN1@NcDeepCopy -$LN10@NcDeepCopy: + 000af 48 8b 85 c0 01 + 00 00 mov rax, QWORD PTR Block$[rbp] + 000b6 48 c7 40 08 00 + 00 00 00 mov QWORD PTR [rax+8], 0 + 000be 48 8b 85 c0 01 + 00 00 mov rax, QWORD PTR Block$[rbp] + 000c5 48 c7 00 00 00 + 00 00 mov QWORD PTR [rax], 0 -; 324 : -; 325 : for (ULONG L : Start->Block->LabelIds) +; 326 : +; 327 : for (ULONG L : Start->Block->LabelIds) - 000ef 48 8b 85 30 02 + 000cc 48 8b 85 b0 01 00 00 mov rax, QWORD PTR Start$[rbp] - 000f6 48 8b 40 10 mov rax, QWORD PTR [rax+16] - 000fa 48 83 c0 10 add rax, 16 - 000fe 48 89 45 28 mov QWORD PTR $L0$4[rbp], rax - 00102 48 8b 4d 28 mov rcx, QWORD PTR $L0$4[rbp] - 00106 e8 00 00 00 00 call ?_Unchecked_begin@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKXZ ; std::vector >::_Unchecked_begin - 0010b 48 89 45 48 mov QWORD PTR $L0$5[rbp], rax - 0010f 48 8b 4d 28 mov rcx, QWORD PTR $L0$4[rbp] - 00113 e8 00 00 00 00 call ?_Unchecked_end@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKXZ ; std::vector >::_Unchecked_end - 00118 48 89 45 68 mov QWORD PTR $L0$6[rbp], rax - 0011c eb 0c jmp SHORT $LN4@NcDeepCopy + 000d3 48 8b 40 10 mov rax, QWORD PTR [rax+16] + 000d7 48 83 c0 10 add rax, 16 + 000db 48 89 45 08 mov QWORD PTR $L0$4[rbp], rax + 000df 48 8b 4d 08 mov rcx, QWORD PTR $L0$4[rbp] + 000e3 e8 00 00 00 00 call ?_Unchecked_begin@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKXZ ; std::vector >::_Unchecked_begin + 000e8 48 89 45 28 mov QWORD PTR $L0$5[rbp], rax + 000ec 48 8b 4d 08 mov rcx, QWORD PTR $L0$4[rbp] + 000f0 e8 00 00 00 00 call ?_Unchecked_end@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKXZ ; std::vector >::_Unchecked_end + 000f5 48 89 45 48 mov QWORD PTR $L0$6[rbp], rax + 000f9 eb 0c jmp SHORT $LN4@NcDeepCopy $LN2@NcDeepCopy: - 0011e 48 8b 45 48 mov rax, QWORD PTR $L0$5[rbp] - 00122 48 83 c0 04 add rax, 4 - 00126 48 89 45 48 mov QWORD PTR $L0$5[rbp], rax + 000fb 48 8b 45 28 mov rax, QWORD PTR $L0$5[rbp] + 000ff 48 83 c0 04 add rax, 4 + 00103 48 89 45 28 mov QWORD PTR $L0$5[rbp], rax $LN4@NcDeepCopy: - 0012a 48 8b 45 68 mov rax, QWORD PTR $L0$6[rbp] - 0012e 48 39 45 48 cmp QWORD PTR $L0$5[rbp], rax - 00132 74 30 je SHORT $LN3@NcDeepCopy - 00134 48 8b 45 48 mov rax, QWORD PTR $L0$5[rbp] - 00138 8b 00 mov eax, DWORD PTR [rax] - 0013a 89 85 84 00 00 - 00 mov DWORD PTR L$7[rbp], eax - -; 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 - 00148 48 89 85 f8 01 - 00 00 mov QWORD PTR tv95[rbp], rax - 0014f 48 8d 95 84 00 - 00 00 lea rdx, QWORD PTR L$7[rbp] - 00156 48 8b 8d f8 01 - 00 00 mov rcx, QWORD PTR tv95[rbp] - 0015d e8 00 00 00 00 call ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ; std::vector >::push_back - 00162 eb ba jmp SHORT $LN2@NcDeepCopy + 00107 48 8b 45 48 mov rax, QWORD PTR $L0$6[rbp] + 0010b 48 39 45 28 cmp QWORD PTR $L0$5[rbp], rax + 0010f 74 2d je SHORT $LN3@NcDeepCopy + 00111 48 8b 45 28 mov rax, QWORD PTR $L0$5[rbp] + 00115 8b 00 mov eax, DWORD PTR [rax] + 00117 89 45 64 mov DWORD PTR L$7[rbp], eax + +; 328 : Block->LabelIds.push_back(L); + + 0011a 48 8b 85 c0 01 + 00 00 mov rax, QWORD PTR Block$[rbp] + 00121 48 83 c0 10 add rax, 16 + 00125 48 89 85 78 01 + 00 00 mov QWORD PTR tv88[rbp], rax + 0012c 48 8d 55 64 lea rdx, QWORD PTR L$7[rbp] + 00130 48 8b 8d 78 01 + 00 00 mov rcx, QWORD PTR tv88[rbp] + 00137 e8 00 00 00 00 call ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ; std::vector >::push_back + 0013c eb bd jmp SHORT $LN2@NcDeepCopy $LN3@NcDeepCopy: -; 327 : -; 328 : for (PNATIVE_CODE_LINK CurLink = Start; CurLink != End->Next; CurLink = CurLink->Next) +; 329 : +; 330 : for (PNATIVE_CODE_LINK CurLink = Start; CurLink && CurLink != End->Next; CurLink = CurLink->Next) - 00164 48 8b 85 30 02 + 0013e 48 8b 85 b0 01 00 00 mov rax, QWORD PTR Start$[rbp] - 0016b 48 89 85 a8 00 + 00145 48 89 85 88 00 00 00 mov QWORD PTR CurLink$8[rbp], rax - 00172 eb 11 jmp SHORT $LN7@NcDeepCopy + 0014c eb 11 jmp SHORT $LN7@NcDeepCopy $LN5@NcDeepCopy: - 00174 48 8b 85 a8 00 + 0014e 48 8b 85 88 00 00 00 mov rax, QWORD PTR CurLink$8[rbp] - 0017b 48 8b 00 mov rax, QWORD PTR [rax] - 0017e 48 89 85 a8 00 + 00155 48 8b 00 mov rax, QWORD PTR [rax] + 00158 48 89 85 88 00 00 00 mov QWORD PTR CurLink$8[rbp], rax $LN7@NcDeepCopy: - 00185 48 8b 85 38 02 + 0015f 48 83 bd 88 00 + 00 00 00 cmp QWORD PTR CurLink$8[rbp], 0 + 00167 74 55 je SHORT $LN6@NcDeepCopy + 00169 48 8b 85 b8 01 00 00 mov rax, QWORD PTR End$[rbp] - 0018c 48 8b 00 mov rax, QWORD PTR [rax] - 0018f 48 39 85 a8 00 + 00170 48 8b 00 mov rax, QWORD PTR [rax] + 00173 48 39 85 88 00 00 00 cmp QWORD PTR CurLink$8[rbp], rax - 00196 74 79 je SHORT $LN6@NcDeepCopy + 0017a 74 42 je SHORT $LN6@NcDeepCopy -; 329 : { -; 330 : PNATIVE_CODE_LINK Temp = NcDeepCopyLink(CurLink); +; 331 : { +; 332 : PNATIVE_CODE_LINK Temp = NcDeepCopyLink(CurLink); - 00198 48 8b 8d a8 00 + 0017c 48 8b 8d 88 00 00 00 mov rcx, QWORD PTR CurLink$8[rbp] - 0019f e8 00 00 00 00 call ?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z ; NcDeepCopyLink - 001a4 48 89 85 c8 00 + 00183 e8 00 00 00 00 call ?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z ; NcDeepCopyLink + 00188 48 89 85 a8 00 00 00 mov QWORD PTR Temp$9[rbp], rax -; 331 : if (!Temp) +; 333 : if (!Temp) - 001ab 48 83 bd c8 00 + 0018f 48 83 bd a8 00 00 00 00 cmp QWORD PTR Temp$9[rbp], 0 - 001b3 75 47 jne SHORT $LN11@NcDeepCopy - -; 332 : { -; 333 : NcDeleteBlock(Block); + 00197 75 10 jne SHORT $LN10@NcDeepCopy - 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 +; 334 : { +; 335 : NcDeleteBlock(Block); -; 334 : delete Block; - - 001be 48 8b 45 08 mov rax, QWORD PTR Block$[rbp] - 001c2 48 89 85 e8 01 - 00 00 mov QWORD PTR $T12[rbp], rax - 001c9 48 83 bd e8 01 - 00 00 00 cmp QWORD PTR $T12[rbp], 0 - 001d1 74 1a je SHORT $LN15@NcDeepCopy - 001d3 ba 01 00 00 00 mov edx, 1 - 001d8 48 8b 8d e8 01 - 00 00 mov rcx, QWORD PTR $T12[rbp] - 001df e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 001e4 48 89 85 f8 01 - 00 00 mov QWORD PTR tv139[rbp], rax - 001eb eb 0b jmp SHORT $LN16@NcDeepCopy -$LN15@NcDeepCopy: - 001ed 48 c7 85 f8 01 - 00 00 00 00 00 - 00 mov QWORD PTR tv139[rbp], 0 -$LN16@NcDeepCopy: + 00199 48 8b 8d c0 01 + 00 00 mov rcx, QWORD PTR Block$[rbp] + 001a0 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock -; 335 : return NULL; +; 336 : return FALSE; - 001f8 33 c0 xor eax, eax - 001fa eb 19 jmp SHORT $LN1@NcDeepCopy -$LN11@NcDeepCopy: + 001a5 33 c0 xor eax, eax + 001a7 eb 1a jmp SHORT $LN1@NcDeepCopy +$LN10@NcDeepCopy: -; 336 : } -; 337 : NcAppendToBlock(Block, Temp); +; 337 : } +; 338 : NcAppendToBlock(Block, Temp); - 001fc 48 8b 95 c8 00 + 001a9 48 8b 95 a8 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 + 001b0 48 8b 8d c0 01 + 00 00 mov rcx, QWORD PTR Block$[rbp] + 001b7 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock -; 338 : } +; 339 : } - 0020c e9 63 ff ff ff jmp $LN5@NcDeepCopy + 001bc eb 90 jmp SHORT $LN5@NcDeepCopy $LN6@NcDeepCopy: -; 339 : -; 340 : return Block; +; 340 : +; 341 : return TRUE; - 00211 48 8b 45 08 mov rax, QWORD PTR Block$[rbp] + 001be b8 01 00 00 00 mov eax, 1 $LN1@NcDeepCopy: -; 341 : } +; 342 : } - 00215 48 8b f8 mov rdi, rax - 00218 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 0021c 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcFrameData - 00223 e8 00 00 00 00 call _RTC_CheckStackVars - 00228 48 8b c7 mov rax, rdi - 0022b 48 8b 8d 00 02 + 001c3 48 8b f8 mov rdi, rax + 001c6 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] + 001ca 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z$rtcFrameData + 001d1 e8 00 00 00 00 call _RTC_CheckStackVars + 001d6 48 8b c7 mov rax, rdi + 001d9 48 8b 8d 80 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00232 48 33 cd xor rcx, rbp - 00235 e8 00 00 00 00 call __security_check_cookie - 0023a 48 8d a5 18 02 - 00 00 lea rsp, QWORD PTR [rbp+536] - 00241 5f pop rdi - 00242 5d pop rbp - 00243 c3 ret 0 -?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z ENDP ; NcDeepCopyPartialBlock + 001e0 48 33 cd xor rcx, rbp + 001e3 e8 00 00 00 00 call __security_check_cookie + 001e8 48 8d a5 98 01 + 00 00 lea rsp, QWORD PTR [rbp+408] + 001ef 5f pop rdi + 001f0 5d pop rbp + 001f1 c3 ret 0 +?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; NcDeepCopyPartialBlock _TEXT ENDS -; COMDAT text$x -text$x SEGMENT -Block$ = 8 -$L0$4 = 40 -$L0$5 = 72 -$L0$6 = 104 -L$7 = 132 -CurLink$8 = 168 -Temp$9 = 200 -$T10 = 424 -$T11 = 456 -$T12 = 488 -tv139 = 504 -tv95 = 504 -tv82 = 504 -__$ArrayPad$ = 512 -Start$ = 560 -End$ = 568 -?dtor$0@?0??NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA PROC ; `NcDeepCopyPartialBlock'::`1'::dtor$0 - 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 55 push rbp - 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 ba 30 00 00 00 mov edx, 48 ; 00000030H - 00019 48 8b 8d c8 01 - 00 00 mov rcx, QWORD PTR $T11[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 -?dtor$0@?0??NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA ENDP ; `NcDeepCopyPartialBlock'::`1'::dtor$0 -text$x ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT text$x -text$x SEGMENT -Block$ = 8 -$L0$4 = 40 -$L0$5 = 72 -$L0$6 = 104 -L$7 = 132 -CurLink$8 = 168 -Temp$9 = 200 -$T10 = 424 -$T11 = 456 -$T12 = 488 -tv139 = 504 -tv95 = 504 -tv82 = 504 -__$ArrayPad$ = 512 -Start$ = 560 -End$ = 568 -?dtor$0@?0??NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA PROC ; `NcDeepCopyPartialBlock'::`1'::dtor$0 - 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 55 push rbp - 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 ba 30 00 00 00 mov edx, 48 ; 00000030H - 00019 48 8b 8d c8 01 - 00 00 mov rcx, QWORD PTR $T11[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 -?dtor$0@?0??NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA ENDP ; `NcDeepCopyPartialBlock'::`1'::dtor$0 -text$x ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\$Fanta\code-virtualizer\CodeVirtualizer\NativeCode.cpp ; COMDAT ?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z @@ -11748,32 +11215,34 @@ $T4 = 296 $T5 = 328 $T6 = 360 $T7 = 392 -tv148 = 408 -tv130 = 408 +tv151 = 404 +tv155 = 408 +tv149 = 408 +tv131 = 408 tv81 = 408 Link$ = 448 ?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z PROC ; NcDeepCopyLink, COMDAT -; 297 : { +; 299 : { $LN14: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 55 push rbp 00006 57 push rdi - 00007 48 81 ec c8 01 - 00 00 sub rsp, 456 ; 000001c8H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00007 48 81 ec d8 01 + 00 00 sub rsp, 472 ; 000001d8H + 0000e 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 00013 48 8b fc mov rdi, rsp - 00016 b9 72 00 00 00 mov ecx, 114 ; 00000072H + 00016 b9 76 00 00 00 mov ecx, 118 ; 00000076H 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00020 f3 ab rep stosd - 00022 48 8b 8c 24 e8 - 01 00 00 mov rcx, QWORD PTR [rsp+488] + 00022 48 8b 8c 24 f8 + 01 00 00 mov rcx, QWORD PTR [rsp+504] 0002a 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 298 : if (Link->Flags & CODE_FLAG_IS_LABEL) +; 300 : if (Link->Flags & CODE_FLAG_IS_LABEL) 00036 48 8b 85 c0 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -11782,8 +11251,8 @@ $LN14: 00043 85 c0 test eax, eax 00045 74 67 je SHORT $LN2@NcDeepCopy -; 299 : { -; 300 : return new NATIVE_CODE_LINK(Link->Label, NULL); +; 301 : { +; 302 : 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 @@ -11813,15 +11282,16 @@ $LN7@NcDeepCopy: 00 00 mov QWORD PTR $T3[rbp], rax 0009d 48 8b 85 08 01 00 00 mov rax, QWORD PTR $T3[rbp] - 000a4 e9 12 01 00 00 jmp $LN1@NcDeepCopy + 000a4 e9 3c 01 00 00 jmp $LN1@NcDeepCopy -; 301 : } +; 303 : } - 000a9 e9 0d 01 00 00 jmp $LN1@NcDeepCopy + 000a9 e9 37 01 00 00 jmp $LN1@NcDeepCopy $LN2@NcDeepCopy: -; 302 : else -; 303 : { PNATIVE_CODE_LINK NewLink = new NATIVE_CODE_LINK(Link->Flags, Link->RawData, Link->RawDataSize); +; 304 : else +; 305 : { +; 306 : 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 @@ -11829,113 +11299,125 @@ $LN2@NcDeepCopy: 00 00 mov QWORD PTR $T6[rbp], rax 000bf 48 83 bd 68 01 00 00 00 cmp QWORD PTR $T6[rbp], 0 - 000c7 74 35 je SHORT $LN8@NcDeepCopy - 000c9 48 8b 85 c0 01 + 000c7 74 3d je SHORT $LN8@NcDeepCopy + 000c9 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 000d1 48 8b 85 c0 01 00 00 mov rax, QWORD PTR Link$[rbp] - 000d0 44 8b 48 28 mov r9d, DWORD PTR [rax+40] - 000d4 48 8b 85 c0 01 + 000d8 44 8b 48 28 mov r9d, DWORD PTR [rax+40] + 000dc 48 8b 85 c0 01 00 00 mov rax, QWORD PTR Link$[rbp] - 000db 4c 8b 40 20 mov r8, QWORD PTR [rax+32] - 000df 48 8b 85 c0 01 + 000e3 4c 8b 40 20 mov r8, QWORD PTR [rax+32] + 000e7 48 8b 85 c0 01 00 00 mov rax, QWORD PTR Link$[rbp] - 000e6 8b 50 18 mov edx, DWORD PTR [rax+24] - 000e9 48 8b 8d 68 01 + 000ee 8b 50 18 mov edx, DWORD PTR [rax+24] + 000f1 48 8b 8d 68 01 00 00 mov rcx, QWORD PTR $T6[rbp] - 000f0 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000f5 48 89 85 98 01 - 00 00 mov QWORD PTR tv130[rbp], rax - 000fc eb 0b jmp SHORT $LN9@NcDeepCopy + 000f8 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000fd 48 89 85 98 01 + 00 00 mov QWORD PTR tv131[rbp], rax + 00104 eb 0b jmp SHORT $LN9@NcDeepCopy $LN8@NcDeepCopy: - 000fe 48 c7 85 98 01 + 00106 48 c7 85 98 01 00 00 00 00 00 - 00 mov QWORD PTR tv130[rbp], 0 + 00 mov QWORD PTR tv131[rbp], 0 $LN9@NcDeepCopy: - 00109 48 8b 85 98 01 - 00 00 mov rax, QWORD PTR tv130[rbp] - 00110 48 89 85 48 01 + 00111 48 8b 85 98 01 + 00 00 mov rax, QWORD PTR tv131[rbp] + 00118 48 89 85 48 01 00 00 mov QWORD PTR $T5[rbp], rax - 00117 48 8b 85 48 01 + 0011f 48 8b 85 48 01 00 00 mov rax, QWORD PTR $T5[rbp] - 0011e 48 89 45 08 mov QWORD PTR NewLink$1[rbp], rax + 00126 48 89 45 08 mov QWORD PTR NewLink$1[rbp], rax -; 304 : NewLink->Label = Link->Label; +; 307 : NewLink->Label = Link->Label; - 00122 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] - 00126 48 8b 8d c0 01 + 0012a 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] + 0012e 48 8b 8d c0 01 00 00 mov rcx, QWORD PTR Link$[rbp] - 0012d 8b 49 1c mov ecx, DWORD PTR [rcx+28] - 00130 89 48 1c mov DWORD PTR [rax+28], ecx + 00135 8b 49 1c mov ecx, DWORD PTR [rcx+28] + 00138 89 48 1c mov DWORD PTR [rax+28], ecx -; 305 : XED_ERROR_ENUM DecodeError = XedDecode(&NewLink->XedInstruction, Link->RawData, Link->RawDataSize); +; 308 : 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 - 0013b 48 8b 8d c0 01 + 0013b 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] + 0013f 48 83 c0 30 add rax, 48 ; 00000030H + 00143 48 8b 8d c0 01 00 00 mov rcx, QWORD PTR Link$[rbp] - 00142 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] - 00146 48 8b 8d c0 01 + 0014a 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0014e 48 8b 8d c0 01 00 00 mov rcx, QWORD PTR Link$[rbp] - 0014d 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 00151 48 8b c8 mov rcx, rax - 00154 e8 00 00 00 00 call xed_decode - 00159 89 45 24 mov DWORD PTR DecodeError$2[rbp], eax + 00155 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 00159 48 8b c8 mov rcx, rax + 0015c e8 00 00 00 00 call xed_decode + 00161 89 45 24 mov DWORD PTR DecodeError$2[rbp], eax -; 306 : if (DecodeError != XED_ERROR_NONE) +; 309 : if (DecodeError != XED_ERROR_NONE) - 0015c 83 7d 24 00 cmp DWORD PTR DecodeError$2[rbp], 0 - 00160 74 55 je SHORT $LN4@NcDeepCopy + 00164 83 7d 24 00 cmp DWORD PTR DecodeError$2[rbp], 0 + 00168 74 77 je SHORT $LN4@NcDeepCopy -; 307 : { -; 308 : printf("XedDecode failed in NcDeepCopyLink: %s\n", XedErrorEnumToString(DecodeError)); +; 310 : { +; 311 : printf("XedDecode failed in NcDeepCopyLink: %s %u\n", XedErrorEnumToString(DecodeError), Link->RawDataSize); - 00162 8b 4d 24 mov ecx, DWORD PTR DecodeError$2[rbp] - 00165 e8 00 00 00 00 call xed_error_enum_t2str - 0016a 48 8b d0 mov rdx, rax - 0016d 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_0CI@IAPEEFOG@XedDecode?5failed?5in?5NcDeepCopyL@ - 00174 e8 00 00 00 00 call printf - -; 309 : delete NewLink; - - 00179 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] - 0017d 48 89 85 88 01 + 0016a 48 8b 85 c0 01 + 00 00 mov rax, QWORD PTR Link$[rbp] + 00171 8b 40 28 mov eax, DWORD PTR [rax+40] + 00174 89 85 94 01 00 + 00 mov DWORD PTR tv151[rbp], eax + 0017a 8b 4d 24 mov ecx, DWORD PTR DecodeError$2[rbp] + 0017d e8 00 00 00 00 call xed_error_enum_t2str + 00182 48 89 85 98 01 + 00 00 mov QWORD PTR tv149[rbp], rax + 00189 44 8b 85 94 01 + 00 00 mov r8d, DWORD PTR tv151[rbp] + 00190 48 8b 95 98 01 + 00 00 mov rdx, QWORD PTR tv149[rbp] + 00197 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0CL@COPJALEP@XedDecode?5failed?5in?5NcDeepCopyL@ + 0019e e8 00 00 00 00 call printf + +; 312 : delete NewLink; + + 001a3 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] + 001a7 48 89 85 88 01 00 00 mov QWORD PTR $T7[rbp], rax - 00184 48 83 bd 88 01 + 001ae 48 83 bd 88 01 00 00 00 cmp QWORD PTR $T7[rbp], 0 - 0018c 74 1a je SHORT $LN10@NcDeepCopy - 0018e ba 01 00 00 00 mov edx, 1 - 00193 48 8b 8d 88 01 + 001b6 74 1a je SHORT $LN10@NcDeepCopy + 001b8 ba 01 00 00 00 mov edx, 1 + 001bd 48 8b 8d 88 01 00 00 mov rcx, QWORD PTR $T7[rbp] - 0019a e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z - 0019f 48 89 85 98 01 - 00 00 mov QWORD PTR tv148[rbp], rax - 001a6 eb 0b jmp SHORT $LN11@NcDeepCopy + 001c4 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z + 001c9 48 89 85 98 01 + 00 00 mov QWORD PTR tv155[rbp], rax + 001d0 eb 0b jmp SHORT $LN11@NcDeepCopy $LN10@NcDeepCopy: - 001a8 48 c7 85 98 01 + 001d2 48 c7 85 98 01 00 00 00 00 00 - 00 mov QWORD PTR tv148[rbp], 0 + 00 mov QWORD PTR tv155[rbp], 0 $LN11@NcDeepCopy: -; 310 : return NULL; +; 313 : return NULL; - 001b3 33 c0 xor eax, eax - 001b5 eb 04 jmp SHORT $LN1@NcDeepCopy + 001dd 33 c0 xor eax, eax + 001df eb 04 jmp SHORT $LN1@NcDeepCopy $LN4@NcDeepCopy: -; 311 : } -; 312 : return NewLink; +; 314 : } +; 315 : return NewLink; - 001b7 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] + 001e1 48 8b 45 08 mov rax, QWORD PTR NewLink$1[rbp] $LN1@NcDeepCopy: -; 313 : } -; 314 : } +; 316 : } +; 317 : } - 001bb 48 8d a5 a8 01 + 001e5 48 8d a5 a8 01 00 00 lea rsp, QWORD PTR [rbp+424] - 001c2 5f pop rdi - 001c3 5d pop rbp - 001c4 c3 ret 0 + 001ec 5f pop rdi + 001ed 5d pop rbp + 001ee c3 ret 0 ?NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z ENDP ; NcDeepCopyLink _TEXT ENDS ; COMDAT text$x @@ -11947,8 +11429,10 @@ $T4 = 296 $T5 = 328 $T6 = 360 $T7 = 392 -tv148 = 408 -tv130 = 408 +tv151 = 404 +tv155 = 408 +tv149 = 408 +tv131 = 408 tv81 = 408 Link$ = 448 ?dtor$0@?0??NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z@4HA PROC ; `NcDeepCopyLink'::`1'::dtor$0 @@ -11957,7 +11441,7 @@ Link$ = 448 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T4[rbp] @@ -11977,8 +11461,10 @@ $T4 = 296 $T5 = 328 $T6 = 360 $T7 = 392 -tv148 = 408 -tv130 = 408 +tv151 = 404 +tv155 = 408 +tv149 = 408 +tv131 = 408 tv81 = 408 Link$ = 448 ?dtor$1@?0??NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z@4HA PROC ; `NcDeepCopyLink'::`1'::dtor$1 @@ -11987,7 +11473,7 @@ Link$ = 448 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 68 01 00 00 mov rcx, QWORD PTR $T6[rbp] @@ -12008,8 +11494,10 @@ $T4 = 296 $T5 = 328 $T6 = 360 $T7 = 392 -tv148 = 408 -tv130 = 408 +tv151 = 404 +tv155 = 408 +tv149 = 408 +tv131 = 408 tv81 = 408 Link$ = 448 ?dtor$0@?0??NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z@4HA PROC ; `NcDeepCopyLink'::`1'::dtor$0 @@ -12018,7 +11506,7 @@ Link$ = 448 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T4[rbp] @@ -12039,8 +11527,10 @@ $T4 = 296 $T5 = 328 $T6 = 360 $T7 = 392 -tv148 = 408 -tv130 = 408 +tv151 = 404 +tv155 = 408 +tv149 = 408 +tv131 = 408 tv81 = 408 Link$ = 448 ?dtor$1@?0??NcDeepCopyLink@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@@Z@4HA PROC ; `NcDeepCopyLink'::`1'::dtor$1 @@ -12049,7 +11539,7 @@ Link$ = 448 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 68 01 00 00 mov rcx, QWORD PTR $T6[rbp] @@ -12069,7 +11559,7 @@ Jmp$ = 256 Delta$ = 264 ?NcValidateJmp@@YAPEAU_NATIVE_CODE_LINK@@PEAU1@H@Z PROC ; NcValidateJmp, COMDAT -; 257 : { +; 259 : { $LN23: 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx @@ -12089,16 +11579,16 @@ $LN23: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00035 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 258 : PNATIVE_CODE_LINK T; -; 259 : if (Delta > 0) +; 260 : PNATIVE_CODE_LINK T; +; 261 : 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 -; 260 : { -; 261 : T = Jmp->Next; +; 262 : { +; 263 : T = Jmp->Next; 00047 48 8b 85 00 01 00 00 mov rax, QWORD PTR Jmp$[rbp] @@ -12107,7 +11597,7 @@ $LN23: $LN21@NcValidate: $LN2@NcValidate: -; 262 : while (Delta > 0 && T) +; 264 : while (Delta > 0 && T) 00055 83 bd 08 01 00 00 00 cmp DWORD PTR Delta$[rbp], 0 @@ -12115,8 +11605,8 @@ $LN2@NcValidate: 0005e 48 83 7d 08 00 cmp QWORD PTR T$[rbp], 0 00063 74 3d je SHORT $LN3@NcValidate -; 263 : { -; 264 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 265 : { +; 266 : 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] @@ -12124,12 +11614,12 @@ $LN2@NcValidate: 0006f 85 c0 test eax, eax 00071 74 02 je SHORT $LN12@NcValidate -; 265 : continue; +; 267 : continue; 00073 eb e0 jmp SHORT $LN2@NcValidate $LN12@NcValidate: -; 266 : Delta -= XedDecodedInstGetLength(&T->XedInstruction); +; 268 : Delta -= XedDecodedInstGetLength(&T->XedInstruction); 00075 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 00079 48 83 c0 30 add rax, 48 ; 00000030H @@ -12142,18 +11632,18 @@ $LN12@NcValidate: 0008f 89 85 08 01 00 00 mov DWORD PTR Delta$[rbp], eax -; 267 : T = T->Next; +; 269 : 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 -; 268 : } +; 270 : } 000a0 eb b3 jmp SHORT $LN21@NcValidate $LN3@NcValidate: -; 269 : if (Delta != 0 || !T) +; 271 : if (Delta != 0 || !T) 000a2 83 bd 08 01 00 00 00 cmp DWORD PTR Delta$[rbp], 0 @@ -12162,14 +11652,14 @@ $LN3@NcValidate: 000b0 75 07 jne SHORT $LN13@NcValidate $LN14@NcValidate: -; 270 : return NULL; +; 272 : return NULL; 000b2 33 c0 xor eax, eax 000b4 e9 db 00 00 00 jmp $LN1@NcValidate $LN13@NcValidate: $LN4@NcValidate: -; 271 : while (T && (T->Flags & CODE_FLAG_IS_LABEL)) +; 273 : 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 @@ -12179,7 +11669,7 @@ $LN4@NcValidate: 000ca 85 c0 test eax, eax 000cc 74 0d je SHORT $LN5@NcValidate -; 272 : T = T->Next; +; 274 : T = T->Next; 000ce 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 000d2 48 8b 00 mov rax, QWORD PTR [rax] @@ -12187,25 +11677,25 @@ $LN4@NcValidate: 000d9 eb de jmp SHORT $LN4@NcValidate $LN5@NcValidate: -; 273 : return T; +; 275 : return T; 000db 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 000df e9 b0 00 00 00 jmp $LN1@NcValidate -; 274 : } +; 276 : } 000e4 e9 a4 00 00 00 jmp $LN11@NcValidate $LN10@NcValidate: -; 275 : else if (Delta < 0) +; 277 : 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 -; 276 : { -; 277 : T = Jmp; +; 278 : { +; 279 : T = Jmp; 000f6 48 8b 85 00 01 00 00 mov rax, QWORD PTR Jmp$[rbp] @@ -12213,13 +11703,13 @@ $LN10@NcValidate: $LN22@NcValidate: $LN6@NcValidate: -; 278 : while (T) +; 280 : while (T) 00101 48 83 7d 08 00 cmp QWORD PTR T$[rbp], 0 00106 74 49 je SHORT $LN7@NcValidate -; 279 : { -; 280 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 281 : { +; 282 : 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] @@ -12227,12 +11717,12 @@ $LN6@NcValidate: 00112 85 c0 test eax, eax 00114 74 02 je SHORT $LN16@NcValidate -; 281 : continue; +; 283 : continue; 00116 eb e9 jmp SHORT $LN6@NcValidate $LN16@NcValidate: -; 282 : Delta += XedDecodedInstGetLength(&T->XedInstruction); +; 284 : Delta += XedDecodedInstGetLength(&T->XedInstruction); 00118 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 0011c 48 83 c0 30 add rax, 48 ; 00000030H @@ -12245,29 +11735,29 @@ $LN16@NcValidate: 00132 89 85 08 01 00 00 mov DWORD PTR Delta$[rbp], eax -; 283 : if (Delta >= 0) +; 285 : if (Delta >= 0) 00138 83 bd 08 01 00 00 00 cmp DWORD PTR Delta$[rbp], 0 0013f 7c 02 jl SHORT $LN17@NcValidate -; 284 : break; +; 286 : break; 00141 eb 0e jmp SHORT $LN7@NcValidate $LN17@NcValidate: -; 285 : T = T->Prev; +; 287 : 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 -; 286 : } +; 288 : } 0014f eb b0 jmp SHORT $LN22@NcValidate $LN7@NcValidate: -; 287 : if (Delta != 0 || !T) +; 289 : if (Delta != 0 || !T) 00151 83 bd 08 01 00 00 00 cmp DWORD PTR Delta$[rbp], 0 @@ -12276,14 +11766,14 @@ $LN7@NcValidate: 0015f 75 04 jne SHORT $LN18@NcValidate $LN19@NcValidate: -; 288 : return NULL; +; 290 : return NULL; 00161 33 c0 xor eax, eax 00163 eb 2f jmp SHORT $LN1@NcValidate $LN18@NcValidate: $LN8@NcValidate: -; 289 : while (T && (T->Flags & CODE_FLAG_IS_LABEL)) +; 291 : 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 @@ -12293,7 +11783,7 @@ $LN8@NcValidate: 00176 85 c0 test eax, eax 00178 74 0d je SHORT $LN9@NcValidate -; 290 : T = T->Next; +; 292 : T = T->Next; 0017a 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 0017e 48 8b 00 mov rax, QWORD PTR [rax] @@ -12301,21 +11791,21 @@ $LN8@NcValidate: 00185 eb de jmp SHORT $LN8@NcValidate $LN9@NcValidate: -; 291 : return T; +; 293 : return T; 00187 48 8b 45 08 mov rax, QWORD PTR T$[rbp] 0018b eb 07 jmp SHORT $LN1@NcValidate $LN15@NcValidate: $LN11@NcValidate: -; 292 : } -; 293 : return Jmp; +; 294 : } +; 295 : return Jmp; 0018d 48 8b 85 00 01 00 00 mov rax, QWORD PTR Jmp$[rbp] $LN1@NcValidate: -; 294 : } +; 296 : } 00194 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] @@ -12345,7 +11835,7 @@ __$ArrayPad$ = 544 Block$ = 592 ?NcCreateLabels@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcCreateLabels, COMDAT -; 205 : { +; 207 : { $LN18: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -12369,12 +11859,12 @@ $LN18: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 206 : ULONG CurrentLabelId = 0; +; 208 : ULONG CurrentLabelId = 0; 00047 c7 45 04 00 00 00 00 mov DWORD PTR CurrentLabelId$[rbp], 0 -; 207 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) +; 209 : 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] @@ -12390,8 +11880,8 @@ $LN4@NcCreateLa: 0006e 0f 84 07 02 00 00 je $LN3@NcCreateLa -; 208 : { -; 209 : if (!(T->Flags & CODE_FLAG_IS_INST)) +; 210 : { +; 211 : 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] @@ -12399,13 +11889,13 @@ $LN4@NcCreateLa: 0007e 85 c0 test eax, eax 00080 75 02 jne SHORT $LN5@NcCreateLa -; 210 : continue; +; 212 : continue; 00082 eb da jmp SHORT $LN2@NcCreateLa $LN5@NcCreateLa: -; 211 : -; 212 : XED_CATEGORY_ENUM Category = XedDecodedInstGetCategory(&T->XedInstruction); +; 213 : +; 214 : 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 @@ -12413,20 +11903,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 -; 213 : if (Category != XED_CATEGORY_COND_BR && Category != XED_CATEGORY_UNCOND_BR) +; 215 : 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 -; 214 : continue; +; 216 : continue; 000a3 eb b9 jmp SHORT $LN2@NcCreateLa $LN6@NcCreateLa: -; 215 : -; 216 : ULONG OperandCount = XedDecodedInstNumOperands(&T->XedInstruction); +; 217 : +; 218 : 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 @@ -12434,18 +11924,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 -; 217 : if (OperandCount < 1) +; 219 : if (OperandCount < 1) 000b8 83 7d 64 01 cmp DWORD PTR OperandCount$6[rbp], 1 000bc 73 02 jae SHORT $LN7@NcCreateLa -; 218 : continue; +; 220 : continue; 000be eb 9e jmp SHORT $LN2@NcCreateLa $LN7@NcCreateLa: -; 219 : -; 220 : CONST XED_INST* Inst = XedDecodedInstInst(&T->XedInstruction); +; 221 : +; 222 : 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 @@ -12454,19 +11944,19 @@ $LN7@NcCreateLa: 000d0 48 89 85 88 00 00 00 mov QWORD PTR Inst$7[rbp], rax -; 221 : if (!Inst) +; 223 : 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 -; 222 : continue; +; 224 : continue; 000e1 e9 78 ff ff ff jmp $LN2@NcCreateLa $LN8@NcCreateLa: -; 223 : -; 224 : CONST XED_OPERAND* Operand = XedInstOperand(Inst, 0); +; 225 : +; 226 : CONST XED_OPERAND* Operand = XedInstOperand(Inst, 0); 000e6 33 d2 xor edx, edx 000e8 48 8b 8d 88 00 @@ -12475,19 +11965,19 @@ $LN8@NcCreateLa: 000f4 48 89 85 a8 00 00 00 mov QWORD PTR Operand$8[rbp], rax -; 225 : if (!Operand) +; 227 : 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 -; 226 : continue; +; 228 : continue; 00105 e9 54 ff ff ff jmp $LN2@NcCreateLa $LN9@NcCreateLa: -; 227 : -; 228 : XED_OPERAND_TYPE_ENUM OperandType = XedOperandType(Operand); +; 229 : +; 230 : XED_OPERAND_TYPE_ENUM OperandType = XedOperandType(Operand); 0010a 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR Operand$8[rbp] @@ -12495,7 +11985,7 @@ $LN9@NcCreateLa: 00116 89 85 c4 00 00 00 mov DWORD PTR OperandType$9[rbp], eax -; 229 : if (OperandType != XED_OPERAND_TYPE_IMM && OperandType != XED_OPERAND_TYPE_IMM_CONST) +; 231 : 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 @@ -12504,13 +11994,13 @@ $LN9@NcCreateLa: 00 03 cmp DWORD PTR OperandType$9[rbp], 3 0012c 74 05 je SHORT $LN10@NcCreateLa -; 230 : continue; +; 232 : continue; 0012e e9 2b ff ff ff jmp $LN2@NcCreateLa $LN10@NcCreateLa: -; 231 : -; 232 : INT32 BranchDisplacement = XedDecodedInstGetBranchDisplacement(&T->XedInstruction); +; 233 : +; 234 : 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 @@ -12519,7 +12009,7 @@ $LN10@NcCreateLa: 00143 89 85 e4 00 00 00 mov DWORD PTR BranchDisplacement$10[rbp], eax -; 233 : PNATIVE_CODE_LINK JmpPos = NcValidateJmp(T, BranchDisplacement); +; 235 : PNATIVE_CODE_LINK JmpPos = NcValidateJmp(T, BranchDisplacement); 00149 8b 95 e4 00 00 00 mov edx, DWORD PTR BranchDisplacement$10[rbp] @@ -12528,14 +12018,14 @@ $LN10@NcCreateLa: 00158 48 89 85 08 01 00 00 mov QWORD PTR JmpPos$11[rbp], rax -; 234 : if (!JmpPos) +; 236 : 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 -; 235 : { -; 236 : printf("Failed to validate jump. Type: %s, Displacement: %d\n", XedCategoryEnumToString(Category), BranchDisplacement); +; 237 : { +; 238 : 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 @@ -12546,15 +12036,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 -; 237 : return FALSE; +; 239 : return FALSE; 00187 33 c0 xor eax, eax 00189 e9 f2 00 00 00 jmp $LN1@NcCreateLa $LN11@NcCreateLa: -; 238 : } -; 239 : -; 240 : if (JmpPos->Prev && (JmpPos->Prev->Flags & CODE_FLAG_IS_LABEL)) +; 240 : } +; 241 : +; 242 : 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] @@ -12568,8 +12058,8 @@ $LN11@NcCreateLa: 001ad 85 c0 test eax, eax 001af 74 1a je SHORT $LN12@NcCreateLa -; 241 : { -; 242 : T->Label = JmpPos->Prev->Label; +; 243 : { +; 244 : T->Label = JmpPos->Prev->Label; 001b1 48 8b 85 08 01 00 00 mov rax, QWORD PTR JmpPos$11[rbp] @@ -12578,14 +12068,14 @@ $LN11@NcCreateLa: 001c0 8b 40 1c mov eax, DWORD PTR [rax+28] 001c3 89 41 1c mov DWORD PTR [rcx+28], eax -; 243 : } +; 245 : } 001c6 e9 9a 00 00 00 jmp $LN13@NcCreateLa $LN12@NcCreateLa: -; 244 : else -; 245 : { -; 246 : NcInsertLinkBefore(JmpPos, new NATIVE_CODE_LINK(CurrentLabelId, Block)); +; 246 : else +; 247 : { +; 248 : 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 @@ -12618,7 +12108,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 -; 247 : Block->LabelIds.push_back(CurrentLabelId); +; 249 : Block->LabelIds.push_back(CurrentLabelId); 00231 48 8b 85 50 02 00 00 mov rax, QWORD PTR Block$[rbp] @@ -12630,21 +12120,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 -; 248 : T->Label = CurrentLabelId; +; 250 : 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 -; 249 : ++CurrentLabelId; +; 251 : ++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: -; 250 : } -; 251 : T->Flags |= CODE_FLAG_IS_REL_JMP; +; 252 : } +; 253 : 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] @@ -12652,17 +12142,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 -; 252 : } +; 254 : } 00276 e9 e3 fd ff ff jmp $LN2@NcCreateLa $LN3@NcCreateLa: -; 253 : return TRUE; +; 255 : return TRUE; 0027b b8 01 00 00 00 mov eax, 1 $LN1@NcCreateLa: -; 254 : } +; 256 : } 00280 48 8b f8 mov rdi, rax 00283 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] @@ -12760,7 +12250,7 @@ Block$ = 264 FixLabels$ = 272 ?NcInsertBlockBefore@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z PROC ; NcInsertBlockBefore, COMDAT -; 185 : { +; 187 : { $LN10: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -12781,7 +12271,7 @@ $LN10: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 186 : if (!Link || !Link->Block || !Block || !Block->Start || !Block->End) +; 188 : if (!Link || !Link->Block || !Block || !Block->Start || !Block->End) 00040 48 83 bd 00 01 00 00 00 cmp QWORD PTR Link$[rbp], 0 @@ -12803,14 +12293,14 @@ $LN10: 0007b 75 07 jne SHORT $LN5@NcInsertBl $LN6@NcInsertBl: -; 187 : return FALSE; +; 189 : return FALSE; 0007d 33 c0 xor eax, eax 0007f e9 0e 01 00 00 jmp $LN1@NcInsertBl $LN5@NcInsertBl: -; 188 : -; 189 : if (FixLabels && Block->LabelIds.size() && Link->Block->LabelIds.size()) +; 190 : +; 191 : if (FixLabels && Block->LabelIds.size() && Link->Block->LabelIds.size()) 00084 83 bd 10 01 00 00 00 cmp DWORD PTR FixLabels$[rbp], 0 @@ -12831,7 +12321,7 @@ $LN5@NcInsertBl: 000bc 48 85 c0 test rax, rax 000bf 74 17 je SHORT $LN7@NcInsertBl -; 190 : NcFixLabelsForBlocks(Link->Block, Block); +; 192 : NcFixLabelsForBlocks(Link->Block, Block); 000c1 48 8b 95 08 01 00 00 mov rdx, QWORD PTR Block$[rbp] @@ -12841,15 +12331,15 @@ $LN5@NcInsertBl: 000d3 e8 00 00 00 00 call ?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z ; NcFixLabelsForBlocks $LN7@NcInsertBl: -; 191 : -; 192 : if (Link->Prev) +; 193 : +; 194 : 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 -; 193 : Link->Prev->Next = Block->Start; +; 195 : Link->Prev->Next = Block->Start; 000e6 48 8b 85 00 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -12860,7 +12350,7 @@ $LN7@NcInsertBl: 000fb 48 89 08 mov QWORD PTR [rax], rcx $LN8@NcInsertBl: -; 194 : Block->Start->Prev = Link->Prev; +; 196 : Block->Start->Prev = Link->Prev; 000fe 48 8b 85 08 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -12870,7 +12360,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 -; 195 : Block->End->Next = Link; +; 197 : Block->End->Next = Link; 00117 48 8b 85 08 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -12879,7 +12369,7 @@ $LN8@NcInsertBl: 00 00 mov rcx, QWORD PTR Link$[rbp] 00129 48 89 08 mov QWORD PTR [rax], rcx -; 196 : Link->Prev = Block->End; +; 198 : Link->Prev = Block->End; 0012c 48 8b 85 00 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -12888,8 +12378,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 -; 197 : -; 198 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) +; 199 : +; 200 : 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] @@ -12910,7 +12400,7 @@ $LN4@NcInsertBl: 00172 48 39 45 08 cmp QWORD PTR T$1[rbp], rax 00176 74 15 je SHORT $LN3@NcInsertBl -; 199 : T->Block = Link->Block; +; 201 : T->Block = Link->Block; 00178 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] 0017c 48 8b 8d 00 01 @@ -12920,13 +12410,13 @@ $LN4@NcInsertBl: 0018b eb c5 jmp SHORT $LN2@NcInsertBl $LN3@NcInsertBl: -; 200 : -; 201 : return TRUE; +; 202 : +; 203 : return TRUE; 0018d b8 01 00 00 00 mov eax, 1 $LN1@NcInsertBl: -; 202 : } +; 204 : } 00192 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] @@ -12945,7 +12435,7 @@ Block$ = 264 FixLabels$ = 272 ?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z PROC ; NcInsertBlockAfter, COMDAT -; 165 : { +; 167 : { $LN10: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -12966,7 +12456,7 @@ $LN10: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 166 : if (!Link || !Link->Block || !Block || !Block->Start || !Block->End || Link->Block == Block) +; 168 : 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 @@ -12994,14 +12484,14 @@ $LN10: 0008f 75 07 jne SHORT $LN5@NcInsertBl $LN6@NcInsertBl: -; 167 : return FALSE; +; 169 : return FALSE; 00091 33 c0 xor eax, eax 00093 e9 0b 01 00 00 jmp $LN1@NcInsertBl $LN5@NcInsertBl: -; 168 : -; 169 : if (FixLabels && Block->LabelIds.size() && Link->Block->LabelIds.size()) +; 170 : +; 171 : if (FixLabels && Block->LabelIds.size() && Link->Block->LabelIds.size()) 00098 83 bd 10 01 00 00 00 cmp DWORD PTR FixLabels$[rbp], 0 @@ -13022,7 +12512,7 @@ $LN5@NcInsertBl: 000d0 48 85 c0 test rax, rax 000d3 74 17 je SHORT $LN7@NcInsertBl -; 170 : NcFixLabelsForBlocks(Link->Block, Block); +; 172 : NcFixLabelsForBlocks(Link->Block, Block); 000d5 48 8b 95 08 01 00 00 mov rdx, QWORD PTR Block$[rbp] @@ -13032,15 +12522,15 @@ $LN5@NcInsertBl: 000e7 e8 00 00 00 00 call ?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z ; NcFixLabelsForBlocks $LN7@NcInsertBl: -; 171 : -; 172 : if (Link->Next) +; 173 : +; 174 : 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 -; 173 : Link->Next->Prev = Block->End; +; 175 : Link->Next->Prev = Block->End; 000f9 48 8b 85 00 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -13051,7 +12541,7 @@ $LN7@NcInsertBl: 0010e 48 89 48 08 mov QWORD PTR [rax+8], rcx $LN8@NcInsertBl: -; 174 : Block->End->Next = Link->Next; +; 176 : Block->End->Next = Link->Next; 00112 48 8b 85 08 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -13061,7 +12551,7 @@ $LN8@NcInsertBl: 00124 48 8b 09 mov rcx, QWORD PTR [rcx] 00127 48 89 08 mov QWORD PTR [rax], rcx -; 175 : Block->Start->Prev = Link; +; 177 : Block->Start->Prev = Link; 0012a 48 8b 85 08 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -13070,7 +12560,7 @@ $LN8@NcInsertBl: 00 00 mov rcx, QWORD PTR Link$[rbp] 0013b 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 176 : Link->Next = Block->Start; +; 178 : Link->Next = Block->Start; 0013f 48 8b 85 00 01 00 00 mov rax, QWORD PTR Link$[rbp] @@ -13079,8 +12569,8 @@ $LN8@NcInsertBl: 0014d 48 8b 09 mov rcx, QWORD PTR [rcx] 00150 48 89 08 mov QWORD PTR [rax], rcx -; 177 : -; 178 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) +; 179 : +; 180 : 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] @@ -13101,7 +12591,7 @@ $LN4@NcInsertBl: 00183 48 39 45 08 cmp QWORD PTR T$1[rbp], rax 00187 74 15 je SHORT $LN3@NcInsertBl -; 179 : T->Block = Link->Block; +; 181 : T->Block = Link->Block; 00189 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] 0018d 48 8b 8d 00 01 @@ -13111,13 +12601,13 @@ $LN4@NcInsertBl: 0019c eb c5 jmp SHORT $LN2@NcInsertBl $LN3@NcInsertBl: -; 180 : -; 181 : return TRUE; +; 182 : +; 183 : return TRUE; 0019e b8 01 00 00 00 mov eax, 1 $LN1@NcInsertBl: -; 182 : } +; 184 : } 001a3 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] @@ -13140,27 +12630,27 @@ $T10 = 424 $T11 = 456 $T12 = 504 $T13 = 548 -tv176 = 568 -tv86 = 568 -tv179 = 576 -tv135 = 584 -tv130 = 592 -tv181 = 600 -tv89 = 608 -tv196 = 616 -tv186 = 624 -tv158 = 632 -tv150 = 640 -tv197 = 648 -tv191 = 656 -tv156 = 664 -tv162 = 672 +tv179 = 568 +tv89 = 568 +tv182 = 576 +tv138 = 584 +tv133 = 592 +tv184 = 600 +tv92 = 608 +tv199 = 616 +tv189 = 624 +tv161 = 632 +tv153 = 640 +tv200 = 648 +tv194 = 656 +tv159 = 664 +tv165 = 672 __$ArrayPad$ = 680 Block1$ = 720 Block2$ = 728 ?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z PROC ; NcFixLabelsForBlocks, COMDAT -; 152 : { +; 154 : { $LN17: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -13187,7 +12677,7 @@ $LN17: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00051 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 153 : for (PNATIVE_CODE_LINK T = Block2->Start; T; T = T->Next) +; 155 : for (PNATIVE_CODE_LINK T = Block2->Start; T && T != Block2->End->Next; T = T->Next) 00056 48 8b 85 d8 02 00 00 mov rax, QWORD PTR Block2$[rbp] @@ -13200,206 +12690,213 @@ $LN2@NcFixLabel: 0006d 48 89 45 08 mov QWORD PTR T$4[rbp], rax $LN4@NcFixLabel: 00071 48 83 7d 08 00 cmp QWORD PTR T$4[rbp], 0 - 00076 0f 84 26 02 00 + 00076 0f 84 3e 02 00 + 00 je $LN3@NcFixLabel + 0007c 48 8b 85 d8 02 + 00 00 mov rax, QWORD PTR Block2$[rbp] + 00083 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 00087 48 8b 00 mov rax, QWORD PTR [rax] + 0008a 48 39 45 08 cmp QWORD PTR T$4[rbp], rax + 0008e 0f 84 26 02 00 00 je $LN3@NcFixLabel -; 154 : { -; 155 : if ((T->Flags & CODE_FLAG_IS_LABEL) && StdFind(Block1->LabelIds.begin(), Block1->LabelIds.end(), T->Label) != Block1->LabelIds.end()) +; 156 : { +; 157 : 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] - 00083 83 e0 01 and eax, 1 - 00086 85 c0 test eax, eax - 00088 0f 84 64 01 00 + 00094 48 8b 45 08 mov rax, QWORD PTR T$4[rbp] + 00098 8b 40 18 mov eax, DWORD PTR [rax+24] + 0009b 83 e0 01 and eax, 1 + 0009e 85 c0 test eax, eax + 000a0 0f 84 64 01 00 00 je $LN7@NcFixLabel - 0008e 48 8d 85 28 01 + 000a6 48 8d 85 28 01 00 00 lea rax, QWORD PTR $T7[rbp] - 00095 48 89 85 58 01 + 000ad 48 89 85 58 01 00 00 mov QWORD PTR $T8[rbp], rax - 0009c 48 8b 85 d0 02 + 000b4 48 8b 85 d0 02 00 00 mov rax, QWORD PTR Block1$[rbp] - 000a3 48 83 c0 10 add rax, 16 - 000a7 48 89 85 38 02 - 00 00 mov QWORD PTR tv86[rbp], rax - 000ae 48 8b 95 58 01 + 000bb 48 83 c0 10 add rax, 16 + 000bf 48 89 85 38 02 + 00 00 mov QWORD PTR tv89[rbp], rax + 000c6 48 8b 95 58 01 00 00 mov rdx, QWORD PTR $T8[rbp] - 000b5 48 8b 8d 38 02 - 00 00 mov rcx, QWORD PTR tv86[rbp] - 000bc e8 00 00 00 00 call ?end@?$vector@KV?$allocator@K@std@@@std@@QEAA?AV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@2@XZ ; std::vector >::end - 000c1 48 89 85 40 02 - 00 00 mov QWORD PTR tv179[rbp], rax - 000c8 48 8b 85 40 02 - 00 00 mov rax, QWORD PTR tv179[rbp] - 000cf 48 89 85 48 02 - 00 00 mov QWORD PTR tv135[rbp], rax - 000d6 48 8d 85 78 01 + 000cd 48 8b 8d 38 02 + 00 00 mov rcx, QWORD PTR tv89[rbp] + 000d4 e8 00 00 00 00 call ?end@?$vector@KV?$allocator@K@std@@@std@@QEAA?AV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@2@XZ ; std::vector >::end + 000d9 48 89 85 40 02 + 00 00 mov QWORD PTR tv182[rbp], rax + 000e0 48 8b 85 40 02 + 00 00 mov rax, QWORD PTR tv182[rbp] + 000e7 48 89 85 48 02 + 00 00 mov QWORD PTR tv138[rbp], rax + 000ee 48 8d 85 78 01 00 00 lea rax, QWORD PTR $T9[rbp] - 000dd 48 89 85 a8 01 + 000f5 48 89 85 a8 01 00 00 mov QWORD PTR $T10[rbp], rax - 000e4 48 8b 85 d0 02 + 000fc 48 8b 85 d0 02 00 00 mov rax, QWORD PTR Block1$[rbp] - 000eb 48 83 c0 10 add rax, 16 - 000ef 48 89 85 50 02 - 00 00 mov QWORD PTR tv130[rbp], rax - 000f6 48 8b 95 a8 01 + 00103 48 83 c0 10 add rax, 16 + 00107 48 89 85 50 02 + 00 00 mov QWORD PTR tv133[rbp], rax + 0010e 48 8b 95 a8 01 00 00 mov rdx, QWORD PTR $T10[rbp] - 000fd 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR tv130[rbp] - 00104 e8 00 00 00 00 call ?begin@?$vector@KV?$allocator@K@std@@@std@@QEAA?AV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@2@XZ ; std::vector >::begin - 00109 48 89 85 58 02 - 00 00 mov QWORD PTR tv181[rbp], rax - 00110 48 8b 85 58 02 - 00 00 mov rax, QWORD PTR tv181[rbp] - 00117 48 89 85 60 02 - 00 00 mov QWORD PTR tv89[rbp], rax - 0011e 48 8b 45 08 mov rax, QWORD PTR T$4[rbp] - 00122 48 83 c0 1c add rax, 28 - 00126 4c 8b c8 mov r9, rax - 00129 4c 8b 85 48 02 - 00 00 mov r8, QWORD PTR tv135[rbp] - 00130 48 8b 95 60 02 - 00 00 mov rdx, QWORD PTR tv89[rbp] - 00137 48 8d 8d c8 01 + 00115 48 8b 8d 50 02 + 00 00 mov rcx, QWORD PTR tv133[rbp] + 0011c e8 00 00 00 00 call ?begin@?$vector@KV?$allocator@K@std@@@std@@QEAA?AV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@2@XZ ; std::vector >::begin + 00121 48 89 85 58 02 + 00 00 mov QWORD PTR tv184[rbp], rax + 00128 48 8b 85 58 02 + 00 00 mov rax, QWORD PTR tv184[rbp] + 0012f 48 89 85 60 02 + 00 00 mov QWORD PTR tv92[rbp], rax + 00136 48 8b 45 08 mov rax, QWORD PTR T$4[rbp] + 0013a 48 83 c0 1c add rax, 28 + 0013e 4c 8b c8 mov r9, rax + 00141 4c 8b 85 48 02 + 00 00 mov r8, QWORD PTR tv138[rbp] + 00148 48 8b 95 60 02 + 00 00 mov rdx, QWORD PTR tv92[rbp] + 0014f 48 8d 8d c8 01 00 00 lea rcx, QWORD PTR $T11[rbp] - 0013e e8 00 00 00 00 call ??$find@V?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@K@std@@YA?AV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@0@V10@V10@AEBK@Z ; std::find > >,unsigned long> - 00143 48 89 85 68 02 - 00 00 mov QWORD PTR tv196[rbp], rax - 0014a 48 8b 85 68 02 - 00 00 mov rax, QWORD PTR tv196[rbp] - 00151 48 89 85 70 02 - 00 00 mov QWORD PTR tv186[rbp], rax - 00158 8b 85 24 02 00 + 00156 e8 00 00 00 00 call ??$find@V?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@K@std@@YA?AV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@0@V10@V10@AEBK@Z ; std::find > >,unsigned long> + 0015b 48 89 85 68 02 + 00 00 mov QWORD PTR tv199[rbp], rax + 00162 48 8b 85 68 02 + 00 00 mov rax, QWORD PTR tv199[rbp] + 00169 48 89 85 70 02 + 00 00 mov QWORD PTR tv189[rbp], rax + 00170 8b 85 24 02 00 00 mov eax, DWORD PTR $T13[rbp] - 0015e 83 c8 01 or eax, 1 - 00161 89 85 24 02 00 + 00176 83 c8 01 or eax, 1 + 00179 89 85 24 02 00 00 mov DWORD PTR $T13[rbp], eax - 00167 48 8b 85 70 02 - 00 00 mov rax, QWORD PTR tv186[rbp] - 0016e 48 89 85 78 02 - 00 00 mov QWORD PTR tv158[rbp], rax - 00175 48 8b 85 d0 02 + 0017f 48 8b 85 70 02 + 00 00 mov rax, QWORD PTR tv189[rbp] + 00186 48 89 85 78 02 + 00 00 mov QWORD PTR tv161[rbp], rax + 0018d 48 8b 85 d0 02 00 00 mov rax, QWORD PTR Block1$[rbp] - 0017c 48 83 c0 10 add rax, 16 - 00180 48 89 85 80 02 - 00 00 mov QWORD PTR tv150[rbp], rax - 00187 48 8d 95 f8 01 + 00194 48 83 c0 10 add rax, 16 + 00198 48 89 85 80 02 + 00 00 mov QWORD PTR tv153[rbp], rax + 0019f 48 8d 95 f8 01 00 00 lea rdx, QWORD PTR $T12[rbp] - 0018e 48 8b 8d 80 02 - 00 00 mov rcx, QWORD PTR tv150[rbp] - 00195 e8 00 00 00 00 call ?end@?$vector@KV?$allocator@K@std@@@std@@QEAA?AV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@2@XZ ; std::vector >::end - 0019a 48 89 85 88 02 - 00 00 mov QWORD PTR tv197[rbp], rax - 001a1 48 8b 85 88 02 - 00 00 mov rax, QWORD PTR tv197[rbp] - 001a8 48 89 85 90 02 - 00 00 mov QWORD PTR tv191[rbp], rax - 001af 8b 85 24 02 00 + 001a6 48 8b 8d 80 02 + 00 00 mov rcx, QWORD PTR tv153[rbp] + 001ad e8 00 00 00 00 call ?end@?$vector@KV?$allocator@K@std@@@std@@QEAA?AV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@2@XZ ; std::vector >::end + 001b2 48 89 85 88 02 + 00 00 mov QWORD PTR tv200[rbp], rax + 001b9 48 8b 85 88 02 + 00 00 mov rax, QWORD PTR tv200[rbp] + 001c0 48 89 85 90 02 + 00 00 mov QWORD PTR tv194[rbp], rax + 001c7 8b 85 24 02 00 00 mov eax, DWORD PTR $T13[rbp] - 001b5 83 c8 02 or eax, 2 - 001b8 89 85 24 02 00 + 001cd 83 c8 02 or eax, 2 + 001d0 89 85 24 02 00 00 mov DWORD PTR $T13[rbp], eax - 001be 48 8b 85 90 02 - 00 00 mov rax, QWORD PTR tv191[rbp] - 001c5 48 89 85 98 02 - 00 00 mov QWORD PTR tv156[rbp], rax - 001cc 48 8b 95 98 02 - 00 00 mov rdx, QWORD PTR tv156[rbp] - 001d3 48 8b 8d 78 02 - 00 00 mov rcx, QWORD PTR tv158[rbp] - 001da e8 00 00 00 00 call ??9?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@QEBA_NAEBV01@@Z ; std::_Vector_const_iterator > >::operator!= - 001df 0f b6 c0 movzx eax, al - 001e2 85 c0 test eax, eax - 001e4 74 0c je SHORT $LN7@NcFixLabel - 001e6 c7 85 a0 02 00 - 00 01 00 00 00 mov DWORD PTR tv162[rbp], 1 - 001f0 eb 0a jmp SHORT $LN8@NcFixLabel + 001d6 48 8b 85 90 02 + 00 00 mov rax, QWORD PTR tv194[rbp] + 001dd 48 89 85 98 02 + 00 00 mov QWORD PTR tv159[rbp], rax + 001e4 48 8b 95 98 02 + 00 00 mov rdx, QWORD PTR tv159[rbp] + 001eb 48 8b 8d 78 02 + 00 00 mov rcx, QWORD PTR tv161[rbp] + 001f2 e8 00 00 00 00 call ??9?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@QEBA_NAEBV01@@Z ; std::_Vector_const_iterator > >::operator!= + 001f7 0f b6 c0 movzx eax, al + 001fa 85 c0 test eax, eax + 001fc 74 0c je SHORT $LN7@NcFixLabel + 001fe c7 85 a0 02 00 + 00 01 00 00 00 mov DWORD PTR tv165[rbp], 1 + 00208 eb 0a jmp SHORT $LN8@NcFixLabel $LN7@NcFixLabel: - 001f2 c7 85 a0 02 00 - 00 00 00 00 00 mov DWORD PTR tv162[rbp], 0 + 0020a c7 85 a0 02 00 + 00 00 00 00 00 mov DWORD PTR tv165[rbp], 0 $LN8@NcFixLabel: - 001fc 0f b6 85 a0 02 - 00 00 movzx eax, BYTE PTR tv162[rbp] - 00203 88 85 04 01 00 + 00214 0f b6 85 a0 02 + 00 00 movzx eax, BYTE PTR tv165[rbp] + 0021b 88 85 04 01 00 00 mov BYTE PTR $T6[rbp], al - 00209 8b 85 24 02 00 + 00221 8b 85 24 02 00 00 mov eax, DWORD PTR $T13[rbp] - 0020f 83 e0 02 and eax, 2 - 00212 85 c0 test eax, eax - 00214 74 14 je SHORT $LN15@NcFixLabel - 00216 83 a5 24 02 00 + 00227 83 e0 02 and eax, 2 + 0022a 85 c0 test eax, eax + 0022c 74 14 je SHORT $LN15@NcFixLabel + 0022e 83 a5 24 02 00 00 fd and DWORD PTR $T13[rbp], -3 - 0021d 48 8d 8d f8 01 + 00235 48 8d 8d f8 01 00 00 lea rcx, QWORD PTR $T12[rbp] - 00224 e8 00 00 00 00 call ??1?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@QEAA@XZ - 00229 90 npad 1 + 0023c e8 00 00 00 00 call ??1?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@QEAA@XZ + 00241 90 npad 1 $LN15@NcFixLabel: - 0022a 8b 85 24 02 00 + 00242 8b 85 24 02 00 00 mov eax, DWORD PTR $T13[rbp] - 00230 83 e0 01 and eax, 1 - 00233 85 c0 test eax, eax - 00235 74 13 je SHORT $LN16@NcFixLabel - 00237 83 a5 24 02 00 + 00248 83 e0 01 and eax, 1 + 0024b 85 c0 test eax, eax + 0024d 74 13 je SHORT $LN16@NcFixLabel + 0024f 83 a5 24 02 00 00 fe and DWORD PTR $T13[rbp], -2 - 0023e 48 8d 8d c8 01 + 00256 48 8d 8d c8 01 00 00 lea rcx, QWORD PTR $T11[rbp] - 00245 e8 00 00 00 00 call ??1?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@QEAA@XZ + 0025d e8 00 00 00 00 call ??1?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@K@std@@@std@@@std@@QEAA@XZ $LN16@NcFixLabel: - 0024a 0f b6 85 04 01 + 00262 0f b6 85 04 01 00 00 movzx eax, BYTE PTR $T6[rbp] - 00251 85 c0 test eax, eax - 00253 74 48 je SHORT $LN5@NcFixLabel + 00269 85 c0 test eax, eax + 0026b 74 48 je SHORT $LN5@NcFixLabel -; 156 : { -; 157 : ULONG Lid = NcGenUnusedLabelId(Block1); +; 158 : { +; 159 : ULONG Lid = NcGenUnusedLabelId(Block1); - 00255 48 8b 8d d0 02 + 0026d 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 + 00274 e8 00 00 00 00 call ?NcGenUnusedLabelId@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z ; NcGenUnusedLabelId + 00279 89 45 24 mov DWORD PTR Lid$5[rbp], eax -; 158 : NcChangeLabelId(Block2, T->Label, Lid); +; 160 : 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] - 0026c 8b 50 1c mov edx, DWORD PTR [rax+28] - 0026f 48 8b 8d d8 02 + 0027c 44 8b 45 24 mov r8d, DWORD PTR Lid$5[rbp] + 00280 48 8b 45 08 mov rax, QWORD PTR T$4[rbp] + 00284 8b 50 1c mov edx, DWORD PTR [rax+28] + 00287 48 8b 8d d8 02 00 00 mov rcx, QWORD PTR Block2$[rbp] - 00276 e8 00 00 00 00 call ?NcChangeLabelId@@YAXPEAU_NATIVE_CODE_BLOCK@@KK@Z ; NcChangeLabelId + 0028e e8 00 00 00 00 call ?NcChangeLabelId@@YAXPEAU_NATIVE_CODE_BLOCK@@KK@Z ; NcChangeLabelId -; 159 : Block1->LabelIds.push_back(Lid); +; 161 : Block1->LabelIds.push_back(Lid); - 0027b 48 8b 85 d0 02 + 00293 48 8b 85 d0 02 00 00 mov rax, QWORD PTR Block1$[rbp] - 00282 48 83 c0 10 add rax, 16 - 00286 48 89 85 38 02 - 00 00 mov QWORD PTR tv176[rbp], rax - 0028d 48 8d 55 24 lea rdx, QWORD PTR Lid$5[rbp] - 00291 48 8b 8d 38 02 - 00 00 mov rcx, QWORD PTR tv176[rbp] - 00298 e8 00 00 00 00 call ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ; std::vector >::push_back + 0029a 48 83 c0 10 add rax, 16 + 0029e 48 89 85 38 02 + 00 00 mov QWORD PTR tv179[rbp], rax + 002a5 48 8d 55 24 lea rdx, QWORD PTR Lid$5[rbp] + 002a9 48 8b 8d 38 02 + 00 00 mov rcx, QWORD PTR tv179[rbp] + 002b0 e8 00 00 00 00 call ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ; std::vector >::push_back $LN5@NcFixLabel: -; 160 : } -; 161 : } +; 162 : } +; 163 : } - 0029d e9 c4 fd ff ff jmp $LN2@NcFixLabel + 002b5 e9 ac fd ff ff jmp $LN2@NcFixLabel $LN3@NcFixLabel: -; 162 : } +; 164 : } - 002a2 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 002a6 48 8d 15 00 00 + 002ba 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] + 002be 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z$rtcFrameData - 002ad e8 00 00 00 00 call _RTC_CheckStackVars - 002b2 48 8b 8d a8 02 + 002c5 e8 00 00 00 00 call _RTC_CheckStackVars + 002ca 48 8b 8d a8 02 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 002b9 48 33 cd xor rcx, rbp - 002bc e8 00 00 00 00 call __security_check_cookie - 002c1 48 8d a5 b8 02 + 002d1 48 33 cd xor rcx, rbp + 002d4 e8 00 00 00 00 call __security_check_cookie + 002d9 48 8d a5 b8 02 00 00 lea rsp, QWORD PTR [rbp+696] - 002c8 5f pop rdi - 002c9 5d pop rbp - 002ca c3 ret 0 + 002e0 5f pop rdi + 002e1 5d pop rbp + 002e2 c3 ret 0 ?NcFixLabelsForBlocks@@YAXPEAU_NATIVE_CODE_BLOCK@@0@Z ENDP ; NcFixLabelsForBlocks _TEXT ENDS ; COMDAT text$x @@ -13414,21 +12911,21 @@ $T10 = 424 $T11 = 456 $T12 = 504 $T13 = 548 -tv176 = 568 -tv86 = 568 -tv179 = 576 -tv135 = 584 -tv130 = 592 -tv181 = 600 -tv89 = 608 -tv196 = 616 -tv186 = 624 -tv158 = 632 -tv150 = 640 -tv197 = 648 -tv191 = 656 -tv156 = 664 -tv162 = 672 +tv179 = 568 +tv89 = 568 +tv182 = 576 +tv138 = 584 +tv133 = 592 +tv184 = 600 +tv92 = 608 +tv199 = 616 +tv189 = 624 +tv161 = 632 +tv153 = 640 +tv200 = 648 +tv194 = 656 +tv159 = 664 +tv165 = 672 __$ArrayPad$ = 680 Block1$ = 720 Block2$ = 728 @@ -13468,21 +12965,21 @@ $T10 = 424 $T11 = 456 $T12 = 504 $T13 = 548 -tv176 = 568 -tv86 = 568 -tv179 = 576 -tv135 = 584 -tv130 = 592 -tv181 = 600 -tv89 = 608 -tv196 = 616 -tv186 = 624 -tv158 = 632 -tv150 = 640 -tv197 = 648 -tv191 = 656 -tv156 = 664 -tv162 = 672 +tv179 = 568 +tv89 = 568 +tv182 = 576 +tv138 = 584 +tv133 = 592 +tv184 = 600 +tv92 = 608 +tv199 = 616 +tv189 = 624 +tv161 = 632 +tv153 = 640 +tv200 = 648 +tv194 = 656 +tv159 = 664 +tv165 = 672 __$ArrayPad$ = 680 Block1$ = 720 Block2$ = 728 @@ -13523,21 +13020,21 @@ $T10 = 424 $T11 = 456 $T12 = 504 $T13 = 548 -tv176 = 568 -tv86 = 568 -tv179 = 576 -tv135 = 584 -tv130 = 592 -tv181 = 600 -tv89 = 608 -tv196 = 616 -tv186 = 624 -tv158 = 632 -tv150 = 640 -tv197 = 648 -tv191 = 656 -tv156 = 664 -tv162 = 672 +tv179 = 568 +tv89 = 568 +tv182 = 576 +tv138 = 584 +tv133 = 592 +tv184 = 600 +tv92 = 608 +tv199 = 616 +tv189 = 624 +tv161 = 632 +tv153 = 640 +tv200 = 648 +tv194 = 656 +tv159 = 664 +tv165 = 672 __$ArrayPad$ = 680 Block1$ = 720 Block2$ = 728 @@ -13578,21 +13075,21 @@ $T10 = 424 $T11 = 456 $T12 = 504 $T13 = 548 -tv176 = 568 -tv86 = 568 -tv179 = 576 -tv135 = 584 -tv130 = 592 -tv181 = 600 -tv89 = 608 -tv196 = 616 -tv186 = 624 -tv158 = 632 -tv150 = 640 -tv197 = 648 -tv191 = 656 -tv156 = 664 -tv162 = 672 +tv179 = 568 +tv89 = 568 +tv182 = 576 +tv138 = 584 +tv133 = 592 +tv184 = 600 +tv92 = 608 +tv199 = 616 +tv189 = 624 +tv161 = 632 +tv153 = 640 +tv200 = 648 +tv194 = 656 +tv159 = 664 +tv165 = 672 __$ArrayPad$ = 680 Block1$ = 720 Block2$ = 728 @@ -13649,7 +13146,7 @@ __$ArrayPad$ = 608 Block$ = 656 ?NcGenUnusedLabelId@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcGenUnusedLabelId, COMDAT -; 135 : { +; 137 : { $LN9: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -13673,14 +13170,14 @@ $LN9: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 136 : ULONG ReturnLabelId = rand(); +; 138 : 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: -; 137 : while (StdFind(Block->LabelIds.begin(), Block->LabelIds.end(), ReturnLabelId) != Block->LabelIds.end()) +; 139 : 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] @@ -13779,7 +13276,7 @@ $LN2@NcGenUnuse: 001a2 85 c0 test eax, eax 001a4 74 0e je SHORT $LN3@NcGenUnuse -; 138 : ReturnLabelId = rand(); +; 140 : ReturnLabelId = rand(); 001a6 ff 15 00 00 00 00 call QWORD PTR __imp_rand @@ -13787,11 +13284,11 @@ $LN2@NcGenUnuse: 001af e9 9c fe ff ff jmp $LN2@NcGenUnuse $LN3@NcGenUnuse: -; 139 : return ReturnLabelId; +; 141 : return ReturnLabelId; 001b4 8b 45 04 mov eax, DWORD PTR ReturnLabelId$[rbp] -; 140 : } +; 142 : } 001b7 8b f8 mov edi, eax 001b9 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] @@ -13986,7 +13483,7 @@ Original$ = 264 New$ = 272 ?NcChangeLabelId@@YAXPEAU_NATIVE_CODE_BLOCK@@KK@Z PROC ; NcChangeLabelId, COMDAT -; 143 : { +; 145 : { $LN8: 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d @@ -14007,7 +13504,7 @@ $LN8: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 0003a e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 144 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) +; 146 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) 0003f 48 8b 85 00 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14020,48 +13517,54 @@ $LN2@NcChangeLa: 00056 48 89 45 08 mov QWORD PTR T$1[rbp], rax $LN4@NcChangeLa: 0005a 48 83 7d 08 00 cmp QWORD PTR T$1[rbp], 0 - 0005f 74 3a je SHORT $LN3@NcChangeLa - -; 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] - 00068 83 e0 01 and eax, 1 - 0006b 85 c0 test eax, eax - 0006d 75 0e jne SHORT $LN6@NcChangeLa - 0006f 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] - 00073 8b 40 18 mov eax, DWORD PTR [rax+24] - 00076 83 e0 02 and eax, 2 - 00079 85 c0 test eax, eax - 0007b 74 1c je SHORT $LN5@NcChangeLa + 0005f 74 4e je SHORT $LN3@NcChangeLa + 00061 48 8b 85 00 01 + 00 00 mov rax, QWORD PTR Block$[rbp] + 00068 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 0006c 48 8b 00 mov rax, QWORD PTR [rax] + 0006f 48 39 45 08 cmp QWORD PTR T$1[rbp], rax + 00073 74 3a je SHORT $LN3@NcChangeLa + +; 147 : { +; 148 : if (((T->Flags & CODE_FLAG_IS_LABEL) || (T->Flags & CODE_FLAG_IS_REL_JMP)) && T->Label == Original) + + 00075 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] + 00079 8b 40 18 mov eax, DWORD PTR [rax+24] + 0007c 83 e0 01 and eax, 1 + 0007f 85 c0 test eax, eax + 00081 75 0e jne SHORT $LN6@NcChangeLa + 00083 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] + 00087 8b 40 18 mov eax, DWORD PTR [rax+24] + 0008a 83 e0 02 and eax, 2 + 0008d 85 c0 test eax, eax + 0008f 74 1c je SHORT $LN5@NcChangeLa $LN6@NcChangeLa: - 0007d 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] - 00081 8b 8d 08 01 00 + 00091 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] + 00095 8b 8d 08 01 00 00 mov ecx, DWORD PTR Original$[rbp] - 00087 39 48 1c cmp DWORD PTR [rax+28], ecx - 0008a 75 0d jne SHORT $LN5@NcChangeLa + 0009b 39 48 1c cmp DWORD PTR [rax+28], ecx + 0009e 75 0d jne SHORT $LN5@NcChangeLa -; 147 : T->Label = New; +; 149 : T->Label = New; - 0008c 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] - 00090 8b 8d 10 01 00 + 000a0 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] + 000a4 8b 8d 10 01 00 00 mov ecx, DWORD PTR New$[rbp] - 00096 89 48 1c mov DWORD PTR [rax+28], ecx + 000aa 89 48 1c mov DWORD PTR [rax+28], ecx $LN5@NcChangeLa: -; 148 : } +; 150 : } - 00099 eb b4 jmp SHORT $LN2@NcChangeLa + 000ad eb a0 jmp SHORT $LN2@NcChangeLa $LN3@NcChangeLa: -; 149 : } +; 151 : } - 0009b 48 8d a5 e8 00 + 000af 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] - 000a2 5f pop rdi - 000a3 5d pop rbp - 000a4 c3 ret 0 + 000b6 5f pop rdi + 000b7 5d pop rbp + 000b8 c3 ret 0 ?NcChangeLabelId@@YAXPEAU_NATIVE_CODE_BLOCK@@KK@Z ENDP ; NcChangeLabelId _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -14073,7 +13576,7 @@ T$1 = 40 Block$ = 288 ?NcCalcBlockSize@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z PROC ; NcCalcBlockSize, COMDAT -; 123 : { +; 125 : { $LN7: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -14092,12 +13595,12 @@ $LN7: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 124 : ULONG TotalSize = 0; +; 126 : ULONG TotalSize = 0; 00036 c7 45 04 00 00 00 00 mov DWORD PTR TotalSize$[rbp], 0 -; 125 : for (PNATIVE_CODE_LINK T = Block->Start; T != Block->End->Next; T = T->Next) +; 127 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) 0003d 48 8b 85 20 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14109,52 +13612,54 @@ $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 8b 85 20 01 + 00058 48 83 7d 28 00 cmp QWORD PTR T$1[rbp], 0 + 0005d 74 37 je SHORT $LN3@NcCalcBloc + 0005f 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 + 00066 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 0006a 48 8b 00 mov rax, QWORD PTR [rax] + 0006d 48 39 45 28 cmp QWORD PTR T$1[rbp], rax + 00071 74 23 je SHORT $LN3@NcCalcBloc -; 126 : { -; 127 : if (T->Flags & CODE_FLAG_IS_LABEL) +; 128 : { +; 129 : if (T->Flags & CODE_FLAG_IS_LABEL) - 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 + 00073 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 00077 8b 40 18 mov eax, DWORD PTR [rax+24] + 0007a 83 e0 01 and eax, 1 + 0007d 85 c0 test eax, eax + 0007f 74 02 je SHORT $LN5@NcCalcBloc -; 128 : continue; +; 130 : continue; - 0007a eb d1 jmp SHORT $LN2@NcCalcBloc + 00081 eb ca jmp SHORT $LN2@NcCalcBloc $LN5@NcCalcBloc: -; 129 : TotalSize += T->RawDataSize; +; 131 : TotalSize += T->RawDataSize; - 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 + 00083 48 8b 45 28 mov rax, QWORD PTR T$1[rbp] + 00087 8b 40 28 mov eax, DWORD PTR [rax+40] + 0008a 8b 4d 04 mov ecx, DWORD PTR TotalSize$[rbp] + 0008d 03 c8 add ecx, eax + 0008f 8b c1 mov eax, ecx + 00091 89 45 04 mov DWORD PTR TotalSize$[rbp], eax -; 130 : } +; 132 : } - 0008d eb be jmp SHORT $LN2@NcCalcBloc + 00094 eb b7 jmp SHORT $LN2@NcCalcBloc $LN3@NcCalcBloc: -; 131 : return TotalSize; +; 133 : return TotalSize; - 0008f 8b 45 04 mov eax, DWORD PTR TotalSize$[rbp] + 00096 8b 45 04 mov eax, DWORD PTR TotalSize$[rbp] -; 132 : } +; 134 : } - 00092 48 8d a5 08 01 + 00099 48 8d a5 08 01 00 00 lea rsp, QWORD PTR [rbp+264] - 00099 5f pop rdi - 0009a 5d pop rbp - 0009b c3 ret 0 + 000a0 5f pop rdi + 000a1 5d pop rbp + 000a2 c3 ret 0 ?NcCalcBlockSize@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; NcCalcBlockSize _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI @@ -14164,7 +13669,7 @@ _TEXT SEGMENT Link$ = 224 ?NcUnlink@@YAXPEAU_NATIVE_CODE_LINK@@@Z PROC ; NcUnlink, COMDAT -; 112 : { +; 114 : { $LN6: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -14183,21 +13688,21 @@ $LN6: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 113 : if (Link) +; 115 : if (Link) 00036 48 83 bd e0 00 00 00 00 cmp QWORD PTR Link$[rbp], 0 0003e 74 4c je SHORT $LN2@NcUnlink -; 114 : { -; 115 : if (Link->Next) +; 116 : { +; 117 : 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 -; 116 : Link->Next->Prev = Link->Prev; +; 118 : Link->Next->Prev = Link->Prev; 0004d 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14208,14 +13713,14 @@ $LN6: 00062 48 89 48 08 mov QWORD PTR [rax+8], rcx $LN3@NcUnlink: -; 117 : if (Link->Prev) +; 119 : 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 -; 118 : Link->Prev->Next = Link->Next; +; 120 : Link->Prev->Next = Link->Next; 00074 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14227,8 +13732,8 @@ $LN3@NcUnlink: $LN4@NcUnlink: $LN2@NcUnlink: -; 119 : } -; 120 : } +; 121 : } +; 122 : } 0008c 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -14245,7 +13750,7 @@ Link1$ = 224 Link2$ = 232 ?NcInsertLinkBefore@@YAXPEAU_NATIVE_CODE_LINK@@0@Z PROC ; NcInsertLinkBefore, COMDAT -; 100 : { +; 102 : { $LN5: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -14265,14 +13770,14 @@ $LN5: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 101 : if (Link1) +; 103 : if (Link1) 0003b 48 83 bd e0 00 00 00 00 cmp QWORD PTR Link1$[rbp], 0 00043 74 5c je SHORT $LN2@NcInsertLi -; 102 : { -; 103 : Link2->Next = Link1; +; 104 : { +; 105 : Link2->Next = Link1; 00045 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14280,7 +13785,7 @@ $LN5: 00 00 mov rcx, QWORD PTR Link1$[rbp] 00053 48 89 08 mov QWORD PTR [rax], rcx -; 104 : Link2->Prev = Link1->Prev; +; 106 : Link2->Prev = Link1->Prev; 00056 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14289,7 +13794,7 @@ $LN5: 00064 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] 00068 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 105 : Link1->Prev = Link2; +; 107 : Link1->Prev = Link2; 0006c 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Link1$[rbp] @@ -14297,14 +13802,14 @@ $LN5: 00 00 mov rcx, QWORD PTR Link2$[rbp] 0007a 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 106 : if (Link2->Prev) +; 108 : 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 -; 107 : Link2->Prev->Next = Link2; +; 109 : Link2->Prev->Next = Link2; 0008c 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14315,8 +13820,8 @@ $LN5: $LN3@NcInsertLi: $LN2@NcInsertLi: -; 108 : } -; 109 : } +; 110 : } +; 111 : } 000a1 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -14333,7 +13838,7 @@ Link1$ = 224 Link2$ = 232 ?NcInsertLinkAfter@@YAXPEAU_NATIVE_CODE_LINK@@0@Z PROC ; NcInsertLinkAfter, COMDAT -; 88 : { +; 90 : { $LN5: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -14353,14 +13858,14 @@ $LN5: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 89 : if (Link1) +; 91 : if (Link1) 0003b 48 83 bd e0 00 00 00 00 cmp QWORD PTR Link1$[rbp], 0 00043 74 59 je SHORT $LN2@NcInsertLi -; 90 : { -; 91 : Link2->Prev = Link1; +; 92 : { +; 93 : Link2->Prev = Link1; 00045 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14368,7 +13873,7 @@ $LN5: 00 00 mov rcx, QWORD PTR Link1$[rbp] 00053 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 92 : Link2->Next = Link1->Next; +; 94 : Link2->Next = Link1->Next; 00057 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14377,7 +13882,7 @@ $LN5: 00065 48 8b 09 mov rcx, QWORD PTR [rcx] 00068 48 89 08 mov QWORD PTR [rax], rcx -; 93 : Link1->Next = Link2; +; 95 : Link1->Next = Link2; 0006b 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Link1$[rbp] @@ -14385,14 +13890,14 @@ $LN5: 00 00 mov rcx, QWORD PTR Link2$[rbp] 00079 48 89 08 mov QWORD PTR [rax], rcx -; 94 : if (Link2->Next) +; 96 : 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 -; 95 : Link2->Next->Prev = Link2; +; 97 : Link2->Next->Prev = Link2; 00089 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link2$[rbp] @@ -14403,8 +13908,8 @@ $LN5: $LN3@NcInsertLi: $LN2@NcInsertLi: -; 96 : } -; 97 : } +; 98 : } +; 99 : } 0009e 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -14421,7 +13926,7 @@ Block$ = 224 Link$ = 232 ?NcPrependToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z PROC ; NcPrependToBlock, COMDAT -; 68 : { +; 70 : { $LN7: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -14441,19 +13946,19 @@ $LN7: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 69 : if (!Link) +; 71 : if (!Link) 0003b 48 83 bd e8 00 00 00 00 cmp QWORD PTR Link$[rbp], 0 00043 75 05 jne SHORT $LN2@NcPrependT -; 70 : return; +; 72 : return; 00045 e9 9b 00 00 00 jmp $LN1@NcPrependT $LN2@NcPrependT: -; 71 : -; 72 : Link->Block = Block; +; 73 : +; 74 : Link->Block = Block; 0004a 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14461,7 +13966,7 @@ $LN2@NcPrependT: 00 00 mov rcx, QWORD PTR Block$[rbp] 00058 48 89 48 10 mov QWORD PTR [rax+16], rcx -; 73 : Link->Next = Block->Start; +; 75 : Link->Next = Block->Start; 0005c 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14470,15 +13975,15 @@ $LN2@NcPrependT: 0006a 48 8b 09 mov rcx, QWORD PTR [rcx] 0006d 48 89 08 mov QWORD PTR [rax], rcx -; 74 : Link->Prev = NULL; +; 76 : 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 -; 75 : -; 76 : if (!Block->End || !Block->Start) +; 77 : +; 78 : if (!Block->End || !Block->Start) 0007f 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14490,8 +13995,8 @@ $LN2@NcPrependT: 00098 75 25 jne SHORT $LN3@NcPrependT $LN5@NcPrependT: -; 77 : { -; 78 : Block->Start = Block->End = Link; +; 79 : { +; 80 : Block->Start = Block->End = Link; 0009a 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14504,14 +14009,14 @@ $LN5@NcPrependT: 00 00 mov rcx, QWORD PTR Link$[rbp] 000ba 48 89 08 mov QWORD PTR [rax], rcx -; 79 : } +; 81 : } 000bd eb 26 jmp SHORT $LN4@NcPrependT $LN3@NcPrependT: -; 80 : else -; 81 : { -; 82 : Block->Start->Prev = Link; +; 82 : else +; 83 : { +; 84 : Block->Start->Prev = Link; 000bf 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14520,7 +14025,7 @@ $LN3@NcPrependT: 00 00 mov rcx, QWORD PTR Link$[rbp] 000d0 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 83 : Block->Start = Link; +; 85 : Block->Start = Link; 000d4 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14530,8 +14035,8 @@ $LN3@NcPrependT: $LN4@NcPrependT: $LN1@NcPrependT: -; 84 : } -; 85 : } +; 86 : } +; 87 : } 000e5 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -14548,7 +14053,7 @@ Block$ = 224 Link$ = 232 ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z PROC ; NcAppendToBlock, COMDAT -; 48 : { +; 50 : { $LN7: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx @@ -14568,19 +14073,19 @@ $LN7: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 49 : if (!Link) +; 51 : if (!Link) 0003b 48 83 bd e8 00 00 00 00 cmp QWORD PTR Link$[rbp], 0 00043 75 05 jne SHORT $LN2@NcAppendTo -; 50 : return; +; 52 : return; 00045 e9 9d 00 00 00 jmp $LN1@NcAppendTo $LN2@NcAppendTo: -; 51 : -; 52 : Link->Block = Block; +; 53 : +; 54 : Link->Block = Block; 0004a 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14588,7 +14093,7 @@ $LN2@NcAppendTo: 00 00 mov rcx, QWORD PTR Block$[rbp] 00058 48 89 48 10 mov QWORD PTR [rax+16], rcx -; 53 : Link->Prev = Block->End; +; 55 : Link->Prev = Block->End; 0005c 48 8b 85 e8 00 00 00 mov rax, QWORD PTR Link$[rbp] @@ -14597,15 +14102,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 -; 54 : Link->Next = NULL; +; 56 : 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 -; 55 : -; 56 : if (!Block->End || !Block->Start) +; 57 : +; 58 : if (!Block->End || !Block->Start) 00080 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14617,8 +14122,8 @@ $LN2@NcAppendTo: 00099 75 25 jne SHORT $LN3@NcAppendTo $LN5@NcAppendTo: -; 57 : { -; 58 : Block->Start = Block->End = Link; +; 59 : { +; 60 : Block->Start = Block->End = Link; 0009b 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14631,14 +14136,14 @@ $LN5@NcAppendTo: 00 00 mov rcx, QWORD PTR Link$[rbp] 000bb 48 89 08 mov QWORD PTR [rax], rcx -; 59 : } +; 61 : } 000be eb 27 jmp SHORT $LN4@NcAppendTo $LN3@NcAppendTo: -; 60 : else -; 61 : { -; 62 : Block->End->Next = Link; +; 62 : else +; 63 : { +; 64 : Block->End->Next = Link; 000c0 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14647,7 +14152,7 @@ $LN3@NcAppendTo: 00 00 mov rcx, QWORD PTR Link$[rbp] 000d2 48 89 08 mov QWORD PTR [rax], rcx -; 63 : Block->End = Link; +; 65 : Block->End = Link; 000d5 48 8b 85 e0 00 00 00 mov rax, QWORD PTR Block$[rbp] @@ -14657,8 +14162,8 @@ $LN3@NcAppendTo: $LN4@NcAppendTo: $LN1@NcAppendTo: -; 64 : } -; 65 : } +; 66 : } +; 67 : } 000e7 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] @@ -14668,85 +14173,13 @@ $LN1@NcAppendTo: ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ENDP ; NcAppendToBlock _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z -_TEXT SEGMENT -this$ = 224 -__flags$ = 232 -??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z PROC ; _NATIVE_CODE_BLOCK::`scalar deleting destructor', COMDAT -$LN4: - 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx - 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00009 55 push rbp - 0000a 57 push rdi - 0000b 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00017 48 8b fc mov rdi, rsp - 0001a b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002e 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00035 e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ - 0003a 8b 85 e8 00 00 - 00 mov eax, DWORD PTR __flags$[rbp] - 00040 83 e0 01 and eax, 1 - 00043 85 c0 test eax, eax - 00045 74 11 je SHORT $LN2@scalar - 00047 ba 30 00 00 00 mov edx, 48 ; 00000030H - 0004c 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00053 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete -$LN2@scalar: - 00058 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0005f 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00066 5f pop rdi - 00067 5d pop rbp - 00068 c3 ret 0 -??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z ENDP ; _NATIVE_CODE_BLOCK::`scalar deleting destructor' -_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:\$Fanta\code-virtualizer\CodeVirtualizer\NativeCode.cpp ; COMDAT ??0_NATIVE_CODE_BLOCK@@QEAA@XZ _TEXT SEGMENT this$ = 224 ??0_NATIVE_CODE_BLOCK@@QEAA@XZ PROC ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK, COMDAT -; 42 : { +; 44 : { $LN4: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -14770,7 +14203,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 > -; 43 : Start = End = NULL; +; 45 : Start = End = NULL; 00049 48 8b 85 e0 00 00 00 mov rax, QWORD PTR this$[rbp] @@ -14781,7 +14214,7 @@ $LN4: 0005f 48 c7 00 00 00 00 00 mov QWORD PTR [rax], 0 -; 44 : LabelIds.clear(); +; 46 : LabelIds.clear(); 00066 48 8b 85 e0 00 00 00 mov rax, QWORD PTR this$[rbp] @@ -14789,7 +14222,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 -; 45 : } +; 47 : } 00079 48 8b 85 e0 00 00 00 mov rax, QWORD PTR this$[rbp] @@ -15195,144 +14628,6 @@ $LN2@Xlength: _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 ?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z _TEXT SEGMENT _My_data$ = 8 @@ -16320,93 +15615,6 @@ $LN3: _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\vector ; COMDAT ??0?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ _TEXT SEGMENT $T1 = 196 @@ -16692,7 +15900,7 @@ $T1 = 200 this$ = 256 ??1_NATIVE_CODE_LINK@@QEAA@XZ PROC ; _NATIVE_CODE_LINK::~_NATIVE_CODE_LINK, COMDAT -; 36 : { +; 38 : { $LN4: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -16711,14 +15919,14 @@ $LN4: 00 00 lea rcx, OFFSET FLAT:__84EFCFFB_NativeCode@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 37 : if (RawData) +; 39 : 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 -; 38 : delete RawData; +; 40 : delete RawData; 00044 48 8b 85 00 01 00 00 mov rax, QWORD PTR this$[rbp] @@ -16732,7 +15940,7 @@ $LN4: 00067 90 npad 1 $LN2@NATIVE_COD: -; 39 : } +; 41 : } 00068 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] @@ -16743,18 +15951,19 @@ $LN2@NATIVE_COD: _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\$Fanta\code-virtualizer\CodeVirtualizer\NativeCode.cpp -; COMDAT ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z +; COMDAT ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z _TEXT SEGMENT $T1 = 200 this$ = 256 F$ = 264 Rd$ = 272 Rds$ = 280 -??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK, COMDAT +Decode$ = 288 +??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK, COMDAT ; 25 : { -$LN5: +$LN6: 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx @@ -16815,9 +16024,10 @@ $LN5: 00097 48 83 bd 10 01 00 00 00 cmp QWORD PTR Rd$[rbp], 0 - 0009f 74 20 je SHORT $LN2@NATIVE_COD + 0009f 74 53 je SHORT $LN2@NATIVE_COD -; 30 : RtlCopyMemory(RawData, Rd, Rds); +; 30 : { +; 31 : RtlCopyMemory(RawData, Rd, Rds); 000a1 8b 85 18 01 00 00 mov eax, DWORD PTR Rds$[rbp] @@ -16828,34 +16038,40 @@ $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 -$LN2@NATIVE_COD: -; 31 : -; 32 : XedDecode(&XedInstruction, RawData, RawDataSize); +; 32 : if (Decode) + + 000c1 83 bd 20 01 00 + 00 00 cmp DWORD PTR Decode$[rbp], 0 + 000c8 74 2a je SHORT $LN2@NATIVE_COD - 000c1 48 8b 85 00 01 +; 33 : XedDecode(&XedInstruction, RawData, RawDataSize); + + 000ca 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 + 000d1 48 83 c0 30 add rax, 48 ; 00000030H + 000d5 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 + 000dc 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 000e0 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 + 000e7 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 000eb 48 8b c8 mov rcx, rax + 000ee e8 00 00 00 00 call xed_decode + 000f3 90 npad 1 +$LN2@NATIVE_COD: -; 33 : } +; 34 : } +; 35 : } - 000eb 48 8b 85 00 01 + 000f4 48 8b 85 00 01 00 00 mov rax, QWORD PTR this$[rbp] - 000f2 48 8d a5 e8 00 + 000fb 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] - 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 + 00102 5f pop rdi + 00103 5d pop rbp + 00104 c3 ret 0 +??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ENDP ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK _TEXT ENDS ; COMDAT text$x text$x SEGMENT @@ -16864,7 +16080,8 @@ this$ = 256 F$ = 264 Rd$ = 272 Rds$ = 280 -?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z@4HA PROC ; `_NATIVE_CODE_LINK::_NATIVE_CODE_LINK'::`1'::dtor$0 +Decode$ = 288 +?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z@4HA PROC ; `_NATIVE_CODE_LINK::_NATIVE_CODE_LINK'::`1'::dtor$0 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 55 push rbp @@ -16878,7 +16095,7 @@ Rds$ = 280 00024 5f pop rdi 00025 5d pop rbp 00026 c3 ret 0 -?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z@4HA ENDP ; `_NATIVE_CODE_LINK::_NATIVE_CODE_LINK'::`1'::dtor$0 +?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z@4HA ENDP ; `_NATIVE_CODE_LINK::_NATIVE_CODE_LINK'::`1'::dtor$0 text$x ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; COMDAT text$x @@ -16888,7 +16105,8 @@ this$ = 256 F$ = 264 Rd$ = 272 Rds$ = 280 -?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z@4HA PROC ; `_NATIVE_CODE_LINK::_NATIVE_CODE_LINK'::`1'::dtor$0 +Decode$ = 288 +?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z@4HA PROC ; `_NATIVE_CODE_LINK::_NATIVE_CODE_LINK'::`1'::dtor$0 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 55 push rbp @@ -16902,7 +16120,7 @@ Rds$ = 280 00024 5f pop rdi 00025 5d pop rbp 00026 c3 ret 0 -?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z@4HA ENDP ; `_NATIVE_CODE_LINK::_NATIVE_CODE_LINK'::`1'::dtor$0 +?dtor$0@?0???0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z@4HA ENDP ; `_NATIVE_CODE_LINK::_NATIVE_CODE_LINK'::`1'::dtor$0 text$x ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\$Fanta\code-virtualizer\CodeVirtualizer\NativeCode.cpp diff --git a/CodeVirtualizer/x64/Debug/Nop.cod b/CodeVirtualizer/x64/Debug/Nop.cod index 8558a1e..062a247 100644 --- a/CodeVirtualizer/x64/Debug/Nop.cod +++ b/CodeVirtualizer/x64/Debug/Nop.cod @@ -115,7 +115,7 @@ EXTRN __imp_?_Getmonths@_Locinfo@std@@QEBAPEBDXZ:PROC EXTRN __imp_?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN __imp_?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN xed_decode:PROC -EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK +EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK EXTRN ??0_NATIVE_CODE_BLOCK@@QEAA@XZ:PROC ; _NATIVE_CODE_BLOCK::_NATIVE_CODE_BLOCK EXTRN ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z:PROC ; NcAppendToBlock EXTRN _RTC_CheckStackVars:PROC @@ -190,7 +190,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ DD imagerel $LN6 - DD imagerel $LN6+243 + DD imagerel $LN6+251 DD imagerel $unwind$?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ pdata ENDS ; COMDAT pdata @@ -295,7 +295,7 @@ $ip2state$?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ DB 06H DB 00H DB 0a0H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -312,13 +312,13 @@ $cppxdata$?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ DD 025052f19H - DD 010a230fH - DD 07003002fH +$unwind$?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ DD 035052f19H + DD 010a330fH + DD 070030031H DD 05002H DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ - DD 0162H + DD 0172H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -331,7 +331,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ$rtcVarDesc DD 024H ; NcEmitNop +?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ$rtcVarDesc DD 034H ; NcEmitNop DD 01H DQ FLAT:?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ$rtcName$0 ORG $+48 @@ -688,7 +688,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 ?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ PROC ; NcEmitNop, COMDAT @@ -697,11 +697,11 @@ __$ArrayPad$ = 320 $LN6: 00000 40 55 push rbp 00002 57 push rdi - 00003 48 81 ec 78 01 - 00 00 sub rsp, 376 ; 00000178H - 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00003 48 81 ec 88 01 + 00 00 sub rsp, 392 ; 00000188H + 0000a 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0000f 48 8b fc mov rdi, rsp - 00012 b9 5e 00 00 00 mov ecx, 94 ; 0000005eH + 00012 b9 62 00 00 00 mov ecx, 98 ; 00000062H 00017 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 0001c f3 ab rep stosd 0001e 48 8b 05 00 00 @@ -725,62 +725,64 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 00050 48 83 bd 28 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00058 74 24 je SHORT $LN3@NcEmitNop - 0005a 41 b9 01 00 00 + 00058 74 2c je SHORT $LN3@NcEmitNop + 0005a c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 00062 41 b9 01 00 00 00 mov r9d, 1 - 00060 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] - 00064 ba 04 00 00 00 mov edx, 4 - 00069 48 8b 8d 28 01 + 00068 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] + 0006c ba 04 00 00 00 mov edx, 4 + 00071 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 00070 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 00075 48 89 85 38 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 0007c eb 0b jmp SHORT $LN4@NcEmitNop + 00078 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 0007d 48 89 85 38 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 00084 eb 0b jmp SHORT $LN4@NcEmitNop $LN3@NcEmitNop: - 0007e 48 c7 85 38 01 + 00086 48 c7 85 38 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@NcEmitNop: - 00089 48 8b 85 38 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 00090 48 89 85 08 01 + 00091 48 8b 85 38 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 00098 48 89 85 08 01 00 00 mov QWORD PTR $T4[rbp], rax - 00097 48 8b 85 08 01 + 0009f 48 8b 85 08 01 00 00 mov rax, QWORD PTR $T4[rbp] - 0009e 48 89 45 28 mov QWORD PTR Link$[rbp], rax + 000a6 48 89 45 28 mov QWORD PTR Link$[rbp], rax ; 7 : XedDecode(&Link->XedInstruction, Link->RawData, 1); - 000a2 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] - 000a6 48 83 c0 30 add rax, 48 ; 00000030H - 000aa 41 b8 01 00 00 + 000aa 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] + 000ae 48 83 c0 30 add rax, 48 ; 00000030H + 000b2 41 b8 01 00 00 00 mov r8d, 1 - 000b0 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000b4 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 000b8 48 8b c8 mov rcx, rax - 000bb e8 00 00 00 00 call xed_decode + 000b8 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000bc 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 000c0 48 8b c8 mov rcx, rax + 000c3 e8 00 00 00 00 call xed_decode ; 8 : return Link; - 000c0 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] + 000c8 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] ; 9 : } - 000c4 48 8b f8 mov rdi, rax - 000c7 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 000cb 48 8d 15 00 00 + 000cc 48 8b f8 mov rdi, rax + 000cf 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 000d3 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ$rtcFrameData - 000d2 e8 00 00 00 00 call _RTC_CheckStackVars - 000d7 48 8b c7 mov rax, rdi - 000da 48 8b 8d 40 01 + 000da e8 00 00 00 00 call _RTC_CheckStackVars + 000df 48 8b c7 mov rax, rdi + 000e2 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 000e1 48 33 cd xor rcx, rbp - 000e4 e8 00 00 00 00 call __security_check_cookie - 000e9 48 8d a5 58 01 + 000e9 48 33 cd xor rcx, rbp + 000ec e8 00 00 00 00 call __security_check_cookie + 000f1 48 8d a5 58 01 00 00 lea rsp, QWORD PTR [rbp+344] - 000f0 5f pop rdi - 000f1 5d pop rbp - 000f2 c3 ret 0 + 000f8 5f pop rdi + 000f9 5d pop rbp + 000fa c3 ret 0 ?NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ ENDP ; NcEmitNop _TEXT ENDS ; COMDAT text$x @@ -789,7 +791,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 ?dtor$0@?0??NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ@4HA PROC ; `NcEmitNop'::`1'::dtor$0 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -797,7 +799,7 @@ __$ArrayPad$ = 320 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -815,7 +817,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 ?dtor$0@?0??NcEmitNop@@YAPEAU_NATIVE_CODE_LINK@@XZ@4HA PROC ; `NcEmitNop'::`1'::dtor$0 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx @@ -823,7 +825,7 @@ __$ArrayPad$ = 320 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] diff --git a/CodeVirtualizer/x64/Debug/OpaqueBranching.cod b/CodeVirtualizer/x64/Debug/OpaqueBranching.cod index 162ee00..654734a 100644 --- a/CodeVirtualizer/x64/Debug/OpaqueBranching.cod +++ b/CodeVirtualizer/x64/Debug/OpaqueBranching.cod @@ -74,7 +74,6 @@ __BB5B4FF8_xed-encode@h DB 01H __21860875_xed-encoder-hl@h DB 01H __F7815311_xed-decoded-inst-api@h DB 01H __BCD1AF07_OpaqueBranching@cpp DB 01H -__BF2A7ACC_vector DB 01H __7EA464AF_istream DB 01H __1D745195_ostream DB 01H __6FFBAAB7_streambuf DB 01H @@ -88,137 +87,33 @@ 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 ??2@YAPEAX_KPEAX@Z ; operator new PUBLIC wmemcpy -PUBLIC ?max@?$numeric_limits@_J@std@@SA_JXZ ; std::numeric_limits<__int64>::max -PUBLIC ??0exception@std@@QEAA@QEBDH@Z ; std::exception::exception -PUBLIC ??0exception@std@@QEAA@AEBV01@@Z ; std::exception::exception -PUBLIC ??1exception@std@@UEAA@XZ ; std::exception::~exception -PUBLIC ?what@exception@std@@UEBAPEBDXZ ; std::exception::what -PUBLIC ??_Gexception@std@@UEAAPEAXI@Z ; std::exception::`scalar deleting destructor' -PUBLIC ??0bad_alloc@std@@AEAA@QEBD@Z ; std::bad_alloc::bad_alloc -PUBLIC ??1bad_alloc@std@@UEAA@XZ ; std::bad_alloc::~bad_alloc -PUBLIC ??0bad_alloc@std@@QEAA@AEBV01@@Z ; std::bad_alloc::bad_alloc -PUBLIC ??_Gbad_alloc@std@@UEAAPEAXI@Z ; std::bad_alloc::`scalar deleting destructor' -PUBLIC ??0bad_array_new_length@std@@QEAA@XZ ; std::bad_array_new_length::bad_array_new_length -PUBLIC ??1bad_array_new_length@std@@UEAA@XZ ; std::bad_array_new_length::~bad_array_new_length -PUBLIC ??0bad_array_new_length@std@@QEAA@AEBV01@@Z ; std::bad_array_new_length::bad_array_new_length -PUBLIC ??_Gbad_array_new_length@std@@UEAAPEAXI@Z ; std::bad_array_new_length::`scalar deleting destructor' -PUBLIC ?_Throw_bad_array_new_length@std@@YAXXZ ; std::_Throw_bad_array_new_length -PUBLIC ?_Allocate@_Default_allocate_traits@std@@SAPEAX_K@Z ; std::_Default_allocate_traits::_Allocate -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 ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ; std::_Maklocstr PUBLIC ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs PUBLIC ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ; std::_Maklocstr PUBLIC ??$_Getvals@_W@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z ; std::time_get > >::_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 ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z ; _NATIVE_CODE_LINK::`scalar deleting destructor' -PUBLIC ?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z ; std::allocator::deallocate -PUBLIC ?allocate@?$allocator@K@std@@QEAAPEAK_K@Z ; std::allocator::allocate -PUBLIC ?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z ; std::_Default_allocator_traits >::max_size -PUBLIC ??1?$vector@KV?$allocator@K@std@@@std@@QEAA@XZ ; std::vector >::~vector > -PUBLIC ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ; std::vector >::push_back -PUBLIC ?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ ; std::vector >::max_size -PUBLIC ?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ ; std::vector >::capacity -PUBLIC ?_Umove@?$vector@KV?$allocator@K@std@@@std@@AEAAPEAKPEAK00@Z ; std::vector >::_Umove -PUBLIC ?_Umove_if_noexcept1@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00U?$integral_constant@_N$00@2@@Z ; std::vector >::_Umove_if_noexcept1 -PUBLIC ?_Umove_if_noexcept@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00@Z ; std::vector >::_Umove_if_noexcept -PUBLIC ?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z ; std::vector >::_Destroy -PUBLIC ?_Calculate_growth@?$vector@KV?$allocator@K@std@@@std@@AEBA_K_K@Z ; std::vector >::_Calculate_growth -PUBLIC ?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z ; std::vector >::_Change_array -PUBLIC ?_Tidy@?$vector@KV?$allocator@K@std@@@std@@AEAAXXZ ; std::vector >::_Tidy -PUBLIC ?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ ; std::vector >::_Xlength -PUBLIC ?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z ; std::vector >::_Orphan_range -PUBLIC ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ; std::vector >::_Getal -PUBLIC ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEBAAEBV?$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 ?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEBAAEBV?$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 ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z ; _NATIVE_CODE_BLOCK::`scalar deleting destructor' PUBLIC ?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ ; ObfGetRandomJccClass PUBLIC ?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z ; ObfGenRandomJcc PUBLIC ?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z ; ObfGenJmpToLabel -PUBLIC ?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z ; ObfGenOpaqueBranch -PUBLIC ??$emplace_back@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAA@AEBK@Z ; std::vector >::emplace_back -PUBLIC ??$forward@AEBK@std@@YAAEBKAEBK@Z ; std::forward -PUBLIC ??$_Emplace_back_with_unused_capacity@AEBK@?$vector@KV?$allocator@K@std@@@std@@AEAA@AEBK@Z ; std::vector >::_Emplace_back_with_unused_capacity -PUBLIC ??$_Unfancy@K@std@@YAPEAKPEAK@Z ; std::_Unfancy -PUBLIC ??$construct@KAEBK@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SAXAEAV?$allocator@K@1@QEAKAEBK@Z ; std::_Default_allocator_traits >::construct -PUBLIC ??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z ; std::vector >::_Emplace_reallocate -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 ??$min@_K@std@@YAAEB_KAEB_K0@Z ; std::min -PUBLIC ??$_Allocate@$0BA@U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K@Z ; std::_Allocate<16,std::_Default_allocate_traits,0> -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 ??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z ; std::_Allocate_manually_vector_aligned -PUBLIC ??$_Uninitialized_move@PEAKV?$allocator@K@std@@@std@@YAPEAKQEAK0PEAKAEAV?$allocator@K@0@@Z ; std::_Uninitialized_move > -PUBLIC ??$_Get_size_of_n@$03@std@@YA_K_K@Z ; std::_Get_size_of_n<4> -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 ??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z ; std::_Get_unwrapped -PUBLIC ??$_Copy_memmove@PEAKPEAK@std@@YAPEAKPEAK00@Z ; std::_Copy_memmove +PUBLIC ?ObfCreateOpaqueBranches@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@1@Z ; ObfCreateOpaqueBranches +PUBLIC ?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z ; ObfCombineOpaqueBranches +PUBLIC ?ObfInsertOpaqueBranchBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z ; ObfInsertOpaqueBranchBlock PUBLIC __JustMyCode_Default -PUBLIC ??_7exception@std@@6B@ ; std::exception::`vftable' -PUBLIC ??_C@_0BC@EOODALEL@Unknown?5exception@ ; `string' -PUBLIC ??_7bad_alloc@std@@6B@ ; std::bad_alloc::`vftable' -PUBLIC ??_7bad_array_new_length@std@@6B@ ; std::bad_array_new_length::`vftable' -PUBLIC ??_C@_0BF@KINCDENJ@bad?5array?5new?5length@ ; `string' -PUBLIC _TI3?AVbad_array_new_length@std@@ -PUBLIC _CTA3?AVbad_array_new_length@std@@ -PUBLIC ??_R0?AVbad_array_new_length@std@@@8 ; std::bad_array_new_length `RTTI Type Descriptor' -PUBLIC _CT??_R0?AVbad_array_new_length@std@@@8??0bad_array_new_length@std@@QEAA@AEBV01@@Z24 -PUBLIC ??_R0?AVbad_alloc@std@@@8 ; std::bad_alloc `RTTI Type Descriptor' -PUBLIC _CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QEAA@AEBV01@@Z24 -PUBLIC ??_R0?AVexception@std@@@8 ; std::exception `RTTI Type Descriptor' -PUBLIC _CT??_R0?AVexception@std@@@8??0exception@std@@QEAA@AEBV01@@Z24 -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@_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' -PUBLIC ??_C@_0BA@FOIKENOD@vector?5too?5long@ ; `string' -PUBLIC ??_C@_1EO@GFNCMDLA@?$AAs?$AAt?$AAd?$AA?3?$AA?3?$AA_?$AAA?$AAl?$AAl?$AAo?$AAc?$AAa?$AAt?$AAe?$AA_@ ; `string' -PUBLIC ??_R4exception@std@@6B@ ; std::exception::`RTTI Complete Object Locator' -PUBLIC ??_R3exception@std@@8 ; std::exception::`RTTI Class Hierarchy Descriptor' -PUBLIC ??_R2exception@std@@8 ; std::exception::`RTTI Base Class Array' -PUBLIC ??_R1A@?0A@EA@exception@std@@8 ; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)' -PUBLIC ??_R4bad_alloc@std@@6B@ ; std::bad_alloc::`RTTI Complete Object Locator' -PUBLIC ??_R3bad_alloc@std@@8 ; std::bad_alloc::`RTTI Class Hierarchy Descriptor' -PUBLIC ??_R2bad_alloc@std@@8 ; std::bad_alloc::`RTTI Base Class Array' -PUBLIC ??_R1A@?0A@EA@bad_alloc@std@@8 ; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)' -PUBLIC ??_R4bad_array_new_length@std@@6B@ ; std::bad_array_new_length::`RTTI Complete Object Locator' -PUBLIC ??_R3bad_array_new_length@std@@8 ; std::bad_array_new_length::`RTTI Class Hierarchy Descriptor' -PUBLIC ??_R2bad_array_new_length@std@@8 ; std::bad_array_new_length::`RTTI Base Class Array' -PUBLIC ??_R1A@?0A@EA@bad_array_new_length@std@@8 ; std::bad_array_new_length::`RTTI Base Class Descriptor at (0,-1,0,64)' 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 memmove:PROC EXTRN __imp_wcslen:PROC EXTRN strlen:PROC EXTRN __imp_rand: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 __std_exception_copy:PROC -EXTRN __std_exception_destroy:PROC -EXTRN ??_Eexception@std@@UEAAPEAXI@Z:PROC ; std::exception::`vector deleting destructor' -EXTRN ??_Ebad_alloc@std@@UEAAPEAXI@Z:PROC ; std::bad_alloc::`vector deleting destructor' -EXTRN ??_Ebad_array_new_length@std@@UEAAPEAXI@Z:PROC ; std::bad_array_new_length::`vector deleting destructor' EXTRN ?_Xbad_alloc@std@@YAXXZ:PROC ; std::_Xbad_alloc -EXTRN ?_Xlength_error@std@@YAXPEBD@Z:PROC ; std::_Xlength_error EXTRN _Mbrtowc:PROC EXTRN __imp_?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ:PROC EXTRN __imp_?_Getdays@_Locinfo@std@@QEBAPEBDXZ:PROC @@ -230,15 +125,12 @@ EXTRN xed_encoder_request_zero_set_mode:PROC EXTRN xed_encode:PROC EXTRN xed_convert_to_encoder_request:PROC EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAU_NATIVE_CODE_BLOCK@@@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK -EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK +EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK EXTRN ??1_NATIVE_CODE_LINK@@QEAA@XZ:PROC ; _NATIVE_CODE_LINK::~_NATIVE_CODE_LINK EXTRN ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z:PROC ; NcAppendToBlock EXTRN ?NcPrependToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z:PROC ; NcPrependToBlock -EXTRN ?NcGenUnusedLabelId@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z:PROC ; NcGenUnusedLabelId EXTRN ?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z:PROC ; NcInsertBlockAfter -EXTRN ?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z:PROC ; NcDeepCopyPartialBlock -EXTRN ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z:PROC ; NcDeleteBlock -EXTRN _CxxThrowException:PROC +EXTRN ?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z:PROC ; NcDeepCopyPartialBlock EXTRN _RTC_CheckStackVars:PROC EXTRN _RTC_InitBase:PROC EXTRN _RTC_Shutdown:PROC @@ -247,7 +139,6 @@ EXTRN __CxxFrameHandler4:PROC EXTRN __GSHandlerCheck:PROC EXTRN __GSHandlerCheck_EH4:PROC EXTRN __security_check_cookie:PROC -EXTRN ??_7type_info@@6B@:BYTE ; type_info::`vftable' EXTRN __ImageBase:BYTE EXTRN __security_cookie:QWORD ; COMDAT pdata @@ -276,126 +167,12 @@ $pdata$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z DD imagerel $LN3 pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$??2@YAPEAX_KPEAX@Z DD imagerel $LN3 - DD imagerel $LN3+76 - DD imagerel $unwind$??2@YAPEAX_KPEAX@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT $pdata$wmemcpy DD imagerel $LN3 DD imagerel $LN3+106 DD imagerel $unwind$wmemcpy pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?max@?$numeric_limits@_J@std@@SA_JXZ DD imagerel $LN3 - DD imagerel $LN3+62 - DD imagerel $unwind$?max@?$numeric_limits@_J@std@@SA_JXZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??0exception@std@@QEAA@QEBDH@Z DD imagerel $LN3 - DD imagerel $LN3+139 - DD imagerel $unwind$??0exception@std@@QEAA@QEBDH@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??0exception@std@@QEAA@AEBV01@@Z DD imagerel $LN3 - DD imagerel $LN3+146 - DD imagerel $unwind$??0exception@std@@QEAA@AEBV01@@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??1exception@std@@UEAA@XZ DD imagerel $LN3 - DD imagerel $LN3+101 - DD imagerel $unwind$??1exception@std@@UEAA@XZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?what@exception@std@@UEBAPEBDXZ DD imagerel $LN5 - DD imagerel $LN5+119 - DD imagerel $unwind$?what@exception@std@@UEBAPEBDXZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??_Gexception@std@@UEAAPEAXI@Z DD imagerel $LN4 - DD imagerel $LN4+105 - DD imagerel $unwind$??_Gexception@std@@UEAAPEAXI@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??0bad_alloc@std@@AEAA@QEBD@Z DD imagerel $LN3 - DD imagerel $LN3+118 - DD imagerel $unwind$??0bad_alloc@std@@AEAA@QEBD@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??1bad_alloc@std@@UEAA@XZ DD imagerel $LN3 - DD imagerel $LN3+64 - DD imagerel $unwind$??1bad_alloc@std@@UEAA@XZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??0bad_alloc@std@@QEAA@AEBV01@@Z DD imagerel $LN3 - DD imagerel $LN3+100 - DD imagerel $unwind$??0bad_alloc@std@@QEAA@AEBV01@@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??_Gbad_alloc@std@@UEAAPEAXI@Z DD imagerel $LN4 - DD imagerel $LN4+105 - DD imagerel $unwind$??_Gbad_alloc@std@@UEAAPEAXI@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??0bad_array_new_length@std@@QEAA@XZ DD imagerel $LN3 - DD imagerel $LN3+107 - DD imagerel $unwind$??0bad_array_new_length@std@@QEAA@XZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??1bad_array_new_length@std@@UEAA@XZ DD imagerel $LN3 - DD imagerel $LN3+64 - DD imagerel $unwind$??1bad_array_new_length@std@@UEAA@XZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??0bad_array_new_length@std@@QEAA@AEBV01@@Z DD imagerel $LN3 - DD imagerel $LN3+100 - DD imagerel $unwind$??0bad_array_new_length@std@@QEAA@AEBV01@@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??_Gbad_array_new_length@std@@UEAAPEAXI@Z DD imagerel $LN4 - DD imagerel $LN4+105 - DD imagerel $unwind$??_Gbad_array_new_length@std@@UEAAPEAXI@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Throw_bad_array_new_length@std@@YAXXZ DD imagerel $LN3 - DD imagerel $LN3+83 - DD imagerel $unwind$?_Throw_bad_array_new_length@std@@YAXXZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Allocate@_Default_allocate_traits@std@@SAPEAX_K@Z DD imagerel $LN3 - DD imagerel $LN3+76 - DD imagerel $unwind$?_Allocate@_Default_allocate_traits@std@@SAPEAX_K@Z -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$??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z DD imagerel $LN12 DD imagerel $LN12+584 DD imagerel $unwind$??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z @@ -444,138 +221,6 @@ $pdata$??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z DD imagerel $LN4 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$?allocate@?$allocator@K@std@@QEAAPEAK_K@Z DD imagerel $LN3 - DD imagerel $LN3+89 - DD imagerel $unwind$?allocate@?$allocator@K@std@@QEAAPEAK_K@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z DD imagerel $LN3 - DD imagerel $LN3+74 - DD imagerel $unwind$?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@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$?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z DD imagerel $LN3 - DD imagerel $LN3+88 - DD imagerel $unwind$?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ DD imagerel $LN3 - DD imagerel $LN3+125 - DD imagerel $unwind$?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ DD imagerel $LN3 - DD imagerel $LN3+98 - DD imagerel $unwind$?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Umove@?$vector@KV?$allocator@K@std@@@std@@AEAAPEAKPEAK00@Z DD imagerel $LN3 - DD imagerel $LN3+120 - DD imagerel $unwind$?_Umove@?$vector@KV?$allocator@K@std@@@std@@AEAAPEAKPEAK00@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Umove_if_noexcept1@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00U?$integral_constant@_N$00@2@@Z DD imagerel $LN3 - DD imagerel $LN3+120 - DD imagerel $unwind$?_Umove_if_noexcept1@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00U?$integral_constant@_N$00@2@@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Umove_if_noexcept@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00@Z DD imagerel $LN3 - DD imagerel $LN3+142 - DD imagerel $unwind$?_Umove_if_noexcept@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00@Z -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$?_Calculate_growth@?$vector@KV?$allocator@K@std@@@std@@AEBA_K_K@Z DD imagerel $LN5 - DD imagerel $LN5+200 - DD imagerel $unwind$?_Calculate_growth@?$vector@KV?$allocator@K@std@@@std@@AEBA_K_K@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z DD imagerel $LN4 - DD imagerel $LN4+322 - DD imagerel $unwind$?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@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$?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ DD imagerel $LN3 - DD imagerel $LN3+64 - DD imagerel $unwind$?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z DD imagerel $LN9 - DD imagerel $LN9+267 - DD imagerel $unwind$?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z -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$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEBAAEBV?$allocator@K@2@XZ DD imagerel $LN3 - DD imagerel $LN3+80 - DD imagerel $unwind$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEBAAEBV?$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$?_Get_first@?$_Compressed_pair@V?$allocator@K@std@@V?$_Vector_val@U?$_Simple_types@K@std@@@2@$00@std@@QEBAAEBV?$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@@QEBAAEBV?$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$??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z DD imagerel $LN4 - DD imagerel $LN4+105 - DD imagerel $unwind$??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT $pdata$?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ DD imagerel $LN21 DD imagerel $LN21+284 DD imagerel $unwind$?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ @@ -583,7 +228,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z DD imagerel $LN11 - DD imagerel $LN11+607 + DD imagerel $LN11+615 DD imagerel $unwind$?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z pdata ENDS ; COMDAT pdata @@ -595,7 +240,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z DD imagerel $LN11 - DD imagerel $LN11+581 + DD imagerel $LN11+589 DD imagerel $unwind$?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z pdata ENDS ; COMDAT pdata @@ -606,147 +251,33 @@ $pdata$?dtor$0@?0??ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA DD imager pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DD imagerel $LN29 - DD imagerel $LN29+1176 - DD imagerel $unwind$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?dtor$0@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA DD imagerel ?dtor$0@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA - DD imagerel ?dtor$0@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA+44 - DD imagerel $unwind$?dtor$0@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?dtor$1@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA DD imagerel ?dtor$1@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA - DD imagerel ?dtor$1@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA+44 - DD imagerel $unwind$?dtor$1@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$emplace_back@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAA@AEBK@Z DD imagerel $LN4 - DD imagerel $LN4+205 - DD imagerel $unwind$??$emplace_back@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAA@AEBK@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$forward@AEBK@std@@YAAEBKAEBK@Z DD imagerel $LN3 - DD imagerel $LN3+71 - DD imagerel $unwind$??$forward@AEBK@std@@YAAEBKAEBK@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$_Emplace_back_with_unused_capacity@AEBK@?$vector@KV?$allocator@K@std@@@std@@AEAA@AEBK@Z DD imagerel $LN3 - DD imagerel $LN3+234 - DD imagerel $unwind$??$_Emplace_back_with_unused_capacity@AEBK@?$vector@KV?$allocator@K@std@@@std@@AEAA@AEBK@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$_Unfancy@K@std@@YAPEAKPEAK@Z DD imagerel $LN3 - DD imagerel $LN3+71 - DD imagerel $unwind$??$_Unfancy@K@std@@YAPEAKPEAK@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$construct@KAEBK@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SAXAEAV?$allocator@K@1@QEAKAEBK@Z DD imagerel $LN3 - DD imagerel $LN3+121 - DD imagerel $unwind$??$construct@KAEBK@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SAXAEAV?$allocator@K@1@QEAKAEBK@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z DD imagerel $LN13 - DD imagerel $LN13+616 - DD imagerel $unwind$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$?catch$0@?0???$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z@4HA DD imagerel ?catch$0@?0???$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z@4HA - DD imagerel ?catch$0@?0???$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z@4HA+94 - DD imagerel $unwind$?catch$0@?0???$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z@4HA -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$?ObfCreateOpaqueBranches@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@1@Z DD imagerel $LN5 + DD imagerel $LN5+167 + DD imagerel $unwind$?ObfCreateOpaqueBranches@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@1@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$?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z DD imagerel $LN13 + DD imagerel $LN13+500 + DD imagerel $unwind$?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$??$min@_K@std@@YAAEB_KAEB_K0@Z DD imagerel $LN5 - DD imagerel $LN5+142 - DD imagerel $unwind$??$min@_K@std@@YAAEB_KAEB_K0@Z +$pdata$?dtor$0@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA DD imagerel ?dtor$0@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA + DD imagerel ?dtor$0@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA+44 + DD imagerel $unwind$?dtor$0@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$??$_Allocate@$0BA@U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K@Z DD imagerel $LN5 - DD imagerel $LN5+117 - DD imagerel $unwind$??$_Allocate@$0BA@U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K@Z +$pdata$?dtor$1@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA DD imagerel ?dtor$1@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA + DD imagerel ?dtor$1@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA+44 + DD imagerel $unwind$?dtor$1@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA 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$??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z DD imagerel $LN13 - DD imagerel $LN13+300 - DD imagerel $unwind$??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$_Uninitialized_move@PEAKV?$allocator@K@std@@@std@@YAPEAKQEAK0PEAKAEAV?$allocator@K@0@@Z DD imagerel $LN3 - DD imagerel $LN3+168 - DD imagerel $unwind$??$_Uninitialized_move@PEAKV?$allocator@K@std@@@std@@YAPEAKQEAK0PEAKAEAV?$allocator@K@0@@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$_Get_size_of_n@$03@std@@YA_K_K@Z DD imagerel $LN4 - DD imagerel $LN4+117 - DD imagerel $unwind$??$_Get_size_of_n@$03@std@@YA_K_K@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 pdata -pdata SEGMENT -$pdata$??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z DD imagerel $LN3 - DD imagerel $LN3+74 - DD imagerel $unwind$??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z -pdata ENDS -; COMDAT pdata -pdata SEGMENT -$pdata$??$_Copy_memmove@PEAKPEAK@std@@YAPEAKPEAK00@Z DD imagerel $LN3 - DD imagerel $LN3+156 - DD imagerel $unwind$??$_Copy_memmove@PEAKPEAK@std@@YAPEAKPEAK00@Z +$pdata$?ObfInsertOpaqueBranchBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN13 + DD imagerel $LN13+400 + DD imagerel $unwind$?ObfInsertOpaqueBranchBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT rtc$TMZ rtc$TMZ SEGMENT @@ -756,116 +287,6 @@ rtc$TMZ ENDS rtc$IMZ SEGMENT _RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase rtc$IMZ ENDS -; COMDAT ??_R1A@?0A@EA@bad_array_new_length@std@@8 -rdata$r SEGMENT -??_R1A@?0A@EA@bad_array_new_length@std@@8 DD imagerel ??_R0?AVbad_array_new_length@std@@@8 ; std::bad_array_new_length::`RTTI Base Class Descriptor at (0,-1,0,64)' - DD 02H - DD 00H - DD 0ffffffffH - DD 00H - DD 040H - DD imagerel ??_R3bad_array_new_length@std@@8 -rdata$r ENDS -; COMDAT ??_R2bad_array_new_length@std@@8 -rdata$r SEGMENT -??_R2bad_array_new_length@std@@8 DD imagerel ??_R1A@?0A@EA@bad_array_new_length@std@@8 ; std::bad_array_new_length::`RTTI Base Class Array' - DD imagerel ??_R1A@?0A@EA@bad_alloc@std@@8 - DD imagerel ??_R1A@?0A@EA@exception@std@@8 - ORG $+3 -rdata$r ENDS -; COMDAT ??_R3bad_array_new_length@std@@8 -rdata$r SEGMENT -??_R3bad_array_new_length@std@@8 DD 00H ; std::bad_array_new_length::`RTTI Class Hierarchy Descriptor' - DD 00H - DD 03H - DD imagerel ??_R2bad_array_new_length@std@@8 -rdata$r ENDS -; COMDAT ??_R4bad_array_new_length@std@@6B@ -rdata$r SEGMENT -??_R4bad_array_new_length@std@@6B@ DD 01H ; std::bad_array_new_length::`RTTI Complete Object Locator' - DD 00H - DD 00H - DD imagerel ??_R0?AVbad_array_new_length@std@@@8 - DD imagerel ??_R3bad_array_new_length@std@@8 - DD imagerel ??_R4bad_array_new_length@std@@6B@ -rdata$r ENDS -; COMDAT ??_R1A@?0A@EA@bad_alloc@std@@8 -rdata$r SEGMENT -??_R1A@?0A@EA@bad_alloc@std@@8 DD imagerel ??_R0?AVbad_alloc@std@@@8 ; std::bad_alloc::`RTTI Base Class Descriptor at (0,-1,0,64)' - DD 01H - DD 00H - DD 0ffffffffH - DD 00H - DD 040H - DD imagerel ??_R3bad_alloc@std@@8 -rdata$r ENDS -; COMDAT ??_R2bad_alloc@std@@8 -rdata$r SEGMENT -??_R2bad_alloc@std@@8 DD imagerel ??_R1A@?0A@EA@bad_alloc@std@@8 ; std::bad_alloc::`RTTI Base Class Array' - DD imagerel ??_R1A@?0A@EA@exception@std@@8 - ORG $+3 -rdata$r ENDS -; COMDAT ??_R3bad_alloc@std@@8 -rdata$r SEGMENT -??_R3bad_alloc@std@@8 DD 00H ; std::bad_alloc::`RTTI Class Hierarchy Descriptor' - DD 00H - DD 02H - DD imagerel ??_R2bad_alloc@std@@8 -rdata$r ENDS -; COMDAT ??_R4bad_alloc@std@@6B@ -rdata$r SEGMENT -??_R4bad_alloc@std@@6B@ DD 01H ; std::bad_alloc::`RTTI Complete Object Locator' - DD 00H - DD 00H - DD imagerel ??_R0?AVbad_alloc@std@@@8 - DD imagerel ??_R3bad_alloc@std@@8 - DD imagerel ??_R4bad_alloc@std@@6B@ -rdata$r ENDS -; COMDAT ??_R1A@?0A@EA@exception@std@@8 -rdata$r SEGMENT -??_R1A@?0A@EA@exception@std@@8 DD imagerel ??_R0?AVexception@std@@@8 ; std::exception::`RTTI Base Class Descriptor at (0,-1,0,64)' - DD 00H - DD 00H - DD 0ffffffffH - DD 00H - DD 040H - DD imagerel ??_R3exception@std@@8 -rdata$r ENDS -; COMDAT ??_R2exception@std@@8 -rdata$r SEGMENT -??_R2exception@std@@8 DD imagerel ??_R1A@?0A@EA@exception@std@@8 ; std::exception::`RTTI Base Class Array' - ORG $+3 -rdata$r ENDS -; COMDAT ??_R3exception@std@@8 -rdata$r SEGMENT -??_R3exception@std@@8 DD 00H ; std::exception::`RTTI Class Hierarchy Descriptor' - DD 00H - DD 01H - DD imagerel ??_R2exception@std@@8 -rdata$r ENDS -; COMDAT ??_R4exception@std@@6B@ -rdata$r SEGMENT -??_R4exception@std@@6B@ DD 01H ; std::exception::`RTTI Complete Object Locator' - DD 00H - DD 00H - DD imagerel ??_R0?AVexception@std@@@8 - DD imagerel ??_R3exception@std@@8 - DD imagerel ??_R4exception@std@@6B@ -rdata$r ENDS -; COMDAT ??_C@_1EO@GFNCMDLA@?$AAs?$AAt?$AAd?$AA?3?$AA?3?$AA_?$AAA?$AAl?$AAl?$AAo?$AAc?$AAa?$AAt?$AAe?$AA_@ -CONST SEGMENT -??_C@_1EO@GFNCMDLA@?$AAs?$AAt?$AAd?$AA?3?$AA?3?$AA_?$AAA?$AAl?$AAl?$AAo?$AAc?$AAa?$AAt?$AAe?$AA_@ DB 's' - DB 00H, 't', 00H, 'd', 00H, ':', 00H, ':', 00H, '_', 00H, 'A', 00H - DB 'l', 00H, 'l', 00H, 'o', 00H, 'c', 00H, 'a', 00H, 't', 00H, 'e' - DB 00H, '_', 00H, 'm', 00H, 'a', 00H, 'n', 00H, 'u', 00H, 'a', 00H - DB 'l', 00H, 'l', 00H, 'y', 00H, '_', 00H, 'v', 00H, 'e', 00H, 'c' - DB 00H, 't', 00H, 'o', 00H, 'r', 00H, '_', 00H, 'a', 00H, 'l', 00H - DB 'i', 00H, 'g', 00H, 'n', 00H, 'e', 00H, 'd', 00H, 00H, 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0BA@FOIKENOD@vector?5too?5long@ -CONST SEGMENT -??_C@_0BA@FOIKENOD@vector?5too?5long@ DB 'vector too long', 00H ; `string' -CONST ENDS ; COMDAT ??_C@_1BK@MHIKGOKE@?$AA?3?$AAA?$AAM?$AA?3?$AAa?$AAm?$AA?3?$AAP?$AAM?$AA?3?$AAp?$AAm@ CONST SEGMENT ??_C@_1BK@MHIKGOKE@?$AA?3?$AAA?$AAM?$AA?3?$AAa?$AAm?$AA?3?$AAP?$AAM?$AA?3?$AAp?$AAm@ DB ':' @@ -892,535 +313,69 @@ 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 _CT??_R0?AVexception@std@@@8??0exception@std@@QEAA@AEBV01@@Z24 -xdata$x SEGMENT -_CT??_R0?AVexception@std@@@8??0exception@std@@QEAA@AEBV01@@Z24 DD 00H - DD imagerel ??_R0?AVexception@std@@@8 - DD 00H - DD 0ffffffffH - ORG $+4 - DD 018H - DD imagerel ??0exception@std@@QEAA@AEBV01@@Z -xdata$x ENDS -; COMDAT ??_R0?AVexception@std@@@8 -data$r SEGMENT -??_R0?AVexception@std@@@8 DQ FLAT:??_7type_info@@6B@ ; std::exception `RTTI Type Descriptor' - DQ 0000000000000000H - DB '.?AVexception@std@@', 00H -data$r ENDS -; COMDAT _CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QEAA@AEBV01@@Z24 -xdata$x SEGMENT -_CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QEAA@AEBV01@@Z24 DD 010H - DD imagerel ??_R0?AVbad_alloc@std@@@8 - DD 00H - DD 0ffffffffH - ORG $+4 - DD 018H - DD imagerel ??0bad_alloc@std@@QEAA@AEBV01@@Z -xdata$x ENDS -; COMDAT ??_R0?AVbad_alloc@std@@@8 -data$r SEGMENT -??_R0?AVbad_alloc@std@@@8 DQ FLAT:??_7type_info@@6B@ ; std::bad_alloc `RTTI Type Descriptor' - DQ 0000000000000000H - DB '.?AVbad_alloc@std@@', 00H -data$r ENDS -; COMDAT _CT??_R0?AVbad_array_new_length@std@@@8??0bad_array_new_length@std@@QEAA@AEBV01@@Z24 -xdata$x SEGMENT -_CT??_R0?AVbad_array_new_length@std@@@8??0bad_array_new_length@std@@QEAA@AEBV01@@Z24 DD 00H - DD imagerel ??_R0?AVbad_array_new_length@std@@@8 - DD 00H - DD 0ffffffffH - ORG $+4 - DD 018H - DD imagerel ??0bad_array_new_length@std@@QEAA@AEBV01@@Z -xdata$x ENDS -; COMDAT ??_R0?AVbad_array_new_length@std@@@8 -data$r SEGMENT -??_R0?AVbad_array_new_length@std@@@8 DQ FLAT:??_7type_info@@6B@ ; std::bad_array_new_length `RTTI Type Descriptor' - DQ 0000000000000000H - DB '.?AVbad_array_new_length@std@@', 00H -data$r ENDS -; COMDAT _CTA3?AVbad_array_new_length@std@@ -xdata$x SEGMENT -_CTA3?AVbad_array_new_length@std@@ DD 03H - DD imagerel _CT??_R0?AVbad_array_new_length@std@@@8??0bad_array_new_length@std@@QEAA@AEBV01@@Z24 - DD imagerel _CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QEAA@AEBV01@@Z24 - DD imagerel _CT??_R0?AVexception@std@@@8??0exception@std@@QEAA@AEBV01@@Z24 -xdata$x ENDS -; COMDAT _TI3?AVbad_array_new_length@std@@ -xdata$x SEGMENT -_TI3?AVbad_array_new_length@std@@ DD 00H - DD imagerel ??1bad_array_new_length@std@@UEAA@XZ - DD 00H - DD imagerel _CTA3?AVbad_array_new_length@std@@ -xdata$x ENDS -; COMDAT ??_C@_0BF@KINCDENJ@bad?5array?5new?5length@ -CONST SEGMENT -??_C@_0BF@KINCDENJ@bad?5array?5new?5length@ DB 'bad array new length', 00H ; `string' -CONST ENDS -; COMDAT ??_7bad_array_new_length@std@@6B@ -CONST SEGMENT -??_7bad_array_new_length@std@@6B@ DQ FLAT:??_R4bad_array_new_length@std@@6B@ ; std::bad_array_new_length::`vftable' - DQ FLAT:??_Ebad_array_new_length@std@@UEAAPEAXI@Z - DQ FLAT:?what@exception@std@@UEBAPEBDXZ -CONST ENDS -; COMDAT ??_7bad_alloc@std@@6B@ -CONST SEGMENT -??_7bad_alloc@std@@6B@ DQ FLAT:??_R4bad_alloc@std@@6B@ ; std::bad_alloc::`vftable' - DQ FLAT:??_Ebad_alloc@std@@UEAAPEAXI@Z - DQ FLAT:?what@exception@std@@UEBAPEBDXZ -CONST ENDS -; COMDAT ??_C@_0BC@EOODALEL@Unknown?5exception@ -CONST SEGMENT -??_C@_0BC@EOODALEL@Unknown?5exception@ DB 'Unknown exception', 00H ; `string' -CONST ENDS -; COMDAT ??_7exception@std@@6B@ -CONST SEGMENT -??_7exception@std@@6B@ DQ FLAT:??_R4exception@std@@6B@ ; std::exception::`vftable' - DQ FLAT:??_Eexception@std@@UEAAPEAXI@Z - DQ FLAT:?what@exception@std@@UEBAPEBDXZ -CONST ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??$_Copy_memmove@PEAKPEAK@std@@YAPEAKPEAK00@Z DD 025053401H +$unwind$?ObfInsertOpaqueBranchBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z DD 025053401H DD 0118231dH - DD 07011002dH + DD 070110031H DD 05010H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z DD 025052a01H - DD 010e2313H - DD 07007001dH - DD 05006H -xdata 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 +$unwind$?dtor$1@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA DD 031001H + DD 0700c4210H + DD 0500bH xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??$_Get_size_of_n@$03@std@@YA_K_K@Z DD 025052a01H - DD 010e2313H - DD 070070025H - DD 05006H +$unwind$?dtor$0@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA DD 031001H + DD 0700c4210H + DD 0500bH xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??$_Uninitialized_move@PEAKV?$allocator@K@std@@@std@@YAPEAKQEAK0PEAKAEAV?$allocator@K@0@@Z DD 025053901H - DD 011d2322H - DD 070160025H - DD 05015H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z DD 035052a01H - DD 010e3313H - DD 07007002bH - DD 05006H -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$??$_Allocate@$0BA@U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K@Z DD 025052a01H - DD 010e2313H - DD 07007001dH - DD 05006H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??$min@_K@std@@YAAEB_KAEB_K0@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??$min@_K@std@@YAAEB_KAEB_K0@Z DB 060H - DD imagerel $ip2state$??$min@_K@std@@YAAEB_KAEB_K0@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$min@_K@std@@YAAEB_KAEB_K0@Z DD 025052f19H - DD 01132318H - DD 0700c0021H - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??$min@_K@std@@YAAEB_KAEB_K0@Z -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$?catch$0@?0???$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z@4HA DD 031001H - DD 0700c4210H - DD 0500bH -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z DB 06H - DB 00H - DB 00H - DB 0c9H, 04H - DB 02H - DB 0ddH, 03H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$handlerMap$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z DB 02H - DB 01H - DB 080H - DD imagerel ?catch$0@?0???$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z@4HA -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$tryMap$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z DB 02H +$ip2state$?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z DB 0aH DB 00H DB 00H + DB 0d1H, 03H DB 02H - DD imagerel $handlerMap$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$stateUnwindMap$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z DB 04H - DB 08H - DB 010H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z DB 038H - DD imagerel $stateUnwindMap$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z - DD imagerel $tryMap$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z - DD imagerel $ip2state$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z DD 025053419H - DD 0118231dH - DD 07011004bH - DD 05010H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$construct@KAEBK@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SAXAEAV?$allocator@K@1@QEAKAEBK@Z DD 025053401H - DD 0118231dH - DD 070110021H - DD 05010H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??$_Unfancy@K@std@@YAPEAKPEAK@Z DB 02H + DB 08aH DB 00H + DB 'H' + DB 04H + DB 08aH DB 00H xdata ENDS ; COMDAT xdata xdata SEGMENT -$cppxdata$??$_Unfancy@K@std@@YAPEAKPEAK@Z DB 060H - DD imagerel $ip2state$??$_Unfancy@K@std@@YAPEAKPEAK@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$_Unfancy@K@std@@YAPEAKPEAK@Z DD 025052a19H - DD 010e2313H - DD 07007001dH - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??$_Unfancy@K@std@@YAPEAKPEAK@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$_Emplace_back_with_unused_capacity@AEBK@?$vector@KV?$allocator@K@std@@@std@@AEAA@AEBK@Z DD 025052f01H - DD 01132318H - DD 0700c002bH - DD 0500bH -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??$forward@AEBK@std@@YAAEBKAEBK@Z DB 02H - DB 00H - DB 00H +$stateUnwindMap$?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z DB 04H + DB 0eH + DD imagerel ?dtor$0@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA + DB 036H + DD imagerel ?dtor$1@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA xdata ENDS ; COMDAT xdata xdata SEGMENT -$cppxdata$??$forward@AEBK@std@@YAAEBKAEBK@Z DB 060H - DD imagerel $ip2state$??$forward@AEBK@std@@YAAEBKAEBK@Z +$cppxdata$?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z DB 028H + DD imagerel $stateUnwindMap$?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z + DD imagerel $ip2state$?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??$forward@AEBK@std@@YAAEBKAEBK@Z DD 025052a19H - DD 010e2313H - DD 07007001dH - DD 05006H +$unwind$?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z DD 025053911H + DD 011d2322H + DD 070160039H + DD 05015H DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??$forward@AEBK@std@@YAAEBKAEBK@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??$emplace_back@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAA@AEBK@Z DD 025052f01H - DD 01132318H - DD 0700c002bH - DD 0500bH -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?dtor$1@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA DD 031001H - DD 0700c4210H - DD 0500bH -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?dtor$0@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA DD 031001H - DD 0700c4210H - DD 0500bH + DD imagerel $cppxdata$?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z xdata ENDS ; COMDAT xdata xdata SEGMENT -$ip2state$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DB 0aH - DB 00H - DB 00H - DB 'a', 0dH - DB 02H - DB '~' - DB 00H - DB 'B' - DB 04H - DB '~' - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$stateUnwindMap$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DB 04H - DB 0eH - DD imagerel ?dtor$0@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA - DB 036H - DD imagerel ?dtor$1@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DB 028H - DD imagerel $stateUnwindMap$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z - DD imagerel $ip2state$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z DD 025054019H - DD 01132318H - DD 0700c007bH - DD 0500bH - DD imagerel __GSHandlerCheck_EH4 - DD imagerel $cppxdata$?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z - DD 03c2H +$unwind$?ObfCreateOpaqueBranches@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@1@Z DD 025053901H + DD 011d2322H + DD 07016001fH + DD 05015H xdata ENDS -; COMDAT CONST -CONST SEGMENT -?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcName$0 DB 04aH ; ObfGenOpaqueBranch - DB 063H - DB 063H - DB 04cH - DB 061H - DB 062H - DB 065H - DB 06cH - DB 00H - ORG $+7 -?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcName$1 DB 04aH ; ObfGenOpaqueBranch - DB 06dH - DB 070H - DB 04cH - DB 061H - DB 062H - DB 065H - DB 06cH - DB 00H - ORG $+7 -?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcVarDesc DD 084H ; ObfGenOpaqueBranch - DD 04H - DQ FLAT:?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcName$1 - DD 064H - DD 04H - DQ FLAT:?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcName$0 - ORG $+96 -?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcFrameData DD 02H ; ObfGenOpaqueBranch - DD 00H - DQ FLAT:?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z$rtcVarDesc -CONST ENDS ; COMDAT xdata xdata SEGMENT $unwind$?dtor$0@?0??ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA DD 031001H @@ -1434,7 +389,7 @@ $ip2state$?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z DB 06H DB 00H DB 0a5H, 04H DB 02H - DB 096H + DB 0a6H DB 00H xdata ENDS ; COMDAT xdata @@ -1572,7 +527,7 @@ $ip2state$?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z DB 06H DB 00H DB 0dH, 05H DB 02H - DB 096H + DB 0a6H DB 00H xdata ENDS ; COMDAT xdata @@ -1706,332 +661,26 @@ $unwind$?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ DD 025051e01H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z DD 025052e01H +$unwind$??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z DD 025052e01H DD 01122317H DD 0700b001dH DD 0500aH 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@@QEBAAEBV?$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@@QEBAAEBV?$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@@QEBAAEBV?$allocator@K@2@XZ +$unwind$xed_inst1 DD 025063a01H + DD 011e2323H + DD 07017001cH + DD 050156016H 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@@QEBAAEBV?$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@@QEBAAEBV?$allocator@K@2@XZ -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@@AEBAAEBV?$allocator@K@2@XZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEBAAEBV?$allocator@K@2@XZ DB 060H - DD imagerel $ip2state$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEBAAEBV?$allocator@K@2@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEBAAEBV?$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@@AEBAAEBV?$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 -$unwind$?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z DD 025054519H - DD 0118231dH - DD 070110029H - DD 05010H - DD imagerel __GSHandlerCheck - DD 0138H -xdata ENDS -; COMDAT CONST -CONST SEGMENT -?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z$rtcName$0 DB 05fH ; std::vector >::_Orphan_range - DB 04cH - DB 06fH - DB 063H - DB 06bH - DB 00H - ORG $+10 -?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z$rtcVarDesc DD 024H ; std::vector >::_Orphan_range - DD 04H - DQ FLAT:?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z$rtcName$0 - ORG $+48 -?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z$rtcFrameData DD 01H ; std::vector >::_Orphan_range - DD 00H - DQ FLAT:?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z$rtcVarDesc -CONST ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ DD 025051e01H - DD 010a230fH - DD 07003001dH - DD 05002H -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$?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z DD 025053901H - DD 011d2322H - DD 07016002fH - DD 05015H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Calculate_growth@?$vector@KV?$allocator@K@std@@@std@@AEBA_K_K@Z DD 025052f01H - DD 01132318H - DD 0700c0025H - DD 0500bH -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 -$unwind$?_Umove_if_noexcept@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00@Z DD 035053901H - DD 011d3322H - DD 070160023H - DD 05015H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Umove_if_noexcept1@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00U?$integral_constant@_N$00@2@@Z DD 025053901H - DD 011d2322H - DD 07016001dH - DD 05015H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?_Umove@?$vector@KV?$allocator@K@std@@@std@@AEAAPEAKPEAK00@Z DD 025053901H - DD 011d2322H - DD 07016001dH - DD 05015H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ DB 060H - DD imagerel $ip2state$?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ DD 025052a19H - DD 010e2313H - DD 070070021H - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ DB 060H - DD imagerel $ip2state$?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ DD 025052a19H - DD 010e2313H - DD 070070025H - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z DD 025052f01H - DD 01132318H - DD 0700c001dH - DD 0500bH -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 -$ip2state$?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z DB 060H - DD imagerel $ip2state$?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z DD 025052a19H - DD 010e2313H - DD 07007001dH - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?allocate@?$allocator@K@std@@QEAAPEAK_K@Z DD 025052f01H - DD 01132318H - DD 0700c001dH - DD 0500bH -xdata 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$??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z DD 025052e01H - DD 01122317H - DD 0700b001dH - DD 0500aH -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$xed_inst1 DD 025063a01H - DD 011e2323H - DD 07017001cH - DD 050156016H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$xed_relbr DD 025064519H - DD 0118231dH - DD 070110026H - DD 0500f6010H - DD imagerel __GSHandlerCheck - DD 0128H +$unwind$xed_relbr DD 025064519H + DD 0118231dH + DD 070110026H + DD 0500f6010H + DD imagerel __GSHandlerCheck + DD 0128H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -2121,296 +770,41 @@ CONST SEGMENT CONST ENDS ; COMDAT xdata xdata SEGMENT -$ip2state$?_Orphan_all@_Container_base12@std@@QEAAXXZ DB 02H - DB 00H - DB 00H +$unwind$wmemcpy DD 025053401H + DD 0118231dH + DD 07011001dH + DD 05010H xdata ENDS ; COMDAT xdata xdata SEGMENT -$cppxdata$?_Orphan_all@_Container_base12@std@@QEAAXXZ DB 060H - DD imagerel $ip2state$?_Orphan_all@_Container_base12@std@@QEAAXXZ +$ip2state$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z DB 02H + DB 00H + DB 00H 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 +$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 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 +$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 -$unwind$?_Allocate@_Default_allocate_traits@std@@SAPEAX_K@Z DD 025052a01H - DD 010e2313H - DD 07007001dH - DD 05006H +$ip2state$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z DB 02H + DB 00H + DB 00H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?_Throw_bad_array_new_length@std@@YAXXZ DD 025051e01H - DD 010a230fH - DD 070030023H - DD 05002H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??_Gbad_array_new_length@std@@UEAAPEAXI@Z DD 025052e01H - DD 01122317H - DD 0700b001dH - DD 0500aH -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??0bad_array_new_length@std@@QEAA@AEBV01@@Z DD 025052f01H - DD 01132318H - DD 0700c001dH - DD 0500bH -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??1bad_array_new_length@std@@UEAA@XZ DD 025052a01H - DD 010e2313H - DD 07007001dH - DD 05006H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??0bad_array_new_length@std@@QEAA@XZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??0bad_array_new_length@std@@QEAA@XZ DB 060H - DD imagerel $ip2state$??0bad_array_new_length@std@@QEAA@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??0bad_array_new_length@std@@QEAA@XZ DD 025052a19H - DD 010e2313H - DD 07007001dH - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??0bad_array_new_length@std@@QEAA@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??_Gbad_alloc@std@@UEAAPEAXI@Z DD 025052e01H - DD 01122317H - DD 0700b001dH - DD 0500aH -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??0bad_alloc@std@@QEAA@AEBV01@@Z DD 025052f01H - DD 01132318H - DD 0700c001dH - DD 0500bH -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??1bad_alloc@std@@UEAA@XZ DD 025052a01H - DD 010e2313H - DD 07007001dH - DD 05006H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??0bad_alloc@std@@AEAA@QEBD@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??0bad_alloc@std@@AEAA@QEBD@Z DB 060H - DD imagerel $ip2state$??0bad_alloc@std@@AEAA@QEBD@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??0bad_alloc@std@@AEAA@QEBD@Z DD 025052f19H - DD 01132318H - DD 0700c001dH - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??0bad_alloc@std@@AEAA@QEBD@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??_Gexception@std@@UEAAPEAXI@Z DD 025052e01H - DD 01122317H - DD 0700b001dH - DD 0500aH -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?what@exception@std@@UEBAPEBDXZ DD 025052a01H - DD 010e2313H - DD 07007001fH - DD 05006H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??1exception@std@@UEAA@XZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??1exception@std@@UEAA@XZ DB 060H - DD imagerel $ip2state$??1exception@std@@UEAA@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??1exception@std@@UEAA@XZ DD 025052a19H - DD 010e2313H - DD 07007001dH - DD 05006H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??1exception@std@@UEAA@XZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??0exception@std@@QEAA@AEBV01@@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??0exception@std@@QEAA@AEBV01@@Z DB 060H - DD imagerel $ip2state$??0exception@std@@QEAA@AEBV01@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??0exception@std@@QEAA@AEBV01@@Z DD 025052f19H - DD 01132318H - DD 0700c001dH - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??0exception@std@@QEAA@AEBV01@@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??0exception@std@@QEAA@QEBDH@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??0exception@std@@QEAA@QEBDH@Z DB 060H - DD imagerel $ip2state$??0exception@std@@QEAA@QEBDH@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??0exception@std@@QEAA@QEBDH@Z DD 025053419H - DD 0118231dH - DD 07011001dH - DD 05010H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??0exception@std@@QEAA@QEBDH@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$?max@?$numeric_limits@_J@std@@SA_JXZ DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$?max@?$numeric_limits@_J@std@@SA_JXZ DB 060H - DD imagerel $ip2state$?max@?$numeric_limits@_J@std@@SA_JXZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$?max@?$numeric_limits@_J@std@@SA_JXZ DD 025051e19H - DD 010a230fH - DD 07003001dH - DD 05002H - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$?max@?$numeric_limits@_J@std@@SA_JXZ -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$wmemcpy DD 025053401H - DD 0118231dH - DD 07011001dH - DD 05010H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$??2@YAPEAX_KPEAX@Z DB 02H - DB 00H - DB 00H -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$cppxdata$??2@YAPEAX_KPEAX@Z DB 060H - DD imagerel $ip2state$??2@YAPEAX_KPEAX@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$??2@YAPEAX_KPEAX@Z DD 025052f19H - DD 01132318H - DD 0700c001dH - DD 0500bH - DD imagerel __CxxFrameHandler4 - DD imagerel $cppxdata$??2@YAPEAX_KPEAX@Z -xdata ENDS -; COMDAT xdata -xdata SEGMENT -$ip2state$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z DB 02H - DB 00H - DB 00H -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 +$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 @@ -2469,6836 +863,2532 @@ __JustMyCode_Default PROC ; COMDAT __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\xutility -; COMDAT ??$_Copy_memmove@PEAKPEAK@std@@YAPEAKPEAK00@Z +; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp +; COMDAT ?ObfInsertOpaqueBranchBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z _TEXT SEGMENT -_First_ch$ = 8 -_Last_ch$ = 40 -_Dest_ch$ = 72 -_Count$ = 104 -_First$ = 352 -_Last$ = 360 -_Dest$ = 368 -??$_Copy_memmove@PEAKPEAK@std@@YAPEAKPEAK00@Z PROC ; std::_Copy_memmove, COMDAT +T$1 = 8 +EndBlock$ = 40 +T$2 = 72 +RealNext$3 = 104 +$T4 = 328 +tv128 = 344 +Start$ = 384 +End$ = 392 +OpaqueBranchBlock$ = 400 +?ObfInsertOpaqueBranchBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z PROC ; ObfInsertOpaqueBranchBlock, COMDAT -; 4113 : _OutIt _Copy_memmove(_InIt _First, _InIt _Last, _OutIt _Dest) { +; 117 : { -$LN3: +$LN13: 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 68 01 - 00 00 sub rsp, 360 ; 00000168H + 00011 48 81 ec 88 01 + 00 00 sub rsp, 392 ; 00000188H 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 0001d 48 8b fc mov rdi, rsp - 00020 b9 5a 00 00 00 mov ecx, 90 ; 0000005aH + 00020 b9 62 00 00 00 mov ecx, 98 ; 00000062H 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 88 - 01 00 00 mov rcx, QWORD PTR [rsp+392] + 0002c 48 8b 8c 24 a8 + 01 00 00 mov rcx, QWORD PTR [rsp+424] 00034 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__4324C6B3_xutility + 00 00 lea rcx, OFFSET FLAT:__BCD1AF07_OpaqueBranching@cpp 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 4114 : const char* const _First_ch = const_cast(reinterpret_cast(_First)); +; 118 : OpaqueBranchBlock->Start->Prev = Start->Prev; - 00040 48 8b 85 60 01 - 00 00 mov rax, QWORD PTR _First$[rbp] - 00047 48 89 45 08 mov QWORD PTR _First_ch$[rbp], rax + 00040 48 8b 85 90 01 + 00 00 mov rax, QWORD PTR OpaqueBranchBlock$[rbp] + 00047 48 8b 00 mov rax, QWORD PTR [rax] + 0004a 48 8b 8d 80 01 + 00 00 mov rcx, QWORD PTR Start$[rbp] + 00051 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] + 00055 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 4115 : const char* const _Last_ch = const_cast(reinterpret_cast(_Last)); +; 119 : OpaqueBranchBlock->End->Next = End->Next; - 0004b 48 8b 85 68 01 - 00 00 mov rax, QWORD PTR _Last$[rbp] - 00052 48 89 45 28 mov QWORD PTR _Last_ch$[rbp], rax + 00059 48 8b 85 90 01 + 00 00 mov rax, QWORD PTR OpaqueBranchBlock$[rbp] + 00060 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 00064 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR End$[rbp] + 0006b 48 8b 09 mov rcx, QWORD PTR [rcx] + 0006e 48 89 08 mov QWORD PTR [rax], rcx -; 4116 : char* const _Dest_ch = const_cast(reinterpret_cast(_Dest)); +; 120 : +; 121 : if (Start->Prev) - 00056 48 8b 85 70 01 - 00 00 mov rax, QWORD PTR _Dest$[rbp] - 0005d 48 89 45 48 mov QWORD PTR _Dest_ch$[rbp], rax + 00071 48 8b 85 80 01 + 00 00 mov rax, QWORD PTR Start$[rbp] + 00078 48 83 78 08 00 cmp QWORD PTR [rax+8], 0 + 0007d 74 18 je SHORT $LN8@ObfInsertO -; 4117 : const auto _Count = static_cast(_Last_ch - _First_ch); +; 122 : Start->Prev->Next = OpaqueBranchBlock->Start; - 00061 48 8b 45 08 mov rax, QWORD PTR _First_ch$[rbp] - 00065 48 8b 4d 28 mov rcx, QWORD PTR _Last_ch$[rbp] - 00069 48 2b c8 sub rcx, rax - 0006c 48 8b c1 mov rax, rcx - 0006f 48 89 45 68 mov QWORD PTR _Count$[rbp], rax + 0007f 48 8b 85 80 01 + 00 00 mov rax, QWORD PTR Start$[rbp] + 00086 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 0008a 48 8b 8d 90 01 + 00 00 mov rcx, QWORD PTR OpaqueBranchBlock$[rbp] + 00091 48 8b 09 mov rcx, QWORD PTR [rcx] + 00094 48 89 08 mov QWORD PTR [rax], rcx +$LN8@ObfInsertO: + +; 123 : if (End->Next) + + 00097 48 8b 85 88 01 + 00 00 mov rax, QWORD PTR End$[rbp] + 0009e 48 83 38 00 cmp QWORD PTR [rax], 0 + 000a2 74 19 je SHORT $LN9@ObfInsertO + +; 124 : End->Next->Prev = OpaqueBranchBlock->End; + + 000a4 48 8b 85 88 01 + 00 00 mov rax, QWORD PTR End$[rbp] + 000ab 48 8b 00 mov rax, QWORD PTR [rax] + 000ae 48 8b 8d 90 01 + 00 00 mov rcx, QWORD PTR OpaqueBranchBlock$[rbp] + 000b5 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] + 000b9 48 89 48 08 mov QWORD PTR [rax+8], rcx +$LN9@ObfInsertO: + +; 125 : +; 126 : //Update group for the current isntructions +; 127 : for (PNATIVE_CODE_LINK T = OpaqueBranchBlock->Start; T && T != OpaqueBranchBlock->End->Next; T = T->Next) + + 000bd 48 8b 85 90 01 + 00 00 mov rax, QWORD PTR OpaqueBranchBlock$[rbp] + 000c4 48 8b 00 mov rax, QWORD PTR [rax] + 000c7 48 89 45 08 mov QWORD PTR T$1[rbp], rax + 000cb eb 0b jmp SHORT $LN4@ObfInsertO +$LN2@ObfInsertO: + 000cd 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] + 000d1 48 8b 00 mov rax, QWORD PTR [rax] + 000d4 48 89 45 08 mov QWORD PTR T$1[rbp], rax +$LN4@ObfInsertO: + 000d8 48 83 7d 08 00 cmp QWORD PTR T$1[rbp], 0 + 000dd 74 29 je SHORT $LN3@ObfInsertO + 000df 48 8b 85 90 01 + 00 00 mov rax, QWORD PTR OpaqueBranchBlock$[rbp] + 000e6 48 8b 40 08 mov rax, QWORD PTR [rax+8] + 000ea 48 8b 00 mov rax, QWORD PTR [rax] + 000ed 48 39 45 08 cmp QWORD PTR T$1[rbp], rax + 000f1 74 15 je SHORT $LN3@ObfInsertO + +; 128 : T->Block = Start->Block; + + 000f3 48 8b 45 08 mov rax, QWORD PTR T$1[rbp] + 000f7 48 8b 8d 80 01 + 00 00 mov rcx, QWORD PTR Start$[rbp] + 000fe 48 8b 49 10 mov rcx, QWORD PTR [rcx+16] + 00102 48 89 48 10 mov QWORD PTR [rax+16], rcx + 00106 eb c5 jmp SHORT $LN2@ObfInsertO +$LN3@ObfInsertO: -; 4118 : _CSTD memmove(_Dest_ch, _First_ch, _Count); +; 129 : +; 130 : PNATIVE_CODE_LINK EndBlock = End->Next; - 00073 4c 8b 45 68 mov r8, QWORD PTR _Count$[rbp] - 00077 48 8b 55 08 mov rdx, QWORD PTR _First_ch$[rbp] - 0007b 48 8b 4d 48 mov rcx, QWORD PTR _Dest_ch$[rbp] - 0007f e8 00 00 00 00 call memmove + 00108 48 8b 85 88 01 + 00 00 mov rax, QWORD PTR End$[rbp] + 0010f 48 8b 00 mov rax, QWORD PTR [rax] + 00112 48 89 45 28 mov QWORD PTR EndBlock$[rbp], rax -; 4119 : return reinterpret_cast<_OutIt>(_Dest_ch + _Count); +; 131 : for (PNATIVE_CODE_LINK T = Start; T && T != EndBlock;) - 00084 48 8b 45 68 mov rax, QWORD PTR _Count$[rbp] - 00088 48 8b 4d 48 mov rcx, QWORD PTR _Dest_ch$[rbp] - 0008c 48 03 c8 add rcx, rax - 0008f 48 8b c1 mov rax, rcx + 00116 48 8b 85 80 01 + 00 00 mov rax, QWORD PTR Start$[rbp] + 0011d 48 89 45 48 mov QWORD PTR T$2[rbp], rax +$LN5@ObfInsertO: + 00121 48 83 7d 48 00 cmp QWORD PTR T$2[rbp], 0 + 00126 74 59 je SHORT $LN6@ObfInsertO + 00128 48 8b 45 28 mov rax, QWORD PTR EndBlock$[rbp] + 0012c 48 39 45 48 cmp QWORD PTR T$2[rbp], rax + 00130 74 4f je SHORT $LN6@ObfInsertO + +; 132 : { +; 133 : PNATIVE_CODE_LINK RealNext = T->Next; + + 00132 48 8b 45 48 mov rax, QWORD PTR T$2[rbp] + 00136 48 8b 00 mov rax, QWORD PTR [rax] + 00139 48 89 45 68 mov QWORD PTR RealNext$3[rbp], rax + +; 134 : delete T; + + 0013d 48 8b 45 48 mov rax, QWORD PTR T$2[rbp] + 00141 48 89 85 48 01 + 00 00 mov QWORD PTR $T4[rbp], rax + 00148 48 83 bd 48 01 + 00 00 00 cmp QWORD PTR $T4[rbp], 0 + 00150 74 1a je SHORT $LN11@ObfInsertO + 00152 ba 01 00 00 00 mov edx, 1 + 00157 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR $T4[rbp] + 0015e e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z + 00163 48 89 85 58 01 + 00 00 mov QWORD PTR tv128[rbp], rax + 0016a eb 0b jmp SHORT $LN12@ObfInsertO +$LN11@ObfInsertO: + 0016c 48 c7 85 58 01 + 00 00 00 00 00 + 00 mov QWORD PTR tv128[rbp], 0 +$LN12@ObfInsertO: -; 4120 : } +; 135 : T = RealNext; - 00092 48 8d a5 48 01 - 00 00 lea rsp, QWORD PTR [rbp+328] - 00099 5f pop rdi - 0009a 5d pop rbp - 0009b c3 ret 0 -??$_Copy_memmove@PEAKPEAK@std@@YAPEAKPEAK00@Z ENDP ; std::_Copy_memmove -_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\xutility -; COMDAT ??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z -_TEXT SEGMENT -_It$ = 224 -??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z PROC ; std::_Get_unwrapped, COMDAT + 00177 48 8b 45 68 mov rax, QWORD PTR RealNext$3[rbp] + 0017b 48 89 45 48 mov QWORD PTR T$2[rbp], rax -; 1229 : _NODISCARD constexpr decltype(auto) _Get_unwrapped(_Iter&& _It) { +; 136 : } -$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:__4324C6B3_xutility - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0017f eb a0 jmp SHORT $LN5@ObfInsertO +$LN6@ObfInsertO: -; 1230 : // unwrap an iterator previously subjected to _Adl_verify_range or otherwise validated -; 1231 : if constexpr (is_pointer_v>) { // special-case pointers and arrays -; 1232 : return _It + 0; +; 137 : return TRUE; - 00036 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR _It$[rbp] - 0003d 48 8b 00 mov rax, QWORD PTR [rax] + 00181 b8 01 00 00 00 mov eax, 1 -; 1233 : } else if constexpr (_Unwrappable_v<_Iter>) { -; 1234 : return static_cast<_Iter&&>(_It)._Unwrapped(); -; 1235 : } else { -; 1236 : return static_cast<_Iter&&>(_It); -; 1237 : } -; 1238 : } +; 138 : } - 00040 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00047 5f pop rdi - 00048 5d pop rbp - 00049 c3 ret 0 -??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z ENDP ; std::_Get_unwrapped + 00186 48 8d a5 68 01 + 00 00 lea rsp, QWORD PTR [rbp+360] + 0018d 5f pop rdi + 0018e 5d pop rbp + 0018f c3 ret 0 +?ObfInsertOpaqueBranchBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; ObfInsertOpaqueBranchBlock _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 +; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp +; COMDAT ?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z +_TEXT SEGMENT +Jcc$ = 8 +Jmp$ = 40 +$T1 = 264 +$T2 = 296 +$T3 = 328 +$T4 = 360 +$T5 = 392 +tv141 = 408 +tv94 = 408 +tv76 = 408 +NotTaken$ = 448 +Taken$ = 456 +JccLabel$ = 464 +JmpLabel$ = 472 +?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z PROC ; ObfCombineOpaqueBranches, COMDAT + +; 94 : { -; 687 : static void deallocate(_Alloc&, const pointer _Ptr, const size_type _Count) { +$LN13: + 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d + 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d + 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 c8 01 + 00 00 sub rsp, 456 ; 000001c8H + 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00022 48 8b fc mov rdi, rsp + 00025 b9 72 00 00 00 mov ecx, 114 ; 00000072H + 0002a b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 0002f f3 ab rep stosd + 00031 48 8b 8c 24 e8 + 01 00 00 mov rcx, QWORD PTR [rsp+488] + 00039 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__BCD1AF07_OpaqueBranching@cpp + 00040 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -$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 +; 95 : PNATIVE_CODE_LINK Jcc = ObfGenRandomJcc(JccLabel); -; 688 : // no overflow check on the following multiply; we assume _Allocate did that check -; 689 : _Deallocate<_New_alignof>(_Ptr, sizeof(value_type) * _Count); + 00045 ba 20 00 00 00 mov edx, 32 ; 00000020H + 0004a 8b 8d d0 01 00 + 00 mov ecx, DWORD PTR JccLabel$[rbp] + 00050 e8 00 00 00 00 call ?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z ; ObfGenRandomJcc + 00055 48 89 45 08 mov QWORD PTR Jcc$[rbp], rax - 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> +; 96 : if (!Jcc) -; 690 : } + 00059 48 83 7d 08 00 cmp QWORD PTR Jcc$[rbp], 0 + 0005e 75 07 jne SHORT $LN2@ObfCombine - 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 ??$_Get_size_of_n@$03@std@@YA_K_K@Z -_TEXT SEGMENT -_Overflow_is_possible$ = 4 -_Max_possible$1 = 40 -_Count$ = 288 -??$_Get_size_of_n@$03@std@@YA_K_K@Z PROC ; std::_Get_size_of_n<4>, COMDAT +; 97 : return FALSE; -; 55 : _NODISCARD constexpr size_t _Get_size_of_n(const size_t _Count) { + 00060 33 c0 xor eax, eax + 00062 e9 83 01 00 00 jmp $LN1@ObfCombine +$LN2@ObfCombine: -$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 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 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +; 98 : PNATIVE_CODE_LINK Jmp = ObfGenJmpToLabel(JmpLabel); -; 56 : constexpr bool _Overflow_is_possible = _Ty_size > 1; + 00067 ba 20 00 00 00 mov edx, 32 ; 00000020H + 0006c 8b 8d d8 01 00 + 00 mov ecx, DWORD PTR JmpLabel$[rbp] + 00072 e8 00 00 00 00 call ?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z ; ObfGenJmpToLabel + 00077 48 89 45 28 mov QWORD PTR Jmp$[rbp], rax + +; 99 : if (!Jmp) + + 0007b 48 83 7d 28 00 cmp QWORD PTR Jmp$[rbp], 0 + 00080 75 41 jne SHORT $LN3@ObfCombine + +; 100 : { +; 101 : delete Jcc; - 00036 c6 45 04 01 mov BYTE PTR _Overflow_is_possible$[rbp], 1 + 00082 48 8b 45 08 mov rax, QWORD PTR Jcc$[rbp] + 00086 48 89 85 08 01 + 00 00 mov QWORD PTR $T1[rbp], rax + 0008d 48 83 bd 08 01 + 00 00 00 cmp QWORD PTR $T1[rbp], 0 + 00095 74 1a je SHORT $LN5@ObfCombine + 00097 ba 01 00 00 00 mov edx, 1 + 0009c 48 8b 8d 08 01 + 00 00 mov rcx, QWORD PTR $T1[rbp] + 000a3 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z + 000a8 48 89 85 98 01 + 00 00 mov QWORD PTR tv76[rbp], rax + 000af eb 0b jmp SHORT $LN6@ObfCombine +$LN5@ObfCombine: + 000b1 48 c7 85 98 01 + 00 00 00 00 00 + 00 mov QWORD PTR tv76[rbp], 0 +$LN6@ObfCombine: + +; 102 : return FALSE; + + 000bc 33 c0 xor eax, eax + 000be e9 27 01 00 00 jmp $LN1@ObfCombine +$LN3@ObfCombine: + +; 103 : } +; 104 : +; 105 : NcPrependToBlock(NotTaken, Jcc); + + 000c3 48 8b 55 08 mov rdx, QWORD PTR Jcc$[rbp] + 000c7 48 8b 8d c0 01 + 00 00 mov rcx, QWORD PTR NotTaken$[rbp] + 000ce e8 00 00 00 00 call ?NcPrependToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcPrependToBlock + +; 106 : NcAppendToBlock(NotTaken, Jmp); + + 000d3 48 8b 55 28 mov rdx, QWORD PTR Jmp$[rbp] + 000d7 48 8b 8d c0 01 + 00 00 mov rcx, QWORD PTR NotTaken$[rbp] + 000de e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + +; 107 : +; 108 : NcPrependToBlock(Taken, new NATIVE_CODE_LINK(JccLabel, Taken)); + + 000e3 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H + 000e8 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new + 000ed 48 89 85 48 01 + 00 00 mov QWORD PTR $T3[rbp], rax + 000f4 48 83 bd 48 01 + 00 00 00 cmp QWORD PTR $T3[rbp], 0 + 000fc 74 22 je SHORT $LN7@ObfCombine + 000fe 4c 8b 85 c8 01 + 00 00 mov r8, QWORD PTR Taken$[rbp] + 00105 8b 95 d0 01 00 + 00 mov edx, DWORD PTR JccLabel$[rbp] + 0010b 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR $T3[rbp] + 00112 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAU_NATIVE_CODE_BLOCK@@@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 00117 48 89 85 98 01 + 00 00 mov QWORD PTR tv94[rbp], rax + 0011e eb 0b jmp SHORT $LN8@ObfCombine +$LN7@ObfCombine: + 00120 48 c7 85 98 01 + 00 00 00 00 00 + 00 mov QWORD PTR tv94[rbp], 0 +$LN8@ObfCombine: + 0012b 48 8b 85 98 01 + 00 00 mov rax, QWORD PTR tv94[rbp] + 00132 48 89 85 28 01 + 00 00 mov QWORD PTR $T2[rbp], rax + 00139 48 8b 95 28 01 + 00 00 mov rdx, QWORD PTR $T2[rbp] + 00140 48 8b 8d c8 01 + 00 00 mov rcx, QWORD PTR Taken$[rbp] + 00147 e8 00 00 00 00 call ?NcPrependToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcPrependToBlock -; 57 : -; 58 : if _CONSTEXPR_IF (_Overflow_is_possible) { -; 59 : constexpr size_t _Max_possible = static_cast(-1) / _Ty_size; +; 109 : NcAppendToBlock(Taken, new NATIVE_CODE_LINK(JmpLabel, Taken)); - 0003a 48 b8 ff ff ff - ff ff ff ff 3f mov rax, 4611686018427387903 ; 3fffffffffffffffH - 00044 48 89 45 28 mov QWORD PTR _Max_possible$1[rbp], rax + 0014c b9 f0 00 00 00 mov ecx, 240 ; 000000f0H + 00151 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new + 00156 48 89 85 88 01 + 00 00 mov QWORD PTR $T5[rbp], rax + 0015d 48 83 bd 88 01 + 00 00 00 cmp QWORD PTR $T5[rbp], 0 + 00165 74 22 je SHORT $LN9@ObfCombine + 00167 4c 8b 85 c8 01 + 00 00 mov r8, QWORD PTR Taken$[rbp] + 0016e 8b 95 d8 01 00 + 00 mov edx, DWORD PTR JmpLabel$[rbp] + 00174 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR $T5[rbp] + 0017b e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAU_NATIVE_CODE_BLOCK@@@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 00180 48 89 85 98 01 + 00 00 mov QWORD PTR tv141[rbp], rax + 00187 eb 0b jmp SHORT $LN10@ObfCombine +$LN9@ObfCombine: + 00189 48 c7 85 98 01 + 00 00 00 00 00 + 00 mov QWORD PTR tv141[rbp], 0 +$LN10@ObfCombine: + 00194 48 8b 85 98 01 + 00 00 mov rax, QWORD PTR tv141[rbp] + 0019b 48 89 85 68 01 + 00 00 mov QWORD PTR $T4[rbp], rax + 001a2 48 8b 95 68 01 + 00 00 mov rdx, QWORD PTR $T4[rbp] + 001a9 48 8b 8d c8 01 + 00 00 mov rcx, QWORD PTR Taken$[rbp] + 001b0 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock -; 60 : if (_Count > _Max_possible) { +; 110 : +; 111 : NcInsertBlockAfter(NotTaken->End, Taken, FALSE); - 00048 48 b8 ff ff ff - ff ff ff ff 3f mov rax, 4611686018427387903 ; 3fffffffffffffffH - 00052 48 39 85 20 01 - 00 00 cmp QWORD PTR _Count$[rbp], rax - 00059 76 05 jbe SHORT $LN2@Get_size_o + 001b5 45 33 c0 xor r8d, r8d + 001b8 48 8b 95 c8 01 + 00 00 mov rdx, QWORD PTR Taken$[rbp] + 001bf 48 8b 85 c0 01 + 00 00 mov rax, QWORD PTR NotTaken$[rbp] + 001c6 48 8b 48 08 mov rcx, QWORD PTR [rax+8] + 001ca e8 00 00 00 00 call ?NcInsertBlockAfter@@YAHPEAU_NATIVE_CODE_LINK@@PEAU_NATIVE_CODE_BLOCK@@H@Z ; NcInsertBlockAfter -; 61 : _Throw_bad_array_new_length(); // multiply overflow +; 112 : NotTaken->End = Taken->End; - 0005b e8 00 00 00 00 call ?_Throw_bad_array_new_length@std@@YAXXZ ; std::_Throw_bad_array_new_length -$LN2@Get_size_o: + 001cf 48 8b 85 c0 01 + 00 00 mov rax, QWORD PTR NotTaken$[rbp] + 001d6 48 8b 8d c8 01 + 00 00 mov rcx, QWORD PTR Taken$[rbp] + 001dd 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] + 001e1 48 89 48 08 mov QWORD PTR [rax+8], rcx -; 62 : } -; 63 : } -; 64 : -; 65 : return _Count * _Ty_size; +; 113 : return TRUE; - 00060 48 8b 85 20 01 - 00 00 mov rax, QWORD PTR _Count$[rbp] - 00067 48 c1 e0 02 shl rax, 2 -$LN3@Get_size_o: + 001e5 b8 01 00 00 00 mov eax, 1 +$LN1@ObfCombine: -; 66 : } +; 114 : } - 0006b 48 8d a5 08 01 - 00 00 lea rsp, QWORD PTR [rbp+264] - 00072 5f pop rdi - 00073 5d pop rbp - 00074 c3 ret 0 -??$_Get_size_of_n@$03@std@@YA_K_K@Z ENDP ; std::_Get_size_of_n<4> + 001ea 48 8d a5 a8 01 + 00 00 lea rsp, QWORD PTR [rbp+424] + 001f1 5f pop rdi + 001f2 5d pop rbp + 001f3 c3 ret 0 +?ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z ENDP ; ObfCombineOpaqueBranches _TEXT ENDS +; COMDAT text$x +text$x SEGMENT +Jcc$ = 8 +Jmp$ = 40 +$T1 = 264 +$T2 = 296 +$T3 = 328 +$T4 = 360 +$T5 = 392 +tv141 = 408 +tv94 = 408 +tv76 = 408 +NotTaken$ = 448 +Taken$ = 456 +JccLabel$ = 464 +JmpLabel$ = 472 +?dtor$0@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA PROC ; `ObfCombineOpaqueBranches'::`1'::dtor$0 + 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 55 push rbp + 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 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 00019 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR $T3[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 +?dtor$0@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA ENDP ; `ObfCombineOpaqueBranches'::`1'::dtor$0 +text$x ENDS +; COMDAT text$x +text$x SEGMENT +Jcc$ = 8 +Jmp$ = 40 +$T1 = 264 +$T2 = 296 +$T3 = 328 +$T4 = 360 +$T5 = 392 +tv141 = 408 +tv94 = 408 +tv76 = 408 +NotTaken$ = 448 +Taken$ = 456 +JccLabel$ = 464 +JmpLabel$ = 472 +?dtor$1@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA PROC ; `ObfCombineOpaqueBranches'::`1'::dtor$1 + 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 55 push rbp + 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 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 00019 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR $T5[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 +?dtor$1@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA ENDP ; `ObfCombineOpaqueBranches'::`1'::dtor$1 +text$x ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; COMDAT text$x +text$x SEGMENT +Jcc$ = 8 +Jmp$ = 40 +$T1 = 264 +$T2 = 296 +$T3 = 328 +$T4 = 360 +$T5 = 392 +tv141 = 408 +tv94 = 408 +tv76 = 408 +NotTaken$ = 448 +Taken$ = 456 +JccLabel$ = 464 +JmpLabel$ = 472 +?dtor$0@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA PROC ; `ObfCombineOpaqueBranches'::`1'::dtor$0 + 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 55 push rbp + 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 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 00019 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR $T3[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 +?dtor$0@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA ENDP ; `ObfCombineOpaqueBranches'::`1'::dtor$0 +text$x ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; COMDAT text$x +text$x SEGMENT +Jcc$ = 8 +Jmp$ = 40 +$T1 = 264 +$T2 = 296 +$T3 = 328 +$T4 = 360 +$T5 = 392 +tv141 = 408 +tv94 = 408 +tv76 = 408 +NotTaken$ = 448 +Taken$ = 456 +JccLabel$ = 464 +JmpLabel$ = 472 +?dtor$1@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA PROC ; `ObfCombineOpaqueBranches'::`1'::dtor$1 + 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 55 push rbp + 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 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 00019 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR $T5[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 +?dtor$1@?0??ObfCombineOpaqueBranches@@YAHPEAU_NATIVE_CODE_BLOCK@@0KK@Z@4HA ENDP ; `ObfCombineOpaqueBranches'::`1'::dtor$1 +text$x 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 ??$_Uninitialized_move@PEAKV?$allocator@K@std@@@std@@YAPEAKQEAK0PEAKAEAV?$allocator@K@0@@Z +; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp +; COMDAT ?ObfCreateOpaqueBranches@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@1@Z _TEXT SEGMENT -_UFirst$ = 8 -_ULast$ = 40 -_First$ = 288 -_Last$ = 296 -_Dest$ = 304 -_Al$ = 312 -??$_Uninitialized_move@PEAKV?$allocator@K@std@@@std@@YAPEAKQEAK0PEAKAEAV?$allocator@K@0@@Z PROC ; std::_Uninitialized_move >, COMDAT +tv74 = 192 +Start$ = 240 +End$ = 248 +NotTaken$ = 256 +Taken$ = 264 +?ObfCreateOpaqueBranches@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@1@Z PROC ; ObfCreateOpaqueBranches, COMDAT -; 1647 : const _InIt _First, const _InIt _Last, _Alloc_ptr_t<_Alloc> _Dest, _Alloc& _Al) { +; 89 : { -$LN3: +$LN5: 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 28 01 - 00 00 sub rsp, 296 ; 00000128H + 00016 48 81 ec f8 00 + 00 00 sub rsp, 248 ; 000000f8H 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 00022 48 8b fc mov rdi, rsp - 00025 b9 4a 00 00 00 mov ecx, 74 ; 0000004aH + 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 48 - 01 00 00 mov rcx, QWORD PTR [rsp+328] + 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:__A58979FC_xmemory + 00 00 lea rcx, OFFSET FLAT:__BCD1AF07_OpaqueBranching@cpp 00040 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 1648 : // move [_First, _Last) to raw _Dest, using _Al -; 1649 : // note: only called internally from elsewhere in the STL -; 1650 : using _Ptrval = typename _Alloc::value_type*; -; 1651 : auto _UFirst = _Get_unwrapped(_First); - - 00045 48 8d 8d 20 01 - 00 00 lea rcx, QWORD PTR _First$[rbp] - 0004c e8 00 00 00 00 call ??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z ; std::_Get_unwrapped - 00051 48 89 45 08 mov QWORD PTR _UFirst$[rbp], rax - -; 1652 : const auto _ULast = _Get_unwrapped(_Last); - - 00055 48 8d 8d 28 01 - 00 00 lea rcx, QWORD PTR _Last$[rbp] - 0005c e8 00 00 00 00 call ??$_Get_unwrapped@AEBQEAK@std@@YA@AEBQEAK@Z ; std::_Get_unwrapped - 00061 48 89 45 28 mov QWORD PTR _ULast$[rbp], rax - -; 1653 : if constexpr (conjunction_v::_Really_trivial>, -; 1654 : _Uses_default_construct<_Alloc, _Ptrval, decltype(_STD move(*_UFirst))>>) { -; 1655 : _Copy_memmove(_UFirst, _ULast, _Unfancy(_Dest)); - - 00065 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR _Dest$[rbp] - 0006c e8 00 00 00 00 call ??$_Unfancy@K@std@@YAPEAKPEAK@Z ; std::_Unfancy - 00071 4c 8b c0 mov r8, rax - 00074 48 8b 55 28 mov rdx, QWORD PTR _ULast$[rbp] - 00078 48 8b 4d 08 mov rcx, QWORD PTR _UFirst$[rbp] - 0007c e8 00 00 00 00 call ??$_Copy_memmove@PEAKPEAK@std@@YAPEAKPEAK00@Z ; std::_Copy_memmove - -; 1656 : return _Dest + (_ULast - _UFirst); - - 00081 48 8b 45 08 mov rax, QWORD PTR _UFirst$[rbp] - 00085 48 8b 4d 28 mov rcx, QWORD PTR _ULast$[rbp] - 00089 48 2b c8 sub rcx, rax - 0008c 48 8b c1 mov rax, rcx - 0008f 48 c1 f8 02 sar rax, 2 - 00093 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR _Dest$[rbp] - 0009a 48 8d 04 81 lea rax, QWORD PTR [rcx+rax*4] - -; 1657 : } else { -; 1658 : _Uninitialized_backout_al<_Alloc> _Backout{_Dest, _Al}; -; 1659 : for (; _UFirst != _ULast; ++_UFirst) { -; 1660 : _Backout._Emplace_back(_STD move(*_UFirst)); -; 1661 : } -; 1662 : -; 1663 : return _Backout._Release(); -; 1664 : } -; 1665 : } - - 0009e 48 8d a5 08 01 - 00 00 lea rsp, QWORD PTR [rbp+264] - 000a5 5f pop rdi - 000a6 5d pop rbp - 000a7 c3 ret 0 -??$_Uninitialized_move@PEAKV?$allocator@K@std@@@std@@YAPEAKQEAK0PEAKAEAV?$allocator@K@0@@Z ENDP ; std::_Uninitialized_move > -_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 ??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z -_TEXT SEGMENT -_Block_size$ = 8 -_Ptr_container$ = 40 -_Ptr$ = 72 -_Bytes$ = 320 -??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z PROC ; std::_Allocate_manually_vector_aligned, COMDAT - -; 113 : __declspec(allocator) void* _Allocate_manually_vector_aligned(const size_t _Bytes) { - -$LN13: - 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00005 55 push rbp - 00006 57 push rdi - 00007 48 81 ec 58 01 - 00 00 sub rsp, 344 ; 00000158H - 0000e 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] - 00013 48 8b fc mov rdi, rsp - 00016 b9 56 00 00 00 mov ecx, 86 ; 00000056H - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 78 - 01 00 00 mov rcx, QWORD PTR [rsp+376] - 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +; 90 : return (NcDeepCopyPartialBlock(Start, End, Taken) && !NcDeepCopyPartialBlock(Start, End, NotTaken)); -; 114 : // allocate _Bytes manually aligned to at least _Big_allocation_alignment -; 115 : const size_t _Block_size = _Non_user_size + _Bytes; - - 00036 48 8b 85 40 01 - 00 00 mov rax, QWORD PTR _Bytes$[rbp] - 0003d 48 83 c0 2f add rax, 47 ; 0000002fH - 00041 48 89 45 08 mov QWORD PTR _Block_size$[rbp], rax - -; 116 : if (_Block_size <= _Bytes) { - - 00045 48 8b 85 40 01 - 00 00 mov rax, QWORD PTR _Bytes$[rbp] - 0004c 48 39 45 08 cmp QWORD PTR _Block_size$[rbp], rax - 00050 77 05 ja SHORT $LN8@Allocate_m - -; 117 : _Throw_bad_array_new_length(); // add overflow - - 00052 e8 00 00 00 00 call ?_Throw_bad_array_new_length@std@@YAXXZ ; std::_Throw_bad_array_new_length -$LN8@Allocate_m: - -; 118 : } -; 119 : -; 120 : const uintptr_t _Ptr_container = reinterpret_cast(_Traits::_Allocate(_Block_size)); - - 00057 48 8b 4d 08 mov rcx, QWORD PTR _Block_size$[rbp] - 0005b e8 00 00 00 00 call ?_Allocate@_Default_allocate_traits@std@@SAPEAX_K@Z ; std::_Default_allocate_traits::_Allocate - 00060 48 89 45 28 mov QWORD PTR _Ptr_container$[rbp], rax -$LN4@Allocate_m: - -; 121 : _STL_VERIFY(_Ptr_container != 0, "invalid argument"); // validate even in release since we're doing p[-1] - - 00064 48 83 7d 28 00 cmp QWORD PTR _Ptr_container$[rbp], 0 - 00069 74 02 je SHORT $LN9@Allocate_m - 0006b eb 6b jmp SHORT $LN10@Allocate_m -$LN9@Allocate_m: -$LN7@Allocate_m: - 0006d 48 8d 05 00 00 - 00 00 lea rax, OFFSET FLAT:??_C@_0BB@FCMFBGOM@invalid?5argument@ - 00074 48 89 44 24 28 mov QWORD PTR [rsp+40], rax - 00079 48 8d 05 00 00 - 00 00 lea rax, OFFSET FLAT:??_C@_02DKCKIIND@?$CFs@ - 00080 48 89 44 24 20 mov QWORD PTR [rsp+32], rax - 00085 45 33 c9 xor r9d, r9d - 00088 41 b8 79 00 00 - 00 mov r8d, 121 ; 00000079H - 0008e 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:??_C@_0GI@JMEOMKJO@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ - 00095 b9 02 00 00 00 mov ecx, 2 - 0009a ff 15 00 00 00 - 00 call QWORD PTR __imp__CrtDbgReport - 000a0 83 f8 01 cmp eax, 1 - 000a3 75 03 jne SHORT $LN12@Allocate_m - 000a5 cc int 3 - 000a6 33 c0 xor eax, eax -$LN12@Allocate_m: - 000a8 48 c7 44 24 20 - 00 00 00 00 mov QWORD PTR [rsp+32], 0 - 000b1 41 b9 79 00 00 - 00 mov r9d, 121 ; 00000079H - 000b7 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@ - 000be 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:??_C@_1EO@GFNCMDLA@?$AAs?$AAt?$AAd?$AA?3?$AA?3?$AA_?$AAA?$AAl?$AAl?$AAo?$AAc?$AAa?$AAt?$AAe?$AA_@ - 000c5 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@ - 000cc ff 15 00 00 00 - 00 call QWORD PTR __imp__invalid_parameter - 000d2 33 c0 xor eax, eax - 000d4 85 c0 test eax, eax - 000d6 75 95 jne SHORT $LN7@Allocate_m -$LN10@Allocate_m: - 000d8 33 c0 xor eax, eax - 000da 85 c0 test eax, eax - 000dc 75 86 jne SHORT $LN4@Allocate_m - -; 122 : void* const _Ptr = reinterpret_cast((_Ptr_container + _Non_user_size) & ~(_Big_allocation_alignment - 1)); - - 000de 48 8b 45 28 mov rax, QWORD PTR _Ptr_container$[rbp] - 000e2 48 83 c0 2f add rax, 47 ; 0000002fH - 000e6 48 83 e0 e0 and rax, -32 ; ffffffffffffffe0H - 000ea 48 89 45 48 mov QWORD PTR _Ptr$[rbp], rax - -; 123 : static_cast(_Ptr)[-1] = _Ptr_container; - - 000ee b8 08 00 00 00 mov eax, 8 - 000f3 48 6b c0 ff imul rax, rax, -1 - 000f7 48 8b 4d 48 mov rcx, QWORD PTR _Ptr$[rbp] - 000fb 48 8b 55 28 mov rdx, QWORD PTR _Ptr_container$[rbp] - 000ff 48 89 14 01 mov QWORD PTR [rcx+rax], rdx - -; 124 : -; 125 : #ifdef _DEBUG -; 126 : static_cast(_Ptr)[-2] = _Big_allocation_sentinel; - - 00103 b8 08 00 00 00 mov eax, 8 - 00108 48 6b c0 fe imul rax, rax, -2 - 0010c 48 8b 4d 48 mov rcx, QWORD PTR _Ptr$[rbp] - 00110 48 ba fa fa fa - fa fa fa fa fa mov rdx, -361700864190383366 ; fafafafafafafafaH - 0011a 48 89 14 01 mov QWORD PTR [rcx+rax], rdx - -; 127 : #endif // _DEBUG -; 128 : return _Ptr; - - 0011e 48 8b 45 48 mov rax, QWORD PTR _Ptr$[rbp] -$LN11@Allocate_m: - -; 129 : } - - 00122 48 8d a5 28 01 - 00 00 lea rsp, QWORD PTR [rbp+296] - 00129 5f pop rdi - 0012a 5d pop rbp - 0012b c3 ret 0 -??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z ENDP ; std::_Allocate_manually_vector_aligned + 00045 4c 8b 85 08 01 + 00 00 mov r8, QWORD PTR Taken$[rbp] + 0004c 48 8b 95 f8 00 + 00 00 mov rdx, QWORD PTR End$[rbp] + 00053 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR Start$[rbp] + 0005a e8 00 00 00 00 call ?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeepCopyPartialBlock + 0005f 85 c0 test eax, eax + 00061 74 2a je SHORT $LN3@ObfCreateO + 00063 4c 8b 85 00 01 + 00 00 mov r8, QWORD PTR NotTaken$[rbp] + 0006a 48 8b 95 f8 00 + 00 00 mov rdx, QWORD PTR End$[rbp] + 00071 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR Start$[rbp] + 00078 e8 00 00 00 00 call ?NcDeepCopyPartialBlock@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeepCopyPartialBlock + 0007d 85 c0 test eax, eax + 0007f 75 0c jne SHORT $LN3@ObfCreateO + 00081 c7 85 c0 00 00 + 00 01 00 00 00 mov DWORD PTR tv74[rbp], 1 + 0008b eb 0a jmp SHORT $LN4@ObfCreateO +$LN3@ObfCreateO: + 0008d c7 85 c0 00 00 + 00 00 00 00 00 mov DWORD PTR tv74[rbp], 0 +$LN4@ObfCreateO: + 00097 8b 85 c0 00 00 + 00 mov eax, DWORD PTR tv74[rbp] + +; 91 : } + + 0009d 48 8d a5 d8 00 + 00 00 lea rsp, QWORD PTR [rbp+216] + 000a4 5f pop rdi + 000a5 5d pop rbp + 000a6 c3 ret 0 +?ObfCreateOpaqueBranches@@YAHPEAU_NATIVE_CODE_LINK@@0PEAU_NATIVE_CODE_BLOCK@@1@Z ENDP ; ObfCreateOpaqueBranches _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 +; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp +; COMDAT ?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@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 +MachineState$ = 8 +EncoderInstruction$ = 48 +EncoderRequest$ = 496 +EncodeBuffer$ = 712 +ReturnedSize$ = 756 +Link$ = 792 +$T8 = 1400 +$T9 = 1480 +$T10 = 1560 +$T11 = 1592 +$T12 = 1624 +$T13 = 1664 +tv145 = 1720 +tv133 = 1720 +__$ArrayPad$ = 1728 +LabelId$ = 1776 +DisplacementWidth$ = 1784 +?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z PROC ; ObfGenJmpToLabel, COMDAT -; 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); +; 58 : { - 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 +$LN11: + 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx + 00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx + 00008 55 push rbp + 00009 56 push rsi + 0000a 57 push rdi + 0000b 48 81 ec 00 07 + 00 00 sub rsp, 1792 ; 00000700H + 00012 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] + 00017 48 8b fc mov rdi, rsp + 0001a b9 c0 01 00 00 mov ecx, 448 ; 000001c0H + 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00024 f3 ab rep stosd + 00026 8b 8c 24 28 07 + 00 00 mov ecx, DWORD PTR [rsp+1832] + 0002d 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00034 48 33 c5 xor rax, rbp + 00037 48 89 85 c0 06 + 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax + 0003e 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__BCD1AF07_OpaqueBranching@cpp + 00045 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 213 : void _Deallocate(void* _Ptr, size_t _Bytes) noexcept { +; 59 : XED_STATE MachineState; +; 60 : MachineState.mmode = XED_MACHINE_MODE_LONG_64; -$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 + 0004a c7 45 08 01 00 + 00 00 mov DWORD PTR MachineState$[rbp], 1 -; 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 +; 61 : MachineState.stack_addr_width = XED_ADDRESS_WIDTH_64b; - 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 + 00051 c7 45 0c 08 00 + 00 00 mov DWORD PTR MachineState$[rbp+4], 8 -; 217 : _Adjust_manually_vector_aligned(_Ptr, _Bytes); +; 62 : XED_ENCODER_INSTRUCTION EncoderInstruction; +; 63 : XED_ENCODER_REQUEST EncoderRequest; +; 64 : UCHAR EncodeBuffer[15]; +; 65 : UINT ReturnedSize; +; 66 : +; 67 : XedInst1(&EncoderInstruction, MachineState, XED_ICLASS_JMP, DisplacementWidth, XedRelBr(0, DisplacementWidth)); - 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: + 00058 44 8b 85 f8 06 + 00 00 mov r8d, DWORD PTR DisplacementWidth$[rbp] + 0005f 33 d2 xor edx, edx + 00061 48 8d 8d c8 05 + 00 00 lea rcx, QWORD PTR $T9[rbp] + 00068 e8 00 00 00 00 call xed_relbr + 0006d 48 8d 8d 78 05 + 00 00 lea rcx, QWORD PTR $T8[rbp] + 00074 48 8b f9 mov rdi, rcx + 00077 48 8b f0 mov rsi, rax + 0007a b9 30 00 00 00 mov ecx, 48 ; 00000030H + 0007f f3 a4 rep movsb + 00081 48 8d 85 80 06 + 00 00 lea rax, QWORD PTR $T13[rbp] + 00088 48 8d 8d 78 05 + 00 00 lea rcx, QWORD PTR $T8[rbp] + 0008f 48 8b f8 mov rdi, rax + 00092 48 8b f1 mov rsi, rcx + 00095 b9 30 00 00 00 mov ecx, 48 ; 00000030H + 0009a f3 a4 rep movsb + 0009c 48 8d 85 80 06 + 00 00 lea rax, QWORD PTR $T13[rbp] + 000a3 48 89 44 24 20 mov QWORD PTR [rsp+32], rax + 000a8 44 8b 8d f8 06 + 00 00 mov r9d, DWORD PTR DisplacementWidth$[rbp] + 000af 41 b8 3c 01 00 + 00 mov r8d, 316 ; 0000013cH + 000b5 48 8b 55 08 mov rdx, QWORD PTR MachineState$[rbp] + 000b9 48 8d 4d 30 lea rcx, QWORD PTR EncoderInstruction$[rbp] + 000bd e8 00 00 00 00 call xed_inst1 -; 218 : } -; 219 : #endif // defined(_M_IX86) || defined(_M_X64) -; 220 : -; 221 : ::operator delete(_Ptr, _Bytes); +; 68 : +; 69 : XedEncoderRequestZeroSetMode(&EncoderRequest, &MachineState); - 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 + 000c2 48 8d 55 08 lea rdx, QWORD PTR MachineState$[rbp] + 000c6 48 8d 8d f0 01 + 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] + 000cd e8 00 00 00 00 call xed_encoder_request_zero_set_mode -; 222 : } +; 70 : if (!XedConvertToEncoderRequest(&EncoderRequest, &EncoderInstruction)) - 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 -_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 { + 000d2 48 8d 55 30 lea rdx, QWORD PTR EncoderInstruction$[rbp] + 000d6 48 8d 8d f0 01 + 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] + 000dd e8 00 00 00 00 call xed_convert_to_encoder_request + 000e2 85 c0 test eax, eax + 000e4 75 07 jne SHORT $LN2@ObfGenJmpT -$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 +; 71 : return NULL; -; 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 : } + 000e6 33 c0 xor eax, eax + 000e8 e9 30 01 00 00 jmp $LN1@ObfGenJmpT +$LN2@ObfGenJmpT: - 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 > -_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 ??$_Allocate@$0BA@U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K@Z -_TEXT SEGMENT -_Bytes$ = 224 -??$_Allocate@$0BA@U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K@Z PROC ; std::_Allocate<16,std::_Default_allocate_traits,0>, COMDAT +; 72 : +; 73 : if (XED_ERROR_NONE != XedEncode(&EncoderRequest, EncodeBuffer, 15, &ReturnedSize)) -; 197 : __declspec(allocator) void* _Allocate(const size_t _Bytes) { + 000ed 4c 8d 8d f4 02 + 00 00 lea r9, QWORD PTR ReturnedSize$[rbp] + 000f4 41 b8 0f 00 00 + 00 mov r8d, 15 + 000fa 48 8d 95 c8 02 + 00 00 lea rdx, QWORD PTR EncodeBuffer$[rbp] + 00101 48 8d 8d f0 01 + 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] + 00108 e8 00 00 00 00 call xed_encode + 0010d 85 c0 test eax, eax + 0010f 74 07 je SHORT $LN3@ObfGenJmpT -$LN5: - 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 +; 74 : return NULL; -; 198 : // allocate _Bytes when !_HAS_ALIGNED_NEW || _Align <= __STDCPP_DEFAULT_NEW_ALIGNMENT__ -; 199 : #if defined(_M_IX86) || defined(_M_X64) -; 200 : if (_Bytes >= _Big_allocation_threshold) { // boost the alignment of big allocations to help autovectorization + 00111 33 c0 xor eax, eax + 00113 e9 05 01 00 00 jmp $LN1@ObfGenJmpT +$LN3@ObfGenJmpT: - 00036 48 81 bd e0 00 - 00 00 00 10 00 - 00 cmp QWORD PTR _Bytes$[rbp], 4096 ; 00001000H - 00041 72 0e jb SHORT $LN2@Allocate +; 75 : +; 76 : PNATIVE_CODE_LINK Link = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, EncodeBuffer, ReturnedSize); -; 201 : return _Allocate_manually_vector_aligned<_Traits>(_Bytes); + 00118 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H + 0011d e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new + 00122 48 89 85 38 06 + 00 00 mov QWORD PTR $T11[rbp], rax + 00129 48 83 bd 38 06 + 00 00 00 cmp QWORD PTR $T11[rbp], 0 + 00131 74 30 je SHORT $LN6@ObfGenJmpT + 00133 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0013b 44 8b 8d f4 02 + 00 00 mov r9d, DWORD PTR ReturnedSize$[rbp] + 00142 4c 8d 85 c8 02 + 00 00 lea r8, QWORD PTR EncodeBuffer$[rbp] + 00149 ba 04 00 00 00 mov edx, 4 + 0014e 48 8b 8d 38 06 + 00 00 mov rcx, QWORD PTR $T11[rbp] + 00155 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 0015a 48 89 85 b8 06 + 00 00 mov QWORD PTR tv133[rbp], rax + 00161 eb 0b jmp SHORT $LN7@ObfGenJmpT +$LN6@ObfGenJmpT: + 00163 48 c7 85 b8 06 + 00 00 00 00 00 + 00 mov QWORD PTR tv133[rbp], 0 +$LN7@ObfGenJmpT: + 0016e 48 8b 85 b8 06 + 00 00 mov rax, QWORD PTR tv133[rbp] + 00175 48 89 85 18 06 + 00 00 mov QWORD PTR $T10[rbp], rax + 0017c 48 8b 85 18 06 + 00 00 mov rax, QWORD PTR $T10[rbp] + 00183 48 89 85 18 03 + 00 00 mov QWORD PTR Link$[rbp], rax - 00043 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR _Bytes$[rbp] - 0004a e8 00 00 00 00 call ??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z ; std::_Allocate_manually_vector_aligned - 0004f eb 1a jmp SHORT $LN1@Allocate -$LN2@Allocate: +; 77 : if (XED_ERROR_NONE != XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize)) -; 202 : } -; 203 : #endif // defined(_M_IX86) || defined(_M_X64) -; 204 : -; 205 : if (_Bytes != 0) { + 0018a 48 8b 85 18 03 + 00 00 mov rax, QWORD PTR Link$[rbp] + 00191 48 83 c0 30 add rax, 48 ; 00000030H + 00195 48 8b 8d 18 03 + 00 00 mov rcx, QWORD PTR Link$[rbp] + 0019c 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 001a0 48 8b 8d 18 03 + 00 00 mov rcx, QWORD PTR Link$[rbp] + 001a7 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 001ab 48 8b c8 mov rcx, rax + 001ae e8 00 00 00 00 call xed_decode + 001b3 85 c0 test eax, eax + 001b5 74 41 je SHORT $LN4@ObfGenJmpT - 00051 48 83 bd e0 00 - 00 00 00 cmp QWORD PTR _Bytes$[rbp], 0 - 00059 74 0e je SHORT $LN3@Allocate +; 78 : { +; 79 : delete Link; -; 206 : return _Traits::_Allocate(_Bytes); + 001b7 48 8b 85 18 03 + 00 00 mov rax, QWORD PTR Link$[rbp] + 001be 48 89 85 58 06 + 00 00 mov QWORD PTR $T12[rbp], rax + 001c5 48 83 bd 58 06 + 00 00 00 cmp QWORD PTR $T12[rbp], 0 + 001cd 74 1a je SHORT $LN8@ObfGenJmpT + 001cf ba 01 00 00 00 mov edx, 1 + 001d4 48 8b 8d 58 06 + 00 00 mov rcx, QWORD PTR $T12[rbp] + 001db e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z + 001e0 48 89 85 b8 06 + 00 00 mov QWORD PTR tv145[rbp], rax + 001e7 eb 0b jmp SHORT $LN9@ObfGenJmpT +$LN8@ObfGenJmpT: + 001e9 48 c7 85 b8 06 + 00 00 00 00 00 + 00 mov QWORD PTR tv145[rbp], 0 +$LN9@ObfGenJmpT: - 0005b 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR _Bytes$[rbp] - 00062 e8 00 00 00 00 call ?_Allocate@_Default_allocate_traits@std@@SAPEAX_K@Z ; std::_Default_allocate_traits::_Allocate - 00067 eb 02 jmp SHORT $LN1@Allocate -$LN3@Allocate: +; 80 : return NULL; -; 207 : } -; 208 : -; 209 : return nullptr; + 001f4 33 c0 xor eax, eax + 001f6 eb 25 jmp SHORT $LN1@ObfGenJmpT +$LN4@ObfGenJmpT: - 00069 33 c0 xor eax, eax -$LN1@Allocate: +; 81 : } +; 82 : Link->Label = LabelId; -; 210 : } + 001f8 48 8b 85 18 03 + 00 00 mov rax, QWORD PTR Link$[rbp] + 001ff 8b 8d f0 06 00 + 00 mov ecx, DWORD PTR LabelId$[rbp] + 00205 89 48 1c mov DWORD PTR [rax+28], ecx - 0006b 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00072 5f pop rdi - 00073 5d pop rbp - 00074 c3 ret 0 -??$_Allocate@$0BA@U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K@Z ENDP ; std::_Allocate<16,std::_Default_allocate_traits,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\utility -; COMDAT ??$min@_K@std@@YAAEB_KAEB_K0@Z -_TEXT SEGMENT -$T1 = 200 -tv65 = 216 -_Left$ = 256 -_Right$ = 264 -??$min@_K@std@@YAAEB_KAEB_K0@Z PROC ; std::min, COMDAT +; 83 : Link->Flags = (CODE_FLAG_IS_INST | CODE_FLAG_IS_REL_JMP); -; 67 : const _Ty& _Left, const _Ty& _Right) noexcept(noexcept(_Right < _Left)) /* strengthened */ { + 00208 48 8b 85 18 03 + 00 00 mov rax, QWORD PTR Link$[rbp] + 0020f c7 40 18 06 00 + 00 00 mov DWORD PTR [rax+24], 6 -$LN5: - 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 +; 84 : +; 85 : return Link; -; 68 : // return smaller of _Left and _Right -; 69 : return _Right < _Left ? _Right : _Left; - - 0003b 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Right$[rbp] - 00042 48 8b 8d 00 01 - 00 00 mov rcx, QWORD PTR _Left$[rbp] - 00049 48 8b 09 mov rcx, QWORD PTR [rcx] - 0004c 48 39 08 cmp QWORD PTR [rax], rcx - 0004f 73 10 jae SHORT $LN3@min - 00051 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Right$[rbp] - 00058 48 89 85 d8 00 - 00 00 mov QWORD PTR tv65[rbp], rax - 0005f eb 0e jmp SHORT $LN4@min -$LN3@min: - 00061 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR _Left$[rbp] - 00068 48 89 85 d8 00 - 00 00 mov QWORD PTR tv65[rbp], rax -$LN4@min: - 0006f 48 8b 85 d8 00 - 00 00 mov rax, QWORD PTR tv65[rbp] - 00076 48 89 85 c8 00 - 00 00 mov QWORD PTR $T1[rbp], rax - 0007d 48 8b 85 c8 00 - 00 00 mov rax, QWORD PTR $T1[rbp] + 00216 48 8b 85 18 03 + 00 00 mov rax, QWORD PTR Link$[rbp] +$LN1@ObfGenJmpT: -; 70 : } +; 86 : } - 00084 48 8d a5 e8 00 - 00 00 lea rsp, QWORD PTR [rbp+232] - 0008b 5f pop rdi - 0008c 5d pop rbp - 0008d c3 ret 0 -??$min@_K@std@@YAAEB_KAEB_K0@Z ENDP ; std::min + 0021d 48 8b f8 mov rdi, rax + 00220 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00224 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z$rtcFrameData + 0022b e8 00 00 00 00 call _RTC_CheckStackVars + 00230 48 8b c7 mov rax, rdi + 00233 48 8b 8d c0 06 + 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] + 0023a 48 33 cd xor rcx, rbp + 0023d e8 00 00 00 00 call __security_check_cookie + 00242 48 8d a5 d0 06 + 00 00 lea rsp, QWORD PTR [rbp+1744] + 00249 5f pop rdi + 0024a 5e pop rsi + 0024b 5d pop rbp + 0024c c3 ret 0 +?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z ENDP ; ObfGenJmpToLabel _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 +; COMDAT text$x +text$x SEGMENT +MachineState$ = 8 +EncoderInstruction$ = 48 +EncoderRequest$ = 496 +EncodeBuffer$ = 712 +ReturnedSize$ = 756 +Link$ = 792 +$T8 = 1400 +$T9 = 1480 +$T10 = 1560 +$T11 = 1592 +$T12 = 1624 +$T13 = 1664 +tv145 = 1720 +tv133 = 1720 +__$ArrayPad$ = 1728 +LabelId$ = 1776 +DisplacementWidth$ = 1784 +?dtor$0@?0??ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA PROC ; `ObfGenJmpToLabel'::`1'::dtor$0 + 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 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 + 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] + 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 00019 48 8b 8d 38 06 + 00 00 mov rcx, QWORD PTR $T11[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 +?dtor$0@?0??ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA ENDP ; `ObfGenJmpToLabel'::`1'::dtor$0 +text$x 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 +; COMDAT text$x +text$x SEGMENT +MachineState$ = 8 +EncoderInstruction$ = 48 +EncoderRequest$ = 496 +EncodeBuffer$ = 712 +ReturnedSize$ = 756 +Link$ = 792 +$T8 = 1400 +$T9 = 1480 +$T10 = 1560 +$T11 = 1592 +$T12 = 1624 +$T13 = 1664 +tv145 = 1720 +tv133 = 1720 +__$ArrayPad$ = 1728 +LabelId$ = 1776 +DisplacementWidth$ = 1784 +?dtor$0@?0??ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA PROC ; `ObfGenJmpToLabel'::`1'::dtor$0 + 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 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 + 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] + 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 00019 48 8b 8d 38 06 + 00 00 mov rcx, QWORD PTR $T11[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 +?dtor$0@?0??ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA ENDP ; `ObfGenJmpToLabel'::`1'::dtor$0 +text$x 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 +; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp +; COMDAT ?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@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\vector -; COMDAT ??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z -_TEXT SEGMENT -_Al$ = 8 -_My_data$ = 40 -_Myfirst$ = 72 -_Mylast$ = 104 -_Whereoff$ = 136 -_Oldsize$ = 168 -_Newsize$ = 200 -_Newcapacity$ = 232 -_Newvec$ = 264 -_Constructed_last$ = 296 -_Constructed_first$ = 328 -tv134 = 536 -tv132 = 544 -this$ = 592 -_Whereptr$ = 600 -<_Val_0>$ = 608 -??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z PROC ; std::vector >::_Emplace_reallocate, COMDAT - -; 725 : pointer _Emplace_reallocate(const pointer _Whereptr, _Valty&&... _Val) { +MachineState$ = 8 +EncoderInstruction$ = 48 +EncoderRequest$ = 496 +EncodeBuffer$ = 712 +ReturnedSize$ = 756 +Link$ = 792 +$T8 = 1400 +$T9 = 1480 +$T10 = 1560 +$T11 = 1592 +$T12 = 1624 +$T13 = 1656 +$T14 = 1696 +tv77 = 1748 +tv149 = 1752 +tv137 = 1752 +__$ArrayPad$ = 1760 +LabelId$ = 1808 +DisplacementWidth$ = 1816 +?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z PROC ; ObfGenRandomJcc, COMDAT -$LN13: - 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 58 02 - 00 00 sub rsp, 600 ; 00000258H - 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0001d 48 8b fc mov rdi, rsp - 00020 b9 96 00 00 00 mov ecx, 150 ; 00000096H - 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 78 - 02 00 00 mov rcx, QWORD PTR [rsp+632] - 00034 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode +; 27 : { -; 726 : // reallocate and insert by perfectly forwarding _Val at _Whereptr -; 727 : _Alty& _Al = _Getal(); +$LN11: + 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx + 00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx + 00008 55 push rbp + 00009 56 push rsi + 0000a 57 push rdi + 0000b 48 81 ec 20 07 + 00 00 sub rsp, 1824 ; 00000720H + 00012 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] + 00017 48 8b fc mov rdi, rsp + 0001a b9 c8 01 00 00 mov ecx, 456 ; 000001c8H + 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00024 f3 ab rep stosd + 00026 8b 8c 24 48 07 + 00 00 mov ecx, DWORD PTR [rsp+1864] + 0002d 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00034 48 33 c5 xor rax, rbp + 00037 48 89 85 e0 06 + 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax + 0003e 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__BCD1AF07_OpaqueBranching@cpp + 00045 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 00040 48 8b 8d 50 02 - 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 48 89 45 08 mov QWORD PTR _Al$[rbp], rax +; 28 : XED_STATE MachineState; +; 29 : MachineState.mmode = XED_MACHINE_MODE_LONG_64; -; 728 : auto& _My_data = _Mypair._Myval2; + 0004a c7 45 08 01 00 + 00 00 mov DWORD PTR MachineState$[rbp], 1 - 00050 48 8b 85 50 02 - 00 00 mov rax, QWORD PTR this$[rbp] - 00057 48 89 45 28 mov QWORD PTR _My_data$[rbp], rax - -; 729 : pointer& _Myfirst = _My_data._Myfirst; - - 0005b 48 8b 45 28 mov rax, QWORD PTR _My_data$[rbp] - 0005f 48 83 c0 08 add rax, 8 - 00063 48 89 45 48 mov QWORD PTR _Myfirst$[rbp], rax - -; 730 : pointer& _Mylast = _My_data._Mylast; - - 00067 48 8b 45 28 mov rax, QWORD PTR _My_data$[rbp] - 0006b 48 83 c0 10 add rax, 16 - 0006f 48 89 45 68 mov QWORD PTR _Mylast$[rbp], rax - -; 731 : -; 732 : _STL_INTERNAL_CHECK(_Mylast == _My_data._Myend); // check that we have no unused capacity -; 733 : -; 734 : const auto _Whereoff = static_cast(_Whereptr - _Myfirst); - - 00073 48 8b 45 48 mov rax, QWORD PTR _Myfirst$[rbp] - 00077 48 8b 00 mov rax, QWORD PTR [rax] - 0007a 48 8b 8d 58 02 - 00 00 mov rcx, QWORD PTR _Whereptr$[rbp] - 00081 48 2b c8 sub rcx, rax - 00084 48 8b c1 mov rax, rcx - 00087 48 c1 f8 02 sar rax, 2 - 0008b 48 89 85 88 00 - 00 00 mov QWORD PTR _Whereoff$[rbp], rax - -; 735 : const auto _Oldsize = static_cast(_Mylast - _Myfirst); - - 00092 48 8b 45 68 mov rax, QWORD PTR _Mylast$[rbp] - 00096 48 8b 4d 48 mov rcx, QWORD PTR _Myfirst$[rbp] - 0009a 48 8b 09 mov rcx, QWORD PTR [rcx] - 0009d 48 8b 00 mov rax, QWORD PTR [rax] - 000a0 48 2b c1 sub rax, rcx - 000a3 48 c1 f8 02 sar rax, 2 - 000a7 48 89 85 a8 00 - 00 00 mov QWORD PTR _Oldsize$[rbp], rax - -; 736 : -; 737 : if (_Oldsize == max_size()) { - - 000ae 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR this$[rbp] - 000b5 e8 00 00 00 00 call ?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ ; std::vector >::max_size - 000ba 48 39 85 a8 00 - 00 00 cmp QWORD PTR _Oldsize$[rbp], rax - 000c1 75 05 jne SHORT $LN2@Emplace_re +; 30 : MachineState.stack_addr_width = XED_ADDRESS_WIDTH_64b; -; 738 : _Xlength(); + 00051 c7 45 0c 08 00 + 00 00 mov DWORD PTR MachineState$[rbp+4], 8 - 000c3 e8 00 00 00 00 call ?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ ; std::vector >::_Xlength -$LN2@Emplace_re: +; 31 : XED_ENCODER_INSTRUCTION EncoderInstruction; +; 32 : XED_ENCODER_REQUEST EncoderRequest; +; 33 : UCHAR EncodeBuffer[15]; +; 34 : UINT ReturnedSize; +; 35 : +; 36 : XedInst1(&EncoderInstruction, MachineState, ObfGetRandomJccClass(), DisplacementWidth, XedRelBr(0, DisplacementWidth)); -; 739 : } -; 740 : -; 741 : const size_type _Newsize = _Oldsize + 1; + 00058 44 8b 85 18 07 + 00 00 mov r8d, DWORD PTR DisplacementWidth$[rbp] + 0005f 33 d2 xor edx, edx + 00061 48 8d 8d c8 05 + 00 00 lea rcx, QWORD PTR $T9[rbp] + 00068 e8 00 00 00 00 call xed_relbr + 0006d 48 8d 8d 78 05 + 00 00 lea rcx, QWORD PTR $T8[rbp] + 00074 48 8b f9 mov rdi, rcx + 00077 48 8b f0 mov rsi, rax + 0007a b9 30 00 00 00 mov ecx, 48 ; 00000030H + 0007f f3 a4 rep movsb + 00081 e8 00 00 00 00 call ?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ ; ObfGetRandomJccClass + 00086 89 85 d4 06 00 + 00 mov DWORD PTR tv77[rbp], eax + 0008c 48 8b 45 08 mov rax, QWORD PTR MachineState$[rbp] + 00090 48 89 85 18 06 + 00 00 mov QWORD PTR $T10[rbp], rax + 00097 48 8d 85 a0 06 + 00 00 lea rax, QWORD PTR $T14[rbp] + 0009e 48 8d 8d 78 05 + 00 00 lea rcx, QWORD PTR $T8[rbp] + 000a5 48 8b f8 mov rdi, rax + 000a8 48 8b f1 mov rsi, rcx + 000ab b9 30 00 00 00 mov ecx, 48 ; 00000030H + 000b0 f3 a4 rep movsb + 000b2 48 8d 85 a0 06 + 00 00 lea rax, QWORD PTR $T14[rbp] + 000b9 48 89 44 24 20 mov QWORD PTR [rsp+32], rax + 000be 44 8b 8d 18 07 + 00 00 mov r9d, DWORD PTR DisplacementWidth$[rbp] + 000c5 44 8b 85 d4 06 + 00 00 mov r8d, DWORD PTR tv77[rbp] + 000cc 48 8b 95 18 06 + 00 00 mov rdx, QWORD PTR $T10[rbp] + 000d3 48 8d 4d 30 lea rcx, QWORD PTR EncoderInstruction$[rbp] + 000d7 e8 00 00 00 00 call xed_inst1 - 000c8 48 8b 85 a8 00 - 00 00 mov rax, QWORD PTR _Oldsize$[rbp] - 000cf 48 ff c0 inc rax - 000d2 48 89 85 c8 00 - 00 00 mov QWORD PTR _Newsize$[rbp], rax +; 37 : +; 38 : XedEncoderRequestZeroSetMode(&EncoderRequest, &MachineState); -; 742 : const size_type _Newcapacity = _Calculate_growth(_Newsize); + 000dc 48 8d 55 08 lea rdx, QWORD PTR MachineState$[rbp] + 000e0 48 8d 8d f0 01 + 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] + 000e7 e8 00 00 00 00 call xed_encoder_request_zero_set_mode - 000d9 48 8b 95 c8 00 - 00 00 mov rdx, QWORD PTR _Newsize$[rbp] - 000e0 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR this$[rbp] - 000e7 e8 00 00 00 00 call ?_Calculate_growth@?$vector@KV?$allocator@K@std@@@std@@AEBA_K_K@Z ; std::vector >::_Calculate_growth - 000ec 48 89 85 e8 00 - 00 00 mov QWORD PTR _Newcapacity$[rbp], rax - -; 743 : -; 744 : const pointer _Newvec = _Al.allocate(_Newcapacity); - - 000f3 48 8b 95 e8 00 - 00 00 mov rdx, QWORD PTR _Newcapacity$[rbp] - 000fa 48 8b 4d 08 mov rcx, QWORD PTR _Al$[rbp] - 000fe e8 00 00 00 00 call ?allocate@?$allocator@K@std@@QEAAPEAK_K@Z ; std::allocator::allocate - 00103 48 89 85 08 01 - 00 00 mov QWORD PTR _Newvec$[rbp], rax - -; 745 : const pointer _Constructed_last = _Newvec + _Whereoff + 1; - - 0010a 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Newvec$[rbp] - 00111 48 8b 8d 88 00 - 00 00 mov rcx, QWORD PTR _Whereoff$[rbp] - 00118 48 8d 44 88 04 lea rax, QWORD PTR [rax+rcx*4+4] - 0011d 48 89 85 28 01 - 00 00 mov QWORD PTR _Constructed_last$[rbp], rax - -; 746 : pointer _Constructed_first = _Constructed_last; - - 00124 48 8b 85 28 01 - 00 00 mov rax, QWORD PTR _Constructed_last$[rbp] - 0012b 48 89 85 48 01 - 00 00 mov QWORD PTR _Constructed_first$[rbp], rax - -; 747 : -; 748 : _TRY_BEGIN -; 749 : _Alty_traits::construct(_Al, _Unfancy(_Newvec + _Whereoff), _STD forward<_Valty>(_Val)...); - - 00132 48 8b 8d 60 02 - 00 00 mov rcx, QWORD PTR <_Val_0>$[rbp] - 00139 e8 00 00 00 00 call ??$forward@AEBK@std@@YAAEBKAEBK@Z ; std::forward - 0013e 48 89 85 18 02 - 00 00 mov QWORD PTR tv134[rbp], rax - 00145 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Newvec$[rbp] - 0014c 48 8b 8d 88 00 - 00 00 mov rcx, QWORD PTR _Whereoff$[rbp] - 00153 48 8d 04 88 lea rax, QWORD PTR [rax+rcx*4] - 00157 48 8b c8 mov rcx, rax - 0015a e8 00 00 00 00 call ??$_Unfancy@K@std@@YAPEAKPEAK@Z ; std::_Unfancy - 0015f 48 89 85 20 02 - 00 00 mov QWORD PTR tv132[rbp], rax - 00166 4c 8b 85 18 02 - 00 00 mov r8, QWORD PTR tv134[rbp] - 0016d 48 8b 95 20 02 - 00 00 mov rdx, QWORD PTR tv132[rbp] - 00174 48 8b 4d 08 mov rcx, QWORD PTR _Al$[rbp] - 00178 e8 00 00 00 00 call ??$construct@KAEBK@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SAXAEAV?$allocator@K@1@QEAKAEBK@Z ; std::_Default_allocator_traits >::construct - -; 750 : _Constructed_first = _Newvec + _Whereoff; - - 0017d 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Newvec$[rbp] - 00184 48 8b 8d 88 00 - 00 00 mov rcx, QWORD PTR _Whereoff$[rbp] - 0018b 48 8d 04 88 lea rax, QWORD PTR [rax+rcx*4] - 0018f 48 89 85 48 01 - 00 00 mov QWORD PTR _Constructed_first$[rbp], rax - -; 751 : -; 752 : if (_Whereptr == _Mylast) { // at back, provide strong guarantee - - 00196 48 8b 45 68 mov rax, QWORD PTR _Mylast$[rbp] - 0019a 48 8b 00 mov rax, QWORD PTR [rax] - 0019d 48 39 85 58 02 - 00 00 cmp QWORD PTR _Whereptr$[rbp], rax - 001a4 75 23 jne SHORT $LN4@Emplace_re - -; 753 : _Umove_if_noexcept(_Myfirst, _Mylast, _Newvec); - - 001a6 4c 8b 8d 08 01 - 00 00 mov r9, QWORD PTR _Newvec$[rbp] - 001ad 48 8b 45 68 mov rax, QWORD PTR _Mylast$[rbp] - 001b1 4c 8b 00 mov r8, QWORD PTR [rax] - 001b4 48 8b 45 48 mov rax, QWORD PTR _Myfirst$[rbp] - 001b8 48 8b 10 mov rdx, QWORD PTR [rax] - 001bb 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR this$[rbp] - 001c2 e8 00 00 00 00 call ?_Umove_if_noexcept@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00@Z ; std::vector >::_Umove_if_noexcept +; 39 : if (!XedConvertToEncoderRequest(&EncoderRequest, &EncoderInstruction)) -; 754 : } else { // provide basic guarantee + 000ec 48 8d 55 30 lea rdx, QWORD PTR EncoderInstruction$[rbp] + 000f0 48 8d 8d f0 01 + 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] + 000f7 e8 00 00 00 00 call xed_convert_to_encoder_request + 000fc 85 c0 test eax, eax + 000fe 75 07 jne SHORT $LN2@ObfGenRand - 001c7 eb 60 jmp SHORT $LN5@Emplace_re -$LN4@Emplace_re: +; 40 : return NULL; -; 755 : _Umove(_Myfirst, _Whereptr, _Newvec); + 00100 33 c0 xor eax, eax + 00102 e9 30 01 00 00 jmp $LN1@ObfGenRand +$LN2@ObfGenRand: - 001c9 4c 8b 8d 08 01 - 00 00 mov r9, QWORD PTR _Newvec$[rbp] - 001d0 4c 8b 85 58 02 - 00 00 mov r8, QWORD PTR _Whereptr$[rbp] - 001d7 48 8b 45 48 mov rax, QWORD PTR _Myfirst$[rbp] - 001db 48 8b 10 mov rdx, QWORD PTR [rax] - 001de 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR this$[rbp] - 001e5 e8 00 00 00 00 call ?_Umove@?$vector@KV?$allocator@K@std@@@std@@AEAAPEAKPEAK00@Z ; std::vector >::_Umove - -; 756 : _Constructed_first = _Newvec; - - 001ea 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Newvec$[rbp] - 001f1 48 89 85 48 01 - 00 00 mov QWORD PTR _Constructed_first$[rbp], rax - -; 757 : _Umove(_Whereptr, _Mylast, _Newvec + _Whereoff + 1); - - 001f8 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Newvec$[rbp] - 001ff 48 8b 8d 88 00 - 00 00 mov rcx, QWORD PTR _Whereoff$[rbp] - 00206 48 8d 44 88 04 lea rax, QWORD PTR [rax+rcx*4+4] - 0020b 4c 8b c8 mov r9, rax - 0020e 48 8b 45 68 mov rax, QWORD PTR _Mylast$[rbp] - 00212 4c 8b 00 mov r8, QWORD PTR [rax] - 00215 48 8b 95 58 02 - 00 00 mov rdx, QWORD PTR _Whereptr$[rbp] - 0021c 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00223 e8 00 00 00 00 call ?_Umove@?$vector@KV?$allocator@K@std@@@std@@AEAAPEAKPEAK00@Z ; std::vector >::_Umove - 00228 90 npad 1 -$LN5@Emplace_re: - 00229 eb 00 jmp SHORT $LN9@Emplace_re -$LN10@Emplace_re: -$LN9@Emplace_re: - -; 758 : } -; 759 : _CATCH_ALL -; 760 : _Destroy(_Constructed_first, _Constructed_last); -; 761 : _Al.deallocate(_Newvec, _Newcapacity); -; 762 : _RERAISE; -; 763 : _CATCH_END -; 764 : -; 765 : _Change_array(_Newvec, _Newsize, _Newcapacity); - - 0022b 4c 8b 8d e8 00 - 00 00 mov r9, QWORD PTR _Newcapacity$[rbp] - 00232 4c 8b 85 c8 00 - 00 00 mov r8, QWORD PTR _Newsize$[rbp] - 00239 48 8b 95 08 01 - 00 00 mov rdx, QWORD PTR _Newvec$[rbp] - 00240 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00247 e8 00 00 00 00 call ?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z ; std::vector >::_Change_array +; 41 : +; 42 : if (XED_ERROR_NONE != XedEncode(&EncoderRequest, EncodeBuffer, 15, &ReturnedSize)) -; 766 : return _Newvec + _Whereoff; + 00107 4c 8d 8d f4 02 + 00 00 lea r9, QWORD PTR ReturnedSize$[rbp] + 0010e 41 b8 0f 00 00 + 00 mov r8d, 15 + 00114 48 8d 95 c8 02 + 00 00 lea rdx, QWORD PTR EncodeBuffer$[rbp] + 0011b 48 8d 8d f0 01 + 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] + 00122 e8 00 00 00 00 call xed_encode + 00127 85 c0 test eax, eax + 00129 74 07 je SHORT $LN3@ObfGenRand - 0024c 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Newvec$[rbp] - 00253 48 8b 8d 88 00 - 00 00 mov rcx, QWORD PTR _Whereoff$[rbp] - 0025a 48 8d 04 88 lea rax, QWORD PTR [rax+rcx*4] +; 43 : return NULL; -; 767 : } + 0012b 33 c0 xor eax, eax + 0012d e9 05 01 00 00 jmp $LN1@ObfGenRand +$LN3@ObfGenRand: - 0025e 48 8d a5 38 02 - 00 00 lea rsp, QWORD PTR [rbp+568] - 00265 5f pop rdi - 00266 5d pop rbp - 00267 c3 ret 0 -$LN11@Emplace_re: -??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z ENDP ; std::vector >::_Emplace_reallocate -_TEXT ENDS -; COMDAT text$x -text$x SEGMENT -_Al$ = 8 -_My_data$ = 40 -_Myfirst$ = 72 -_Mylast$ = 104 -_Whereoff$ = 136 -_Oldsize$ = 168 -_Newsize$ = 200 -_Newcapacity$ = 232 -_Newvec$ = 264 -_Constructed_last$ = 296 -_Constructed_first$ = 328 -tv134 = 536 -tv132 = 544 -this$ = 592 -_Whereptr$ = 600 -<_Val_0>$ = 608 -?catch$0@?0???$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z@4HA PROC ; `std::vector >::_Emplace_reallocate'::`1'::catch$0 - -; 758 : } -; 759 : _CATCH_ALL +; 44 : +; 45 : PNATIVE_CODE_LINK Link = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, EncodeBuffer, ReturnedSize); - 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 55 push rbp - 0000b 57 push rdi - 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] -__catch$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z$0: + 00132 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H + 00137 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new + 0013c 48 89 85 58 06 + 00 00 mov QWORD PTR $T12[rbp], rax + 00143 48 83 bd 58 06 + 00 00 00 cmp QWORD PTR $T12[rbp], 0 + 0014b 74 30 je SHORT $LN6@ObfGenRand + 0014d c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 00155 44 8b 8d f4 02 + 00 00 mov r9d, DWORD PTR ReturnedSize$[rbp] + 0015c 4c 8d 85 c8 02 + 00 00 lea r8, QWORD PTR EncodeBuffer$[rbp] + 00163 ba 04 00 00 00 mov edx, 4 + 00168 48 8b 8d 58 06 + 00 00 mov rcx, QWORD PTR $T12[rbp] + 0016f e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 00174 48 89 85 d8 06 + 00 00 mov QWORD PTR tv137[rbp], rax + 0017b eb 0b jmp SHORT $LN7@ObfGenRand +$LN6@ObfGenRand: + 0017d 48 c7 85 d8 06 + 00 00 00 00 00 + 00 mov QWORD PTR tv137[rbp], 0 +$LN7@ObfGenRand: + 00188 48 8b 85 d8 06 + 00 00 mov rax, QWORD PTR tv137[rbp] + 0018f 48 89 85 38 06 + 00 00 mov QWORD PTR $T11[rbp], rax + 00196 48 8b 85 38 06 + 00 00 mov rax, QWORD PTR $T11[rbp] + 0019d 48 89 85 18 03 + 00 00 mov QWORD PTR Link$[rbp], rax -; 758 : } -; 759 : _CATCH_ALL -; 760 : _Destroy(_Constructed_first, _Constructed_last); +; 46 : if (XED_ERROR_NONE != XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize)) - 00014 4c 8b 85 28 01 - 00 00 mov r8, QWORD PTR _Constructed_last$[rbp] - 0001b 48 8b 95 48 01 - 00 00 mov rdx, QWORD PTR _Constructed_first$[rbp] - 00022 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00029 e8 00 00 00 00 call ?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z ; std::vector >::_Destroy - -; 758 : } -; 759 : _CATCH_ALL -; 760 : _Destroy(_Constructed_first, _Constructed_last); -; 761 : _Al.deallocate(_Newvec, _Newcapacity); - - 0002e 4c 8b 85 e8 00 - 00 00 mov r8, QWORD PTR _Newcapacity$[rbp] - 00035 48 8b 95 08 01 - 00 00 mov rdx, QWORD PTR _Newvec$[rbp] - 0003c 48 8b 4d 08 mov rcx, QWORD PTR _Al$[rbp] - 00040 e8 00 00 00 00 call ?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z ; std::allocator::deallocate - -; 758 : } -; 759 : _CATCH_ALL -; 760 : _Destroy(_Constructed_first, _Constructed_last); -; 761 : _Al.deallocate(_Newvec, _Newcapacity); -; 762 : _RERAISE; - - 00045 33 d2 xor edx, edx - 00047 33 c9 xor ecx, ecx - 00049 e8 00 00 00 00 call _CxxThrowException - 0004e 90 npad 1 - -; 758 : } -; 759 : _CATCH_ALL -; 760 : _Destroy(_Constructed_first, _Constructed_last); -; 761 : _Al.deallocate(_Newvec, _Newcapacity); -; 762 : _RERAISE; -; 763 : _CATCH_END - - 0004f 48 8d 05 00 00 - 00 00 lea rax, $LN10@catch$0 - 00056 48 83 c4 28 add rsp, 40 ; 00000028H - 0005a 5f pop rdi - 0005b 5d pop rbp - 0005c c3 ret 0 - 0005d cc int 3 -?catch$0@?0???$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z@4HA ENDP ; `std::vector >::_Emplace_reallocate'::`1'::catch$0 -text$x ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT text$x -text$x SEGMENT -_Al$ = 8 -_My_data$ = 40 -_Myfirst$ = 72 -_Mylast$ = 104 -_Whereoff$ = 136 -_Oldsize$ = 168 -_Newsize$ = 200 -_Newcapacity$ = 232 -_Newvec$ = 264 -_Constructed_last$ = 296 -_Constructed_first$ = 328 -tv134 = 536 -tv132 = 544 -this$ = 592 -_Whereptr$ = 600 -<_Val_0>$ = 608 -?catch$0@?0???$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z@4HA PROC ; `std::vector >::_Emplace_reallocate'::`1'::catch$0 - -; 759 : _CATCH_ALL + 001a4 48 8b 85 18 03 + 00 00 mov rax, QWORD PTR Link$[rbp] + 001ab 48 83 c0 30 add rax, 48 ; 00000030H + 001af 48 8b 8d 18 03 + 00 00 mov rcx, QWORD PTR Link$[rbp] + 001b6 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 001ba 48 8b 8d 18 03 + 00 00 mov rcx, QWORD PTR Link$[rbp] + 001c1 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 001c5 48 8b c8 mov rcx, rax + 001c8 e8 00 00 00 00 call xed_decode + 001cd 85 c0 test eax, eax + 001cf 74 41 je SHORT $LN4@ObfGenRand - 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 55 push rbp - 0000b 57 push rdi - 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] -__catch$??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z$0: +; 47 : { +; 48 : delete Link; -; 760 : _Destroy(_Constructed_first, _Constructed_last); + 001d1 48 8b 85 18 03 + 00 00 mov rax, QWORD PTR Link$[rbp] + 001d8 48 89 85 78 06 + 00 00 mov QWORD PTR $T13[rbp], rax + 001df 48 83 bd 78 06 + 00 00 00 cmp QWORD PTR $T13[rbp], 0 + 001e7 74 1a je SHORT $LN8@ObfGenRand + 001e9 ba 01 00 00 00 mov edx, 1 + 001ee 48 8b 8d 78 06 + 00 00 mov rcx, QWORD PTR $T13[rbp] + 001f5 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z + 001fa 48 89 85 d8 06 + 00 00 mov QWORD PTR tv149[rbp], rax + 00201 eb 0b jmp SHORT $LN9@ObfGenRand +$LN8@ObfGenRand: + 00203 48 c7 85 d8 06 + 00 00 00 00 00 + 00 mov QWORD PTR tv149[rbp], 0 +$LN9@ObfGenRand: - 00014 4c 8b 85 28 01 - 00 00 mov r8, QWORD PTR _Constructed_last$[rbp] - 0001b 48 8b 95 48 01 - 00 00 mov rdx, QWORD PTR _Constructed_first$[rbp] - 00022 48 8b 8d 50 02 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00029 e8 00 00 00 00 call ?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z ; std::vector >::_Destroy - -; 761 : _Al.deallocate(_Newvec, _Newcapacity); - - 0002e 4c 8b 85 e8 00 - 00 00 mov r8, QWORD PTR _Newcapacity$[rbp] - 00035 48 8b 95 08 01 - 00 00 mov rdx, QWORD PTR _Newvec$[rbp] - 0003c 48 8b 4d 08 mov rcx, QWORD PTR _Al$[rbp] - 00040 e8 00 00 00 00 call ?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z ; std::allocator::deallocate - -; 762 : _RERAISE; - - 00045 33 d2 xor edx, edx - 00047 33 c9 xor ecx, ecx - 00049 e8 00 00 00 00 call _CxxThrowException - 0004e 90 npad 1 - -; 763 : _CATCH_END - - 0004f 48 8d 05 00 00 - 00 00 lea rax, $LN10@catch$0 - 00056 48 83 c4 28 add rsp, 40 ; 00000028H - 0005a 5f pop rdi - 0005b 5d pop rbp - 0005c c3 ret 0 - 0005d cc int 3 -?catch$0@?0???$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z@4HA ENDP ; `std::vector >::_Emplace_reallocate'::`1'::catch$0 -text$x 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 ??$construct@KAEBK@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SAXAEAV?$allocator@K@1@QEAKAEBK@Z -_TEXT SEGMENT -$T1 = 200 -__formal$ = 256 -_Ptr$ = 264 -<_Args_0>$ = 272 -??$construct@KAEBK@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SAXAEAV?$allocator@K@1@QEAKAEBK@Z PROC ; std::_Default_allocator_traits >::construct, COMDAT +; 49 : return NULL; -; 693 : static void construct(_Alloc&, _Objty* const _Ptr, _Types&&... _Args) { + 0020e 33 c0 xor eax, eax + 00210 eb 25 jmp SHORT $LN1@ObfGenRand +$LN4@ObfGenRand: -$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 08 01 - 00 00 sub rsp, 264 ; 00000108H - 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0001d 48 8b fc mov rdi, rsp - 00020 b9 42 00 00 00 mov ecx, 66 ; 00000042H - 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 28 - 01 00 00 mov rcx, QWORD PTR [rsp+296] - 00034 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 00040 48 8b 95 08 01 - 00 00 mov rdx, QWORD PTR _Ptr$[rbp] - 00047 b9 04 00 00 00 mov ecx, 4 - 0004c e8 00 00 00 00 call ??2@YAPEAX_KPEAX@Z ; operator new - 00051 48 89 85 c8 00 - 00 00 mov QWORD PTR $T1[rbp], rax - 00058 48 8b 8d 10 01 - 00 00 mov rcx, QWORD PTR <_Args_0>$[rbp] - 0005f e8 00 00 00 00 call ??$forward@AEBK@std@@YAAEBKAEBK@Z ; std::forward - 00064 48 8b 8d c8 00 - 00 00 mov rcx, QWORD PTR $T1[rbp] - 0006b 8b 00 mov eax, DWORD PTR [rax] - 0006d 89 01 mov DWORD PTR [rcx], eax - -; 694 : ::new (const_cast(static_cast(_Ptr))) _Objty(_STD forward<_Types>(_Args)...); -; 695 : } - - 0006f 48 8d a5 e8 00 - 00 00 lea rsp, QWORD PTR [rbp+232] - 00076 5f pop rdi - 00077 5d pop rbp - 00078 c3 ret 0 -??$construct@KAEBK@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SAXAEAV?$allocator@K@1@QEAKAEBK@Z ENDP ; std::_Default_allocator_traits >::construct -_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\xstddef -; COMDAT ??$_Unfancy@K@std@@YAPEAKPEAK@Z -_TEXT SEGMENT -_Ptr$ = 224 -??$_Unfancy@K@std@@YAPEAKPEAK@Z PROC ; std::_Unfancy, COMDAT +; 50 : } +; 51 : Link->Label = LabelId; -; 288 : _NODISCARD constexpr _Ty* _Unfancy(_Ty* _Ptr) noexcept { // do nothing for plain pointers + 00212 48 8b 85 18 03 + 00 00 mov rax, QWORD PTR Link$[rbp] + 00219 8b 8d 10 07 00 + 00 mov ecx, DWORD PTR LabelId$[rbp] + 0021f 89 48 1c mov DWORD PTR [rax+28], ecx -$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:__38038D2D_xstddef - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +; 52 : Link->Flags = (CODE_FLAG_IS_INST | CODE_FLAG_IS_REL_JMP); -; 289 : return _Ptr; + 00222 48 8b 85 18 03 + 00 00 mov rax, QWORD PTR Link$[rbp] + 00229 c7 40 18 06 00 + 00 00 mov DWORD PTR [rax+24], 6 - 00036 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR _Ptr$[rbp] +; 53 : +; 54 : return Link; -; 290 : } + 00230 48 8b 85 18 03 + 00 00 mov rax, QWORD PTR Link$[rbp] +$LN1@ObfGenRand: - 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 -??$_Unfancy@K@std@@YAPEAKPEAK@Z ENDP ; std::_Unfancy +; 55 : } + + 00237 48 8b f8 mov rdi, rax + 0023a 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 0023e 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z$rtcFrameData + 00245 e8 00 00 00 00 call _RTC_CheckStackVars + 0024a 48 8b c7 mov rax, rdi + 0024d 48 8b 8d e0 06 + 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] + 00254 48 33 cd xor rcx, rbp + 00257 e8 00 00 00 00 call __security_check_cookie + 0025c 48 8d a5 f0 06 + 00 00 lea rsp, QWORD PTR [rbp+1776] + 00263 5f pop rdi + 00264 5e pop rsi + 00265 5d pop rbp + 00266 c3 ret 0 +?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z ENDP ; ObfGenRandomJcc _TEXT ENDS +; COMDAT text$x +text$x SEGMENT +MachineState$ = 8 +EncoderInstruction$ = 48 +EncoderRequest$ = 496 +EncodeBuffer$ = 712 +ReturnedSize$ = 756 +Link$ = 792 +$T8 = 1400 +$T9 = 1480 +$T10 = 1560 +$T11 = 1592 +$T12 = 1624 +$T13 = 1656 +$T14 = 1696 +tv77 = 1748 +tv149 = 1752 +tv137 = 1752 +__$ArrayPad$ = 1760 +LabelId$ = 1808 +DisplacementWidth$ = 1816 +?dtor$0@?0??ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA PROC ; `ObfGenRandomJcc'::`1'::dtor$0 + 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 55 push rbp + 0000b 57 push rdi + 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] + 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 00019 48 8b 8d 58 06 + 00 00 mov rcx, QWORD PTR $T12[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 +?dtor$0@?0??ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA ENDP ; `ObfGenRandomJcc'::`1'::dtor$0 +text$x 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 ??$_Emplace_back_with_unused_capacity@AEBK@?$vector@KV?$allocator@K@std@@@std@@AEAA@AEBK@Z -_TEXT SEGMENT -_My_data$ = 8 -_Mylast$ = 40 -_Result$ = 72 -tv81 = 280 -tv79 = 288 -tv77 = 296 -this$ = 336 -<_Val_0>$ = 344 -??$_Emplace_back_with_unused_capacity@AEBK@?$vector@KV?$allocator@K@std@@@std@@AEAA@AEBK@Z PROC ; std::vector >::_Emplace_back_with_unused_capacity, COMDAT - -; 682 : decltype(auto) _Emplace_back_with_unused_capacity(_Valty&&... _Val) { - -$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 +; COMDAT text$x +text$x SEGMENT +MachineState$ = 8 +EncoderInstruction$ = 48 +EncoderRequest$ = 496 +EncodeBuffer$ = 712 +ReturnedSize$ = 756 +Link$ = 792 +$T8 = 1400 +$T9 = 1480 +$T10 = 1560 +$T11 = 1592 +$T12 = 1624 +$T13 = 1656 +$T14 = 1696 +tv77 = 1748 +tv149 = 1752 +tv137 = 1752 +__$ArrayPad$ = 1760 +LabelId$ = 1808 +DisplacementWidth$ = 1816 +?dtor$0@?0??ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA PROC ; `ObfGenRandomJcc'::`1'::dtor$0 + 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 55 push rbp 0000b 57 push rdi - 0000c 48 81 ec 58 01 - 00 00 sub rsp, 344 ; 00000158H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 56 00 00 00 mov ecx, 86 ; 00000056H - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 78 - 01 00 00 mov rcx, QWORD PTR [rsp+376] - 0002f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] + 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 00019 48 8b 8d 58 06 + 00 00 mov rcx, QWORD PTR $T12[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 +?dtor$0@?0??ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA ENDP ; `ObfGenRandomJcc'::`1'::dtor$0 +text$x ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp +; COMDAT ?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ +_TEXT SEGMENT +tv66 = 192 +?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ PROC ; ObfGetRandomJccClass, COMDAT -; 683 : // insert by perfectly forwarding into element at end, provide strong guarantee -; 684 : auto& _My_data = _Mypair._Myval2; +; 4 : { - 0003b 48 8b 85 50 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00042 48 89 45 08 mov QWORD PTR _My_data$[rbp], rax - -; 685 : pointer& _Mylast = _My_data._Mylast; - - 00046 48 8b 45 08 mov rax, QWORD PTR _My_data$[rbp] - 0004a 48 83 c0 10 add rax, 16 - 0004e 48 89 45 28 mov QWORD PTR _Mylast$[rbp], rax - -; 686 : _STL_INTERNAL_CHECK(_Mylast != _My_data._Myend); // check that we have unused capacity -; 687 : _Alty_traits::construct(_Getal(), _Unfancy(_Mylast), _STD forward<_Valty>(_Val)...); - - 00052 48 8b 8d 58 01 - 00 00 mov rcx, QWORD PTR <_Val_0>$[rbp] - 00059 e8 00 00 00 00 call ??$forward@AEBK@std@@YAAEBKAEBK@Z ; std::forward - 0005e 48 89 85 18 01 - 00 00 mov QWORD PTR tv81[rbp], rax - 00065 48 8b 45 28 mov rax, QWORD PTR _Mylast$[rbp] - 00069 48 8b 08 mov rcx, QWORD PTR [rax] - 0006c e8 00 00 00 00 call ??$_Unfancy@K@std@@YAPEAKPEAK@Z ; std::_Unfancy - 00071 48 89 85 20 01 - 00 00 mov QWORD PTR tv79[rbp], rax - 00078 48 8b 8d 50 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0007f e8 00 00 00 00 call ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ; std::vector >::_Getal - 00084 48 89 85 28 01 - 00 00 mov QWORD PTR tv77[rbp], rax - 0008b 4c 8b 85 18 01 - 00 00 mov r8, QWORD PTR tv81[rbp] - 00092 48 8b 95 20 01 - 00 00 mov rdx, QWORD PTR tv79[rbp] - 00099 48 8b 8d 28 01 - 00 00 mov rcx, QWORD PTR tv77[rbp] - 000a0 e8 00 00 00 00 call ??$construct@KAEBK@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SAXAEAV?$allocator@K@1@QEAKAEBK@Z ; std::_Default_allocator_traits >::construct - -; 688 : _Orphan_range(_Mylast, _Mylast); - - 000a5 48 8b 45 28 mov rax, QWORD PTR _Mylast$[rbp] - 000a9 4c 8b 00 mov r8, QWORD PTR [rax] - 000ac 48 8b 45 28 mov rax, QWORD PTR _Mylast$[rbp] - 000b0 48 8b 10 mov rdx, QWORD PTR [rax] - 000b3 48 8b 8d 50 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 000ba e8 00 00 00 00 call ?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z ; std::vector >::_Orphan_range +$LN21: + 00000 40 55 push rbp + 00002 57 push rdi + 00003 48 81 ec f8 00 + 00 00 sub rsp, 248 ; 000000f8H + 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0000f 48 8b fc mov rdi, rsp + 00012 b9 3e 00 00 00 mov ecx, 62 ; 0000003eH + 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:__BCD1AF07_OpaqueBranching@cpp + 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 689 : _Ty& _Result = *_Mylast; +; 5 : switch (rand() % 15) - 000bf 48 8b 45 28 mov rax, QWORD PTR _Mylast$[rbp] - 000c3 48 8b 00 mov rax, QWORD PTR [rax] - 000c6 48 89 45 48 mov QWORD PTR _Result$[rbp], rax + 0002a ff 15 00 00 00 + 00 call QWORD PTR __imp_rand + 00030 99 cdq + 00031 b9 0f 00 00 00 mov ecx, 15 + 00036 f7 f9 idiv ecx + 00038 8b c2 mov eax, edx + 0003a 89 85 c0 00 00 + 00 mov DWORD PTR tv66[rbp], eax + 00040 83 bd c0 00 00 + 00 0e cmp DWORD PTR tv66[rbp], 14 + 00047 0f 87 83 00 00 + 00 ja $LN2@ObfGetRand + 0004d 48 63 85 c0 00 + 00 00 movsxd rax, DWORD PTR tv66[rbp] + 00054 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__ImageBase + 0005b 8b 84 81 00 00 + 00 00 mov eax, DWORD PTR $LN20@ObfGetRand[rcx+rax*4] + 00062 48 03 c1 add rax, rcx + 00065 ff e0 jmp rax +$LN4@ObfGetRand: -; 690 : ++_Mylast; +; 6 : { +; 7 : case 0: return XED_ICLASS_JL; - 000ca 48 8b 45 28 mov rax, QWORD PTR _Mylast$[rbp] - 000ce 48 8b 00 mov rax, QWORD PTR [rax] - 000d1 48 83 c0 04 add rax, 4 - 000d5 48 8b 4d 28 mov rcx, QWORD PTR _Mylast$[rbp] - 000d9 48 89 01 mov QWORD PTR [rcx], rax + 00067 b8 3a 01 00 00 mov eax, 314 ; 0000013aH + 0006c eb 67 jmp SHORT $LN1@ObfGetRand +$LN5@ObfGetRand: -; 691 : #if _HAS_CXX17 -; 692 : return _Result; +; 8 : case 1: return XED_ICLASS_JLE; - 000dc 48 8b 45 48 mov rax, QWORD PTR _Result$[rbp] + 0006e b8 3b 01 00 00 mov eax, 315 ; 0000013bH + 00073 eb 60 jmp SHORT $LN1@ObfGetRand +$LN6@ObfGetRand: -; 693 : #else // ^^^ _HAS_CXX17 ^^^ // vvv !_HAS_CXX17 vvv -; 694 : (void) _Result; -; 695 : #endif // _HAS_CXX17 -; 696 : } +; 9 : case 2: return XED_ICLASS_JNB; - 000e0 48 8d a5 38 01 - 00 00 lea rsp, QWORD PTR [rbp+312] - 000e7 5f pop rdi - 000e8 5d pop rbp - 000e9 c3 ret 0 -??$_Emplace_back_with_unused_capacity@AEBK@?$vector@KV?$allocator@K@std@@@std@@AEAA@AEBK@Z ENDP ; std::vector >::_Emplace_back_with_unused_capacity -_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\type_traits -; COMDAT ??$forward@AEBK@std@@YAAEBKAEBK@Z -_TEXT SEGMENT -_Arg$ = 224 -??$forward@AEBK@std@@YAAEBKAEBK@Z PROC ; std::forward, COMDAT + 00075 b8 3e 01 00 00 mov eax, 318 ; 0000013eH + 0007a eb 59 jmp SHORT $LN1@ObfGetRand +$LN7@ObfGetRand: -; 1454 : remove_reference_t<_Ty>& _Arg) noexcept { // forward an lvalue as either an lvalue or an rvalue +; 10 : case 3: return XED_ICLASS_JNBE; -$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:__85A9AA98_type_traits - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0007c b8 3f 01 00 00 mov eax, 319 ; 0000013fH + 00081 eb 52 jmp SHORT $LN1@ObfGetRand +$LN8@ObfGetRand: -; 1455 : return static_cast<_Ty&&>(_Arg); +; 11 : case 4: return XED_ICLASS_JNL; - 00036 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR _Arg$[rbp] + 00083 b8 40 01 00 00 mov eax, 320 ; 00000140H + 00088 eb 4b jmp SHORT $LN1@ObfGetRand +$LN9@ObfGetRand: -; 1456 : } +; 12 : case 5: return XED_ICLASS_JNLE; - 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 -??$forward@AEBK@std@@YAAEBKAEBK@Z ENDP ; std::forward -_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 ??$emplace_back@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAA@AEBK@Z -_TEXT SEGMENT -_My_data$ = 8 -_Mylast$ = 40 -_Result$ = 72 -tv83 = 280 -tv81 = 288 -this$ = 336 -<_Val_0>$ = 344 -??$emplace_back@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAA@AEBK@Z PROC ; std::vector >::emplace_back, COMDAT + 0008a b8 41 01 00 00 mov eax, 321 ; 00000141H + 0008f eb 44 jmp SHORT $LN1@ObfGetRand +$LN10@ObfGetRand: -; 700 : decltype(auto) emplace_back(_Valty&&... _Val) { +; 13 : case 6: return XED_ICLASS_JNO; -$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 58 01 - 00 00 sub rsp, 344 ; 00000158H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 56 00 00 00 mov ecx, 86 ; 00000056H - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 78 - 01 00 00 mov rcx, QWORD PTR [rsp+376] - 0002f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00091 b8 42 01 00 00 mov eax, 322 ; 00000142H + 00096 eb 3d jmp SHORT $LN1@ObfGetRand +$LN11@ObfGetRand: -; 701 : // insert by perfectly forwarding into element at end, provide strong guarantee -; 702 : auto& _My_data = _Mypair._Myval2; +; 14 : case 7: return XED_ICLASS_JNP; - 0003b 48 8b 85 50 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00042 48 89 45 08 mov QWORD PTR _My_data$[rbp], rax + 00098 b8 43 01 00 00 mov eax, 323 ; 00000143H + 0009d eb 36 jmp SHORT $LN1@ObfGetRand +$LN12@ObfGetRand: -; 703 : pointer& _Mylast = _My_data._Mylast; +; 15 : case 8: return XED_ICLASS_JNS; - 00046 48 8b 45 08 mov rax, QWORD PTR _My_data$[rbp] - 0004a 48 83 c0 10 add rax, 16 - 0004e 48 89 45 28 mov QWORD PTR _Mylast$[rbp], rax + 0009f b8 44 01 00 00 mov eax, 324 ; 00000144H + 000a4 eb 2f jmp SHORT $LN1@ObfGetRand +$LN13@ObfGetRand: -; 704 : if (_Mylast != _My_data._Myend) { +; 16 : case 9: return XED_ICLASS_JNZ; - 00052 48 8b 45 28 mov rax, QWORD PTR _Mylast$[rbp] - 00056 48 8b 4d 08 mov rcx, QWORD PTR _My_data$[rbp] - 0005a 48 8b 49 18 mov rcx, QWORD PTR [rcx+24] - 0005e 48 39 08 cmp QWORD PTR [rax], rcx - 00061 74 1d je SHORT $LN2@emplace_ba + 000a6 b8 45 01 00 00 mov eax, 325 ; 00000145H + 000ab eb 28 jmp SHORT $LN1@ObfGetRand +$LN14@ObfGetRand: -; 705 : return _Emplace_back_with_unused_capacity(_STD forward<_Valty>(_Val)...); +; 17 : case 10: return XED_ICLASS_JO; - 00063 48 8b 8d 58 01 - 00 00 mov rcx, QWORD PTR <_Val_0>$[rbp] - 0006a e8 00 00 00 00 call ??$forward@AEBK@std@@YAAEBKAEBK@Z ; std::forward - 0006f 48 8b d0 mov rdx, rax - 00072 48 8b 8d 50 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00079 e8 00 00 00 00 call ??$_Emplace_back_with_unused_capacity@AEBK@?$vector@KV?$allocator@K@std@@@std@@AEAA@AEBK@Z ; std::vector >::_Emplace_back_with_unused_capacity - 0007e eb 43 jmp SHORT $LN1@emplace_ba -$LN2@emplace_ba: - -; 706 : } -; 707 : -; 708 : _Ty& _Result = *_Emplace_reallocate(_Mylast, _STD forward<_Valty>(_Val)...); - - 00080 48 8b 8d 58 01 - 00 00 mov rcx, QWORD PTR <_Val_0>$[rbp] - 00087 e8 00 00 00 00 call ??$forward@AEBK@std@@YAAEBKAEBK@Z ; std::forward - 0008c 48 89 85 18 01 - 00 00 mov QWORD PTR tv83[rbp], rax - 00093 48 8b 45 28 mov rax, QWORD PTR _Mylast$[rbp] - 00097 48 8b 00 mov rax, QWORD PTR [rax] - 0009a 48 89 85 20 01 - 00 00 mov QWORD PTR tv81[rbp], rax - 000a1 4c 8b 85 18 01 - 00 00 mov r8, QWORD PTR tv83[rbp] - 000a8 48 8b 95 20 01 - 00 00 mov rdx, QWORD PTR tv81[rbp] - 000af 48 8b 8d 50 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 000b6 e8 00 00 00 00 call ??$_Emplace_reallocate@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAAPEAKQEAKAEBK@Z ; std::vector >::_Emplace_reallocate - 000bb 48 89 45 48 mov QWORD PTR _Result$[rbp], rax - -; 709 : #if _HAS_CXX17 -; 710 : return _Result; - - 000bf 48 8b 45 48 mov rax, QWORD PTR _Result$[rbp] -$LN1@emplace_ba: - -; 711 : #else // ^^^ _HAS_CXX17 ^^^ // vvv !_HAS_CXX17 vvv -; 712 : (void) _Result; -; 713 : #endif // _HAS_CXX17 -; 714 : } - - 000c3 48 8d a5 38 01 - 00 00 lea rsp, QWORD PTR [rbp+312] - 000ca 5f pop rdi - 000cb 5d pop rbp - 000cc c3 ret 0 -??$emplace_back@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAA@AEBK@Z ENDP ; std::vector >::emplace_back -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp -; COMDAT ?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z -_TEXT SEGMENT -NotTaken$ = 8 -Taken$ = 40 -JccLabel$ = 68 -JmpLabel$ = 100 -Jcc$ = 136 -Jmp$ = 168 -$T5 = 584 -$T6 = 616 -$T7 = 648 -$T8 = 680 -$T9 = 712 -$T10 = 744 -$T11 = 776 -$T12 = 808 -$T13 = 840 -$T14 = 872 -$T15 = 904 -tv216 = 920 -tv204 = 920 -tv189 = 920 -tv171 = 920 -tv165 = 920 -tv159 = 920 -tv150 = 920 -tv144 = 920 -tv134 = 920 -tv128 = 920 -tv84 = 920 -__$ArrayPad$ = 928 -Start$ = 976 -End$ = 984 -?ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z PROC ; ObfGenOpaqueBranch, COMDAT + 000ad b8 46 01 00 00 mov eax, 326 ; 00000146H + 000b2 eb 21 jmp SHORT $LN1@ObfGetRand +$LN15@ObfGetRand: -; 89 : { +; 18 : case 11: return XED_ICLASS_JP; -$LN29: - 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 d8 03 - 00 00 sub rsp, 984 ; 000003d8H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 f6 00 00 00 mov ecx, 246 ; 000000f6H - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 f8 - 03 00 00 mov rcx, QWORD PTR [rsp+1016] - 0002f 48 8b 05 00 00 - 00 00 mov rax, QWORD PTR __security_cookie - 00036 48 33 c5 xor rax, rbp - 00039 48 89 85 a0 03 - 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 00040 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BCD1AF07_OpaqueBranching@cpp - 00047 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 000b4 b8 47 01 00 00 mov eax, 327 ; 00000147H + 000b9 eb 1a jmp SHORT $LN1@ObfGetRand +$LN16@ObfGetRand: -; 90 : if (!Start || !End || !Start->Block || Start->Block != End->Block) +; 19 : case 12: return XED_ICLASS_JRCXZ; - 0004c 48 83 bd d0 03 - 00 00 00 cmp QWORD PTR Start$[rbp], 0 - 00054 74 30 je SHORT $LN3@ObfGenOpaq - 00056 48 83 bd d8 03 - 00 00 00 cmp QWORD PTR End$[rbp], 0 - 0005e 74 26 je SHORT $LN3@ObfGenOpaq - 00060 48 8b 85 d0 03 - 00 00 mov rax, QWORD PTR Start$[rbp] - 00067 48 83 78 10 00 cmp QWORD PTR [rax+16], 0 - 0006c 74 18 je SHORT $LN3@ObfGenOpaq - 0006e 48 8b 85 d0 03 - 00 00 mov rax, QWORD PTR Start$[rbp] - 00075 48 8b 8d d8 03 - 00 00 mov rcx, QWORD PTR End$[rbp] - 0007c 48 8b 49 10 mov rcx, QWORD PTR [rcx+16] - 00080 48 39 48 10 cmp QWORD PTR [rax+16], rcx - 00084 74 07 je SHORT $LN2@ObfGenOpaq -$LN3@ObfGenOpaq: + 000bb b8 48 01 00 00 mov eax, 328 ; 00000148H + 000c0 eb 13 jmp SHORT $LN1@ObfGetRand +$LN17@ObfGetRand: -; 91 : return NULL; +; 20 : case 13: return XED_ICLASS_JS; - 00086 33 c0 xor eax, eax - 00088 e9 dc 03 00 00 jmp $LN1@ObfGenOpaq -$LN2@ObfGenOpaq: + 000c2 b8 49 01 00 00 mov eax, 329 ; 00000149H + 000c7 eb 0c jmp SHORT $LN1@ObfGetRand +$LN18@ObfGetRand: -; 92 : -; 93 : PNATIVE_CODE_BLOCK NotTaken = NcDeepCopyPartialBlock(Start, End); - - 0008d 48 8b 95 d8 03 - 00 00 mov rdx, QWORD PTR End$[rbp] - 00094 48 8b 8d d0 03 - 00 00 mov rcx, QWORD PTR Start$[rbp] - 0009b e8 00 00 00 00 call ?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z ; NcDeepCopyPartialBlock - 000a0 48 89 45 08 mov QWORD PTR NotTaken$[rbp], rax - -; 94 : if (!NotTaken) - - 000a4 48 83 7d 08 00 cmp QWORD PTR NotTaken$[rbp], 0 - 000a9 75 07 jne SHORT $LN4@ObfGenOpaq - -; 95 : { -; 96 : return NULL; - - 000ab 33 c0 xor eax, eax - 000ad e9 b7 03 00 00 jmp $LN1@ObfGenOpaq -$LN4@ObfGenOpaq: +; 21 : case 14: return XED_ICLASS_JZ; -; 97 : } -; 98 : PNATIVE_CODE_BLOCK Taken = NcDeepCopyPartialBlock(Start, End); + 000c9 b8 4a 01 00 00 mov eax, 330 ; 0000014aH + 000ce eb 05 jmp SHORT $LN1@ObfGetRand +$LN2@ObfGetRand: - 000b2 48 8b 95 d8 03 - 00 00 mov rdx, QWORD PTR End$[rbp] - 000b9 48 8b 8d d0 03 - 00 00 mov rcx, QWORD PTR Start$[rbp] - 000c0 e8 00 00 00 00 call ?NcDeepCopyPartialBlock@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z ; NcDeepCopyPartialBlock - 000c5 48 89 45 28 mov QWORD PTR Taken$[rbp], rax +; 22 : } +; 23 : return XED_ICLASS_JLE; -; 99 : if (!Taken) + 000d0 b8 3b 01 00 00 mov eax, 315 ; 0000013bH +$LN1@ObfGetRand: - 000c9 48 83 7d 28 00 cmp QWORD PTR Taken$[rbp], 0 - 000ce 75 4a jne SHORT $LN5@ObfGenOpaq +; 24 : } -; 100 : { -; 101 : NcDeleteBlock(NotTaken); + 000d5 48 8d a5 d8 00 + 00 00 lea rsp, QWORD PTR [rbp+216] + 000dc 5f pop rdi + 000dd 5d pop rbp + 000de c3 ret 0 + 000df 90 npad 1 +$LN20@ObfGetRand: + 000e0 00 00 00 00 DD $LN4@ObfGetRand + 000e4 00 00 00 00 DD $LN5@ObfGetRand + 000e8 00 00 00 00 DD $LN6@ObfGetRand + 000ec 00 00 00 00 DD $LN7@ObfGetRand + 000f0 00 00 00 00 DD $LN8@ObfGetRand + 000f4 00 00 00 00 DD $LN9@ObfGetRand + 000f8 00 00 00 00 DD $LN10@ObfGetRand + 000fc 00 00 00 00 DD $LN11@ObfGetRand + 00100 00 00 00 00 DD $LN12@ObfGetRand + 00104 00 00 00 00 DD $LN13@ObfGetRand + 00108 00 00 00 00 DD $LN14@ObfGetRand + 0010c 00 00 00 00 DD $LN15@ObfGetRand + 00110 00 00 00 00 DD $LN16@ObfGetRand + 00114 00 00 00 00 DD $LN17@ObfGetRand + 00118 00 00 00 00 DD $LN18@ObfGetRand +?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ ENDP ; ObfGetRandomJccClass +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; COMDAT ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z +_TEXT SEGMENT +this$ = 224 +__flags$ = 232 +??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z PROC ; _NATIVE_CODE_LINK::`scalar deleting destructor', COMDAT +$LN4: + 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx + 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 00009 55 push rbp + 0000a 57 push rdi + 0000b 48 81 ec e8 00 + 00 00 sub rsp, 232 ; 000000e8H + 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00017 48 8b fc mov rdi, rsp + 0001a b9 3a 00 00 00 mov ecx, 58 ; 0000003aH + 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00024 f3 ab rep stosd + 00026 48 8b 8c 24 08 + 01 00 00 mov rcx, QWORD PTR [rsp+264] + 0002e 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR this$[rbp] + 00035 e8 00 00 00 00 call ??1_NATIVE_CODE_LINK@@QEAA@XZ ; _NATIVE_CODE_LINK::~_NATIVE_CODE_LINK + 0003a 8b 85 e8 00 00 + 00 mov eax, DWORD PTR __flags$[rbp] + 00040 83 e0 01 and eax, 1 + 00043 85 c0 test eax, eax + 00045 74 11 je SHORT $LN2@scalar + 00047 ba f0 00 00 00 mov edx, 240 ; 000000f0H + 0004c 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR this$[rbp] + 00053 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete +$LN2@scalar: + 00058 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR this$[rbp] + 0005f 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 00066 5f pop rdi + 00067 5d pop rbp + 00068 c3 ret 0 +??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z ENDP ; _NATIVE_CODE_LINK::`scalar deleting destructor' +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File C:\$Fanta\IntelXED\build\obj\wkit\include\xed\xed-encoder-hl.h +; COMDAT xed_inst1 +_TEXT SEGMENT +inst$ = 224 +mode$ = 232 +iclass$ = 240 +effective_operand_width$ = 248 +op0$ = 256 +xed_inst1 PROC ; COMDAT - 000d0 48 8b 4d 08 mov rcx, QWORD PTR NotTaken$[rbp] - 000d4 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock +; 490 : xed_encoder_operand_t op0) { -; 102 : delete NotTaken; + 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d + 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d + 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 56 push rsi + 00016 57 push rdi + 00017 48 81 ec e0 00 + 00 00 sub rsp, 224 ; 000000e0H + 0001e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00023 48 8b fc mov rdi, rsp + 00026 b9 38 00 00 00 mov ecx, 56 ; 00000038H + 0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00030 f3 ab rep stosd + 00032 48 8b 8c 24 08 + 01 00 00 mov rcx, QWORD PTR [rsp+264] + 0003a 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__21860875_xed-encoder-hl@h + 00041 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 000d9 48 8b 45 08 mov rax, QWORD PTR NotTaken$[rbp] - 000dd 48 89 85 48 02 - 00 00 mov QWORD PTR $T5[rbp], rax - 000e4 48 83 bd 48 02 - 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 000ec 74 1a je SHORT $LN9@ObfGenOpaq - 000ee ba 01 00 00 00 mov edx, 1 - 000f3 48 8b 8d 48 02 - 00 00 mov rcx, QWORD PTR $T5[rbp] - 000fa e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 000ff 48 89 85 98 03 - 00 00 mov QWORD PTR tv84[rbp], rax - 00106 eb 0b jmp SHORT $LN10@ObfGenOpaq -$LN9@ObfGenOpaq: - 00108 48 c7 85 98 03 - 00 00 00 00 00 - 00 mov QWORD PTR tv84[rbp], 0 -$LN10@ObfGenOpaq: +; 491 : +; 492 : inst->mode=mode; -; 103 : return NULL; + 00046 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR inst$[rbp] + 0004d 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR mode$[rbp] + 00054 48 89 08 mov QWORD PTR [rax], rcx - 00113 33 c0 xor eax, eax - 00115 e9 4f 03 00 00 jmp $LN1@ObfGenOpaq -$LN5@ObfGenOpaq: +; 493 : inst->iclass = iclass; -; 104 : } -; 105 : -; 106 : ULONG JccLabel = NcGenUnusedLabelId(Start->Block); + 00057 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR inst$[rbp] + 0005e 8b 8d f0 00 00 + 00 mov ecx, DWORD PTR iclass$[rbp] + 00064 89 48 08 mov DWORD PTR [rax+8], ecx - 0011a 48 8b 85 d0 03 - 00 00 mov rax, QWORD PTR Start$[rbp] - 00121 48 8b 48 10 mov rcx, QWORD PTR [rax+16] - 00125 e8 00 00 00 00 call ?NcGenUnusedLabelId@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z ; NcGenUnusedLabelId - 0012a 89 45 44 mov DWORD PTR JccLabel$[rbp], eax +; 494 : inst->effective_operand_width = effective_operand_width; -; 107 : ULONG JmpLabel = NcGenUnusedLabelId(Start->Block); + 00067 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR inst$[rbp] + 0006e 8b 8d f8 00 00 + 00 mov ecx, DWORD PTR effective_operand_width$[rbp] + 00074 89 48 0c mov DWORD PTR [rax+12], ecx - 0012d 48 8b 85 d0 03 - 00 00 mov rax, QWORD PTR Start$[rbp] - 00134 48 8b 48 10 mov rcx, QWORD PTR [rax+16] - 00138 e8 00 00 00 00 call ?NcGenUnusedLabelId@@YAKPEAU_NATIVE_CODE_BLOCK@@@Z ; NcGenUnusedLabelId - 0013d 89 45 64 mov DWORD PTR JmpLabel$[rbp], eax +; 495 : inst->effective_address_width = 0; -; 108 : Start->Block->LabelIds.push_back(JccLabel); + 00077 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR inst$[rbp] + 0007e c7 40 10 00 00 + 00 00 mov DWORD PTR [rax+16], 0 - 00140 48 8b 85 d0 03 - 00 00 mov rax, QWORD PTR Start$[rbp] - 00147 48 8b 40 10 mov rax, QWORD PTR [rax+16] - 0014b 48 83 c0 10 add rax, 16 - 0014f 48 89 85 98 03 - 00 00 mov QWORD PTR tv128[rbp], rax - 00156 48 8d 55 44 lea rdx, QWORD PTR JccLabel$[rbp] - 0015a 48 8b 8d 98 03 - 00 00 mov rcx, QWORD PTR tv128[rbp] - 00161 e8 00 00 00 00 call ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ; std::vector >::push_back +; 496 : inst->prefixes.i = 0; -; 109 : Start->Block->LabelIds.push_back(JmpLabel); + 00085 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR inst$[rbp] + 0008c c7 40 14 00 00 + 00 00 mov DWORD PTR [rax+20], 0 - 00166 48 8b 85 d0 03 - 00 00 mov rax, QWORD PTR Start$[rbp] - 0016d 48 8b 40 10 mov rax, QWORD PTR [rax+16] - 00171 48 83 c0 10 add rax, 16 - 00175 48 89 85 98 03 - 00 00 mov QWORD PTR tv134[rbp], rax - 0017c 48 8d 55 64 lea rdx, QWORD PTR JmpLabel$[rbp] - 00180 48 8b 8d 98 03 - 00 00 mov rcx, QWORD PTR tv134[rbp] - 00187 e8 00 00 00 00 call ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ; std::vector >::push_back +; 497 : inst->operands[0] = op0; -; 110 : -; 111 : PNATIVE_CODE_LINK Jcc = ObfGenRandomJcc(JccLabel); - - 0018c ba 20 00 00 00 mov edx, 32 ; 00000020H - 00191 8b 4d 44 mov ecx, DWORD PTR JccLabel$[rbp] - 00194 e8 00 00 00 00 call ?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z ; ObfGenRandomJcc - 00199 48 89 85 88 00 - 00 00 mov QWORD PTR Jcc$[rbp], rax - -; 112 : if (!Jcc) - - 001a0 48 83 bd 88 00 - 00 00 00 cmp QWORD PTR Jcc$[rbp], 0 - 001a8 0f 85 8d 00 00 - 00 jne $LN6@ObfGenOpaq - -; 113 : { -; 114 : NcDeleteBlock(Taken); - - 001ae 48 8b 4d 28 mov rcx, QWORD PTR Taken$[rbp] - 001b2 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock - -; 115 : delete Taken; - - 001b7 48 8b 45 28 mov rax, QWORD PTR Taken$[rbp] - 001bb 48 89 85 68 02 - 00 00 mov QWORD PTR $T6[rbp], rax - 001c2 48 83 bd 68 02 - 00 00 00 cmp QWORD PTR $T6[rbp], 0 - 001ca 74 1a je SHORT $LN11@ObfGenOpaq - 001cc ba 01 00 00 00 mov edx, 1 - 001d1 48 8b 8d 68 02 - 00 00 mov rcx, QWORD PTR $T6[rbp] - 001d8 e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 001dd 48 89 85 98 03 - 00 00 mov QWORD PTR tv144[rbp], rax - 001e4 eb 0b jmp SHORT $LN12@ObfGenOpaq -$LN11@ObfGenOpaq: - 001e6 48 c7 85 98 03 - 00 00 00 00 00 - 00 mov QWORD PTR tv144[rbp], 0 -$LN12@ObfGenOpaq: - -; 116 : NcDeleteBlock(NotTaken); - - 001f1 48 8b 4d 08 mov rcx, QWORD PTR NotTaken$[rbp] - 001f5 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock - -; 117 : delete NotTaken; - - 001fa 48 8b 45 08 mov rax, QWORD PTR NotTaken$[rbp] - 001fe 48 89 85 88 02 - 00 00 mov QWORD PTR $T7[rbp], rax - 00205 48 83 bd 88 02 - 00 00 00 cmp QWORD PTR $T7[rbp], 0 - 0020d 74 1a je SHORT $LN13@ObfGenOpaq - 0020f ba 01 00 00 00 mov edx, 1 - 00214 48 8b 8d 88 02 - 00 00 mov rcx, QWORD PTR $T7[rbp] - 0021b e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 00220 48 89 85 98 03 - 00 00 mov QWORD PTR tv150[rbp], rax - 00227 eb 0b jmp SHORT $LN14@ObfGenOpaq -$LN13@ObfGenOpaq: - 00229 48 c7 85 98 03 - 00 00 00 00 00 - 00 mov QWORD PTR tv150[rbp], 0 -$LN14@ObfGenOpaq: - -; 118 : return NULL; - - 00234 33 c0 xor eax, eax - 00236 e9 2e 02 00 00 jmp $LN1@ObfGenOpaq -$LN6@ObfGenOpaq: - -; 119 : } -; 120 : PNATIVE_CODE_LINK Jmp = ObfGenJmpToLabel(JmpLabel); - - 0023b ba 20 00 00 00 mov edx, 32 ; 00000020H - 00240 8b 4d 64 mov ecx, DWORD PTR JmpLabel$[rbp] - 00243 e8 00 00 00 00 call ?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z ; ObfGenJmpToLabel - 00248 48 89 85 a8 00 - 00 00 mov QWORD PTR Jmp$[rbp], rax - -; 121 : if (!Jmp) - - 0024f 48 83 bd a8 00 - 00 00 00 cmp QWORD PTR Jmp$[rbp], 0 - 00257 0f 85 ca 00 00 - 00 jne $LN7@ObfGenOpaq - -; 122 : { -; 123 : delete Jcc; - - 0025d 48 8b 85 88 00 - 00 00 mov rax, QWORD PTR Jcc$[rbp] - 00264 48 89 85 a8 02 - 00 00 mov QWORD PTR $T8[rbp], rax - 0026b 48 83 bd a8 02 - 00 00 00 cmp QWORD PTR $T8[rbp], 0 - 00273 74 1a je SHORT $LN15@ObfGenOpaq - 00275 ba 01 00 00 00 mov edx, 1 - 0027a 48 8b 8d a8 02 - 00 00 mov rcx, QWORD PTR $T8[rbp] - 00281 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z - 00286 48 89 85 98 03 - 00 00 mov QWORD PTR tv159[rbp], rax - 0028d eb 0b jmp SHORT $LN16@ObfGenOpaq -$LN15@ObfGenOpaq: - 0028f 48 c7 85 98 03 - 00 00 00 00 00 - 00 mov QWORD PTR tv159[rbp], 0 -$LN16@ObfGenOpaq: - -; 124 : NcDeleteBlock(Taken); - - 0029a 48 8b 4d 28 mov rcx, QWORD PTR Taken$[rbp] - 0029e e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock - -; 125 : delete Taken; - - 002a3 48 8b 45 28 mov rax, QWORD PTR Taken$[rbp] - 002a7 48 89 85 c8 02 - 00 00 mov QWORD PTR $T9[rbp], rax - 002ae 48 83 bd c8 02 - 00 00 00 cmp QWORD PTR $T9[rbp], 0 - 002b6 74 1a je SHORT $LN17@ObfGenOpaq - 002b8 ba 01 00 00 00 mov edx, 1 - 002bd 48 8b 8d c8 02 - 00 00 mov rcx, QWORD PTR $T9[rbp] - 002c4 e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 002c9 48 89 85 98 03 - 00 00 mov QWORD PTR tv165[rbp], rax - 002d0 eb 0b jmp SHORT $LN18@ObfGenOpaq -$LN17@ObfGenOpaq: - 002d2 48 c7 85 98 03 - 00 00 00 00 00 - 00 mov QWORD PTR tv165[rbp], 0 -$LN18@ObfGenOpaq: + 00093 b8 30 00 00 00 mov eax, 48 ; 00000030H + 00098 48 6b c0 00 imul rax, rax, 0 + 0009c 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR inst$[rbp] + 000a3 48 8d 7c 01 20 lea rdi, QWORD PTR [rcx+rax+32] + 000a8 48 8b b5 00 01 + 00 00 mov rsi, QWORD PTR op0$[rbp] + 000af b9 30 00 00 00 mov ecx, 48 ; 00000030H + 000b4 f3 a4 rep movsb -; 126 : NcDeleteBlock(NotTaken); +; 498 : inst->noperands = 1; - 002dd 48 8b 4d 08 mov rcx, QWORD PTR NotTaken$[rbp] - 002e1 e8 00 00 00 00 call ?NcDeleteBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@@Z ; NcDeleteBlock + 000b6 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR inst$[rbp] + 000bd c7 40 18 01 00 + 00 00 mov DWORD PTR [rax+24], 1 -; 127 : delete NotTaken; +; 499 : } - 002e6 48 8b 45 08 mov rax, QWORD PTR NotTaken$[rbp] - 002ea 48 89 85 e8 02 - 00 00 mov QWORD PTR $T10[rbp], rax - 002f1 48 83 bd e8 02 - 00 00 00 cmp QWORD PTR $T10[rbp], 0 - 002f9 74 1a je SHORT $LN19@ObfGenOpaq - 002fb ba 01 00 00 00 mov edx, 1 - 00300 48 8b 8d e8 02 - 00 00 mov rcx, QWORD PTR $T10[rbp] - 00307 e8 00 00 00 00 call ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z - 0030c 48 89 85 98 03 - 00 00 mov QWORD PTR tv171[rbp], rax - 00313 eb 0b jmp SHORT $LN20@ObfGenOpaq -$LN19@ObfGenOpaq: - 00315 48 c7 85 98 03 - 00 00 00 00 00 - 00 mov QWORD PTR tv171[rbp], 0 -$LN20@ObfGenOpaq: + 000c4 48 8d a5 c0 00 + 00 00 lea rsp, QWORD PTR [rbp+192] + 000cb 5f pop rdi + 000cc 5e pop rsi + 000cd 5d pop rbp + 000ce c3 ret 0 +xed_inst1 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File C:\$Fanta\IntelXED\build\obj\wkit\include\xed\xed-encoder-hl.h +; COMDAT xed_relbr +_TEXT SEGMENT +o$ = 8 +__$ArrayPad$ = 264 +$T4 = 304 +brdisp$ = 312 +width_bits$ = 320 +xed_relbr PROC ; COMDAT -; 128 : return NULL; +; 105 : xed_uint_t width_bits) { - 00320 33 c0 xor eax, eax - 00322 e9 42 01 00 00 jmp $LN1@ObfGenOpaq -$LN7@ObfGenOpaq: + 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d + 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx + 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 0000e 55 push rbp + 0000f 56 push rsi + 00010 57 push rdi + 00011 48 81 ec 30 01 + 00 00 sub rsp, 304 ; 00000130H + 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001d 48 8b fc mov rdi, rsp + 00020 b9 4c 00 00 00 mov ecx, 76 ; 0000004cH + 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 0002a f3 ab rep stosd + 0002c 48 8b 8c 24 58 + 01 00 00 mov rcx, QWORD PTR [rsp+344] + 00034 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 0003b 48 33 c5 xor rax, rbp + 0003e 48 89 85 08 01 + 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax + 00045 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__21860875_xed-encoder-hl@h + 0004c e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 129 : } -; 130 : -; 131 : NcPrependToBlock(NotTaken, Jcc); +; 106 : xed_encoder_operand_t o; +; 107 : o.type = XED_ENCODER_OPERAND_TYPE_BRDISP; - 00327 48 8b 95 88 00 - 00 00 mov rdx, QWORD PTR Jcc$[rbp] - 0032e 48 8b 4d 08 mov rcx, QWORD PTR NotTaken$[rbp] - 00332 e8 00 00 00 00 call ?NcPrependToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcPrependToBlock + 00051 c7 45 08 01 00 + 00 00 mov DWORD PTR o$[rbp], 1 -; 132 : NcAppendToBlock(NotTaken, Jmp); +; 108 : o.u.brdisp = brdisp; - 00337 48 8b 95 a8 00 - 00 00 mov rdx, QWORD PTR Jmp$[rbp] - 0033e 48 8b 4d 08 mov rcx, QWORD PTR NotTaken$[rbp] - 00342 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 00058 8b 85 38 01 00 + 00 mov eax, DWORD PTR brdisp$[rbp] + 0005e 89 45 10 mov DWORD PTR o$[rbp+8], eax -; 133 : -; 134 : NcPrependToBlock(Taken, new NATIVE_CODE_LINK(JccLabel, Taken)); +; 109 : o.width_bits = width_bits; - 00347 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H - 0034c e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new - 00351 48 89 85 28 03 - 00 00 mov QWORD PTR $T12[rbp], rax - 00358 48 83 bd 28 03 - 00 00 00 cmp QWORD PTR $T12[rbp], 0 - 00360 74 1c je SHORT $LN21@ObfGenOpaq - 00362 4c 8b 45 28 mov r8, QWORD PTR Taken$[rbp] - 00366 8b 55 44 mov edx, DWORD PTR JccLabel$[rbp] - 00369 48 8b 8d 28 03 - 00 00 mov rcx, QWORD PTR $T12[rbp] - 00370 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAU_NATIVE_CODE_BLOCK@@@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 00375 48 89 85 98 03 - 00 00 mov QWORD PTR tv189[rbp], rax - 0037c eb 0b jmp SHORT $LN22@ObfGenOpaq -$LN21@ObfGenOpaq: - 0037e 48 c7 85 98 03 - 00 00 00 00 00 - 00 mov QWORD PTR tv189[rbp], 0 -$LN22@ObfGenOpaq: - 00389 48 8b 85 98 03 - 00 00 mov rax, QWORD PTR tv189[rbp] - 00390 48 89 85 08 03 - 00 00 mov QWORD PTR $T11[rbp], rax - 00397 48 8b 95 08 03 - 00 00 mov rdx, QWORD PTR $T11[rbp] - 0039e 48 8b 4d 28 mov rcx, QWORD PTR Taken$[rbp] - 003a2 e8 00 00 00 00 call ?NcPrependToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcPrependToBlock - -; 135 : NcAppendToBlock(Taken, new NATIVE_CODE_LINK(JmpLabel, Taken)); - - 003a7 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H - 003ac e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new - 003b1 48 89 85 68 03 - 00 00 mov QWORD PTR $T14[rbp], rax - 003b8 48 83 bd 68 03 - 00 00 00 cmp QWORD PTR $T14[rbp], 0 - 003c0 74 1c je SHORT $LN23@ObfGenOpaq - 003c2 4c 8b 45 28 mov r8, QWORD PTR Taken$[rbp] - 003c6 8b 55 64 mov edx, DWORD PTR JmpLabel$[rbp] - 003c9 48 8b 8d 68 03 - 00 00 mov rcx, QWORD PTR $T14[rbp] - 003d0 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAU_NATIVE_CODE_BLOCK@@@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 003d5 48 89 85 98 03 - 00 00 mov QWORD PTR tv204[rbp], rax - 003dc eb 0b jmp SHORT $LN24@ObfGenOpaq -$LN23@ObfGenOpaq: - 003de 48 c7 85 98 03 - 00 00 00 00 00 - 00 mov QWORD PTR tv204[rbp], 0 -$LN24@ObfGenOpaq: - 003e9 48 8b 85 98 03 - 00 00 mov rax, QWORD PTR tv204[rbp] - 003f0 48 89 85 48 03 - 00 00 mov QWORD PTR $T13[rbp], rax - 003f7 48 8b 95 48 03 - 00 00 mov rdx, QWORD PTR $T13[rbp] - 003fe 48 8b 4d 28 mov rcx, QWORD PTR Taken$[rbp] - 00402 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock - -; 136 : -; 137 : NcInsertBlockAfter(NotTaken->End, Taken, FALSE); - - 00407 45 33 c0 xor r8d, r8d - 0040a 48 8b 55 28 mov rdx, QWORD PTR Taken$[rbp] - 0040e 48 8b 45 08 mov rax, QWORD PTR NotTaken$[rbp] - 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 : 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; - - 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 - 00436 48 83 bd 88 03 - 00 00 00 cmp QWORD PTR $T15[rbp], 0 - 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] - 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: - 0045a 48 c7 85 98 03 - 00 00 00 00 00 - 00 mov QWORD PTR tv216[rbp], 0 -$LN26@ObfGenOpaq: + 00061 8b 85 40 01 00 + 00 mov eax, DWORD PTR width_bits$[rbp] + 00067 89 45 30 mov DWORD PTR o$[rbp+40], eax -; 141 : return NotTaken; +; 110 : return o; - 00465 48 8b 45 08 mov rax, QWORD PTR NotTaken$[rbp] -$LN1@ObfGenOpaq: + 0006a 48 8d 45 08 lea rax, QWORD PTR o$[rbp] + 0006e 48 8b bd 30 01 + 00 00 mov rdi, QWORD PTR $T4[rbp] + 00075 48 8b f0 mov rsi, rax + 00078 b9 30 00 00 00 mov ecx, 48 ; 00000030H + 0007d f3 a4 rep movsb + 0007f 48 8b 85 30 01 + 00 00 mov rax, QWORD PTR $T4[rbp] -; 142 : } +; 111 : } - 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 - 00477 e8 00 00 00 00 call _RTC_CheckStackVars - 0047c 48 8b c7 mov rax, rdi - 0047f 48 8b 8d a0 03 + 00086 48 8b f8 mov rdi, rax + 00089 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] + 0008d 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:xed_relbr$rtcFrameData + 00094 e8 00 00 00 00 call _RTC_CheckStackVars + 00099 48 8b c7 mov rax, rdi + 0009c 48 8b 8d 08 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 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] - 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 + 000a3 48 33 cd xor rcx, rbp + 000a6 e8 00 00 00 00 call __security_check_cookie + 000ab 48 8d a5 10 01 + 00 00 lea rsp, QWORD PTR [rbp+272] + 000b2 5f pop rdi + 000b3 5e pop rsi + 000b4 5d pop rbp + 000b5 c3 ret 0 +xed_relbr ENDP _TEXT ENDS -; COMDAT text$x -text$x SEGMENT -NotTaken$ = 8 -Taken$ = 40 -JccLabel$ = 68 -JmpLabel$ = 100 -Jcc$ = 136 -Jmp$ = 168 -$T5 = 584 -$T6 = 616 -$T7 = 648 -$T8 = 680 -$T9 = 712 -$T10 = 744 -$T11 = 776 -$T12 = 808 -$T13 = 840 -$T14 = 872 -$T15 = 904 -tv216 = 920 -tv204 = 920 -tv189 = 920 -tv171 = 920 -tv165 = 920 -tv159 = 920 -tv150 = 920 -tv144 = 920 -tv134 = 920 -tv128 = 920 -tv84 = 920 -__$ArrayPad$ = 928 -Start$ = 976 -End$ = 984 -?dtor$0@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA PROC ; `ObfGenOpaqueBranch'::`1'::dtor$0 - 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 55 push rbp - 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 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 00019 48 8b 8d 28 03 - 00 00 mov rcx, QWORD PTR $T12[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 -?dtor$0@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA ENDP ; `ObfGenOpaqueBranch'::`1'::dtor$0 -text$x ENDS -; COMDAT text$x -text$x SEGMENT -NotTaken$ = 8 -Taken$ = 40 -JccLabel$ = 68 -JmpLabel$ = 100 -Jcc$ = 136 -Jmp$ = 168 -$T5 = 584 -$T6 = 616 -$T7 = 648 -$T8 = 680 -$T9 = 712 -$T10 = 744 -$T11 = 776 -$T12 = 808 -$T13 = 840 -$T14 = 872 -$T15 = 904 -tv216 = 920 -tv204 = 920 -tv189 = 920 -tv171 = 920 -tv165 = 920 -tv159 = 920 -tv150 = 920 -tv144 = 920 -tv134 = 920 -tv128 = 920 -tv84 = 920 -__$ArrayPad$ = 928 -Start$ = 976 -End$ = 984 -?dtor$1@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA PROC ; `ObfGenOpaqueBranch'::`1'::dtor$1 - 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 55 push rbp - 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 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 00019 48 8b 8d 68 03 - 00 00 mov rcx, QWORD PTR $T14[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 -?dtor$1@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA ENDP ; `ObfGenOpaqueBranch'::`1'::dtor$1 -text$x ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT text$x -text$x SEGMENT -NotTaken$ = 8 -Taken$ = 40 -JccLabel$ = 68 -JmpLabel$ = 100 -Jcc$ = 136 -Jmp$ = 168 -$T5 = 584 -$T6 = 616 -$T7 = 648 -$T8 = 680 -$T9 = 712 -$T10 = 744 -$T11 = 776 -$T12 = 808 -$T13 = 840 -$T14 = 872 -$T15 = 904 -tv216 = 920 -tv204 = 920 -tv189 = 920 -tv171 = 920 -tv165 = 920 -tv159 = 920 -tv150 = 920 -tv144 = 920 -tv134 = 920 -tv128 = 920 -tv84 = 920 -__$ArrayPad$ = 928 -Start$ = 976 -End$ = 984 -?dtor$0@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA PROC ; `ObfGenOpaqueBranch'::`1'::dtor$0 - 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 55 push rbp - 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 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 00019 48 8b 8d 28 03 - 00 00 mov rcx, QWORD PTR $T12[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 -?dtor$0@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA ENDP ; `ObfGenOpaqueBranch'::`1'::dtor$0 -text$x ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT text$x -text$x SEGMENT -NotTaken$ = 8 -Taken$ = 40 -JccLabel$ = 68 -JmpLabel$ = 100 -Jcc$ = 136 -Jmp$ = 168 -$T5 = 584 -$T6 = 616 -$T7 = 648 -$T8 = 680 -$T9 = 712 -$T10 = 744 -$T11 = 776 -$T12 = 808 -$T13 = 840 -$T14 = 872 -$T15 = 904 -tv216 = 920 -tv204 = 920 -tv189 = 920 -tv171 = 920 -tv165 = 920 -tv159 = 920 -tv150 = 920 -tv144 = 920 -tv134 = 920 -tv128 = 920 -tv84 = 920 -__$ArrayPad$ = 928 -Start$ = 976 -End$ = 984 -?dtor$1@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA PROC ; `ObfGenOpaqueBranch'::`1'::dtor$1 - 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 55 push rbp - 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 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 00019 48 8b 8d 68 03 - 00 00 mov rcx, QWORD PTR $T14[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 -?dtor$1@?0??ObfGenOpaqueBranch@@YAPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@0@Z@4HA ENDP ; `ObfGenOpaqueBranch'::`1'::dtor$1 -text$x ENDS ; Function compile flags: /Odtp /RTCsu /ZI -; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp -; COMDAT ?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z +; 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 -MachineState$ = 8 -EncoderInstruction$ = 48 -EncoderRequest$ = 496 -EncodeBuffer$ = 712 -ReturnedSize$ = 756 -Link$ = 792 -$T8 = 1400 -$T9 = 1480 -$T10 = 1560 -$T11 = 1592 -$T12 = 1624 -$T13 = 1664 -tv144 = 1720 -tv132 = 1720 -__$ArrayPad$ = 1728 -LabelId$ = 1776 -DisplacementWidth$ = 1784 -?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z PROC ; ObfGenJmpToLabel, COMDAT +$T1 = 200 +tv93 = 264 +tv85 = 264 +this$ = 304 +__formal$ = 312 +_Lobj$ = 320 +??$_Getvals@_W@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z PROC ; std::time_get > >::_Getvals, COMDAT -; 58 : { +; 176 : void __CLR_OR_THIS_CALL _Getvals(_Elem2, const _Locinfo& _Lobj) { // get values -$LN11: - 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx - 00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx - 00008 55 push rbp - 00009 56 push rsi - 0000a 57 push rdi - 0000b 48 81 ec 00 07 - 00 00 sub rsp, 1792 ; 00000700H - 00012 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] - 00017 48 8b fc mov rdi, rsp - 0001a b9 c0 01 00 00 mov ecx, 448 ; 000001c0H - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 8b 8c 24 28 07 - 00 00 mov ecx, DWORD PTR [rsp+1832] - 0002d 48 8b 05 00 00 - 00 00 mov rax, QWORD PTR __security_cookie - 00034 48 33 c5 xor rax, rbp - 00037 48 89 85 c0 06 - 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 0003e 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BCD1AF07_OpaqueBranching@cpp - 00045 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +$LN5: + 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 00005 66 89 54 24 10 mov WORD PTR [rsp+16], dx + 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 0000f 55 push rbp + 00010 56 push rsi + 00011 57 push rdi + 00012 48 81 ec 30 01 + 00 00 sub rsp, 304 ; 00000130H + 00019 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001e 48 8b fc mov rdi, rsp + 00021 b9 4c 00 00 00 mov ecx, 76 ; 0000004cH + 00026 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 0002b f3 ab rep stosd + 0002d 48 8b 8c 24 58 + 01 00 00 mov rcx, QWORD PTR [rsp+344] + 00035 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__886F7F70_xloctime + 0003c e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 59 : XED_STATE MachineState; -; 60 : MachineState.mmode = XED_MACHINE_MODE_LONG_64; +; 177 : _Cvt = _Lobj._Getcvt(); - 0004a c7 45 08 01 00 - 00 00 mov DWORD PTR MachineState$[rbp], 1 + 00041 48 8d 95 c8 00 + 00 00 lea rdx, QWORD PTR $T1[rbp] + 00048 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Lobj$[rbp] + 0004f ff 15 00 00 00 + 00 call QWORD PTR __imp_?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ + 00055 48 8b 8d 30 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 0005c 48 8d 79 2c lea rdi, QWORD PTR [rcx+44] + 00060 48 8b f0 mov rsi, rax + 00063 b9 2c 00 00 00 mov ecx, 44 ; 0000002cH + 00068 f3 a4 rep movsb -; 61 : MachineState.stack_addr_width = XED_ADDRESS_WIDTH_64b; +; 178 : +; 179 : if (is_same_v<_Elem2, wchar_t>) { - 00051 c7 45 0c 08 00 - 00 00 mov DWORD PTR MachineState$[rbp+4], 8 + 0006a 33 c0 xor eax, eax + 0006c 83 f8 01 cmp eax, 1 + 0006f 74 5c je SHORT $LN2@Getvals -; 62 : XED_ENCODER_INSTRUCTION EncoderInstruction; -; 63 : XED_ENCODER_REQUEST EncoderRequest; -; 64 : UCHAR EncodeBuffer[15]; -; 65 : UINT ReturnedSize; -; 66 : -; 67 : XedInst1(&EncoderInstruction, MachineState, XED_ICLASS_JMP, DisplacementWidth, XedRelBr(0, DisplacementWidth)); +; 180 : _Days = reinterpret_cast(_Maklocwcs(reinterpret_cast(_Lobj._W_Getdays()))); - 00058 44 8b 85 f8 06 - 00 00 mov r8d, DWORD PTR DisplacementWidth$[rbp] - 0005f 33 d2 xor edx, edx - 00061 48 8d 8d c8 05 - 00 00 lea rcx, QWORD PTR $T9[rbp] - 00068 e8 00 00 00 00 call xed_relbr - 0006d 48 8d 8d 78 05 - 00 00 lea rcx, QWORD PTR $T8[rbp] - 00074 48 8b f9 mov rdi, rcx - 00077 48 8b f0 mov rsi, rax - 0007a b9 30 00 00 00 mov ecx, 48 ; 00000030H - 0007f f3 a4 rep movsb - 00081 48 8d 85 80 06 - 00 00 lea rax, QWORD PTR $T13[rbp] - 00088 48 8d 8d 78 05 - 00 00 lea rcx, QWORD PTR $T8[rbp] - 0008f 48 8b f8 mov rdi, rax - 00092 48 8b f1 mov rsi, rcx - 00095 b9 30 00 00 00 mov ecx, 48 ; 00000030H - 0009a f3 a4 rep movsb - 0009c 48 8d 85 80 06 - 00 00 lea rax, QWORD PTR $T13[rbp] - 000a3 48 89 44 24 20 mov QWORD PTR [rsp+32], rax - 000a8 44 8b 8d f8 06 - 00 00 mov r9d, DWORD PTR DisplacementWidth$[rbp] - 000af 41 b8 3c 01 00 - 00 mov r8d, 316 ; 0000013cH - 000b5 48 8b 55 08 mov rdx, QWORD PTR MachineState$[rbp] - 000b9 48 8d 4d 30 lea rcx, QWORD PTR EncoderInstruction$[rbp] - 000bd e8 00 00 00 00 call xed_inst1 + 00071 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Lobj$[rbp] + 00078 ff 15 00 00 00 + 00 call QWORD PTR __imp_?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ + 0007e 48 8b c8 mov rcx, rax + 00081 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs + 00086 48 8b 8d 30 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 0008d 48 89 41 10 mov QWORD PTR [rcx+16], rax -; 68 : -; 69 : XedEncoderRequestZeroSetMode(&EncoderRequest, &MachineState); +; 181 : _Months = - 000c2 48 8d 55 08 lea rdx, QWORD PTR MachineState$[rbp] - 000c6 48 8d 8d f0 01 - 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] - 000cd e8 00 00 00 00 call xed_encoder_request_zero_set_mode + 00091 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Lobj$[rbp] + 00098 ff 15 00 00 00 + 00 call QWORD PTR __imp_?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ + 0009e 48 8b c8 mov rcx, rax + 000a1 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs + 000a6 48 8b 8d 30 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 000ad 48 89 41 18 mov QWORD PTR [rcx+24], rax -; 70 : if (!XedConvertToEncoderRequest(&EncoderRequest, &EncoderInstruction)) +; 182 : reinterpret_cast(_Maklocwcs(reinterpret_cast(_Lobj._W_Getmonths()))); +; 183 : _Ampm = reinterpret_cast(_Maklocwcs(L":AM:am:PM:pm")); - 000d2 48 8d 55 30 lea rdx, QWORD PTR EncoderInstruction$[rbp] - 000d6 48 8d 8d f0 01 - 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] - 000dd e8 00 00 00 00 call xed_convert_to_encoder_request - 000e2 85 c0 test eax, eax - 000e4 75 07 jne SHORT $LN2@ObfGenJmpT + 000b1 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_1BK@MHIKGOKE@?$AA?3?$AAA?$AAM?$AA?3?$AAa?$AAm?$AA?3?$AAP?$AAM?$AA?3?$AAp?$AAm@ + 000b8 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs + 000bd 48 8b 8d 30 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 000c4 48 89 41 20 mov QWORD PTR [rcx+32], rax -; 71 : return NULL; +; 184 : } else { - 000e6 33 c0 xor eax, eax - 000e8 e9 28 01 00 00 jmp $LN1@ObfGenJmpT -$LN2@ObfGenJmpT: + 000c8 e9 a3 00 00 00 jmp $LN3@Getvals +$LN2@Getvals: -; 72 : -; 73 : if (XED_ERROR_NONE != XedEncode(&EncoderRequest, EncodeBuffer, 15, &ReturnedSize)) +; 185 : _Days = _Maklocstr(_Lobj._Getdays(), static_cast<_Elem*>(nullptr), _Cvt); - 000ed 4c 8d 8d f4 02 - 00 00 lea r9, QWORD PTR ReturnedSize$[rbp] - 000f4 41 b8 0f 00 00 - 00 mov r8d, 15 - 000fa 48 8d 95 c8 02 - 00 00 lea rdx, QWORD PTR EncodeBuffer$[rbp] - 00101 48 8d 8d f0 01 - 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] - 00108 e8 00 00 00 00 call xed_encode - 0010d 85 c0 test eax, eax - 0010f 74 07 je SHORT $LN3@ObfGenJmpT - -; 74 : return NULL; - - 00111 33 c0 xor eax, eax - 00113 e9 fd 00 00 00 jmp $LN1@ObfGenJmpT -$LN3@ObfGenJmpT: - -; 75 : -; 76 : PNATIVE_CODE_LINK Link = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, EncodeBuffer, ReturnedSize); - - 00118 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H - 0011d e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new - 00122 48 89 85 38 06 - 00 00 mov QWORD PTR $T11[rbp], rax - 00129 48 83 bd 38 06 - 00 00 00 cmp QWORD PTR $T11[rbp], 0 - 00131 74 28 je SHORT $LN6@ObfGenJmpT - 00133 44 8b 8d f4 02 - 00 00 mov r9d, DWORD PTR ReturnedSize$[rbp] - 0013a 4c 8d 85 c8 02 - 00 00 lea r8, QWORD PTR EncodeBuffer$[rbp] - 00141 ba 04 00 00 00 mov edx, 4 - 00146 48 8b 8d 38 06 - 00 00 mov rcx, QWORD PTR $T11[rbp] - 0014d e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 00152 48 89 85 b8 06 - 00 00 mov QWORD PTR tv132[rbp], rax - 00159 eb 0b jmp SHORT $LN7@ObfGenJmpT -$LN6@ObfGenJmpT: - 0015b 48 c7 85 b8 06 - 00 00 00 00 00 - 00 mov QWORD PTR tv132[rbp], 0 -$LN7@ObfGenJmpT: - 00166 48 8b 85 b8 06 - 00 00 mov rax, QWORD PTR tv132[rbp] - 0016d 48 89 85 18 06 - 00 00 mov QWORD PTR $T10[rbp], rax - 00174 48 8b 85 18 06 - 00 00 mov rax, QWORD PTR $T10[rbp] - 0017b 48 89 85 18 03 - 00 00 mov QWORD PTR Link$[rbp], rax - -; 77 : if (XED_ERROR_NONE != XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize)) - - 00182 48 8b 85 18 03 - 00 00 mov rax, QWORD PTR Link$[rbp] - 00189 48 83 c0 30 add rax, 48 ; 00000030H - 0018d 48 8b 8d 18 03 - 00 00 mov rcx, QWORD PTR Link$[rbp] - 00194 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] - 00198 48 8b 8d 18 03 - 00 00 mov rcx, QWORD PTR Link$[rbp] - 0019f 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 001a3 48 8b c8 mov rcx, rax - 001a6 e8 00 00 00 00 call xed_decode - 001ab 85 c0 test eax, eax - 001ad 74 41 je SHORT $LN4@ObfGenJmpT - -; 78 : { -; 79 : delete Link; - - 001af 48 8b 85 18 03 - 00 00 mov rax, QWORD PTR Link$[rbp] - 001b6 48 89 85 58 06 - 00 00 mov QWORD PTR $T12[rbp], rax - 001bd 48 83 bd 58 06 - 00 00 00 cmp QWORD PTR $T12[rbp], 0 - 001c5 74 1a je SHORT $LN8@ObfGenJmpT - 001c7 ba 01 00 00 00 mov edx, 1 - 001cc 48 8b 8d 58 06 - 00 00 mov rcx, QWORD PTR $T12[rbp] - 001d3 e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z - 001d8 48 89 85 b8 06 - 00 00 mov QWORD PTR tv144[rbp], rax - 001df eb 0b jmp SHORT $LN9@ObfGenJmpT -$LN8@ObfGenJmpT: - 001e1 48 c7 85 b8 06 - 00 00 00 00 00 - 00 mov QWORD PTR tv144[rbp], 0 -$LN9@ObfGenJmpT: - -; 80 : return NULL; - - 001ec 33 c0 xor eax, eax - 001ee eb 25 jmp SHORT $LN1@ObfGenJmpT -$LN4@ObfGenJmpT: - -; 81 : } -; 82 : Link->Label = LabelId; - - 001f0 48 8b 85 18 03 - 00 00 mov rax, QWORD PTR Link$[rbp] - 001f7 8b 8d f0 06 00 - 00 mov ecx, DWORD PTR LabelId$[rbp] - 001fd 89 48 1c mov DWORD PTR [rax+28], ecx - -; 83 : Link->Flags = (CODE_FLAG_IS_INST | CODE_FLAG_IS_REL_JMP); - - 00200 48 8b 85 18 03 - 00 00 mov rax, QWORD PTR Link$[rbp] - 00207 c7 40 18 06 00 - 00 00 mov DWORD PTR [rax+24], 6 - -; 84 : -; 85 : return Link; - - 0020e 48 8b 85 18 03 - 00 00 mov rax, QWORD PTR Link$[rbp] -$LN1@ObfGenJmpT: - -; 86 : } - - 00215 48 8b f8 mov rdi, rax - 00218 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] - 0021c 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z$rtcFrameData - 00223 e8 00 00 00 00 call _RTC_CheckStackVars - 00228 48 8b c7 mov rax, rdi - 0022b 48 8b 8d c0 06 - 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00232 48 33 cd xor rcx, rbp - 00235 e8 00 00 00 00 call __security_check_cookie - 0023a 48 8d a5 d0 06 - 00 00 lea rsp, QWORD PTR [rbp+1744] - 00241 5f pop rdi - 00242 5e pop rsi - 00243 5d pop rbp - 00244 c3 ret 0 -?ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z ENDP ; ObfGenJmpToLabel -_TEXT ENDS -; COMDAT text$x -text$x SEGMENT -MachineState$ = 8 -EncoderInstruction$ = 48 -EncoderRequest$ = 496 -EncodeBuffer$ = 712 -ReturnedSize$ = 756 -Link$ = 792 -$T8 = 1400 -$T9 = 1480 -$T10 = 1560 -$T11 = 1592 -$T12 = 1624 -$T13 = 1664 -tv144 = 1720 -tv132 = 1720 -__$ArrayPad$ = 1728 -LabelId$ = 1776 -DisplacementWidth$ = 1784 -?dtor$0@?0??ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA PROC ; `ObfGenJmpToLabel'::`1'::dtor$0 - 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 55 push rbp - 0000b 57 push rdi - 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] - 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 00019 48 8b 8d 38 06 - 00 00 mov rcx, QWORD PTR $T11[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 -?dtor$0@?0??ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA ENDP ; `ObfGenJmpToLabel'::`1'::dtor$0 -text$x ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT text$x -text$x SEGMENT -MachineState$ = 8 -EncoderInstruction$ = 48 -EncoderRequest$ = 496 -EncodeBuffer$ = 712 -ReturnedSize$ = 756 -Link$ = 792 -$T8 = 1400 -$T9 = 1480 -$T10 = 1560 -$T11 = 1592 -$T12 = 1624 -$T13 = 1664 -tv144 = 1720 -tv132 = 1720 -__$ArrayPad$ = 1728 -LabelId$ = 1776 -DisplacementWidth$ = 1784 -?dtor$0@?0??ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA PROC ; `ObfGenJmpToLabel'::`1'::dtor$0 - 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 55 push rbp - 0000b 57 push rdi - 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] - 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 00019 48 8b 8d 38 06 - 00 00 mov rcx, QWORD PTR $T11[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 -?dtor$0@?0??ObfGenJmpToLabel@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA ENDP ; `ObfGenJmpToLabel'::`1'::dtor$0 -text$x ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp -; COMDAT ?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z -_TEXT SEGMENT -MachineState$ = 8 -EncoderInstruction$ = 48 -EncoderRequest$ = 496 -EncodeBuffer$ = 712 -ReturnedSize$ = 756 -Link$ = 792 -$T8 = 1400 -$T9 = 1480 -$T10 = 1560 -$T11 = 1592 -$T12 = 1624 -$T13 = 1656 -$T14 = 1696 -tv77 = 1748 -tv148 = 1752 -tv136 = 1752 -__$ArrayPad$ = 1760 -LabelId$ = 1808 -DisplacementWidth$ = 1816 -?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z PROC ; ObfGenRandomJcc, COMDAT - -; 27 : { - -$LN11: - 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx - 00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx - 00008 55 push rbp - 00009 56 push rsi - 0000a 57 push rdi - 0000b 48 81 ec 20 07 - 00 00 sub rsp, 1824 ; 00000720H - 00012 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] - 00017 48 8b fc mov rdi, rsp - 0001a b9 c8 01 00 00 mov ecx, 456 ; 000001c8H - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 8b 8c 24 48 07 - 00 00 mov ecx, DWORD PTR [rsp+1864] - 0002d 48 8b 05 00 00 - 00 00 mov rax, QWORD PTR __security_cookie - 00034 48 33 c5 xor rax, rbp - 00037 48 89 85 e0 06 - 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 0003e 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BCD1AF07_OpaqueBranching@cpp - 00045 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 28 : XED_STATE MachineState; -; 29 : MachineState.mmode = XED_MACHINE_MODE_LONG_64; - - 0004a c7 45 08 01 00 - 00 00 mov DWORD PTR MachineState$[rbp], 1 - -; 30 : MachineState.stack_addr_width = XED_ADDRESS_WIDTH_64b; - - 00051 c7 45 0c 08 00 - 00 00 mov DWORD PTR MachineState$[rbp+4], 8 - -; 31 : XED_ENCODER_INSTRUCTION EncoderInstruction; -; 32 : XED_ENCODER_REQUEST EncoderRequest; -; 33 : UCHAR EncodeBuffer[15]; -; 34 : UINT ReturnedSize; -; 35 : -; 36 : XedInst1(&EncoderInstruction, MachineState, ObfGetRandomJccClass(), DisplacementWidth, XedRelBr(0, DisplacementWidth)); - - 00058 44 8b 85 18 07 - 00 00 mov r8d, DWORD PTR DisplacementWidth$[rbp] - 0005f 33 d2 xor edx, edx - 00061 48 8d 8d c8 05 - 00 00 lea rcx, QWORD PTR $T9[rbp] - 00068 e8 00 00 00 00 call xed_relbr - 0006d 48 8d 8d 78 05 - 00 00 lea rcx, QWORD PTR $T8[rbp] - 00074 48 8b f9 mov rdi, rcx - 00077 48 8b f0 mov rsi, rax - 0007a b9 30 00 00 00 mov ecx, 48 ; 00000030H - 0007f f3 a4 rep movsb - 00081 e8 00 00 00 00 call ?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ ; ObfGetRandomJccClass - 00086 89 85 d4 06 00 - 00 mov DWORD PTR tv77[rbp], eax - 0008c 48 8b 45 08 mov rax, QWORD PTR MachineState$[rbp] - 00090 48 89 85 18 06 - 00 00 mov QWORD PTR $T10[rbp], rax - 00097 48 8d 85 a0 06 - 00 00 lea rax, QWORD PTR $T14[rbp] - 0009e 48 8d 8d 78 05 - 00 00 lea rcx, QWORD PTR $T8[rbp] - 000a5 48 8b f8 mov rdi, rax - 000a8 48 8b f1 mov rsi, rcx - 000ab b9 30 00 00 00 mov ecx, 48 ; 00000030H - 000b0 f3 a4 rep movsb - 000b2 48 8d 85 a0 06 - 00 00 lea rax, QWORD PTR $T14[rbp] - 000b9 48 89 44 24 20 mov QWORD PTR [rsp+32], rax - 000be 44 8b 8d 18 07 - 00 00 mov r9d, DWORD PTR DisplacementWidth$[rbp] - 000c5 44 8b 85 d4 06 - 00 00 mov r8d, DWORD PTR tv77[rbp] - 000cc 48 8b 95 18 06 - 00 00 mov rdx, QWORD PTR $T10[rbp] - 000d3 48 8d 4d 30 lea rcx, QWORD PTR EncoderInstruction$[rbp] - 000d7 e8 00 00 00 00 call xed_inst1 - -; 37 : -; 38 : XedEncoderRequestZeroSetMode(&EncoderRequest, &MachineState); - - 000dc 48 8d 55 08 lea rdx, QWORD PTR MachineState$[rbp] - 000e0 48 8d 8d f0 01 - 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] - 000e7 e8 00 00 00 00 call xed_encoder_request_zero_set_mode - -; 39 : if (!XedConvertToEncoderRequest(&EncoderRequest, &EncoderInstruction)) - - 000ec 48 8d 55 30 lea rdx, QWORD PTR EncoderInstruction$[rbp] - 000f0 48 8d 8d f0 01 - 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] - 000f7 e8 00 00 00 00 call xed_convert_to_encoder_request - 000fc 85 c0 test eax, eax - 000fe 75 07 jne SHORT $LN2@ObfGenRand - -; 40 : return NULL; - - 00100 33 c0 xor eax, eax - 00102 e9 28 01 00 00 jmp $LN1@ObfGenRand -$LN2@ObfGenRand: - -; 41 : -; 42 : if (XED_ERROR_NONE != XedEncode(&EncoderRequest, EncodeBuffer, 15, &ReturnedSize)) - - 00107 4c 8d 8d f4 02 - 00 00 lea r9, QWORD PTR ReturnedSize$[rbp] - 0010e 41 b8 0f 00 00 - 00 mov r8d, 15 - 00114 48 8d 95 c8 02 - 00 00 lea rdx, QWORD PTR EncodeBuffer$[rbp] - 0011b 48 8d 8d f0 01 - 00 00 lea rcx, QWORD PTR EncoderRequest$[rbp] - 00122 e8 00 00 00 00 call xed_encode - 00127 85 c0 test eax, eax - 00129 74 07 je SHORT $LN3@ObfGenRand - -; 43 : return NULL; - - 0012b 33 c0 xor eax, eax - 0012d e9 fd 00 00 00 jmp $LN1@ObfGenRand -$LN3@ObfGenRand: - -; 44 : -; 45 : PNATIVE_CODE_LINK Link = new NATIVE_CODE_LINK(CODE_FLAG_IS_INST, EncodeBuffer, ReturnedSize); - - 00132 b9 f0 00 00 00 mov ecx, 240 ; 000000f0H - 00137 e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new - 0013c 48 89 85 58 06 - 00 00 mov QWORD PTR $T12[rbp], rax - 00143 48 83 bd 58 06 - 00 00 00 cmp QWORD PTR $T12[rbp], 0 - 0014b 74 28 je SHORT $LN6@ObfGenRand - 0014d 44 8b 8d f4 02 - 00 00 mov r9d, DWORD PTR ReturnedSize$[rbp] - 00154 4c 8d 85 c8 02 - 00 00 lea r8, QWORD PTR EncodeBuffer$[rbp] - 0015b ba 04 00 00 00 mov edx, 4 - 00160 48 8b 8d 58 06 - 00 00 mov rcx, QWORD PTR $T12[rbp] - 00167 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 0016c 48 89 85 d8 06 - 00 00 mov QWORD PTR tv136[rbp], rax - 00173 eb 0b jmp SHORT $LN7@ObfGenRand -$LN6@ObfGenRand: - 00175 48 c7 85 d8 06 - 00 00 00 00 00 - 00 mov QWORD PTR tv136[rbp], 0 -$LN7@ObfGenRand: - 00180 48 8b 85 d8 06 - 00 00 mov rax, QWORD PTR tv136[rbp] - 00187 48 89 85 38 06 - 00 00 mov QWORD PTR $T11[rbp], rax - 0018e 48 8b 85 38 06 - 00 00 mov rax, QWORD PTR $T11[rbp] - 00195 48 89 85 18 03 - 00 00 mov QWORD PTR Link$[rbp], rax - -; 46 : if (XED_ERROR_NONE != XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize)) - - 0019c 48 8b 85 18 03 - 00 00 mov rax, QWORD PTR Link$[rbp] - 001a3 48 83 c0 30 add rax, 48 ; 00000030H - 001a7 48 8b 8d 18 03 - 00 00 mov rcx, QWORD PTR Link$[rbp] - 001ae 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] - 001b2 48 8b 8d 18 03 - 00 00 mov rcx, QWORD PTR Link$[rbp] - 001b9 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 001bd 48 8b c8 mov rcx, rax - 001c0 e8 00 00 00 00 call xed_decode - 001c5 85 c0 test eax, eax - 001c7 74 41 je SHORT $LN4@ObfGenRand - -; 47 : { -; 48 : delete Link; - - 001c9 48 8b 85 18 03 - 00 00 mov rax, QWORD PTR Link$[rbp] - 001d0 48 89 85 78 06 - 00 00 mov QWORD PTR $T13[rbp], rax - 001d7 48 83 bd 78 06 - 00 00 00 cmp QWORD PTR $T13[rbp], 0 - 001df 74 1a je SHORT $LN8@ObfGenRand - 001e1 ba 01 00 00 00 mov edx, 1 - 001e6 48 8b 8d 78 06 - 00 00 mov rcx, QWORD PTR $T13[rbp] - 001ed e8 00 00 00 00 call ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z - 001f2 48 89 85 d8 06 - 00 00 mov QWORD PTR tv148[rbp], rax - 001f9 eb 0b jmp SHORT $LN9@ObfGenRand -$LN8@ObfGenRand: - 001fb 48 c7 85 d8 06 - 00 00 00 00 00 - 00 mov QWORD PTR tv148[rbp], 0 -$LN9@ObfGenRand: - -; 49 : return NULL; - - 00206 33 c0 xor eax, eax - 00208 eb 25 jmp SHORT $LN1@ObfGenRand -$LN4@ObfGenRand: - -; 50 : } -; 51 : Link->Label = LabelId; - - 0020a 48 8b 85 18 03 - 00 00 mov rax, QWORD PTR Link$[rbp] - 00211 8b 8d 10 07 00 - 00 mov ecx, DWORD PTR LabelId$[rbp] - 00217 89 48 1c mov DWORD PTR [rax+28], ecx - -; 52 : Link->Flags = (CODE_FLAG_IS_INST | CODE_FLAG_IS_REL_JMP); - - 0021a 48 8b 85 18 03 - 00 00 mov rax, QWORD PTR Link$[rbp] - 00221 c7 40 18 06 00 - 00 00 mov DWORD PTR [rax+24], 6 - -; 53 : -; 54 : return Link; - - 00228 48 8b 85 18 03 - 00 00 mov rax, QWORD PTR Link$[rbp] -$LN1@ObfGenRand: - -; 55 : } - - 0022f 48 8b f8 mov rdi, rax - 00232 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] - 00236 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z$rtcFrameData - 0023d e8 00 00 00 00 call _RTC_CheckStackVars - 00242 48 8b c7 mov rax, rdi - 00245 48 8b 8d e0 06 - 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 0024c 48 33 cd xor rcx, rbp - 0024f e8 00 00 00 00 call __security_check_cookie - 00254 48 8d a5 f0 06 - 00 00 lea rsp, QWORD PTR [rbp+1776] - 0025b 5f pop rdi - 0025c 5e pop rsi - 0025d 5d pop rbp - 0025e c3 ret 0 -?ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z ENDP ; ObfGenRandomJcc -_TEXT ENDS -; COMDAT text$x -text$x SEGMENT -MachineState$ = 8 -EncoderInstruction$ = 48 -EncoderRequest$ = 496 -EncodeBuffer$ = 712 -ReturnedSize$ = 756 -Link$ = 792 -$T8 = 1400 -$T9 = 1480 -$T10 = 1560 -$T11 = 1592 -$T12 = 1624 -$T13 = 1656 -$T14 = 1696 -tv77 = 1748 -tv148 = 1752 -tv136 = 1752 -__$ArrayPad$ = 1760 -LabelId$ = 1808 -DisplacementWidth$ = 1816 -?dtor$0@?0??ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA PROC ; `ObfGenRandomJcc'::`1'::dtor$0 - 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 55 push rbp - 0000b 57 push rdi - 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] - 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 00019 48 8b 8d 58 06 - 00 00 mov rcx, QWORD PTR $T12[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 -?dtor$0@?0??ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA ENDP ; `ObfGenRandomJcc'::`1'::dtor$0 -text$x ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT text$x -text$x SEGMENT -MachineState$ = 8 -EncoderInstruction$ = 48 -EncoderRequest$ = 496 -EncodeBuffer$ = 712 -ReturnedSize$ = 756 -Link$ = 792 -$T8 = 1400 -$T9 = 1480 -$T10 = 1560 -$T11 = 1592 -$T12 = 1624 -$T13 = 1656 -$T14 = 1696 -tv77 = 1748 -tv148 = 1752 -tv136 = 1752 -__$ArrayPad$ = 1760 -LabelId$ = 1808 -DisplacementWidth$ = 1816 -?dtor$0@?0??ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA PROC ; `ObfGenRandomJcc'::`1'::dtor$0 - 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 55 push rbp - 0000b 57 push rdi - 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] - 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 00019 48 8b 8d 58 06 - 00 00 mov rcx, QWORD PTR $T12[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 -?dtor$0@?0??ObfGenRandomJcc@@YAPEAU_NATIVE_CODE_LINK@@KK@Z@4HA ENDP ; `ObfGenRandomJcc'::`1'::dtor$0 -text$x ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp -; COMDAT ?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ -_TEXT SEGMENT -tv66 = 192 -?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ PROC ; ObfGetRandomJccClass, COMDAT - -; 4 : { - -$LN21: - 00000 40 55 push rbp - 00002 57 push rdi - 00003 48 81 ec f8 00 - 00 00 sub rsp, 248 ; 000000f8H - 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0000f 48 8b fc mov rdi, rsp - 00012 b9 3e 00 00 00 mov ecx, 62 ; 0000003eH - 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:__BCD1AF07_OpaqueBranching@cpp - 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 5 : switch (rand() % 15) - - 0002a ff 15 00 00 00 - 00 call QWORD PTR __imp_rand - 00030 99 cdq - 00031 b9 0f 00 00 00 mov ecx, 15 - 00036 f7 f9 idiv ecx - 00038 8b c2 mov eax, edx - 0003a 89 85 c0 00 00 - 00 mov DWORD PTR tv66[rbp], eax - 00040 83 bd c0 00 00 - 00 0e cmp DWORD PTR tv66[rbp], 14 - 00047 0f 87 83 00 00 - 00 ja $LN2@ObfGetRand - 0004d 48 63 85 c0 00 - 00 00 movsxd rax, DWORD PTR tv66[rbp] - 00054 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__ImageBase - 0005b 8b 84 81 00 00 - 00 00 mov eax, DWORD PTR $LN20@ObfGetRand[rcx+rax*4] - 00062 48 03 c1 add rax, rcx - 00065 ff e0 jmp rax -$LN4@ObfGetRand: - -; 6 : { -; 7 : case 0: return XED_ICLASS_JL; - - 00067 b8 3a 01 00 00 mov eax, 314 ; 0000013aH - 0006c eb 67 jmp SHORT $LN1@ObfGetRand -$LN5@ObfGetRand: - -; 8 : case 1: return XED_ICLASS_JLE; - - 0006e b8 3b 01 00 00 mov eax, 315 ; 0000013bH - 00073 eb 60 jmp SHORT $LN1@ObfGetRand -$LN6@ObfGetRand: - -; 9 : case 2: return XED_ICLASS_JNB; - - 00075 b8 3e 01 00 00 mov eax, 318 ; 0000013eH - 0007a eb 59 jmp SHORT $LN1@ObfGetRand -$LN7@ObfGetRand: - -; 10 : case 3: return XED_ICLASS_JNBE; - - 0007c b8 3f 01 00 00 mov eax, 319 ; 0000013fH - 00081 eb 52 jmp SHORT $LN1@ObfGetRand -$LN8@ObfGetRand: - -; 11 : case 4: return XED_ICLASS_JNL; - - 00083 b8 40 01 00 00 mov eax, 320 ; 00000140H - 00088 eb 4b jmp SHORT $LN1@ObfGetRand -$LN9@ObfGetRand: - -; 12 : case 5: return XED_ICLASS_JNLE; - - 0008a b8 41 01 00 00 mov eax, 321 ; 00000141H - 0008f eb 44 jmp SHORT $LN1@ObfGetRand -$LN10@ObfGetRand: - -; 13 : case 6: return XED_ICLASS_JNO; - - 00091 b8 42 01 00 00 mov eax, 322 ; 00000142H - 00096 eb 3d jmp SHORT $LN1@ObfGetRand -$LN11@ObfGetRand: - -; 14 : case 7: return XED_ICLASS_JNP; - - 00098 b8 43 01 00 00 mov eax, 323 ; 00000143H - 0009d eb 36 jmp SHORT $LN1@ObfGetRand -$LN12@ObfGetRand: - -; 15 : case 8: return XED_ICLASS_JNS; - - 0009f b8 44 01 00 00 mov eax, 324 ; 00000144H - 000a4 eb 2f jmp SHORT $LN1@ObfGetRand -$LN13@ObfGetRand: - -; 16 : case 9: return XED_ICLASS_JNZ; - - 000a6 b8 45 01 00 00 mov eax, 325 ; 00000145H - 000ab eb 28 jmp SHORT $LN1@ObfGetRand -$LN14@ObfGetRand: - -; 17 : case 10: return XED_ICLASS_JO; - - 000ad b8 46 01 00 00 mov eax, 326 ; 00000146H - 000b2 eb 21 jmp SHORT $LN1@ObfGetRand -$LN15@ObfGetRand: - -; 18 : case 11: return XED_ICLASS_JP; - - 000b4 b8 47 01 00 00 mov eax, 327 ; 00000147H - 000b9 eb 1a jmp SHORT $LN1@ObfGetRand -$LN16@ObfGetRand: - -; 19 : case 12: return XED_ICLASS_JRCXZ; - - 000bb b8 48 01 00 00 mov eax, 328 ; 00000148H - 000c0 eb 13 jmp SHORT $LN1@ObfGetRand -$LN17@ObfGetRand: - -; 20 : case 13: return XED_ICLASS_JS; - - 000c2 b8 49 01 00 00 mov eax, 329 ; 00000149H - 000c7 eb 0c jmp SHORT $LN1@ObfGetRand -$LN18@ObfGetRand: - -; 21 : case 14: return XED_ICLASS_JZ; - - 000c9 b8 4a 01 00 00 mov eax, 330 ; 0000014aH - 000ce eb 05 jmp SHORT $LN1@ObfGetRand -$LN2@ObfGetRand: - -; 22 : } -; 23 : return XED_ICLASS_JLE; - - 000d0 b8 3b 01 00 00 mov eax, 315 ; 0000013bH -$LN1@ObfGetRand: - -; 24 : } - - 000d5 48 8d a5 d8 00 - 00 00 lea rsp, QWORD PTR [rbp+216] - 000dc 5f pop rdi - 000dd 5d pop rbp - 000de c3 ret 0 - 000df 90 npad 1 -$LN20@ObfGetRand: - 000e0 00 00 00 00 DD $LN4@ObfGetRand - 000e4 00 00 00 00 DD $LN5@ObfGetRand - 000e8 00 00 00 00 DD $LN6@ObfGetRand - 000ec 00 00 00 00 DD $LN7@ObfGetRand - 000f0 00 00 00 00 DD $LN8@ObfGetRand - 000f4 00 00 00 00 DD $LN9@ObfGetRand - 000f8 00 00 00 00 DD $LN10@ObfGetRand - 000fc 00 00 00 00 DD $LN11@ObfGetRand - 00100 00 00 00 00 DD $LN12@ObfGetRand - 00104 00 00 00 00 DD $LN13@ObfGetRand - 00108 00 00 00 00 DD $LN14@ObfGetRand - 0010c 00 00 00 00 DD $LN15@ObfGetRand - 00110 00 00 00 00 DD $LN16@ObfGetRand - 00114 00 00 00 00 DD $LN17@ObfGetRand - 00118 00 00 00 00 DD $LN18@ObfGetRand -?ObfGetRandomJccClass@@YA?AW4xed_iclass_enum_t@@XZ ENDP ; ObfGetRandomJccClass -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT ??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z -_TEXT SEGMENT -this$ = 224 -__flags$ = 232 -??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z PROC ; _NATIVE_CODE_BLOCK::`scalar deleting destructor', COMDAT -$LN4: - 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx - 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00009 55 push rbp - 0000a 57 push rdi - 0000b 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00017 48 8b fc mov rdi, rsp - 0001a b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002e 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00035 e8 00 00 00 00 call ??1_NATIVE_CODE_BLOCK@@QEAA@XZ - 0003a 8b 85 e8 00 00 - 00 mov eax, DWORD PTR __flags$[rbp] - 00040 83 e0 01 and eax, 1 - 00043 85 c0 test eax, eax - 00045 74 11 je SHORT $LN2@scalar - 00047 ba 30 00 00 00 mov edx, 48 ; 00000030H - 0004c 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00053 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete -$LN2@scalar: - 00058 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0005f 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00066 5f pop rdi - 00067 5d pop rbp - 00068 c3 ret 0 -??_G_NATIVE_CODE_BLOCK@@QEAAPEAXI@Z ENDP ; _NATIVE_CODE_BLOCK::`scalar deleting destructor' -_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@@QEBAAEBV?$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@@QEBAAEBV?$allocator@K@2@XZ PROC ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first, COMDAT - -; 1347 : constexpr const _Ty1& _Get_first() const 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 - -; 1348 : return *this; - - 00036 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - -; 1349 : } - - 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@@QEBAAEBV?$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\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@@AEBAAEBV?$allocator@K@2@XZ -_TEXT SEGMENT -this$ = 224 -?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEBAAEBV?$allocator@K@2@XZ PROC ; std::vector >::_Getal, COMDAT - -; 1735 : const _Alty& _Getal() const 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 - -; 1736 : 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@@QEBAAEBV?$allocator@K@2@XZ ; std::_Compressed_pair,std::_Vector_val >,1>::_Get_first - 00045 90 npad 1 - -; 1737 : } - - 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@@AEBAAEBV?$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 ?_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 ?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z -_TEXT SEGMENT -_Lock$ = 4 -_Pnext$ = 40 -_Pnextptr$4 = 72 -__$ArrayPad$ = 280 -this$ = 320 -_First$ = 328 -_Last$ = 336 -?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z PROC ; std::vector >::_Orphan_range, COMDAT - -; 1711 : void _Orphan_range(pointer _First, pointer _Last) const { // orphan iterators within specified (inclusive) range - -$LN9: - 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 48 01 - 00 00 sub rsp, 328 ; 00000148H - 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0001d 48 8b fc mov rdi, rsp - 00020 b9 52 00 00 00 mov ecx, 82 ; 00000052H - 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 68 - 01 00 00 mov rcx, QWORD PTR [rsp+360] - 00034 48 8b 05 00 00 - 00 00 mov rax, QWORD PTR __security_cookie - 0003b 48 33 c5 xor rax, rbp - 0003e 48 89 85 18 01 - 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 00045 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 0004c e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1712 : #if _ITERATOR_DEBUG_LEVEL == 2 -; 1713 : _Lockit _Lock(_LOCK_DEBUG); - - 00051 ba 03 00 00 00 mov edx, 3 - 00056 48 8d 4d 04 lea rcx, QWORD PTR _Lock$[rbp] - 0005a ff 15 00 00 00 - 00 call QWORD PTR __imp_??0_Lockit@std@@QEAA@H@Z - -; 1714 : -; 1715 : _Iterator_base12** _Pnext = &_Mypair._Myval2._Myproxy->_Myfirstiter; - - 00060 48 8b 85 40 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00067 48 8b 00 mov rax, QWORD PTR [rax] - 0006a 48 83 c0 08 add rax, 8 - 0006e 48 89 45 28 mov QWORD PTR _Pnext$[rbp], rax -$LN2@Orphan_ran: - -; 1716 : while (*_Pnext) { - - 00072 48 8b 45 28 mov rax, QWORD PTR _Pnext$[rbp] - 00076 48 83 38 00 cmp QWORD PTR [rax], 0 - 0007a 74 5c je SHORT $LN3@Orphan_ran - -; 1717 : const auto _Pnextptr = static_cast(**_Pnext)._Ptr; - - 0007c 48 8b 45 28 mov rax, QWORD PTR _Pnext$[rbp] - 00080 48 8b 00 mov rax, QWORD PTR [rax] - 00083 48 8b 40 10 mov rax, QWORD PTR [rax+16] - 00087 48 89 45 48 mov QWORD PTR _Pnextptr$4[rbp], rax - -; 1718 : if (_Pnextptr < _First || _Last < _Pnextptr) { // skip the iterator - - 0008b 48 8b 85 48 01 - 00 00 mov rax, QWORD PTR _First$[rbp] - 00092 48 39 45 48 cmp QWORD PTR _Pnextptr$4[rbp], rax - 00096 72 0d jb SHORT $LN6@Orphan_ran - 00098 48 8b 45 48 mov rax, QWORD PTR _Pnextptr$4[rbp] - 0009c 48 39 85 50 01 - 00 00 cmp QWORD PTR _Last$[rbp], rax - 000a3 73 11 jae SHORT $LN4@Orphan_ran -$LN6@Orphan_ran: - -; 1719 : _Pnext = &(*_Pnext)->_Mynextiter; - - 000a5 48 8b 45 28 mov rax, QWORD PTR _Pnext$[rbp] - 000a9 48 8b 00 mov rax, QWORD PTR [rax] - 000ac 48 83 c0 08 add rax, 8 - 000b0 48 89 45 28 mov QWORD PTR _Pnext$[rbp], rax - -; 1720 : } else { // orphan the iterator - - 000b4 eb 20 jmp SHORT $LN5@Orphan_ran -$LN4@Orphan_ran: - -; 1721 : (*_Pnext)->_Myproxy = nullptr; - - 000b6 48 8b 45 28 mov rax, QWORD PTR _Pnext$[rbp] - 000ba 48 8b 00 mov rax, QWORD PTR [rax] - 000bd 48 c7 00 00 00 - 00 00 mov QWORD PTR [rax], 0 - -; 1722 : *_Pnext = (*_Pnext)->_Mynextiter; - - 000c4 48 8b 45 28 mov rax, QWORD PTR _Pnext$[rbp] - 000c8 48 8b 00 mov rax, QWORD PTR [rax] - 000cb 48 8b 4d 28 mov rcx, QWORD PTR _Pnext$[rbp] - 000cf 48 8b 40 08 mov rax, QWORD PTR [rax+8] - 000d3 48 89 01 mov QWORD PTR [rcx], rax -$LN5@Orphan_ran: - -; 1723 : } -; 1724 : } - - 000d6 eb 9a jmp SHORT $LN2@Orphan_ran -$LN3@Orphan_ran: - -; 1725 : #else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 ^^^ // vvv _ITERATOR_DEBUG_LEVEL != 2 vvv -; 1726 : (void) _First; -; 1727 : (void) _Last; -; 1728 : #endif // _ITERATOR_DEBUG_LEVEL == 2 -; 1729 : } - - 000d8 48 8d 4d 04 lea rcx, QWORD PTR _Lock$[rbp] - 000dc ff 15 00 00 00 - 00 call QWORD PTR __imp_??1_Lockit@std@@QEAA@XZ - 000e2 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 000e6 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z$rtcFrameData - 000ed e8 00 00 00 00 call _RTC_CheckStackVars - 000f2 48 8b 8d 18 01 - 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 000f9 48 33 cd xor rcx, rbp - 000fc e8 00 00 00 00 call __security_check_cookie - 00101 48 8d a5 28 01 - 00 00 lea rsp, QWORD PTR [rbp+296] - 00108 5f pop rdi - 00109 5d pop rbp - 0010a c3 ret 0 -?_Orphan_range@?$vector@KV?$allocator@K@std@@@std@@AEBAXPEAK0@Z ENDP ; std::vector >::_Orphan_range -_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 ?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ -_TEXT SEGMENT -?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ PROC ; std::vector >::_Xlength, COMDAT - -; 1703 : [[noreturn]] static void _Xlength() { - -$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:__BF2A7ACC_vector - 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1704 : _Xlength_error("vector too long"); - - 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@FOIKENOD@vector?5too?5long@ - 00031 e8 00 00 00 00 call ?_Xlength_error@std@@YAXPEBD@Z ; std::_Xlength_error -$LN2@Xlength: - -; 1705 : } - - 00036 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 0003d 5f pop rdi - 0003e 5d pop rbp - 0003f c3 ret 0 -?_Xlength@?$vector@KV?$allocator@K@std@@@std@@CAXXZ ENDP ; std::vector >::_Xlength -_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 ?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z -_TEXT SEGMENT -_My_data$ = 8 -_Myfirst$ = 40 -_Mylast$ = 72 -_Myend$ = 104 -tv90 = 312 -tv88 = 320 -tv86 = 328 -this$ = 368 -_Newvec$ = 376 -_Newsize$ = 384 -_Newcapacity$ = 392 -?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z PROC ; std::vector >::_Change_array, COMDAT - -; 1666 : void _Change_array(const pointer _Newvec, const size_type _Newsize, const size_type _Newcapacity) { - -$LN4: - 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 78 01 - 00 00 sub rsp, 376 ; 00000178H - 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00022 48 8b fc mov rdi, rsp - 00025 b9 5e 00 00 00 mov ecx, 94 ; 0000005eH - 0002a b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002f f3 ab rep stosd - 00031 48 8b 8c 24 98 - 01 00 00 mov rcx, QWORD PTR [rsp+408] - 00039 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00040 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1667 : // orphan all iterators, discard old array, acquire new array -; 1668 : auto& _My_data = _Mypair._Myval2; - - 00045 48 8b 85 70 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 0004c 48 89 45 08 mov QWORD PTR _My_data$[rbp], rax - -; 1669 : pointer& _Myfirst = _My_data._Myfirst; - - 00050 48 8b 45 08 mov rax, QWORD PTR _My_data$[rbp] - 00054 48 83 c0 08 add rax, 8 - 00058 48 89 45 28 mov QWORD PTR _Myfirst$[rbp], rax - -; 1670 : pointer& _Mylast = _My_data._Mylast; - - 0005c 48 8b 45 08 mov rax, QWORD PTR _My_data$[rbp] - 00060 48 83 c0 10 add rax, 16 - 00064 48 89 45 48 mov QWORD PTR _Mylast$[rbp], rax - -; 1671 : pointer& _Myend = _My_data._Myend; - - 00068 48 8b 45 08 mov rax, QWORD PTR _My_data$[rbp] - 0006c 48 83 c0 18 add rax, 24 - 00070 48 89 45 68 mov QWORD PTR _Myend$[rbp], rax - -; 1672 : -; 1673 : _My_data._Orphan_all(); - - 00074 48 8b 4d 08 mov rcx, QWORD PTR _My_data$[rbp] - 00078 e8 00 00 00 00 call ?_Orphan_all@_Container_base12@std@@QEAAXXZ ; std::_Container_base12::_Orphan_all - -; 1674 : -; 1675 : if (_Myfirst) { // destroy and deallocate old array - - 0007d 48 8b 45 28 mov rax, QWORD PTR _Myfirst$[rbp] - 00081 48 83 38 00 cmp QWORD PTR [rax], 0 - 00085 74 71 je SHORT $LN2@Change_arr - -; 1676 : _Destroy(_Myfirst, _Mylast); - - 00087 48 8b 45 48 mov rax, QWORD PTR _Mylast$[rbp] - 0008b 4c 8b 00 mov r8, QWORD PTR [rax] - 0008e 48 8b 45 28 mov rax, QWORD PTR _Myfirst$[rbp] - 00092 48 8b 10 mov rdx, QWORD PTR [rax] - 00095 48 8b 8d 70 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0009c e8 00 00 00 00 call ?_Destroy@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK0@Z ; std::vector >::_Destroy - -; 1677 : _Getal().deallocate(_Myfirst, static_cast(_Myend - _Myfirst)); - - 000a1 48 8b 8d 70 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 000a8 e8 00 00 00 00 call ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ; std::vector >::_Getal - 000ad 48 89 85 38 01 - 00 00 mov QWORD PTR tv90[rbp], rax - 000b4 48 8b 45 68 mov rax, QWORD PTR _Myend$[rbp] - 000b8 48 8b 4d 28 mov rcx, QWORD PTR _Myfirst$[rbp] - 000bc 48 8b 09 mov rcx, QWORD PTR [rcx] - 000bf 48 8b 00 mov rax, QWORD PTR [rax] - 000c2 48 2b c1 sub rax, rcx - 000c5 48 c1 f8 02 sar rax, 2 - 000c9 48 89 85 40 01 - 00 00 mov QWORD PTR tv88[rbp], rax - 000d0 48 8b 45 28 mov rax, QWORD PTR _Myfirst$[rbp] - 000d4 48 8b 00 mov rax, QWORD PTR [rax] - 000d7 48 89 85 48 01 - 00 00 mov QWORD PTR tv86[rbp], rax - 000de 4c 8b 85 40 01 - 00 00 mov r8, QWORD PTR tv88[rbp] - 000e5 48 8b 95 48 01 - 00 00 mov rdx, QWORD PTR tv86[rbp] - 000ec 48 8b 8d 38 01 - 00 00 mov rcx, QWORD PTR tv90[rbp] - 000f3 e8 00 00 00 00 call ?deallocate@?$allocator@K@std@@QEAAXQEAK_K@Z ; std::allocator::deallocate -$LN2@Change_arr: - -; 1678 : } -; 1679 : -; 1680 : _Myfirst = _Newvec; - - 000f8 48 8b 45 28 mov rax, QWORD PTR _Myfirst$[rbp] - 000fc 48 8b 8d 78 01 - 00 00 mov rcx, QWORD PTR _Newvec$[rbp] - 00103 48 89 08 mov QWORD PTR [rax], rcx - -; 1681 : _Mylast = _Newvec + _Newsize; - - 00106 48 8b 85 78 01 - 00 00 mov rax, QWORD PTR _Newvec$[rbp] - 0010d 48 8b 8d 80 01 - 00 00 mov rcx, QWORD PTR _Newsize$[rbp] - 00114 48 8d 04 88 lea rax, QWORD PTR [rax+rcx*4] - 00118 48 8b 4d 48 mov rcx, QWORD PTR _Mylast$[rbp] - 0011c 48 89 01 mov QWORD PTR [rcx], rax - -; 1682 : _Myend = _Newvec + _Newcapacity; - - 0011f 48 8b 85 78 01 - 00 00 mov rax, QWORD PTR _Newvec$[rbp] - 00126 48 8b 8d 88 01 - 00 00 mov rcx, QWORD PTR _Newcapacity$[rbp] - 0012d 48 8d 04 88 lea rax, QWORD PTR [rax+rcx*4] - 00131 48 8b 4d 68 mov rcx, QWORD PTR _Myend$[rbp] - 00135 48 89 01 mov QWORD PTR [rcx], rax - -; 1683 : } - - 00138 48 8d a5 58 01 - 00 00 lea rsp, QWORD PTR [rbp+344] - 0013f 5f pop rdi - 00140 5d pop rbp - 00141 c3 ret 0 -?_Change_array@?$vector@KV?$allocator@K@std@@@std@@AEAAXQEAK_K1@Z ENDP ; std::vector >::_Change_array -_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 ?_Calculate_growth@?$vector@KV?$allocator@K@std@@@std@@AEBA_K_K@Z -_TEXT SEGMENT -_Oldcapacity$ = 8 -_Geometric$ = 40 -tv67 = 248 -this$ = 288 -_Newsize$ = 296 -?_Calculate_growth@?$vector@KV?$allocator@K@std@@@std@@AEBA_K_K@Z PROC ; std::vector >::_Calculate_growth, COMDAT - -; 1615 : size_type _Calculate_growth(const size_type _Newsize) const { - -$LN5: - 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 28 01 - 00 00 sub rsp, 296 ; 00000128H - 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00018 48 8b fc mov rdi, rsp - 0001b b9 4a 00 00 00 mov ecx, 74 ; 0000004aH - 00020 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00025 f3 ab rep stosd - 00027 48 8b 8c 24 48 - 01 00 00 mov rcx, QWORD PTR [rsp+328] - 0002f 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1616 : // given _Oldcapacity and _Newsize, calculate geometric growth -; 1617 : const size_type _Oldcapacity = capacity(); - - 0003b 48 8b 8d 20 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00042 e8 00 00 00 00 call ?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ ; std::vector >::capacity - 00047 48 89 45 08 mov QWORD PTR _Oldcapacity$[rbp], rax - -; 1618 : -; 1619 : if (_Oldcapacity > max_size() - _Oldcapacity / 2) { - - 0004b 48 8b 8d 20 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00052 e8 00 00 00 00 call ?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ ; std::vector >::max_size - 00057 48 89 85 f8 00 - 00 00 mov QWORD PTR tv67[rbp], rax - 0005e 33 d2 xor edx, edx - 00060 48 8b 45 08 mov rax, QWORD PTR _Oldcapacity$[rbp] - 00064 b9 02 00 00 00 mov ecx, 2 - 00069 48 f7 f1 div rcx - 0006c 48 8b 8d f8 00 - 00 00 mov rcx, QWORD PTR tv67[rbp] - 00073 48 2b c8 sub rcx, rax - 00076 48 8b c1 mov rax, rcx - 00079 48 39 45 08 cmp QWORD PTR _Oldcapacity$[rbp], rax - 0007d 76 09 jbe SHORT $LN2@Calculate_ - -; 1620 : return _Newsize; // geometric growth would overflow - - 0007f 48 8b 85 28 01 - 00 00 mov rax, QWORD PTR _Newsize$[rbp] - 00086 eb 36 jmp SHORT $LN1@Calculate_ -$LN2@Calculate_: - -; 1621 : } -; 1622 : -; 1623 : const size_type _Geometric = _Oldcapacity + _Oldcapacity / 2; - - 00088 33 d2 xor edx, edx - 0008a 48 8b 45 08 mov rax, QWORD PTR _Oldcapacity$[rbp] - 0008e b9 02 00 00 00 mov ecx, 2 - 00093 48 f7 f1 div rcx - 00096 48 8b 4d 08 mov rcx, QWORD PTR _Oldcapacity$[rbp] - 0009a 48 03 c8 add rcx, rax - 0009d 48 8b c1 mov rax, rcx - 000a0 48 89 45 28 mov QWORD PTR _Geometric$[rbp], rax - -; 1624 : -; 1625 : if (_Geometric < _Newsize) { - - 000a4 48 8b 85 28 01 - 00 00 mov rax, QWORD PTR _Newsize$[rbp] - 000ab 48 39 45 28 cmp QWORD PTR _Geometric$[rbp], rax - 000af 73 09 jae SHORT $LN3@Calculate_ - -; 1626 : return _Newsize; // geometric growth would be insufficient - - 000b1 48 8b 85 28 01 - 00 00 mov rax, QWORD PTR _Newsize$[rbp] - 000b8 eb 04 jmp SHORT $LN1@Calculate_ -$LN3@Calculate_: - -; 1627 : } -; 1628 : -; 1629 : return _Geometric; // geometric growth is sufficient - - 000ba 48 8b 45 28 mov rax, QWORD PTR _Geometric$[rbp] -$LN1@Calculate_: - -; 1630 : } - - 000be 48 8d a5 08 01 - 00 00 lea rsp, QWORD PTR [rbp+264] - 000c5 5f pop rdi - 000c6 5d pop rbp - 000c7 c3 ret 0 -?_Calculate_growth@?$vector@KV?$allocator@K@std@@@std@@AEBA_K_K@Z ENDP ; std::vector >::_Calculate_growth -_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 ?_Umove_if_noexcept@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00@Z -_TEXT SEGMENT -$T1 = 196 -this$ = 256 -_First$ = 264 -_Last$ = 272 -_Dest$ = 280 -?_Umove_if_noexcept@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00@Z PROC ; std::vector >::_Umove_if_noexcept, COMDAT - -; 1605 : void _Umove_if_noexcept(pointer _First, pointer _Last, pointer _Dest) { - -$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 18 01 - 00 00 sub rsp, 280 ; 00000118H - 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] - 00022 48 8b fc mov rdi, rsp - 00025 b9 46 00 00 00 mov ecx, 70 ; 00000046H - 0002a b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002f f3 ab rep stosd - 00031 48 8b 8c 24 38 - 01 00 00 mov rcx, QWORD PTR [rsp+312] - 00039 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00040 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1606 : // move_if_noexcept [_First, _Last) to raw _Dest, using allocator -; 1607 : _Umove_if_noexcept1(_First, _Last, _Dest, - - 00045 48 8d 85 c4 00 - 00 00 lea rax, QWORD PTR $T1[rbp] - 0004c 48 8b f8 mov rdi, rax - 0004f 33 c0 xor eax, eax - 00051 b9 01 00 00 00 mov ecx, 1 - 00056 f3 aa rep stosb - 00058 0f b6 85 c4 00 - 00 00 movzx eax, BYTE PTR $T1[rbp] - 0005f 88 44 24 20 mov BYTE PTR [rsp+32], al - 00063 4c 8b 8d 18 01 - 00 00 mov r9, QWORD PTR _Dest$[rbp] - 0006a 4c 8b 85 10 01 - 00 00 mov r8, QWORD PTR _Last$[rbp] - 00071 48 8b 95 08 01 - 00 00 mov rdx, QWORD PTR _First$[rbp] - 00078 48 8b 8d 00 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0007f e8 00 00 00 00 call ?_Umove_if_noexcept1@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00U?$integral_constant@_N$00@2@@Z ; std::vector >::_Umove_if_noexcept1 - -; 1608 : bool_constant, negation>>>{}); -; 1609 : } - - 00084 48 8d a5 e8 00 - 00 00 lea rsp, QWORD PTR [rbp+232] - 0008b 5f pop rdi - 0008c 5d pop rbp - 0008d c3 ret 0 -?_Umove_if_noexcept@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00@Z ENDP ; std::vector >::_Umove_if_noexcept -_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 ?_Umove_if_noexcept1@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00U?$integral_constant@_N$00@2@@Z -_TEXT SEGMENT -this$ = 224 -_First$ = 232 -_Last$ = 240 -_Dest$ = 248 -__formal$ = 256 -?_Umove_if_noexcept1@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00U?$integral_constant@_N$00@2@@Z PROC ; std::vector >::_Umove_if_noexcept1, COMDAT - -; 1595 : void _Umove_if_noexcept1(pointer _First, pointer _Last, pointer _Dest, true_type) { - -$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 e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00022 48 8b fc mov rdi, rsp - 00025 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0002a b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002f f3 ab rep stosd - 00031 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 00039 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00040 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1596 : // move [_First, _Last) to raw _Dest, using allocator -; 1597 : _Uninitialized_move(_First, _Last, _Dest, _Getal()); - - 00045 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0004c e8 00 00 00 00 call ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ; std::vector >::_Getal - 00051 4c 8b c8 mov r9, rax - 00054 4c 8b 85 f8 00 - 00 00 mov r8, QWORD PTR _Dest$[rbp] - 0005b 48 8b 95 f0 00 - 00 00 mov rdx, QWORD PTR _Last$[rbp] - 00062 48 8b 8d e8 00 - 00 00 mov rcx, QWORD PTR _First$[rbp] - 00069 e8 00 00 00 00 call ??$_Uninitialized_move@PEAKV?$allocator@K@std@@@std@@YAPEAKQEAK0PEAKAEAV?$allocator@K@0@@Z ; std::_Uninitialized_move > - -; 1598 : } - - 0006e 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00075 5f pop rdi - 00076 5d pop rbp - 00077 c3 ret 0 -?_Umove_if_noexcept1@?$vector@KV?$allocator@K@std@@@std@@AEAAXPEAK00U?$integral_constant@_N$00@2@@Z ENDP ; std::vector >::_Umove_if_noexcept1 -_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 ?_Umove@?$vector@KV?$allocator@K@std@@@std@@AEAAPEAKPEAK00@Z -_TEXT SEGMENT -this$ = 224 -_First$ = 232 -_Last$ = 240 -_Dest$ = 248 -?_Umove@?$vector@KV?$allocator@K@std@@@std@@AEAAPEAKPEAK00@Z PROC ; std::vector >::_Umove, COMDAT - -; 1591 : pointer _Umove(pointer _First, pointer _Last, pointer _Dest) { // move [_First, _Last) to raw _Dest, using allocator - -$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 e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00022 48 8b fc mov rdi, rsp - 00025 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0002a b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002f f3 ab rep stosd - 00031 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 00039 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00040 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1592 : return _Uninitialized_move(_First, _Last, _Dest, _Getal()); - - 00045 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0004c e8 00 00 00 00 call ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEAAAEAV?$allocator@K@2@XZ ; std::vector >::_Getal - 00051 4c 8b c8 mov r9, rax - 00054 4c 8b 85 f8 00 - 00 00 mov r8, QWORD PTR _Dest$[rbp] - 0005b 48 8b 95 f0 00 - 00 00 mov rdx, QWORD PTR _Last$[rbp] - 00062 48 8b 8d e8 00 - 00 00 mov rcx, QWORD PTR _First$[rbp] - 00069 e8 00 00 00 00 call ??$_Uninitialized_move@PEAKV?$allocator@K@std@@@std@@YAPEAKQEAK0PEAKAEAV?$allocator@K@0@@Z ; std::_Uninitialized_move > - -; 1593 : } - - 0006e 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00075 5f pop rdi - 00076 5d pop rbp - 00077 c3 ret 0 -?_Umove@?$vector@KV?$allocator@K@std@@@std@@AEAAPEAKPEAK00@Z ENDP ; std::vector >::_Umove -_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 ?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ -_TEXT SEGMENT -_My_data$ = 8 -this$ = 256 -?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ PROC ; std::vector >::capacity, COMDAT - -; 1492 : _NODISCARD size_type capacity() const 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 08 01 - 00 00 sub rsp, 264 ; 00000108H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00013 48 8b fc mov rdi, rsp - 00016 b9 42 00 00 00 mov ecx, 66 ; 00000042H - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 28 - 01 00 00 mov rcx, QWORD PTR [rsp+296] - 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1493 : auto& _My_data = _Mypair._Myval2; - - 00036 48 8b 85 00 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 0003d 48 89 45 08 mov QWORD PTR _My_data$[rbp], rax - -; 1494 : return static_cast(_My_data._Myend - _My_data._Myfirst); - - 00041 48 8b 45 08 mov rax, QWORD PTR _My_data$[rbp] - 00045 48 8b 4d 08 mov rcx, QWORD PTR _My_data$[rbp] - 00049 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] - 0004d 48 8b 40 18 mov rax, QWORD PTR [rax+24] - 00051 48 2b c1 sub rax, rcx - 00054 48 c1 f8 02 sar rax, 2 - -; 1495 : } - - 00058 48 8d a5 e8 00 - 00 00 lea rsp, QWORD PTR [rbp+232] - 0005f 5f pop rdi - 00060 5d pop rbp - 00061 c3 ret 0 -?capacity@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ ENDP ; std::vector >::capacity -_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 ?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ -_TEXT SEGMENT -$T1 = 200 -$T2 = 232 -this$ = 288 -?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ PROC ; std::vector >::max_size, COMDAT - -; 1487 : _NODISCARD size_type max_size() const 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 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 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__BF2A7ACC_vector - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 1488 : return (_STD min)( - - 00036 48 8b 8d 20 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0003d e8 00 00 00 00 call ?_Getal@?$vector@KV?$allocator@K@std@@@std@@AEBAAEBV?$allocator@K@2@XZ ; std::vector >::_Getal - 00042 48 8b c8 mov rcx, rax - 00045 e8 00 00 00 00 call ?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z ; std::_Default_allocator_traits >::max_size - 0004a 48 89 85 c8 00 - 00 00 mov QWORD PTR $T1[rbp], rax - 00051 e8 00 00 00 00 call ?max@?$numeric_limits@_J@std@@SA_JXZ ; std::numeric_limits<__int64>::max - 00056 48 89 85 e8 00 - 00 00 mov QWORD PTR $T2[rbp], rax - 0005d 48 8d 95 c8 00 - 00 00 lea rdx, QWORD PTR $T1[rbp] - 00064 48 8d 8d e8 00 - 00 00 lea rcx, QWORD PTR $T2[rbp] - 0006b e8 00 00 00 00 call ??$min@_K@std@@YAAEB_KAEB_K0@Z ; std::min - 00070 48 8b 00 mov rax, QWORD PTR [rax] - -; 1489 : static_cast((numeric_limits::max)()), _Alty_traits::max_size(_Getal())); -; 1490 : } - - 00073 48 8d a5 08 01 - 00 00 lea rsp, QWORD PTR [rbp+264] - 0007a 5f pop rdi - 0007b 5d pop rbp - 0007c c3 ret 0 -?max_size@?$vector@KV?$allocator@K@std@@@std@@QEBA_KXZ ENDP ; std::vector >::max_size -_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 ?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z -_TEXT SEGMENT -this$ = 224 -_Val$ = 232 -?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z PROC ; std::vector >::push_back, COMDAT - -; 716 : void push_back(const _Ty& _Val) { // insert element at end, provide strong guarantee - -$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:__BF2A7ACC_vector - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 717 : emplace_back(_Val); - - 0003b 48 8b 95 e8 00 - 00 00 mov rdx, QWORD PTR _Val$[rbp] - 00042 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00049 e8 00 00 00 00 call ??$emplace_back@AEBK@?$vector@KV?$allocator@K@std@@@std@@QEAA@AEBK@Z ; std::vector >::emplace_back - -; 718 : } - - 0004e 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00055 5f pop rdi - 00056 5d pop rbp - 00057 c3 ret 0 -?push_back@?$vector@KV?$allocator@K@std@@@std@@QEAAXAEBK@Z ENDP ; std::vector >::push_back -_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 ?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z -_TEXT SEGMENT -__formal$ = 224 -?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z PROC ; std::_Default_allocator_traits >::max_size, COMDAT - -; 702 : _NODISCARD static size_type max_size(const _Alloc&) 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 - -; 703 : return static_cast(-1) / sizeof(value_type); - - 00036 48 b8 ff ff ff - ff ff ff ff 3f mov rax, 4611686018427387903 ; 3fffffffffffffffH - -; 704 : } - - 00040 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00047 5f pop rdi - 00048 5d pop rbp - 00049 c3 ret 0 -?max_size@?$_Default_allocator_traits@V?$allocator@K@std@@@std@@SA_KAEBV?$allocator@K@2@@Z ENDP ; std::_Default_allocator_traits >::max_size -_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 ?allocate@?$allocator@K@std@@QEAAPEAK_K@Z -_TEXT SEGMENT -this$ = 224 -_Count$ = 232 -?allocate@?$allocator@K@std@@QEAAPEAK_K@Z PROC ; std::allocator::allocate, COMDAT - -; 806 : _NODISCARD __declspec(allocator) _Ty* allocate(_CRT_GUARDOVERFLOW const size_t _Count) { - -$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 - -; 807 : return static_cast<_Ty*>(_Allocate<_New_alignof<_Ty>>(_Get_size_of_n(_Count))); - - 0003b 48 8b 8d e8 00 - 00 00 mov rcx, QWORD PTR _Count$[rbp] - 00042 e8 00 00 00 00 call ??$_Get_size_of_n@$03@std@@YA_K_K@Z ; std::_Get_size_of_n<4> - 00047 48 8b c8 mov rcx, rax - 0004a e8 00 00 00 00 call ??$_Allocate@$0BA@U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K@Z ; std::_Allocate<16,std::_Default_allocate_traits,0> - -; 808 : } - - 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 -?allocate@?$allocator@K@std@@QEAAPEAK_K@Z ENDP ; std::allocator::allocate -_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 -; COMDAT ??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z -_TEXT SEGMENT -this$ = 224 -__flags$ = 232 -??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z PROC ; _NATIVE_CODE_LINK::`scalar deleting destructor', COMDAT -$LN4: - 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx - 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00009 55 push rbp - 0000a 57 push rdi - 0000b 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00017 48 8b fc mov rdi, rsp - 0001a b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002e 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00035 e8 00 00 00 00 call ??1_NATIVE_CODE_LINK@@QEAA@XZ ; _NATIVE_CODE_LINK::~_NATIVE_CODE_LINK - 0003a 8b 85 e8 00 00 - 00 mov eax, DWORD PTR __flags$[rbp] - 00040 83 e0 01 and eax, 1 - 00043 85 c0 test eax, eax - 00045 74 11 je SHORT $LN2@scalar - 00047 ba f0 00 00 00 mov edx, 240 ; 000000f0H - 0004c 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00053 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete -$LN2@scalar: - 00058 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0005f 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00066 5f pop rdi - 00067 5d pop rbp - 00068 c3 ret 0 -??_G_NATIVE_CODE_LINK@@QEAAPEAXI@Z ENDP ; _NATIVE_CODE_LINK::`scalar deleting destructor' -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\$Fanta\IntelXED\build\obj\wkit\include\xed\xed-encoder-hl.h -; COMDAT xed_inst1 -_TEXT SEGMENT -inst$ = 224 -mode$ = 232 -iclass$ = 240 -effective_operand_width$ = 248 -op0$ = 256 -xed_inst1 PROC ; COMDAT - -; 490 : xed_encoder_operand_t op0) { - - 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d - 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d - 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 56 push rsi - 00016 57 push rdi - 00017 48 81 ec e0 00 - 00 00 sub rsp, 224 ; 000000e0H - 0001e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00023 48 8b fc mov rdi, rsp - 00026 b9 38 00 00 00 mov ecx, 56 ; 00000038H - 0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00030 f3 ab rep stosd - 00032 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0003a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__21860875_xed-encoder-hl@h - 00041 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 491 : -; 492 : inst->mode=mode; - - 00046 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR inst$[rbp] - 0004d 48 8b 8d e8 00 - 00 00 mov rcx, QWORD PTR mode$[rbp] - 00054 48 89 08 mov QWORD PTR [rax], rcx - -; 493 : inst->iclass = iclass; - - 00057 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR inst$[rbp] - 0005e 8b 8d f0 00 00 - 00 mov ecx, DWORD PTR iclass$[rbp] - 00064 89 48 08 mov DWORD PTR [rax+8], ecx - -; 494 : inst->effective_operand_width = effective_operand_width; - - 00067 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR inst$[rbp] - 0006e 8b 8d f8 00 00 - 00 mov ecx, DWORD PTR effective_operand_width$[rbp] - 00074 89 48 0c mov DWORD PTR [rax+12], ecx - -; 495 : inst->effective_address_width = 0; - - 00077 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR inst$[rbp] - 0007e c7 40 10 00 00 - 00 00 mov DWORD PTR [rax+16], 0 - -; 496 : inst->prefixes.i = 0; - - 00085 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR inst$[rbp] - 0008c c7 40 14 00 00 - 00 00 mov DWORD PTR [rax+20], 0 - -; 497 : inst->operands[0] = op0; - - 00093 b8 30 00 00 00 mov eax, 48 ; 00000030H - 00098 48 6b c0 00 imul rax, rax, 0 - 0009c 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR inst$[rbp] - 000a3 48 8d 7c 01 20 lea rdi, QWORD PTR [rcx+rax+32] - 000a8 48 8b b5 00 01 - 00 00 mov rsi, QWORD PTR op0$[rbp] - 000af b9 30 00 00 00 mov ecx, 48 ; 00000030H - 000b4 f3 a4 rep movsb - -; 498 : inst->noperands = 1; - - 000b6 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR inst$[rbp] - 000bd c7 40 18 01 00 - 00 00 mov DWORD PTR [rax+24], 1 - -; 499 : } - - 000c4 48 8d a5 c0 00 - 00 00 lea rsp, QWORD PTR [rbp+192] - 000cb 5f pop rdi - 000cc 5e pop rsi - 000cd 5d pop rbp - 000ce c3 ret 0 -xed_inst1 ENDP -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; File C:\$Fanta\IntelXED\build\obj\wkit\include\xed\xed-encoder-hl.h -; COMDAT xed_relbr -_TEXT SEGMENT -o$ = 8 -__$ArrayPad$ = 264 -$T4 = 304 -brdisp$ = 312 -width_bits$ = 320 -xed_relbr PROC ; COMDAT - -; 105 : xed_uint_t width_bits) { - - 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d - 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx - 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000e 55 push rbp - 0000f 56 push rsi - 00010 57 push rdi - 00011 48 81 ec 30 01 - 00 00 sub rsp, 304 ; 00000130H - 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0001d 48 8b fc mov rdi, rsp - 00020 b9 4c 00 00 00 mov ecx, 76 ; 0000004cH - 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 58 - 01 00 00 mov rcx, QWORD PTR [rsp+344] - 00034 48 8b 05 00 00 - 00 00 mov rax, QWORD PTR __security_cookie - 0003b 48 33 c5 xor rax, rbp - 0003e 48 89 85 08 01 - 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 00045 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__21860875_xed-encoder-hl@h - 0004c e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 106 : xed_encoder_operand_t o; -; 107 : o.type = XED_ENCODER_OPERAND_TYPE_BRDISP; - - 00051 c7 45 08 01 00 - 00 00 mov DWORD PTR o$[rbp], 1 - -; 108 : o.u.brdisp = brdisp; - - 00058 8b 85 38 01 00 - 00 mov eax, DWORD PTR brdisp$[rbp] - 0005e 89 45 10 mov DWORD PTR o$[rbp+8], eax - -; 109 : o.width_bits = width_bits; - - 00061 8b 85 40 01 00 - 00 mov eax, DWORD PTR width_bits$[rbp] - 00067 89 45 30 mov DWORD PTR o$[rbp+40], eax - -; 110 : return o; - - 0006a 48 8d 45 08 lea rax, QWORD PTR o$[rbp] - 0006e 48 8b bd 30 01 - 00 00 mov rdi, QWORD PTR $T4[rbp] - 00075 48 8b f0 mov rsi, rax - 00078 b9 30 00 00 00 mov ecx, 48 ; 00000030H - 0007d f3 a4 rep movsb - 0007f 48 8b 85 30 01 - 00 00 mov rax, QWORD PTR $T4[rbp] - -; 111 : } - - 00086 48 8b f8 mov rdi, rax - 00089 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 0008d 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:xed_relbr$rtcFrameData - 00094 e8 00 00 00 00 call _RTC_CheckStackVars - 00099 48 8b c7 mov rax, rdi - 0009c 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 000a3 48 33 cd xor rcx, rbp - 000a6 e8 00 00 00 00 call __security_check_cookie - 000ab 48 8d a5 10 01 - 00 00 lea rsp, QWORD PTR [rbp+272] - 000b2 5f pop rdi - 000b3 5e pop rsi - 000b4 5d pop rbp - 000b5 c3 ret 0 -xed_relbr 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\xloctime -; COMDAT ??$_Getvals@_W@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z -_TEXT SEGMENT -$T1 = 200 -tv93 = 264 -tv85 = 264 -this$ = 304 -__formal$ = 312 -_Lobj$ = 320 -??$_Getvals@_W@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z PROC ; std::time_get > >::_Getvals, COMDAT - -; 176 : void __CLR_OR_THIS_CALL _Getvals(_Elem2, const _Locinfo& _Lobj) { // get values - -$LN5: - 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 - 00005 66 89 54 24 10 mov WORD PTR [rsp+16], dx - 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000f 55 push rbp - 00010 56 push rsi - 00011 57 push rdi - 00012 48 81 ec 30 01 - 00 00 sub rsp, 304 ; 00000130H - 00019 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0001e 48 8b fc mov rdi, rsp - 00021 b9 4c 00 00 00 mov ecx, 76 ; 0000004cH - 00026 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002b f3 ab rep stosd - 0002d 48 8b 8c 24 58 - 01 00 00 mov rcx, QWORD PTR [rsp+344] - 00035 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__886F7F70_xloctime - 0003c e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 177 : _Cvt = _Lobj._Getcvt(); - - 00041 48 8d 95 c8 00 - 00 00 lea rdx, QWORD PTR $T1[rbp] - 00048 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Lobj$[rbp] - 0004f ff 15 00 00 00 - 00 call QWORD PTR __imp_?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ - 00055 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0005c 48 8d 79 2c lea rdi, QWORD PTR [rcx+44] - 00060 48 8b f0 mov rsi, rax - 00063 b9 2c 00 00 00 mov ecx, 44 ; 0000002cH - 00068 f3 a4 rep movsb - -; 178 : -; 179 : if (is_same_v<_Elem2, wchar_t>) { - - 0006a 33 c0 xor eax, eax - 0006c 83 f8 01 cmp eax, 1 - 0006f 74 5c je SHORT $LN2@Getvals - -; 180 : _Days = reinterpret_cast(_Maklocwcs(reinterpret_cast(_Lobj._W_Getdays()))); - - 00071 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Lobj$[rbp] - 00078 ff 15 00 00 00 - 00 call QWORD PTR __imp_?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ - 0007e 48 8b c8 mov rcx, rax - 00081 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs - 00086 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0008d 48 89 41 10 mov QWORD PTR [rcx+16], rax - -; 181 : _Months = - - 00091 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Lobj$[rbp] - 00098 ff 15 00 00 00 - 00 call QWORD PTR __imp_?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ - 0009e 48 8b c8 mov rcx, rax - 000a1 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs - 000a6 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 000ad 48 89 41 18 mov QWORD PTR [rcx+24], rax - -; 182 : reinterpret_cast(_Maklocwcs(reinterpret_cast(_Lobj._W_Getmonths()))); -; 183 : _Ampm = reinterpret_cast(_Maklocwcs(L":AM:am:PM:pm")); - - 000b1 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_1BK@MHIKGOKE@?$AA?3?$AAA?$AAM?$AA?3?$AAa?$AAm?$AA?3?$AAP?$AAM?$AA?3?$AAp?$AAm@ - 000b8 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs - 000bd 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 000c4 48 89 41 20 mov QWORD PTR [rcx+32], rax - -; 184 : } else { - - 000c8 e9 a3 00 00 00 jmp $LN3@Getvals -$LN2@Getvals: - -; 185 : _Days = _Maklocstr(_Lobj._Getdays(), static_cast<_Elem*>(nullptr), _Cvt); - - 000cd 48 8b 85 30 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 000d4 48 83 c0 2c add rax, 44 ; 0000002cH - 000d8 48 89 85 08 01 - 00 00 mov QWORD PTR tv85[rbp], rax - 000df 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Lobj$[rbp] - 000e6 ff 15 00 00 00 - 00 call QWORD PTR __imp_?_Getdays@_Locinfo@std@@QEBAPEBDXZ - 000ec 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR tv85[rbp] - 000f3 4c 8b c1 mov r8, rcx - 000f6 33 d2 xor edx, edx - 000f8 48 8b c8 mov rcx, rax - 000fb e8 00 00 00 00 call ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ; std::_Maklocstr - 00100 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00107 48 89 41 10 mov QWORD PTR [rcx+16], rax - -; 186 : _Months = _Maklocstr(_Lobj._Getmonths(), static_cast<_Elem*>(nullptr), _Cvt); - - 0010b 48 8b 85 30 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00112 48 83 c0 2c add rax, 44 ; 0000002cH - 00116 48 89 85 08 01 - 00 00 mov QWORD PTR tv93[rbp], rax - 0011d 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Lobj$[rbp] - 00124 ff 15 00 00 00 - 00 call QWORD PTR __imp_?_Getmonths@_Locinfo@std@@QEBAPEBDXZ - 0012a 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR tv93[rbp] - 00131 4c 8b c1 mov r8, rcx - 00134 33 d2 xor edx, edx - 00136 48 8b c8 mov rcx, rax - 00139 e8 00 00 00 00 call ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ; std::_Maklocstr - 0013e 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00145 48 89 41 18 mov QWORD PTR [rcx+24], rax - -; 187 : _Ampm = _Maklocstr(":AM:am:PM:pm", static_cast<_Elem*>(nullptr), _Cvt); - - 00149 48 8b 85 30 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00150 48 83 c0 2c add rax, 44 ; 0000002cH - 00154 4c 8b c0 mov r8, rax - 00157 33 d2 xor edx, edx - 00159 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_0N@LPFKKEBD@?3AM?3am?3PM?3pm@ - 00160 e8 00 00 00 00 call ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ; std::_Maklocstr - 00165 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0016c 48 89 41 20 mov QWORD PTR [rcx+32], rax -$LN3@Getvals: - -; 188 : } -; 189 : } - - 00170 48 8d a5 10 01 - 00 00 lea rsp, QWORD PTR [rbp+272] - 00177 5f pop rdi - 00178 5e pop rsi - 00179 5d pop rbp - 0017a c3 ret 0 -??$_Getvals@_W@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z ENDP ; std::time_get > >::_Getvals -_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@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z -_TEXT SEGMENT -$T1 = 200 -tv93 = 264 -tv85 = 264 -this$ = 304 -__formal$ = 312 -_Lobj$ = 320 -??$_Getvals@_W@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z PROC ; std::time_get > >::_Getvals, COMDAT - -; 176 : void __CLR_OR_THIS_CALL _Getvals(_Elem2, const _Locinfo& _Lobj) { // get values - -$LN5: - 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 - 00005 66 89 54 24 10 mov WORD PTR [rsp+16], dx - 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 0000f 55 push rbp - 00010 56 push rsi - 00011 57 push rdi - 00012 48 81 ec 30 01 - 00 00 sub rsp, 304 ; 00000130H - 00019 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0001e 48 8b fc mov rdi, rsp - 00021 b9 4c 00 00 00 mov ecx, 76 ; 0000004cH - 00026 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002b f3 ab rep stosd - 0002d 48 8b 8c 24 58 - 01 00 00 mov rcx, QWORD PTR [rsp+344] - 00035 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__886F7F70_xloctime - 0003c e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 177 : _Cvt = _Lobj._Getcvt(); - - 00041 48 8d 95 c8 00 - 00 00 lea rdx, QWORD PTR $T1[rbp] - 00048 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Lobj$[rbp] - 0004f ff 15 00 00 00 - 00 call QWORD PTR __imp_?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ - 00055 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0005c 48 8d 79 2c lea rdi, QWORD PTR [rcx+44] - 00060 48 8b f0 mov rsi, rax - 00063 b9 2c 00 00 00 mov ecx, 44 ; 0000002cH - 00068 f3 a4 rep movsb - -; 178 : -; 179 : if (is_same_v<_Elem2, wchar_t>) { - - 0006a 33 c0 xor eax, eax - 0006c 83 f8 01 cmp eax, 1 - 0006f 74 5c je SHORT $LN2@Getvals - -; 180 : _Days = reinterpret_cast(_Maklocwcs(reinterpret_cast(_Lobj._W_Getdays()))); - - 00071 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Lobj$[rbp] - 00078 ff 15 00 00 00 - 00 call QWORD PTR __imp_?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ - 0007e 48 8b c8 mov rcx, rax - 00081 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs - 00086 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0008d 48 89 41 10 mov QWORD PTR [rcx+16], rax - -; 181 : _Months = - - 00091 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Lobj$[rbp] - 00098 ff 15 00 00 00 - 00 call QWORD PTR __imp_?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ - 0009e 48 8b c8 mov rcx, rax - 000a1 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs - 000a6 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 000ad 48 89 41 18 mov QWORD PTR [rcx+24], rax - -; 182 : reinterpret_cast(_Maklocwcs(reinterpret_cast(_Lobj._W_Getmonths()))); -; 183 : _Ampm = reinterpret_cast(_Maklocwcs(L":AM:am:PM:pm")); - - 000b1 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_1BK@MHIKGOKE@?$AA?3?$AAA?$AAM?$AA?3?$AAa?$AAm?$AA?3?$AAP?$AAM?$AA?3?$AAp?$AAm@ - 000b8 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs - 000bd 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 000c4 48 89 41 20 mov QWORD PTR [rcx+32], rax - -; 184 : } else { - - 000c8 e9 a3 00 00 00 jmp $LN3@Getvals -$LN2@Getvals: - -; 185 : _Days = _Maklocstr(_Lobj._Getdays(), static_cast<_Elem*>(nullptr), _Cvt); - - 000cd 48 8b 85 30 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 000d4 48 83 c0 2c add rax, 44 ; 0000002cH - 000d8 48 89 85 08 01 - 00 00 mov QWORD PTR tv85[rbp], rax - 000df 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Lobj$[rbp] - 000e6 ff 15 00 00 00 - 00 call QWORD PTR __imp_?_Getdays@_Locinfo@std@@QEBAPEBDXZ - 000ec 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR tv85[rbp] - 000f3 4c 8b c1 mov r8, rcx - 000f6 33 d2 xor edx, edx - 000f8 48 8b c8 mov rcx, rax - 000fb e8 00 00 00 00 call ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ; std::_Maklocstr - 00100 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00107 48 89 41 10 mov QWORD PTR [rcx+16], rax - -; 186 : _Months = _Maklocstr(_Lobj._Getmonths(), static_cast<_Elem*>(nullptr), _Cvt); - - 0010b 48 8b 85 30 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00112 48 83 c0 2c add rax, 44 ; 0000002cH - 00116 48 89 85 08 01 - 00 00 mov QWORD PTR tv93[rbp], rax - 0011d 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Lobj$[rbp] - 00124 ff 15 00 00 00 - 00 call QWORD PTR __imp_?_Getmonths@_Locinfo@std@@QEBAPEBDXZ - 0012a 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR tv93[rbp] - 00131 4c 8b c1 mov r8, rcx - 00134 33 d2 xor edx, edx - 00136 48 8b c8 mov rcx, rax - 00139 e8 00 00 00 00 call ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ; std::_Maklocstr - 0013e 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00145 48 89 41 18 mov QWORD PTR [rcx+24], rax - -; 187 : _Ampm = _Maklocstr(":AM:am:PM:pm", static_cast<_Elem*>(nullptr), _Cvt); - - 00149 48 8b 85 30 01 - 00 00 mov rax, QWORD PTR this$[rbp] - 00150 48 83 c0 2c add rax, 44 ; 0000002cH - 00154 4c 8b c0 mov r8, rax - 00157 33 d2 xor edx, edx - 00159 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_C@_0N@LPFKKEBD@?3AM?3am?3PM?3pm@ - 00160 e8 00 00 00 00 call ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ; std::_Maklocstr - 00165 48 8b 8d 30 01 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0016c 48 89 41 20 mov QWORD PTR [rcx+32], rax -$LN3@Getvals: - -; 188 : } -; 189 : } - - 00170 48 8d a5 10 01 - 00 00 lea rsp, QWORD PTR [rbp+272] - 00177 5f pop rdi - 00178 5e pop rsi - 00179 5d pop rbp - 0017a c3 ret 0 -??$_Getvals@_W@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z ENDP ; std::time_get > >::_Getvals -_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\xlocale -; COMDAT ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z -_TEXT SEGMENT -_Count$ = 8 -_Ptrdest$ = 40 -_Ptrnext$1 = 72 -_Ptr$ = 320 -__formal$ = 328 -__formal$ = 336 -??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z PROC ; std::_Maklocstr, COMDAT - -; 563 : _Elem* __CRTDECL _Maklocstr(const char* _Ptr, _Elem*, const _Locinfo::_Cvtvec&) { - -$LN7: - 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 58 01 - 00 00 sub rsp, 344 ; 00000158H - 00018 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] - 0001d 48 8b fc mov rdi, rsp - 00020 b9 56 00 00 00 mov ecx, 86 ; 00000056H - 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 78 - 01 00 00 mov rcx, QWORD PTR [rsp+376] - 00034 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__0E648B51_xlocale - 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 564 : // convert C string to _Elem sequence using _Cvtvec -; 565 : size_t _Count = _CSTD strlen(_Ptr) + 1; - - 00040 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Ptr$[rbp] - 00047 e8 00 00 00 00 call strlen - 0004c 48 ff c0 inc rax - 0004f 48 89 45 08 mov QWORD PTR _Count$[rbp], rax - -; 566 : -; 567 : _Elem* _Ptrdest = static_cast<_Elem*>(_calloc_dbg(_Count, sizeof(_Elem), _CRT_BLOCK, __FILE__, __LINE__)); - - 00053 c7 44 24 20 37 - 02 00 00 mov DWORD PTR [rsp+32], 567 ; 00000237H - 0005b 4c 8d 0d 00 00 - 00 00 lea r9, OFFSET FLAT:??_C@_0GI@DEICPIDJ@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ - 00062 41 b8 02 00 00 - 00 mov r8d, 2 - 00068 ba 01 00 00 00 mov edx, 1 - 0006d 48 8b 4d 08 mov rcx, QWORD PTR _Count$[rbp] - 00071 ff 15 00 00 00 - 00 call QWORD PTR __imp__calloc_dbg - 00077 48 89 45 28 mov QWORD PTR _Ptrdest$[rbp], rax - -; 568 : -; 569 : if (!_Ptrdest) { - - 0007b 48 83 7d 28 00 cmp QWORD PTR _Ptrdest$[rbp], 0 - 00080 75 05 jne SHORT $LN5@Maklocstr - -; 570 : _Xbad_alloc(); - - 00082 e8 00 00 00 00 call ?_Xbad_alloc@std@@YAXXZ ; std::_Xbad_alloc -$LN5@Maklocstr: - -; 571 : } -; 572 : -; 573 : for (_Elem* _Ptrnext = _Ptrdest; 0 < _Count; --_Count, ++_Ptrnext, ++_Ptr) { - - 00087 48 8b 45 28 mov rax, QWORD PTR _Ptrdest$[rbp] - 0008b 48 89 45 48 mov QWORD PTR _Ptrnext$1[rbp], rax - 0008f eb 27 jmp SHORT $LN4@Maklocstr -$LN2@Maklocstr: - 00091 48 8b 45 08 mov rax, QWORD PTR _Count$[rbp] - 00095 48 ff c8 dec rax - 00098 48 89 45 08 mov QWORD PTR _Count$[rbp], rax - 0009c 48 8b 45 48 mov rax, QWORD PTR _Ptrnext$1[rbp] - 000a0 48 ff c0 inc rax - 000a3 48 89 45 48 mov QWORD PTR _Ptrnext$1[rbp], rax - 000a7 48 8b 85 40 01 - 00 00 mov rax, QWORD PTR _Ptr$[rbp] - 000ae 48 ff c0 inc rax - 000b1 48 89 85 40 01 - 00 00 mov QWORD PTR _Ptr$[rbp], rax -$LN4@Maklocstr: - 000b8 48 83 7d 08 00 cmp QWORD PTR _Count$[rbp], 0 - 000bd 76 12 jbe SHORT $LN3@Maklocstr - -; 574 : *_Ptrnext = static_cast<_Elem>(static_cast(*_Ptr)); - - 000bf 48 8b 45 48 mov rax, QWORD PTR _Ptrnext$1[rbp] - 000c3 48 8b 8d 40 01 - 00 00 mov rcx, QWORD PTR _Ptr$[rbp] - 000ca 0f b6 09 movzx ecx, BYTE PTR [rcx] - 000cd 88 08 mov BYTE PTR [rax], cl - -; 575 : } - - 000cf eb c0 jmp SHORT $LN2@Maklocstr -$LN3@Maklocstr: - -; 576 : -; 577 : return _Ptrdest; - - 000d1 48 8b 45 28 mov rax, QWORD PTR _Ptrdest$[rbp] -$LN6@Maklocstr: - -; 578 : } - - 000d5 48 8d a5 28 01 - 00 00 lea rsp, QWORD PTR [rbp+296] - 000dc 5f pop rdi - 000dd 5d pop rbp - 000de c3 ret 0 -??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ENDP ; std::_Maklocstr -_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\xlocnum -; COMDAT ?_Maklocwcs@std@@YAPEA_WPEB_W@Z -_TEXT SEGMENT -_Count$ = 8 -_Ptrdest$ = 40 -_Ptr$ = 288 -?_Maklocwcs@std@@YAPEA_WPEB_W@Z PROC ; std::_Maklocwcs, COMDAT - -; 90 : inline wchar_t* _Maklocwcs(const wchar_t* _Ptr) { // copy NTWCS to allocated 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 38 01 - 00 00 sub rsp, 312 ; 00000138H - 0000e 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] - 00013 48 8b fc mov rdi, rsp - 00016 b9 4e 00 00 00 mov ecx, 78 ; 0000004eH - 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00020 f3 ab rep stosd - 00022 48 8b 8c 24 58 - 01 00 00 mov rcx, QWORD PTR [rsp+344] - 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__90E3ED46_xlocnum - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 91 : const size_t _Count = _CSTD wcslen(_Ptr) + 1; - - 00036 48 8b 8d 20 01 - 00 00 mov rcx, QWORD PTR _Ptr$[rbp] - 0003d ff 15 00 00 00 - 00 call QWORD PTR __imp_wcslen - 00043 48 ff c0 inc rax - 00046 48 89 45 08 mov QWORD PTR _Count$[rbp], rax - -; 92 : -; 93 : wchar_t* _Ptrdest = static_cast(_calloc_dbg(_Count, sizeof(wchar_t), _CRT_BLOCK, __FILE__, __LINE__)); - - 0004a 8b 05 00 00 00 - 00 mov eax, DWORD PTR ?__LINE__Var@?0??_Maklocwcs@std@@YAPEA_WPEB_W@Z@4JA - 00050 83 c0 03 add eax, 3 - 00053 89 44 24 20 mov DWORD PTR [rsp+32], eax - 00057 4c 8d 0d 00 00 - 00 00 lea r9, OFFSET FLAT:??_C@_0GI@LHMPPKJI@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ - 0005e 41 b8 02 00 00 - 00 mov r8d, 2 - 00064 ba 02 00 00 00 mov edx, 2 - 00069 48 8b 4d 08 mov rcx, QWORD PTR _Count$[rbp] - 0006d ff 15 00 00 00 - 00 call QWORD PTR __imp__calloc_dbg - 00073 48 89 45 28 mov QWORD PTR _Ptrdest$[rbp], rax - -; 94 : -; 95 : if (!_Ptrdest) { - - 00077 48 83 7d 28 00 cmp QWORD PTR _Ptrdest$[rbp], 0 - 0007c 75 05 jne SHORT $LN2@Maklocwcs - -; 96 : _Xbad_alloc(); - - 0007e e8 00 00 00 00 call ?_Xbad_alloc@std@@YAXXZ ; std::_Xbad_alloc -$LN2@Maklocwcs: - -; 97 : } -; 98 : -; 99 : _CSTD wmemcpy(_Ptrdest, _Ptr, _Count); - - 00083 4c 8b 45 08 mov r8, QWORD PTR _Count$[rbp] - 00087 48 8b 95 20 01 - 00 00 mov rdx, QWORD PTR _Ptr$[rbp] - 0008e 48 8b 4d 28 mov rcx, QWORD PTR _Ptrdest$[rbp] - 00092 e8 00 00 00 00 call wmemcpy - -; 100 : return _Ptrdest; - - 00097 48 8b 45 28 mov rax, QWORD PTR _Ptrdest$[rbp] -$LN3@Maklocwcs: - -; 101 : } - - 0009b 48 8d a5 08 01 - 00 00 lea rsp, QWORD PTR [rbp+264] - 000a2 5f pop rdi - 000a3 5d pop rbp - 000a4 c3 ret 0 -?_Maklocwcs@std@@YAPEA_WPEB_W@Z ENDP ; std::_Maklocwcs -_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\xlocale -; COMDAT ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z -_TEXT SEGMENT -_Count$ = 8 -_Count1$ = 40 -_Wchars$ = 72 -_Ptr1$ = 104 -_Bytes$ = 132 -_Wc$ = 164 -_Mbst1$ = 200 -_Ptrdest$ = 232 -_Ptrnext$ = 264 -_Mbst2$ = 296 -__$ArrayPad$ = 504 -_Ptr$ = 544 -__formal$ = 552 -_Cvt$ = 560 -??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z PROC ; std::_Maklocstr, COMDAT - -; 581 : inline wchar_t* __CRTDECL _Maklocstr(const char* _Ptr, wchar_t*, const _Locinfo::_Cvtvec& _Cvt) { - -$LN12: - 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 38 02 - 00 00 sub rsp, 568 ; 00000238H - 00018 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] - 0001d 48 8b fc mov rdi, rsp - 00020 b9 8e 00 00 00 mov ecx, 142 ; 0000008eH - 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 0002a f3 ab rep stosd - 0002c 48 8b 8c 24 58 - 02 00 00 mov rcx, QWORD PTR [rsp+600] - 00034 48 8b 05 00 00 - 00 00 mov rax, QWORD PTR __security_cookie - 0003b 48 33 c5 xor rax, rbp - 0003e 48 89 85 f8 01 - 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax - 00045 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__0E648B51_xlocale - 0004c e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 582 : // convert C string to wchar_t sequence using _Cvtvec -; 583 : size_t _Count; -; 584 : size_t _Count1; -; 585 : size_t _Wchars; -; 586 : const char* _Ptr1; -; 587 : int _Bytes; -; 588 : wchar_t _Wc; -; 589 : mbstate_t _Mbst1 = {}; - - 00051 48 8d 85 c8 00 - 00 00 lea rax, QWORD PTR _Mbst1$[rbp] - 00058 48 8b f8 mov rdi, rax - 0005b 33 c0 xor eax, eax - 0005d b9 08 00 00 00 mov ecx, 8 - 00062 f3 aa rep stosb - -; 590 : -; 591 : _Count1 = _CSTD strlen(_Ptr) + 1; - - 00064 48 8b 8d 20 02 - 00 00 mov rcx, QWORD PTR _Ptr$[rbp] - 0006b e8 00 00 00 00 call strlen - 00070 48 ff c0 inc rax - 00073 48 89 45 28 mov QWORD PTR _Count1$[rbp], rax - -; 592 : for (_Count = _Count1, _Wchars = 0, _Ptr1 = _Ptr; 0 < _Count; _Count -= _Bytes, _Ptr1 += _Bytes, ++_Wchars) { - - 00077 48 8b 45 28 mov rax, QWORD PTR _Count1$[rbp] - 0007b 48 89 45 08 mov QWORD PTR _Count$[rbp], rax - 0007f 48 c7 45 48 00 - 00 00 00 mov QWORD PTR _Wchars$[rbp], 0 - 00087 48 8b 85 20 02 - 00 00 mov rax, QWORD PTR _Ptr$[rbp] - 0008e 48 89 45 68 mov QWORD PTR _Ptr1$[rbp], rax - 00092 eb 35 jmp SHORT $LN4@Maklocstr -$LN2@Maklocstr: - 00094 48 63 85 84 00 - 00 00 movsxd rax, DWORD PTR _Bytes$[rbp] - 0009b 48 8b 4d 08 mov rcx, QWORD PTR _Count$[rbp] - 0009f 48 2b c8 sub rcx, rax - 000a2 48 8b c1 mov rax, rcx - 000a5 48 89 45 08 mov QWORD PTR _Count$[rbp], rax - 000a9 48 63 85 84 00 - 00 00 movsxd rax, DWORD PTR _Bytes$[rbp] - 000b0 48 8b 4d 68 mov rcx, QWORD PTR _Ptr1$[rbp] - 000b4 48 03 c8 add rcx, rax - 000b7 48 8b c1 mov rax, rcx - 000ba 48 89 45 68 mov QWORD PTR _Ptr1$[rbp], rax - 000be 48 8b 45 48 mov rax, QWORD PTR _Wchars$[rbp] - 000c2 48 ff c0 inc rax - 000c5 48 89 45 48 mov QWORD PTR _Wchars$[rbp], rax -$LN4@Maklocstr: - 000c9 48 83 7d 08 00 cmp QWORD PTR _Count$[rbp], 0 - 000ce 76 3a jbe SHORT $LN3@Maklocstr - -; 593 : if ((_Bytes = _Mbrtowc(&_Wc, _Ptr1, _Count, &_Mbst1, &_Cvt)) <= 0) { - - 000d0 48 8b 85 30 02 - 00 00 mov rax, QWORD PTR _Cvt$[rbp] - 000d7 48 89 44 24 20 mov QWORD PTR [rsp+32], rax - 000dc 4c 8d 8d c8 00 - 00 00 lea r9, QWORD PTR _Mbst1$[rbp] - 000e3 4c 8b 45 08 mov r8, QWORD PTR _Count$[rbp] - 000e7 48 8b 55 68 mov rdx, QWORD PTR _Ptr1$[rbp] - 000eb 48 8d 8d a4 00 - 00 00 lea rcx, QWORD PTR _Wc$[rbp] - 000f2 e8 00 00 00 00 call _Mbrtowc - 000f7 89 85 84 00 00 - 00 mov DWORD PTR _Bytes$[rbp], eax - 000fd 83 bd 84 00 00 - 00 00 cmp DWORD PTR _Bytes$[rbp], 0 - 00104 7f 02 jg SHORT $LN8@Maklocstr - -; 594 : break; - - 00106 eb 02 jmp SHORT $LN3@Maklocstr -$LN8@Maklocstr: - -; 595 : } -; 596 : } - - 00108 eb 8a jmp SHORT $LN2@Maklocstr -$LN3@Maklocstr: - -; 597 : -; 598 : ++_Wchars; // count terminating nul - - 0010a 48 8b 45 48 mov rax, QWORD PTR _Wchars$[rbp] - 0010e 48 ff c0 inc rax - 00111 48 89 45 48 mov QWORD PTR _Wchars$[rbp], rax - -; 599 : -; 600 : wchar_t* _Ptrdest = static_cast(_calloc_dbg(_Wchars, sizeof(wchar_t), _CRT_BLOCK, __FILE__, __LINE__)); - - 00115 c7 44 24 20 58 - 02 00 00 mov DWORD PTR [rsp+32], 600 ; 00000258H - 0011d 4c 8d 0d 00 00 - 00 00 lea r9, OFFSET FLAT:??_C@_0GI@DEICPIDJ@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ - 00124 41 b8 02 00 00 - 00 mov r8d, 2 - 0012a ba 02 00 00 00 mov edx, 2 - 0012f 48 8b 4d 48 mov rcx, QWORD PTR _Wchars$[rbp] - 00133 ff 15 00 00 00 - 00 call QWORD PTR __imp__calloc_dbg - 00139 48 89 85 e8 00 - 00 00 mov QWORD PTR _Ptrdest$[rbp], rax - -; 601 : -; 602 : if (!_Ptrdest) { - - 00140 48 83 bd e8 00 - 00 00 00 cmp QWORD PTR _Ptrdest$[rbp], 0 - 00148 75 05 jne SHORT $LN9@Maklocstr - -; 603 : _Xbad_alloc(); - - 0014a e8 00 00 00 00 call ?_Xbad_alloc@std@@YAXXZ ; std::_Xbad_alloc -$LN9@Maklocstr: - -; 604 : } -; 605 : -; 606 : wchar_t* _Ptrnext = _Ptrdest; - - 0014f 48 8b 85 e8 00 - 00 00 mov rax, QWORD PTR _Ptrdest$[rbp] - 00156 48 89 85 08 01 - 00 00 mov QWORD PTR _Ptrnext$[rbp], rax - -; 607 : mbstate_t _Mbst2 = {}; - - 0015d 48 8d 85 28 01 - 00 00 lea rax, QWORD PTR _Mbst2$[rbp] - 00164 48 8b f8 mov rdi, rax - 00167 33 c0 xor eax, eax - 00169 b9 08 00 00 00 mov ecx, 8 - 0016e f3 aa rep stosb - -; 608 : -; 609 : for (; 0 < _Wchars; _Count -= _Bytes, _Ptr += _Bytes, --_Wchars, ++_Ptrnext) { - - 00170 eb 4d jmp SHORT $LN7@Maklocstr -$LN5@Maklocstr: - 00172 48 63 85 84 00 - 00 00 movsxd rax, DWORD PTR _Bytes$[rbp] - 00179 48 8b 4d 08 mov rcx, QWORD PTR _Count$[rbp] - 0017d 48 2b c8 sub rcx, rax - 00180 48 8b c1 mov rax, rcx - 00183 48 89 45 08 mov QWORD PTR _Count$[rbp], rax - 00187 48 63 85 84 00 - 00 00 movsxd rax, DWORD PTR _Bytes$[rbp] - 0018e 48 8b 8d 20 02 - 00 00 mov rcx, QWORD PTR _Ptr$[rbp] - 00195 48 03 c8 add rcx, rax - 00198 48 8b c1 mov rax, rcx - 0019b 48 89 85 20 02 - 00 00 mov QWORD PTR _Ptr$[rbp], rax - 001a2 48 8b 45 48 mov rax, QWORD PTR _Wchars$[rbp] - 001a6 48 ff c8 dec rax - 001a9 48 89 45 48 mov QWORD PTR _Wchars$[rbp], rax - 001ad 48 8b 85 08 01 - 00 00 mov rax, QWORD PTR _Ptrnext$[rbp] - 001b4 48 83 c0 02 add rax, 2 - 001b8 48 89 85 08 01 - 00 00 mov QWORD PTR _Ptrnext$[rbp], rax -$LN7@Maklocstr: - 001bf 48 83 7d 48 00 cmp QWORD PTR _Wchars$[rbp], 0 - 001c4 76 40 jbe SHORT $LN6@Maklocstr - -; 610 : if ((_Bytes = _Mbrtowc(_Ptrnext, _Ptr, _Count1, &_Mbst2, &_Cvt)) <= 0) { - - 001c6 48 8b 85 30 02 - 00 00 mov rax, QWORD PTR _Cvt$[rbp] - 001cd 48 89 44 24 20 mov QWORD PTR [rsp+32], rax - 001d2 4c 8d 8d 28 01 - 00 00 lea r9, QWORD PTR _Mbst2$[rbp] - 001d9 4c 8b 45 28 mov r8, QWORD PTR _Count1$[rbp] - 001dd 48 8b 95 20 02 - 00 00 mov rdx, QWORD PTR _Ptr$[rbp] - 001e4 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR _Ptrnext$[rbp] - 001eb e8 00 00 00 00 call _Mbrtowc - 001f0 89 85 84 00 00 - 00 mov DWORD PTR _Bytes$[rbp], eax - 001f6 83 bd 84 00 00 - 00 00 cmp DWORD PTR _Bytes$[rbp], 0 - 001fd 7f 02 jg SHORT $LN10@Maklocstr - -; 611 : break; - - 001ff eb 05 jmp SHORT $LN6@Maklocstr -$LN10@Maklocstr: - -; 612 : } -; 613 : } - - 00201 e9 6c ff ff ff jmp $LN5@Maklocstr -$LN6@Maklocstr: - -; 614 : -; 615 : *_Ptrnext = L'\0'; - - 00206 33 c0 xor eax, eax - 00208 48 8b 8d 08 01 - 00 00 mov rcx, QWORD PTR _Ptrnext$[rbp] - 0020f 66 89 01 mov WORD PTR [rcx], ax - -; 616 : -; 617 : return _Ptrdest; - - 00212 48 8b 85 e8 00 - 00 00 mov rax, QWORD PTR _Ptrdest$[rbp] -$LN11@Maklocstr: - -; 618 : } - - 00219 48 8b f8 mov rdi, rax - 0021c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] - 00220 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z$rtcFrameData - 00227 e8 00 00 00 00 call _RTC_CheckStackVars - 0022c 48 8b c7 mov rax, rdi - 0022f 48 8b 8d f8 01 - 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00236 48 33 cd xor rcx, rbp - 00239 e8 00 00 00 00 call __security_check_cookie - 0023e 48 8d a5 08 02 - 00 00 lea rsp, QWORD PTR [rbp+520] - 00245 5f pop rdi - 00246 5d pop rbp - 00247 c3 ret 0 -??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ENDP ; std::_Maklocstr -_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 + 000cd 48 8b 85 30 01 + 00 00 mov rax, QWORD PTR this$[rbp] + 000d4 48 83 c0 2c add rax, 44 ; 0000002cH + 000d8 48 89 85 08 01 + 00 00 mov QWORD PTR tv85[rbp], rax + 000df 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Lobj$[rbp] + 000e6 ff 15 00 00 00 + 00 call QWORD PTR __imp_?_Getdays@_Locinfo@std@@QEBAPEBDXZ + 000ec 48 8b 8d 08 01 + 00 00 mov rcx, QWORD PTR tv85[rbp] + 000f3 4c 8b c1 mov r8, rcx + 000f6 33 d2 xor edx, edx + 000f8 48 8b c8 mov rcx, rax + 000fb e8 00 00 00 00 call ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ; std::_Maklocstr + 00100 48 8b 8d 30 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 00107 48 89 41 10 mov QWORD PTR [rcx+16], rax -; 1206 : #if _ITERATOR_DEBUG_LEVEL == 2 -; 1207 : if (_Myproxy) { // proxy allocated, drain it +; 186 : _Months = _Maklocstr(_Lobj._Getmonths(), static_cast<_Elem*>(nullptr), _Cvt); - 00047 48 8b 85 20 01 + 0010b 48 8b 85 30 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 + 00112 48 83 c0 2c add rax, 44 ; 0000002cH + 00116 48 89 85 08 01 + 00 00 mov QWORD PTR tv93[rbp], rax + 0011d 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Lobj$[rbp] + 00124 ff 15 00 00 00 + 00 call QWORD PTR __imp_?_Getmonths@_Locinfo@std@@QEBAPEBDXZ + 0012a 48 8b 8d 08 01 + 00 00 mov rcx, QWORD PTR tv93[rbp] + 00131 4c 8b c1 mov r8, rcx + 00134 33 d2 xor edx, edx + 00136 48 8b c8 mov rcx, rax + 00139 e8 00 00 00 00 call ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ; std::_Maklocstr + 0013e 48 8b 8d 30 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 00145 48 89 41 18 mov QWORD PTR [rcx+24], rax -; 1209 : -; 1210 : for (auto _Pnext = &_Myproxy->_Myfirstiter; *_Pnext; *_Pnext = (*_Pnext)->_Mynextiter) { +; 187 : _Ampm = _Maklocstr(":AM:am:PM:pm", static_cast<_Elem*>(nullptr), _Cvt); - 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 + 00149 48 8b 85 30 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 + 00150 48 83 c0 2c add rax, 44 ; 0000002cH + 00154 4c 8b c0 mov r8, rax + 00157 33 d2 xor edx, edx + 00159 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0N@LPFKKEBD@?3AM?3am?3PM?3pm@ + 00160 e8 00 00 00 00 call ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ; std::_Maklocstr + 00165 48 8b 8d 30 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 0016c 48 89 41 20 mov QWORD PTR [rcx+32], rax +$LN3@Getvals: -; 153 : } +; 188 : } +; 189 : } - 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 + 00170 48 8d a5 10 01 + 00 00 lea rsp, QWORD PTR [rbp+272] + 00177 5f pop rdi + 00178 5e pop rsi + 00179 5d pop rbp + 0017a c3 ret 0 +??$_Getvals@_W@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z ENDP ; std::time_get > >::_Getvals _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 ?_Allocate@_Default_allocate_traits@std@@SAPEAX_K@Z +; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xloctime +; COMDAT ??$_Getvals@_W@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z _TEXT SEGMENT -_Bytes$ = 224 -?_Allocate@_Default_allocate_traits@std@@SAPEAX_K@Z PROC ; std::_Default_allocate_traits::_Allocate, COMDAT - -; 76 : __declspec(allocator) static void* _Allocate(const size_t _Bytes) { +$T1 = 200 +tv93 = 264 +tv85 = 264 +this$ = 304 +__formal$ = 312 +_Lobj$ = 320 +??$_Getvals@_W@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z PROC ; std::time_get > >::_Getvals, 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 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__A58979FC_xmemory - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +; 176 : void __CLR_OR_THIS_CALL _Getvals(_Elem2, const _Locinfo& _Lobj) { // get values -; 77 : return ::operator new(_Bytes); +$LN5: + 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 00005 66 89 54 24 10 mov WORD PTR [rsp+16], dx + 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 0000f 55 push rbp + 00010 56 push rsi + 00011 57 push rdi + 00012 48 81 ec 30 01 + 00 00 sub rsp, 304 ; 00000130H + 00019 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001e 48 8b fc mov rdi, rsp + 00021 b9 4c 00 00 00 mov ecx, 76 ; 0000004cH + 00026 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 0002b f3 ab rep stosd + 0002d 48 8b 8c 24 58 + 01 00 00 mov rcx, QWORD PTR [rsp+344] + 00035 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__886F7F70_xloctime + 0003c e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 00036 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR _Bytes$[rbp] - 0003d e8 00 00 00 00 call ??2@YAPEAX_K@Z ; operator new +; 177 : _Cvt = _Lobj._Getcvt(); -; 78 : } + 00041 48 8d 95 c8 00 + 00 00 lea rdx, QWORD PTR $T1[rbp] + 00048 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Lobj$[rbp] + 0004f ff 15 00 00 00 + 00 call QWORD PTR __imp_?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ + 00055 48 8b 8d 30 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 0005c 48 8d 79 2c lea rdi, QWORD PTR [rcx+44] + 00060 48 8b f0 mov rsi, rax + 00063 b9 2c 00 00 00 mov ecx, 44 ; 0000002cH + 00068 f3 a4 rep movsb - 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 -?_Allocate@_Default_allocate_traits@std@@SAPEAX_K@Z ENDP ; std::_Default_allocate_traits::_Allocate -_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\exception -; COMDAT ?_Throw_bad_array_new_length@std@@YAXXZ -_TEXT SEGMENT -$T1 = 200 -?_Throw_bad_array_new_length@std@@YAXXZ PROC ; std::_Throw_bad_array_new_length, COMDAT +; 178 : +; 179 : if (is_same_v<_Elem2, wchar_t>) { -; 320 : [[noreturn]] inline void _Throw_bad_array_new_length() { + 0006a 33 c0 xor eax, eax + 0006c 83 f8 01 cmp eax, 1 + 0006f 74 5c je SHORT $LN2@Getvals -$LN3: - 00000 40 55 push rbp - 00002 57 push rdi - 00003 48 81 ec 18 01 - 00 00 sub rsp, 280 ; 00000118H - 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 0000f 48 8b fc mov rdi, rsp - 00012 b9 46 00 00 00 mov ecx, 70 ; 00000046H - 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:__E4152856_exception - 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +; 180 : _Days = reinterpret_cast(_Maklocwcs(reinterpret_cast(_Lobj._W_Getdays()))); -; 321 : _THROW(bad_array_new_length{}); - - 0002a 48 8d 8d c8 00 - 00 00 lea rcx, QWORD PTR $T1[rbp] - 00031 e8 00 00 00 00 call ??0bad_array_new_length@std@@QEAA@XZ ; std::bad_array_new_length::bad_array_new_length - 00036 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:_TI3?AVbad_array_new_length@std@@ - 0003d 48 8d 8d c8 00 - 00 00 lea rcx, QWORD PTR $T1[rbp] - 00044 e8 00 00 00 00 call _CxxThrowException -$LN2@Throw_bad_: - -; 322 : } - - 00049 48 8d a5 f8 00 - 00 00 lea rsp, QWORD PTR [rbp+248] - 00050 5f pop rdi - 00051 5d pop rbp - 00052 c3 ret 0 -?_Throw_bad_array_new_length@std@@YAXXZ ENDP ; std::_Throw_bad_array_new_length -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT ??_Gbad_array_new_length@std@@UEAAPEAXI@Z -_TEXT SEGMENT -this$ = 224 -__flags$ = 232 -??_Gbad_array_new_length@std@@UEAAPEAXI@Z PROC ; std::bad_array_new_length::`scalar deleting destructor', COMDAT -$LN4: - 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx - 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00009 55 push rbp - 0000a 57 push rdi - 0000b 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00017 48 8b fc mov rdi, rsp - 0001a b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002e 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00035 e8 00 00 00 00 call ??1bad_array_new_length@std@@UEAA@XZ - 0003a 8b 85 e8 00 00 - 00 mov eax, DWORD PTR __flags$[rbp] - 00040 83 e0 01 and eax, 1 - 00043 85 c0 test eax, eax - 00045 74 11 je SHORT $LN2@scalar - 00047 ba 18 00 00 00 mov edx, 24 - 0004c 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00053 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete -$LN2@scalar: - 00058 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0005f 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00066 5f pop rdi - 00067 5d pop rbp - 00068 c3 ret 0 -??_Gbad_array_new_length@std@@UEAAPEAXI@Z ENDP ; std::bad_array_new_length::`scalar deleting destructor' -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT ??0bad_array_new_length@std@@QEAA@AEBV01@@Z -_TEXT SEGMENT -this$ = 224 -__that$ = 232 -??0bad_array_new_length@std@@QEAA@AEBV01@@Z PROC ; std::bad_array_new_length::bad_array_new_length, COMDAT -$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 8b 95 e8 00 - 00 00 mov rdx, QWORD PTR __that$[rbp] - 00036 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0003d e8 00 00 00 00 call ??0bad_alloc@std@@QEAA@AEBV01@@Z - 00042 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00049 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_7bad_array_new_length@std@@6B@ - 00050 48 89 08 mov QWORD PTR [rax], rcx - 00053 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 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 -??0bad_array_new_length@std@@QEAA@AEBV01@@Z ENDP ; std::bad_array_new_length::bad_array_new_length -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT ??1bad_array_new_length@std@@UEAA@XZ -_TEXT SEGMENT -this$ = 224 -??1bad_array_new_length@std@@UEAA@XZ PROC ; std::bad_array_new_length::~bad_array_new_length, 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 8d e0 00 + 00071 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Lobj$[rbp] + 00078 ff 15 00 00 00 + 00 call QWORD PTR __imp_?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ + 0007e 48 8b c8 mov rcx, rax + 00081 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs + 00086 48 8b 8d 30 01 00 00 mov rcx, QWORD PTR this$[rbp] - 00031 e8 00 00 00 00 call ??1bad_alloc@std@@UEAA@XZ - 00036 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 0003d 5f pop rdi - 0003e 5d pop rbp - 0003f c3 ret 0 -??1bad_array_new_length@std@@UEAA@XZ ENDP ; std::bad_array_new_length::~bad_array_new_length -_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\vcruntime_exception.h -; COMDAT ??0bad_array_new_length@std@@QEAA@XZ -_TEXT SEGMENT -this$ = 224 -??0bad_array_new_length@std@@QEAA@XZ PROC ; std::bad_array_new_length::bad_array_new_length, COMDAT - -; 141 : { - -$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:__E75714E4_vcruntime_exception@h - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0008d 48 89 41 10 mov QWORD PTR [rcx+16], rax -; 140 : : bad_alloc("bad array new length") +; 181 : _Months = - 00036 48 8d 15 00 00 - 00 00 lea rdx, OFFSET FLAT:??_C@_0BF@KINCDENJ@bad?5array?5new?5length@ - 0003d 48 8b 8d e0 00 + 00091 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Lobj$[rbp] + 00098 ff 15 00 00 00 + 00 call QWORD PTR __imp_?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ + 0009e 48 8b c8 mov rcx, rax + 000a1 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs + 000a6 48 8b 8d 30 01 00 00 mov rcx, QWORD PTR this$[rbp] - 00044 e8 00 00 00 00 call ??0bad_alloc@std@@AEAA@QEBD@Z ; std::bad_alloc::bad_alloc + 000ad 48 89 41 18 mov QWORD PTR [rcx+24], rax -; 141 : { +; 182 : reinterpret_cast(_Maklocwcs(reinterpret_cast(_Lobj._W_Getmonths()))); +; 183 : _Ampm = reinterpret_cast(_Maklocwcs(L":AM:am:PM:pm")); - 00049 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00050 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_7bad_array_new_length@std@@6B@ - 00057 48 89 08 mov QWORD PTR [rax], rcx + 000b1 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_1BK@MHIKGOKE@?$AA?3?$AAA?$AAM?$AA?3?$AAa?$AAm?$AA?3?$AAP?$AAM?$AA?3?$AAp?$AAm@ + 000b8 e8 00 00 00 00 call ?_Maklocwcs@std@@YAPEA_WPEB_W@Z ; std::_Maklocwcs + 000bd 48 8b 8d 30 01 + 00 00 mov rcx, QWORD PTR this$[rbp] + 000c4 48 89 41 20 mov QWORD PTR [rcx+32], rax + +; 184 : } else { -; 142 : } + 000c8 e9 a3 00 00 00 jmp $LN3@Getvals +$LN2@Getvals: + +; 185 : _Days = _Maklocstr(_Lobj._Getdays(), static_cast<_Elem*>(nullptr), _Cvt); - 0005a 48 8b 85 e0 00 + 000cd 48 8b 85 30 01 00 00 mov rax, QWORD PTR this$[rbp] - 00061 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00068 5f pop rdi - 00069 5d pop rbp - 0006a c3 ret 0 -??0bad_array_new_length@std@@QEAA@XZ ENDP ; std::bad_array_new_length::bad_array_new_length -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT ??_Gbad_alloc@std@@UEAAPEAXI@Z -_TEXT SEGMENT -this$ = 224 -__flags$ = 232 -??_Gbad_alloc@std@@UEAAPEAXI@Z PROC ; std::bad_alloc::`scalar deleting destructor', COMDAT -$LN4: - 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx - 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00009 55 push rbp - 0000a 57 push rdi - 0000b 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00017 48 8b fc mov rdi, rsp - 0001a b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002e 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00035 e8 00 00 00 00 call ??1bad_alloc@std@@UEAA@XZ - 0003a 8b 85 e8 00 00 - 00 mov eax, DWORD PTR __flags$[rbp] - 00040 83 e0 01 and eax, 1 - 00043 85 c0 test eax, eax - 00045 74 11 je SHORT $LN2@scalar - 00047 ba 18 00 00 00 mov edx, 24 - 0004c 48 8b 8d e0 00 + 000d4 48 83 c0 2c add rax, 44 ; 0000002cH + 000d8 48 89 85 08 01 + 00 00 mov QWORD PTR tv85[rbp], rax + 000df 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Lobj$[rbp] + 000e6 ff 15 00 00 00 + 00 call QWORD PTR __imp_?_Getdays@_Locinfo@std@@QEBAPEBDXZ + 000ec 48 8b 8d 08 01 + 00 00 mov rcx, QWORD PTR tv85[rbp] + 000f3 4c 8b c1 mov r8, rcx + 000f6 33 d2 xor edx, edx + 000f8 48 8b c8 mov rcx, rax + 000fb e8 00 00 00 00 call ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ; std::_Maklocstr + 00100 48 8b 8d 30 01 00 00 mov rcx, QWORD PTR this$[rbp] - 00053 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete -$LN2@scalar: - 00058 48 8b 85 e0 00 + 00107 48 89 41 10 mov QWORD PTR [rcx+16], rax + +; 186 : _Months = _Maklocstr(_Lobj._Getmonths(), static_cast<_Elem*>(nullptr), _Cvt); + + 0010b 48 8b 85 30 01 00 00 mov rax, QWORD PTR this$[rbp] - 0005f 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00066 5f pop rdi - 00067 5d pop rbp - 00068 c3 ret 0 -??_Gbad_alloc@std@@UEAAPEAXI@Z ENDP ; std::bad_alloc::`scalar deleting destructor' -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT ??0bad_alloc@std@@QEAA@AEBV01@@Z -_TEXT SEGMENT -this$ = 224 -__that$ = 232 -??0bad_alloc@std@@QEAA@AEBV01@@Z PROC ; std::bad_alloc::bad_alloc, COMDAT -$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 8b 95 e8 00 - 00 00 mov rdx, QWORD PTR __that$[rbp] - 00036 48 8b 8d e0 00 + 00112 48 83 c0 2c add rax, 44 ; 0000002cH + 00116 48 89 85 08 01 + 00 00 mov QWORD PTR tv93[rbp], rax + 0011d 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Lobj$[rbp] + 00124 ff 15 00 00 00 + 00 call QWORD PTR __imp_?_Getmonths@_Locinfo@std@@QEBAPEBDXZ + 0012a 48 8b 8d 08 01 + 00 00 mov rcx, QWORD PTR tv93[rbp] + 00131 4c 8b c1 mov r8, rcx + 00134 33 d2 xor edx, edx + 00136 48 8b c8 mov rcx, rax + 00139 e8 00 00 00 00 call ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ; std::_Maklocstr + 0013e 48 8b 8d 30 01 00 00 mov rcx, QWORD PTR this$[rbp] - 0003d e8 00 00 00 00 call ??0exception@std@@QEAA@AEBV01@@Z ; std::exception::exception - 00042 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00049 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_7bad_alloc@std@@6B@ - 00050 48 89 08 mov QWORD PTR [rax], rcx - 00053 48 8b 85 e0 00 + 00145 48 89 41 18 mov QWORD PTR [rcx+24], rax + +; 187 : _Ampm = _Maklocstr(":AM:am:PM:pm", static_cast<_Elem*>(nullptr), _Cvt); + + 00149 48 8b 85 30 01 00 00 mov rax, QWORD PTR this$[rbp] - 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 -??0bad_alloc@std@@QEAA@AEBV01@@Z ENDP ; std::bad_alloc::bad_alloc -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT ??1bad_alloc@std@@UEAA@XZ -_TEXT SEGMENT -this$ = 224 -??1bad_alloc@std@@UEAA@XZ PROC ; std::bad_alloc::~bad_alloc, 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 8d e0 00 + 00150 48 83 c0 2c add rax, 44 ; 0000002cH + 00154 4c 8b c0 mov r8, rax + 00157 33 d2 xor edx, edx + 00159 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0N@LPFKKEBD@?3AM?3am?3PM?3pm@ + 00160 e8 00 00 00 00 call ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ; std::_Maklocstr + 00165 48 8b 8d 30 01 00 00 mov rcx, QWORD PTR this$[rbp] - 00031 e8 00 00 00 00 call ??1exception@std@@UEAA@XZ ; std::exception::~exception - 00036 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 0003d 5f pop rdi - 0003e 5d pop rbp - 0003f c3 ret 0 -??1bad_alloc@std@@UEAA@XZ ENDP ; std::bad_alloc::~bad_alloc + 0016c 48 89 41 20 mov QWORD PTR [rcx+32], rax +$LN3@Getvals: + +; 188 : } +; 189 : } + + 00170 48 8d a5 10 01 + 00 00 lea rsp, QWORD PTR [rbp+272] + 00177 5f pop rdi + 00178 5e pop rsi + 00179 5d pop rbp + 0017a c3 ret 0 +??$_Getvals@_W@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IEAAX_WAEBV_Locinfo@1@@Z ENDP ; std::time_get > >::_Getvals _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\vcruntime_exception.h -; COMDAT ??0bad_alloc@std@@AEAA@QEBD@Z +; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xlocale +; COMDAT ??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z _TEXT SEGMENT -this$ = 224 -_Message$ = 232 -??0bad_alloc@std@@AEAA@QEBD@Z PROC ; std::bad_alloc::bad_alloc, COMDAT +_Count$ = 8 +_Ptrdest$ = 40 +_Ptrnext$1 = 72 +_Ptr$ = 320 +__formal$ = 328 +__formal$ = 336 +??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z PROC ; std::_Maklocstr, COMDAT -; 130 : { +; 563 : _Elem* __CRTDECL _Maklocstr(const char* _Ptr, _Elem*, const _Locinfo::_Cvtvec&) { -$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:__E75714E4_vcruntime_exception@h - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode +$LN7: + 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 58 01 + 00 00 sub rsp, 344 ; 00000158H + 00018 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] + 0001d 48 8b fc mov rdi, rsp + 00020 b9 56 00 00 00 mov ecx, 86 ; 00000056H + 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 0002a f3 ab rep stosd + 0002c 48 8b 8c 24 78 + 01 00 00 mov rcx, QWORD PTR [rsp+376] + 00034 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__0E648B51_xlocale + 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode + +; 564 : // convert C string to _Elem sequence using _Cvtvec +; 565 : size_t _Count = _CSTD strlen(_Ptr) + 1; + + 00040 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Ptr$[rbp] + 00047 e8 00 00 00 00 call strlen + 0004c 48 ff c0 inc rax + 0004f 48 89 45 08 mov QWORD PTR _Count$[rbp], rax + +; 566 : +; 567 : _Elem* _Ptrdest = static_cast<_Elem*>(_calloc_dbg(_Count, sizeof(_Elem), _CRT_BLOCK, __FILE__, __LINE__)); + + 00053 c7 44 24 20 37 + 02 00 00 mov DWORD PTR [rsp+32], 567 ; 00000237H + 0005b 4c 8d 0d 00 00 + 00 00 lea r9, OFFSET FLAT:??_C@_0GI@DEICPIDJ@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ + 00062 41 b8 02 00 00 + 00 mov r8d, 2 + 00068 ba 01 00 00 00 mov edx, 1 + 0006d 48 8b 4d 08 mov rcx, QWORD PTR _Count$[rbp] + 00071 ff 15 00 00 00 + 00 call QWORD PTR __imp__calloc_dbg + 00077 48 89 45 28 mov QWORD PTR _Ptrdest$[rbp], rax + +; 568 : +; 569 : if (!_Ptrdest) { + + 0007b 48 83 7d 28 00 cmp QWORD PTR _Ptrdest$[rbp], 0 + 00080 75 05 jne SHORT $LN5@Maklocstr + +; 570 : _Xbad_alloc(); + + 00082 e8 00 00 00 00 call ?_Xbad_alloc@std@@YAXXZ ; std::_Xbad_alloc +$LN5@Maklocstr: + +; 571 : } +; 572 : +; 573 : for (_Elem* _Ptrnext = _Ptrdest; 0 < _Count; --_Count, ++_Ptrnext, ++_Ptr) { + + 00087 48 8b 45 28 mov rax, QWORD PTR _Ptrdest$[rbp] + 0008b 48 89 45 48 mov QWORD PTR _Ptrnext$1[rbp], rax + 0008f eb 27 jmp SHORT $LN4@Maklocstr +$LN2@Maklocstr: + 00091 48 8b 45 08 mov rax, QWORD PTR _Count$[rbp] + 00095 48 ff c8 dec rax + 00098 48 89 45 08 mov QWORD PTR _Count$[rbp], rax + 0009c 48 8b 45 48 mov rax, QWORD PTR _Ptrnext$1[rbp] + 000a0 48 ff c0 inc rax + 000a3 48 89 45 48 mov QWORD PTR _Ptrnext$1[rbp], rax + 000a7 48 8b 85 40 01 + 00 00 mov rax, QWORD PTR _Ptr$[rbp] + 000ae 48 ff c0 inc rax + 000b1 48 89 85 40 01 + 00 00 mov QWORD PTR _Ptr$[rbp], rax +$LN4@Maklocstr: + 000b8 48 83 7d 08 00 cmp QWORD PTR _Count$[rbp], 0 + 000bd 76 12 jbe SHORT $LN3@Maklocstr -; 129 : : exception(_Message, 1) +; 574 : *_Ptrnext = static_cast<_Elem>(static_cast(*_Ptr)); - 0003b 41 b8 01 00 00 - 00 mov r8d, 1 - 00041 48 8b 95 e8 00 - 00 00 mov rdx, QWORD PTR _Message$[rbp] - 00048 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 0004f e8 00 00 00 00 call ??0exception@std@@QEAA@QEBDH@Z ; std::exception::exception + 000bf 48 8b 45 48 mov rax, QWORD PTR _Ptrnext$1[rbp] + 000c3 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR _Ptr$[rbp] + 000ca 0f b6 09 movzx ecx, BYTE PTR [rcx] + 000cd 88 08 mov BYTE PTR [rax], cl -; 130 : { +; 575 : } - 00054 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0005b 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_7bad_alloc@std@@6B@ - 00062 48 89 08 mov QWORD PTR [rax], rcx + 000cf eb c0 jmp SHORT $LN2@Maklocstr +$LN3@Maklocstr: -; 131 : } +; 576 : +; 577 : return _Ptrdest; - 00065 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0006c 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00073 5f pop rdi - 00074 5d pop rbp - 00075 c3 ret 0 -??0bad_alloc@std@@AEAA@QEBD@Z ENDP ; std::bad_alloc::bad_alloc -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI -; COMDAT ??_Gexception@std@@UEAAPEAXI@Z -_TEXT SEGMENT -this$ = 224 -__flags$ = 232 -??_Gexception@std@@UEAAPEAXI@Z PROC ; std::exception::`scalar deleting destructor', COMDAT -$LN4: - 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx - 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx - 00009 55 push rbp - 0000a 57 push rdi - 0000b 48 81 ec e8 00 - 00 00 sub rsp, 232 ; 000000e8H - 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] - 00017 48 8b fc mov rdi, rsp - 0001a b9 3a 00 00 00 mov ecx, 58 ; 0000003aH - 0001f b8 cc cc cc cc mov eax, -858993460 ; ccccccccH - 00024 f3 ab rep stosd - 00026 48 8b 8c 24 08 - 01 00 00 mov rcx, QWORD PTR [rsp+264] - 0002e 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00035 e8 00 00 00 00 call ??1exception@std@@UEAA@XZ ; std::exception::~exception - 0003a 8b 85 e8 00 00 - 00 mov eax, DWORD PTR __flags$[rbp] - 00040 83 e0 01 and eax, 1 - 00043 85 c0 test eax, eax - 00045 74 11 je SHORT $LN2@scalar - 00047 ba 18 00 00 00 mov edx, 24 - 0004c 48 8b 8d e0 00 - 00 00 mov rcx, QWORD PTR this$[rbp] - 00053 e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete -$LN2@scalar: - 00058 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0005f 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00066 5f pop rdi - 00067 5d pop rbp - 00068 c3 ret 0 -??_Gexception@std@@UEAAPEAXI@Z ENDP ; std::exception::`scalar deleting destructor' + 000d1 48 8b 45 28 mov rax, QWORD PTR _Ptrdest$[rbp] +$LN6@Maklocstr: + +; 578 : } + + 000d5 48 8d a5 28 01 + 00 00 lea rsp, QWORD PTR [rbp+296] + 000dc 5f pop rdi + 000dd 5d pop rbp + 000de c3 ret 0 +??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z ENDP ; std::_Maklocstr _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\vcruntime_exception.h -; COMDAT ?what@exception@std@@UEBAPEBDXZ +; File C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\xlocnum +; COMDAT ?_Maklocwcs@std@@YAPEA_WPEB_W@Z _TEXT SEGMENT -tv69 = 192 -this$ = 240 -?what@exception@std@@UEBAPEBDXZ PROC ; std::exception::what, COMDAT +_Count$ = 8 +_Ptrdest$ = 40 +_Ptr$ = 288 +?_Maklocwcs@std@@YAPEA_WPEB_W@Z PROC ; std::_Maklocwcs, COMDAT -; 94 : { +; 90 : inline wchar_t* _Maklocwcs(const wchar_t* _Ptr) { // copy NTWCS to allocated storage -$LN5: +$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 f8 00 - 00 00 sub rsp, 248 ; 000000f8H - 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00007 48 81 ec 38 01 + 00 00 sub rsp, 312 ; 00000138H + 0000e 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 00013 48 8b fc mov rdi, rsp - 00016 b9 3e 00 00 00 mov ecx, 62 ; 0000003eH + 00016 b9 4e 00 00 00 mov ecx, 78 ; 0000004eH 0001b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00020 f3 ab rep stosd - 00022 48 8b 8c 24 18 - 01 00 00 mov rcx, QWORD PTR [rsp+280] + 00022 48 8b 8c 24 58 + 01 00 00 mov rcx, QWORD PTR [rsp+344] 0002a 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:__E75714E4_vcruntime_exception@h + 00 00 lea rcx, OFFSET FLAT:__90E3ED46_xlocnum 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 95 : return _Data._What ? _Data._What : "Unknown exception"; +; 91 : const size_t _Count = _CSTD wcslen(_Ptr) + 1; + + 00036 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR _Ptr$[rbp] + 0003d ff 15 00 00 00 + 00 call QWORD PTR __imp_wcslen + 00043 48 ff c0 inc rax + 00046 48 89 45 08 mov QWORD PTR _Count$[rbp], rax + +; 92 : +; 93 : wchar_t* _Ptrdest = static_cast(_calloc_dbg(_Count, sizeof(wchar_t), _CRT_BLOCK, __FILE__, __LINE__)); + + 0004a 8b 05 00 00 00 + 00 mov eax, DWORD PTR ?__LINE__Var@?0??_Maklocwcs@std@@YAPEA_WPEB_W@Z@4JA + 00050 83 c0 03 add eax, 3 + 00053 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00057 4c 8d 0d 00 00 + 00 00 lea r9, OFFSET FLAT:??_C@_0GI@LHMPPKJI@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ + 0005e 41 b8 02 00 00 + 00 mov r8d, 2 + 00064 ba 02 00 00 00 mov edx, 2 + 00069 48 8b 4d 08 mov rcx, QWORD PTR _Count$[rbp] + 0006d ff 15 00 00 00 + 00 call QWORD PTR __imp__calloc_dbg + 00073 48 89 45 28 mov QWORD PTR _Ptrdest$[rbp], rax + +; 94 : +; 95 : if (!_Ptrdest) { + + 00077 48 83 7d 28 00 cmp QWORD PTR _Ptrdest$[rbp], 0 + 0007c 75 05 jne SHORT $LN2@Maklocwcs + +; 96 : _Xbad_alloc(); + + 0007e e8 00 00 00 00 call ?_Xbad_alloc@std@@YAXXZ ; std::_Xbad_alloc +$LN2@Maklocwcs: + +; 97 : } +; 98 : +; 99 : _CSTD wmemcpy(_Ptrdest, _Ptr, _Count); + + 00083 4c 8b 45 08 mov r8, QWORD PTR _Count$[rbp] + 00087 48 8b 95 20 01 + 00 00 mov rdx, QWORD PTR _Ptr$[rbp] + 0008e 48 8b 4d 28 mov rcx, QWORD PTR _Ptrdest$[rbp] + 00092 e8 00 00 00 00 call wmemcpy + +; 100 : return _Ptrdest; + + 00097 48 8b 45 28 mov rax, QWORD PTR _Ptrdest$[rbp] +$LN3@Maklocwcs: + +; 101 : } + + 0009b 48 8d a5 08 01 + 00 00 lea rsp, QWORD PTR [rbp+264] + 000a2 5f pop rdi + 000a3 5d pop rbp + 000a4 c3 ret 0 +?_Maklocwcs@std@@YAPEA_WPEB_W@Z ENDP ; std::_Maklocwcs +_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\xlocale +; COMDAT ??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z +_TEXT SEGMENT +_Count$ = 8 +_Count1$ = 40 +_Wchars$ = 72 +_Ptr1$ = 104 +_Bytes$ = 132 +_Wc$ = 164 +_Mbst1$ = 200 +_Ptrdest$ = 232 +_Ptrnext$ = 264 +_Mbst2$ = 296 +__$ArrayPad$ = 504 +_Ptr$ = 544 +__formal$ = 552 +_Cvt$ = 560 +??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z PROC ; std::_Maklocstr, COMDAT + +; 581 : inline wchar_t* __CRTDECL _Maklocstr(const char* _Ptr, wchar_t*, const _Locinfo::_Cvtvec& _Cvt) { + +$LN12: + 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 38 02 + 00 00 sub rsp, 568 ; 00000238H + 00018 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] + 0001d 48 8b fc mov rdi, rsp + 00020 b9 8e 00 00 00 mov ecx, 142 ; 0000008eH + 00025 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 0002a f3 ab rep stosd + 0002c 48 8b 8c 24 58 + 02 00 00 mov rcx, QWORD PTR [rsp+600] + 00034 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 0003b 48 33 c5 xor rax, rbp + 0003e 48 89 85 f8 01 + 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax + 00045 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__0E648B51_xlocale + 0004c e8 00 00 00 00 call __CheckForDebuggerJustMyCode + +; 582 : // convert C string to wchar_t sequence using _Cvtvec +; 583 : size_t _Count; +; 584 : size_t _Count1; +; 585 : size_t _Wchars; +; 586 : const char* _Ptr1; +; 587 : int _Bytes; +; 588 : wchar_t _Wc; +; 589 : mbstate_t _Mbst1 = {}; + + 00051 48 8d 85 c8 00 + 00 00 lea rax, QWORD PTR _Mbst1$[rbp] + 00058 48 8b f8 mov rdi, rax + 0005b 33 c0 xor eax, eax + 0005d b9 08 00 00 00 mov ecx, 8 + 00062 f3 aa rep stosb + +; 590 : +; 591 : _Count1 = _CSTD strlen(_Ptr) + 1; + + 00064 48 8b 8d 20 02 + 00 00 mov rcx, QWORD PTR _Ptr$[rbp] + 0006b e8 00 00 00 00 call strlen + 00070 48 ff c0 inc rax + 00073 48 89 45 28 mov QWORD PTR _Count1$[rbp], rax + +; 592 : for (_Count = _Count1, _Wchars = 0, _Ptr1 = _Ptr; 0 < _Count; _Count -= _Bytes, _Ptr1 += _Bytes, ++_Wchars) { + + 00077 48 8b 45 28 mov rax, QWORD PTR _Count1$[rbp] + 0007b 48 89 45 08 mov QWORD PTR _Count$[rbp], rax + 0007f 48 c7 45 48 00 + 00 00 00 mov QWORD PTR _Wchars$[rbp], 0 + 00087 48 8b 85 20 02 + 00 00 mov rax, QWORD PTR _Ptr$[rbp] + 0008e 48 89 45 68 mov QWORD PTR _Ptr1$[rbp], rax + 00092 eb 35 jmp SHORT $LN4@Maklocstr +$LN2@Maklocstr: + 00094 48 63 85 84 00 + 00 00 movsxd rax, DWORD PTR _Bytes$[rbp] + 0009b 48 8b 4d 08 mov rcx, QWORD PTR _Count$[rbp] + 0009f 48 2b c8 sub rcx, rax + 000a2 48 8b c1 mov rax, rcx + 000a5 48 89 45 08 mov QWORD PTR _Count$[rbp], rax + 000a9 48 63 85 84 00 + 00 00 movsxd rax, DWORD PTR _Bytes$[rbp] + 000b0 48 8b 4d 68 mov rcx, QWORD PTR _Ptr1$[rbp] + 000b4 48 03 c8 add rcx, rax + 000b7 48 8b c1 mov rax, rcx + 000ba 48 89 45 68 mov QWORD PTR _Ptr1$[rbp], rax + 000be 48 8b 45 48 mov rax, QWORD PTR _Wchars$[rbp] + 000c2 48 ff c0 inc rax + 000c5 48 89 45 48 mov QWORD PTR _Wchars$[rbp], rax +$LN4@Maklocstr: + 000c9 48 83 7d 08 00 cmp QWORD PTR _Count$[rbp], 0 + 000ce 76 3a jbe SHORT $LN3@Maklocstr + +; 593 : if ((_Bytes = _Mbrtowc(&_Wc, _Ptr1, _Count, &_Mbst1, &_Cvt)) <= 0) { + + 000d0 48 8b 85 30 02 + 00 00 mov rax, QWORD PTR _Cvt$[rbp] + 000d7 48 89 44 24 20 mov QWORD PTR [rsp+32], rax + 000dc 4c 8d 8d c8 00 + 00 00 lea r9, QWORD PTR _Mbst1$[rbp] + 000e3 4c 8b 45 08 mov r8, QWORD PTR _Count$[rbp] + 000e7 48 8b 55 68 mov rdx, QWORD PTR _Ptr1$[rbp] + 000eb 48 8d 8d a4 00 + 00 00 lea rcx, QWORD PTR _Wc$[rbp] + 000f2 e8 00 00 00 00 call _Mbrtowc + 000f7 89 85 84 00 00 + 00 mov DWORD PTR _Bytes$[rbp], eax + 000fd 83 bd 84 00 00 + 00 00 cmp DWORD PTR _Bytes$[rbp], 0 + 00104 7f 02 jg SHORT $LN8@Maklocstr + +; 594 : break; - 00036 48 8b 85 f0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0003d 48 83 78 08 00 cmp QWORD PTR [rax+8], 0 - 00042 74 14 je SHORT $LN3@what - 00044 48 8b 85 f0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0004b 48 8b 40 08 mov rax, QWORD PTR [rax+8] - 0004f 48 89 85 c0 00 - 00 00 mov QWORD PTR tv69[rbp], rax - 00056 eb 0e jmp SHORT $LN4@what -$LN3@what: - 00058 48 8d 05 00 00 - 00 00 lea rax, OFFSET FLAT:??_C@_0BC@EOODALEL@Unknown?5exception@ - 0005f 48 89 85 c0 00 - 00 00 mov QWORD PTR tv69[rbp], rax -$LN4@what: - 00066 48 8b 85 c0 00 - 00 00 mov rax, QWORD PTR tv69[rbp] - -; 96 : } - - 0006d 48 8d a5 d8 00 - 00 00 lea rsp, QWORD PTR [rbp+216] - 00074 5f pop rdi - 00075 5d pop rbp - 00076 c3 ret 0 -?what@exception@std@@UEBAPEBDXZ ENDP ; std::exception::what -_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\vcruntime_exception.h -; COMDAT ??1exception@std@@UEAA@XZ -_TEXT SEGMENT -this$ = 224 -??1exception@std@@UEAA@XZ PROC ; std::exception::~exception, COMDAT + 00106 eb 02 jmp SHORT $LN3@Maklocstr +$LN8@Maklocstr: -; 89 : { +; 595 : } +; 596 : } -$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:__E75714E4_vcruntime_exception@h - 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 00036 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0003d 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_7exception@std@@6B@ - 00044 48 89 08 mov QWORD PTR [rax], rcx + 00108 eb 8a jmp SHORT $LN2@Maklocstr +$LN3@Maklocstr: -; 90 : __std_exception_destroy(&_Data); +; 597 : +; 598 : ++_Wchars; // count terminating nul - 00047 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0004e 48 83 c0 08 add rax, 8 - 00052 48 8b c8 mov rcx, rax - 00055 e8 00 00 00 00 call __std_exception_destroy - 0005a 90 npad 1 + 0010a 48 8b 45 48 mov rax, QWORD PTR _Wchars$[rbp] + 0010e 48 ff c0 inc rax + 00111 48 89 45 48 mov QWORD PTR _Wchars$[rbp], rax -; 91 : } +; 599 : +; 600 : wchar_t* _Ptrdest = static_cast(_calloc_dbg(_Wchars, sizeof(wchar_t), _CRT_BLOCK, __FILE__, __LINE__)); - 0005b 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00062 5f pop rdi - 00063 5d pop rbp - 00064 c3 ret 0 -??1exception@std@@UEAA@XZ ENDP ; std::exception::~exception -_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\vcruntime_exception.h -; COMDAT ??0exception@std@@QEAA@AEBV01@@Z -_TEXT SEGMENT -this$ = 224 -_Other$ = 232 -??0exception@std@@QEAA@AEBV01@@Z PROC ; std::exception::exception, COMDAT + 00115 c7 44 24 20 58 + 02 00 00 mov DWORD PTR [rsp+32], 600 ; 00000258H + 0011d 4c 8d 0d 00 00 + 00 00 lea r9, OFFSET FLAT:??_C@_0GI@DEICPIDJ@C?3?2Program?5Files?5?$CIx86?$CJ?2Microsof@ + 00124 41 b8 02 00 00 + 00 mov r8d, 2 + 0012a ba 02 00 00 00 mov edx, 2 + 0012f 48 8b 4d 48 mov rcx, QWORD PTR _Wchars$[rbp] + 00133 ff 15 00 00 00 + 00 call QWORD PTR __imp__calloc_dbg + 00139 48 89 85 e8 00 + 00 00 mov QWORD PTR _Ptrdest$[rbp], rax -; 72 : { +; 601 : +; 602 : if (!_Ptrdest) { -$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:__E75714E4_vcruntime_exception@h - 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 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_7exception@std@@6B@ - 00049 48 89 08 mov QWORD PTR [rax], rcx + 00140 48 83 bd e8 00 + 00 00 00 cmp QWORD PTR _Ptrdest$[rbp], 0 + 00148 75 05 jne SHORT $LN9@Maklocstr -; 71 : : _Data() +; 603 : _Xbad_alloc(); - 0004c 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00053 48 83 c0 08 add rax, 8 - 00057 48 8b f8 mov rdi, rax - 0005a 33 c0 xor eax, eax - 0005c b9 10 00 00 00 mov ecx, 16 - 00061 f3 aa rep stosb + 0014a e8 00 00 00 00 call ?_Xbad_alloc@std@@YAXXZ ; std::_Xbad_alloc +$LN9@Maklocstr: -; 73 : __std_exception_copy(&_Other._Data, &_Data); +; 604 : } +; 605 : +; 606 : wchar_t* _Ptrnext = _Ptrdest; - 00063 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0006a 48 83 c0 08 add rax, 8 - 0006e 48 8b 8d e8 00 - 00 00 mov rcx, QWORD PTR _Other$[rbp] - 00075 48 83 c1 08 add rcx, 8 - 00079 48 8b d0 mov rdx, rax - 0007c e8 00 00 00 00 call __std_exception_copy + 0014f 48 8b 85 e8 00 + 00 00 mov rax, QWORD PTR _Ptrdest$[rbp] + 00156 48 89 85 08 01 + 00 00 mov QWORD PTR _Ptrnext$[rbp], rax -; 74 : } +; 607 : mbstate_t _Mbst2 = {}; - 00081 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00088 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 0008f 5f pop rdi - 00090 5d pop rbp - 00091 c3 ret 0 -??0exception@std@@QEAA@AEBV01@@Z ENDP ; std::exception::exception -_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\vcruntime_exception.h -; COMDAT ??0exception@std@@QEAA@QEBDH@Z -_TEXT SEGMENT -this$ = 224 -_Message$ = 232 -__formal$ = 240 -??0exception@std@@QEAA@QEBDH@Z PROC ; std::exception::exception, COMDAT + 0015d 48 8d 85 28 01 + 00 00 lea rax, QWORD PTR _Mbst2$[rbp] + 00164 48 8b f8 mov rdi, rax + 00167 33 c0 xor eax, eax + 00169 b9 08 00 00 00 mov ecx, 8 + 0016e f3 aa rep stosb -; 66 : { +; 608 : +; 609 : for (; 0 < _Wchars; _Count -= _Bytes, _Ptr += _Bytes, --_Wchars, ++_Ptrnext) { -$LN3: - 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d - 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:__E75714E4_vcruntime_exception@h - 0003b e8 00 00 00 00 call __CheckForDebuggerJustMyCode - 00040 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00047 48 8d 0d 00 00 - 00 00 lea rcx, OFFSET FLAT:??_7exception@std@@6B@ - 0004e 48 89 08 mov QWORD PTR [rax], rcx + 00170 eb 4d jmp SHORT $LN7@Maklocstr +$LN5@Maklocstr: + 00172 48 63 85 84 00 + 00 00 movsxd rax, DWORD PTR _Bytes$[rbp] + 00179 48 8b 4d 08 mov rcx, QWORD PTR _Count$[rbp] + 0017d 48 2b c8 sub rcx, rax + 00180 48 8b c1 mov rax, rcx + 00183 48 89 45 08 mov QWORD PTR _Count$[rbp], rax + 00187 48 63 85 84 00 + 00 00 movsxd rax, DWORD PTR _Bytes$[rbp] + 0018e 48 8b 8d 20 02 + 00 00 mov rcx, QWORD PTR _Ptr$[rbp] + 00195 48 03 c8 add rcx, rax + 00198 48 8b c1 mov rax, rcx + 0019b 48 89 85 20 02 + 00 00 mov QWORD PTR _Ptr$[rbp], rax + 001a2 48 8b 45 48 mov rax, QWORD PTR _Wchars$[rbp] + 001a6 48 ff c8 dec rax + 001a9 48 89 45 48 mov QWORD PTR _Wchars$[rbp], rax + 001ad 48 8b 85 08 01 + 00 00 mov rax, QWORD PTR _Ptrnext$[rbp] + 001b4 48 83 c0 02 add rax, 2 + 001b8 48 89 85 08 01 + 00 00 mov QWORD PTR _Ptrnext$[rbp], rax +$LN7@Maklocstr: + 001bf 48 83 7d 48 00 cmp QWORD PTR _Wchars$[rbp], 0 + 001c4 76 40 jbe SHORT $LN6@Maklocstr -; 65 : : _Data() +; 610 : if ((_Bytes = _Mbrtowc(_Ptrnext, _Ptr, _Count1, &_Mbst2, &_Cvt)) <= 0) { - 00051 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00058 48 83 c0 08 add rax, 8 - 0005c 48 8b f8 mov rdi, rax - 0005f 33 c0 xor eax, eax - 00061 b9 10 00 00 00 mov ecx, 16 - 00066 f3 aa rep stosb + 001c6 48 8b 85 30 02 + 00 00 mov rax, QWORD PTR _Cvt$[rbp] + 001cd 48 89 44 24 20 mov QWORD PTR [rsp+32], rax + 001d2 4c 8d 8d 28 01 + 00 00 lea r9, QWORD PTR _Mbst2$[rbp] + 001d9 4c 8b 45 28 mov r8, QWORD PTR _Count1$[rbp] + 001dd 48 8b 95 20 02 + 00 00 mov rdx, QWORD PTR _Ptr$[rbp] + 001e4 48 8b 8d 08 01 + 00 00 mov rcx, QWORD PTR _Ptrnext$[rbp] + 001eb e8 00 00 00 00 call _Mbrtowc + 001f0 89 85 84 00 00 + 00 mov DWORD PTR _Bytes$[rbp], eax + 001f6 83 bd 84 00 00 + 00 00 cmp DWORD PTR _Bytes$[rbp], 0 + 001fd 7f 02 jg SHORT $LN10@Maklocstr -; 67 : _Data._What = _Message; +; 611 : break; - 00068 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 0006f 48 8b 8d e8 00 - 00 00 mov rcx, QWORD PTR _Message$[rbp] - 00076 48 89 48 08 mov QWORD PTR [rax+8], rcx + 001ff eb 05 jmp SHORT $LN6@Maklocstr +$LN10@Maklocstr: -; 68 : } +; 612 : } +; 613 : } - 0007a 48 8b 85 e0 00 - 00 00 mov rax, QWORD PTR this$[rbp] - 00081 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 00088 5f pop rdi - 00089 5d pop rbp - 0008a c3 ret 0 -??0exception@std@@QEAA@QEBDH@Z ENDP ; std::exception::exception -_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\limits -; COMDAT ?max@?$numeric_limits@_J@std@@SA_JXZ -_TEXT SEGMENT -?max@?$numeric_limits@_J@std@@SA_JXZ PROC ; std::numeric_limits<__int64>::max, COMDAT + 00201 e9 6c ff ff ff jmp $LN5@Maklocstr +$LN6@Maklocstr: -; 645 : _NODISCARD static constexpr long long(max)() noexcept { +; 614 : +; 615 : *_Ptrnext = L'\0'; -$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:__F2870A2C_limits - 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00206 33 c0 xor eax, eax + 00208 48 8b 8d 08 01 + 00 00 mov rcx, QWORD PTR _Ptrnext$[rbp] + 0020f 66 89 01 mov WORD PTR [rcx], ax -; 646 : return LLONG_MAX; +; 616 : +; 617 : return _Ptrdest; - 0002a 48 b8 ff ff ff - ff ff ff ff 7f mov rax, 9223372036854775807 ; 7fffffffffffffffH + 00212 48 8b 85 e8 00 + 00 00 mov rax, QWORD PTR _Ptrdest$[rbp] +$LN11@Maklocstr: -; 647 : } +; 618 : } - 00034 48 8d a5 c8 00 - 00 00 lea rsp, QWORD PTR [rbp+200] - 0003b 5f pop rdi - 0003c 5d pop rbp - 0003d c3 ret 0 -?max@?$numeric_limits@_J@std@@SA_JXZ ENDP ; std::numeric_limits<__int64>::max + 00219 48 8b f8 mov rdi, rax + 0021c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00220 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z$rtcFrameData + 00227 e8 00 00 00 00 call _RTC_CheckStackVars + 0022c 48 8b c7 mov rax, rdi + 0022f 48 8b 8d f8 01 + 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] + 00236 48 33 cd xor rcx, rbp + 00239 e8 00 00 00 00 call __security_check_cookie + 0023e 48 8d a5 08 02 + 00 00 lea rsp, QWORD PTR [rbp+520] + 00245 5f pop rdi + 00246 5d pop rbp + 00247 c3 ret 0 +??$_Maklocstr@_W@std@@YAPEA_WPEBDPEA_WAEBU_Cvtvec@@@Z ENDP ; std::_Maklocstr _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\wchar.h @@ -9353,49 +3443,6 @@ $LN3: wmemcpy 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\vcruntime_new.h -; COMDAT ??2@YAPEAX_KPEAX@Z -_TEXT SEGMENT -_Size$ = 224 -_Where$ = 232 -??2@YAPEAX_KPEAX@Z PROC ; operator new, COMDAT - -; 167 : { - -$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:__8906660C_vcruntime_new@h - 00036 e8 00 00 00 00 call __CheckForDebuggerJustMyCode - -; 168 : (void)_Size; -; 169 : return _Where; - - 0003b 48 8b 85 e8 00 - 00 00 mov rax, QWORD PTR _Where$[rbp] - -; 170 : } - - 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 -??2@YAPEAX_KPEAX@Z ENDP ; operator new -_TEXT ENDS -; Function compile flags: /Odtp /RTCsu /ZI ; File C:\$Fanta\code-virtualizer\CodeVirtualizer\OpaqueBranching.cpp ; COMDAT ?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z _TEXT SEGMENT diff --git a/CodeVirtualizer/x64/Debug/RipAndInst.cod b/CodeVirtualizer/x64/Debug/RipAndInst.cod index 63061a7..204c1cd 100644 --- a/CodeVirtualizer/x64/Debug/RipAndInst.cod +++ b/CodeVirtualizer/x64/Debug/RipAndInst.cod @@ -116,7 +116,7 @@ EXTRN __imp_?_Getmonths@_Locinfo@std@@QEBAPEBDXZ:PROC EXTRN __imp_?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN __imp_?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN xed_decode:PROC -EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK +EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK EXTRN ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z:PROC ; NcAppendToBlock EXTRN _RTC_CheckStackVars:PROC EXTRN _RTC_InitBase:PROC @@ -190,7 +190,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD imagerel $LN6 - DD imagerel $LN6+369 + DD imagerel $LN6+377 DD imagerel $unwind$?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z pdata ENDS ; COMDAT pdata @@ -202,7 +202,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD imagerel $LN6 - DD imagerel $LN6+367 + DD imagerel $LN6+375 DD imagerel $unwind$?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z pdata ENDS ; COMDAT pdata @@ -214,7 +214,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD imagerel $LN6 - DD imagerel $LN6+358 + DD imagerel $LN6+366 DD imagerel $unwind$?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z pdata ENDS ; COMDAT pdata @@ -270,7 +270,7 @@ $ip2state$?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 06H DB 00H DB 0faH DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -287,13 +287,13 @@ $cppxdata$?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 025054419H - DD 0117231cH - DD 07010002fH +$unwind$?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 035054419H + DD 0117331cH + DD 070100031H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z - DD 0162H + DD 0172H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -306,7 +306,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 024H ; JitEmitRipRelativeAndB +?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 034H ; JitEmitRipRelativeAndB DD 07H DQ FLAT:?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcName$0 ORG $+48 @@ -327,7 +327,7 @@ $ip2state$?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 06H DB 00H DB 015H, 02H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -344,13 +344,13 @@ $cppxdata$?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 025054419H - DD 0117231cH - DD 070100031H +$unwind$?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 035054419H + DD 0117331cH + DD 070100033H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z - DD 0172H + DD 0182H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -363,7 +363,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 028H ; JitEmitRipRelativeAndW +?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 038H ; JitEmitRipRelativeAndW DD 09H DQ FLAT:?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcName$0 ORG $+48 @@ -384,7 +384,7 @@ $ip2state$?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 06H DB 00H DB '%', 02H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -401,13 +401,13 @@ $cppxdata$?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 025054419H - DD 0117231cH - DD 070100031H +$unwind$?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 035054419H + DD 0117331cH + DD 070100033H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z - DD 0172H + DD 0182H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -420,7 +420,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 028H ; JitEmitRipRelativeAndD +?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 038H ; JitEmitRipRelativeAndD DD 0aH DQ FLAT:?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcName$0 ORG $+48 @@ -603,7 +603,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -618,15 +618,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 78 01 - 00 00 sub rsp, 376 ; 00000178H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 88 01 + 00 00 sub rsp, 392 ; 00000188H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 5e 00 00 00 mov ecx, 94 ; 0000005eH + 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 98 - 01 00 00 mov rcx, QWORD PTR [rsp+408] + 0002b 48 8b 8c 24 a8 + 01 00 00 mov rcx, QWORD PTR [rsp+424] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -655,89 +655,91 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 0007d 48 83 bd 28 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00085 74 24 je SHORT $LN3@JitEmitRip - 00087 41 b9 07 00 00 + 00085 74 2c je SHORT $LN3@JitEmitRip + 00087 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0008f 41 b9 07 00 00 00 mov r9d, 7 - 0008d 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] - 00091 ba 0c 00 00 00 mov edx, 12 - 00096 48 8b 8d 28 01 + 00095 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] + 00099 ba 0c 00 00 00 mov edx, 12 + 0009e 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 0009d e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000a2 48 89 85 38 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000a9 eb 0b jmp SHORT $LN4@JitEmitRip + 000a5 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000aa 48 89 85 38 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000b1 eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000ab 48 c7 85 38 01 + 000b3 48 c7 85 38 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000b6 48 8b 85 38 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000bd 48 89 85 08 01 + 000be 48 8b 85 38 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000c5 48 89 85 08 01 00 00 mov QWORD PTR $T4[rbp], rax - 000c4 48 8b 85 08 01 + 000cc 48 8b 85 08 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000cb 48 89 45 28 mov QWORD PTR Link$[rbp], rax + 000d3 48 89 45 28 mov QWORD PTR Link$[rbp], rax ; 32 : *(PINT32)&Link->RawData[2] = RipDelta; - 000cf b8 01 00 00 00 mov eax, 1 - 000d4 48 6b c0 02 imul rax, rax, 2 - 000d8 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000dc 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000e0 8b 95 78 01 00 + 000d7 b8 01 00 00 00 mov eax, 1 + 000dc 48 6b c0 02 imul rax, rax, 2 + 000e0 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000e4 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000e8 8b 95 78 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000e6 89 14 08 mov DWORD PTR [rax+rcx], edx + 000ee 89 14 08 mov DWORD PTR [rax+rcx], edx ; 33 : *(PUCHAR)&Link->RawData[6] = (UCHAR)Value; - 000e9 b8 01 00 00 00 mov eax, 1 - 000ee 48 6b c0 06 imul rax, rax, 6 - 000f2 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000f6 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000fa 0f b6 95 80 01 + 000f1 b8 01 00 00 00 mov eax, 1 + 000f6 48 6b c0 06 imul rax, rax, 6 + 000fa 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000fe 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 00102 0f b6 95 80 01 00 00 movzx edx, BYTE PTR Value$[rbp] - 00101 88 14 08 mov BYTE PTR [rax+rcx], dl + 00109 88 14 08 mov BYTE PTR [rax+rcx], dl ; 34 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 00104 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] - 00108 48 83 c0 30 add rax, 48 ; 00000030H - 0010c 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 00110 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0010c 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] + 00110 48 83 c0 30 add rax, 48 ; 00000030H 00114 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 00118 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 0011c 48 8b c8 mov rcx, rax - 0011f e8 00 00 00 00 call xed_decode + 00118 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0011c 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 00120 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 00124 48 8b c8 mov rcx, rax + 00127 e8 00 00 00 00 call xed_decode ; 35 : NcAppendToBlock(Block, Link); - 00124 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] - 00128 48 8b 8d 70 01 + 0012c 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] + 00130 48 8b 8d 70 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 0012f e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 00137 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 36 : return TRUE; - 00134 b8 01 00 00 00 mov eax, 1 + 0013c b8 01 00 00 00 mov eax, 1 ; 37 : } - 00139 8b f8 mov edi, eax - 0013b 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 0013f 48 8d 15 00 00 + 00141 8b f8 mov edi, eax + 00143 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00147 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcFrameData - 00146 e8 00 00 00 00 call _RTC_CheckStackVars - 0014b 8b c7 mov eax, edi - 0014d 48 8b 8d 40 01 + 0014e e8 00 00 00 00 call _RTC_CheckStackVars + 00153 8b c7 mov eax, edi + 00155 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00154 48 33 cd xor rcx, rbp - 00157 e8 00 00 00 00 call __security_check_cookie - 0015c 48 8d a5 58 01 + 0015c 48 33 cd xor rcx, rbp + 0015f e8 00 00 00 00 call __security_check_cookie + 00164 48 8d a5 58 01 00 00 lea rsp, QWORD PTR [rbp+344] - 00163 5f pop rdi - 00164 5d pop rbp - 00165 c3 ret 0 + 0016b 5f pop rdi + 0016c 5d pop rbp + 0016d c3 ret 0 ?JitEmitRipRelativeAndB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z ENDP ; JitEmitRipRelativeAndB _TEXT ENDS ; COMDAT text$x @@ -746,7 +748,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -757,7 +759,7 @@ Value$ = 384 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -775,7 +777,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -786,7 +788,7 @@ Value$ = 384 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -805,7 +807,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -820,15 +822,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 88 01 - 00 00 sub rsp, 392 ; 00000188H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 98 01 + 00 00 sub rsp, 408 ; 00000198H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H + 0001f b9 66 00 00 00 mov ecx, 102 ; 00000066H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 a8 - 01 00 00 mov rcx, QWORD PTR [rsp+424] + 0002b 48 8b 8c 24 b8 + 01 00 00 mov rcx, QWORD PTR [rsp+440] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -859,89 +861,91 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 00085 48 83 bd 38 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 0008d 74 24 je SHORT $LN3@JitEmitRip - 0008f 41 b9 09 00 00 + 0008d 74 2c je SHORT $LN3@JitEmitRip + 0008f c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 00097 41 b9 09 00 00 00 mov r9d, 9 - 00095 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] - 00099 ba 0c 00 00 00 mov edx, 12 - 0009e 48 8b 8d 38 01 + 0009d 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] + 000a1 ba 0c 00 00 00 mov edx, 12 + 000a6 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 000a5 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000aa 48 89 85 48 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000b1 eb 0b jmp SHORT $LN4@JitEmitRip + 000ad e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000b2 48 89 85 48 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000b9 eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000b3 48 c7 85 48 01 + 000bb 48 c7 85 48 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000be 48 8b 85 48 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000c5 48 89 85 18 01 + 000c6 48 8b 85 48 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000cd 48 89 85 18 01 00 00 mov QWORD PTR $T4[rbp], rax - 000cc 48 8b 85 18 01 + 000d4 48 8b 85 18 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000d3 48 89 45 38 mov QWORD PTR Link$[rbp], rax + 000db 48 89 45 38 mov QWORD PTR Link$[rbp], rax ; 20 : *(PINT32)&Link->RawData[3] = RipDelta; - 000d7 b8 01 00 00 00 mov eax, 1 - 000dc 48 6b c0 03 imul rax, rax, 3 - 000e0 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000e4 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000e8 8b 95 88 01 00 + 000df b8 01 00 00 00 mov eax, 1 + 000e4 48 6b c0 03 imul rax, rax, 3 + 000e8 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 000ec 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000f0 8b 95 88 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000ee 89 14 08 mov DWORD PTR [rax+rcx], edx + 000f6 89 14 08 mov DWORD PTR [rax+rcx], edx ; 21 : *(PUSHORT)&Link->RawData[7] = (USHORT)Value; - 000f1 b8 01 00 00 00 mov eax, 1 - 000f6 48 6b c0 07 imul rax, rax, 7 - 000fa 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000fe 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 00102 0f b7 95 90 01 + 000f9 b8 01 00 00 00 mov eax, 1 + 000fe 48 6b c0 07 imul rax, rax, 7 + 00102 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 00106 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 0010a 0f b7 95 90 01 00 00 movzx edx, WORD PTR Value$[rbp] - 00109 66 89 14 08 mov WORD PTR [rax+rcx], dx + 00111 66 89 14 08 mov WORD PTR [rax+rcx], dx ; 22 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 0010d 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] - 00111 48 83 c0 30 add rax, 48 ; 00000030H - 00115 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00119 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00115 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] + 00119 48 83 c0 30 add rax, 48 ; 00000030H 0011d 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00121 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 00125 48 8b c8 mov rcx, rax - 00128 e8 00 00 00 00 call xed_decode + 00121 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00125 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 00129 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 0012d 48 8b c8 mov rcx, rax + 00130 e8 00 00 00 00 call xed_decode ; 23 : NcAppendToBlock(Block, Link); - 0012d 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] - 00131 48 8b 8d 80 01 + 00135 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] + 00139 48 8b 8d 80 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 00138 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 00140 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 24 : return TRUE; - 0013d b8 01 00 00 00 mov eax, 1 + 00145 b8 01 00 00 00 mov eax, 1 ; 25 : } - 00142 8b f8 mov edi, eax - 00144 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 00148 48 8d 15 00 00 + 0014a 8b f8 mov edi, eax + 0014c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00150 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcFrameData - 0014f e8 00 00 00 00 call _RTC_CheckStackVars - 00154 8b c7 mov eax, edi - 00156 48 8b 8d 50 01 + 00157 e8 00 00 00 00 call _RTC_CheckStackVars + 0015c 8b c7 mov eax, edi + 0015e 48 8b 8d 50 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 0015d 48 33 cd xor rcx, rbp - 00160 e8 00 00 00 00 call __security_check_cookie - 00165 48 8d a5 68 01 + 00165 48 33 cd xor rcx, rbp + 00168 e8 00 00 00 00 call __security_check_cookie + 0016d 48 8d a5 68 01 00 00 lea rsp, QWORD PTR [rbp+360] - 0016c 5f pop rdi - 0016d 5d pop rbp - 0016e c3 ret 0 + 00174 5f pop rdi + 00175 5d pop rbp + 00176 c3 ret 0 ?JitEmitRipRelativeAndW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z ENDP ; JitEmitRipRelativeAndW _TEXT ENDS ; COMDAT text$x @@ -950,7 +954,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -961,7 +965,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -979,7 +983,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -990,7 +994,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -1009,7 +1013,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1024,15 +1028,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 88 01 - 00 00 sub rsp, 392 ; 00000188H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 98 01 + 00 00 sub rsp, 408 ; 00000198H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H + 0001f b9 66 00 00 00 mov ecx, 102 ; 00000066H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 a8 - 01 00 00 mov rcx, QWORD PTR [rsp+424] + 0002b 48 8b 8c 24 b8 + 01 00 00 mov rcx, QWORD PTR [rsp+440] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -1064,89 +1068,91 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 00089 48 83 bd 38 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00091 74 24 je SHORT $LN3@JitEmitRip - 00093 41 b9 0a 00 00 + 00091 74 2c je SHORT $LN3@JitEmitRip + 00093 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0009b 41 b9 0a 00 00 00 mov r9d, 10 - 00099 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] - 0009d ba 0c 00 00 00 mov edx, 12 - 000a2 48 8b 8d 38 01 + 000a1 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] + 000a5 ba 0c 00 00 00 mov edx, 12 + 000aa 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 000a9 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000ae 48 89 85 48 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000b5 eb 0b jmp SHORT $LN4@JitEmitRip + 000b1 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000b6 48 89 85 48 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000bd eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000b7 48 c7 85 48 01 + 000bf 48 c7 85 48 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000c2 48 8b 85 48 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000c9 48 89 85 18 01 + 000ca 48 8b 85 48 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000d1 48 89 85 18 01 00 00 mov QWORD PTR $T4[rbp], rax - 000d0 48 8b 85 18 01 + 000d8 48 8b 85 18 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000d7 48 89 45 38 mov QWORD PTR Link$[rbp], rax + 000df 48 89 45 38 mov QWORD PTR Link$[rbp], rax ; 8 : *(PINT32)&Link->RawData[2] = RipDelta; - 000db b8 01 00 00 00 mov eax, 1 - 000e0 48 6b c0 02 imul rax, rax, 2 - 000e4 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000e8 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000ec 8b 95 88 01 00 + 000e3 b8 01 00 00 00 mov eax, 1 + 000e8 48 6b c0 02 imul rax, rax, 2 + 000ec 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 000f0 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000f4 8b 95 88 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000f2 89 14 08 mov DWORD PTR [rax+rcx], edx + 000fa 89 14 08 mov DWORD PTR [rax+rcx], edx ; 9 : *(PULONG)&Link->RawData[6] = Value; - 000f5 b8 01 00 00 00 mov eax, 1 - 000fa 48 6b c0 06 imul rax, rax, 6 - 000fe 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00102 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 00106 8b 95 90 01 00 + 000fd b8 01 00 00 00 mov eax, 1 + 00102 48 6b c0 06 imul rax, rax, 6 + 00106 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 0010a 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 0010e 8b 95 90 01 00 00 mov edx, DWORD PTR Value$[rbp] - 0010c 89 14 08 mov DWORD PTR [rax+rcx], edx + 00114 89 14 08 mov DWORD PTR [rax+rcx], edx ; 10 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 0010f 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] - 00113 48 83 c0 30 add rax, 48 ; 00000030H - 00117 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 0011b 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00117 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] + 0011b 48 83 c0 30 add rax, 48 ; 00000030H 0011f 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00123 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 00127 48 8b c8 mov rcx, rax - 0012a e8 00 00 00 00 call xed_decode + 00123 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00127 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 0012b 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 0012f 48 8b c8 mov rcx, rax + 00132 e8 00 00 00 00 call xed_decode ; 11 : NcAppendToBlock(Block, Link); - 0012f 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] - 00133 48 8b 8d 80 01 + 00137 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] + 0013b 48 8b 8d 80 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 0013a e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 00142 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 12 : return TRUE; - 0013f b8 01 00 00 00 mov eax, 1 + 00147 b8 01 00 00 00 mov eax, 1 ; 13 : } - 00144 8b f8 mov edi, eax - 00146 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 0014a 48 8d 15 00 00 + 0014c 8b f8 mov edi, eax + 0014e 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00152 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcFrameData - 00151 e8 00 00 00 00 call _RTC_CheckStackVars - 00156 8b c7 mov eax, edi - 00158 48 8b 8d 50 01 + 00159 e8 00 00 00 00 call _RTC_CheckStackVars + 0015e 8b c7 mov eax, edi + 00160 48 8b 8d 50 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 0015f 48 33 cd xor rcx, rbp - 00162 e8 00 00 00 00 call __security_check_cookie - 00167 48 8d a5 68 01 + 00167 48 33 cd xor rcx, rbp + 0016a e8 00 00 00 00 call __security_check_cookie + 0016f 48 8d a5 68 01 00 00 lea rsp, QWORD PTR [rbp+360] - 0016e 5f pop rdi - 0016f 5d pop rbp - 00170 c3 ret 0 + 00176 5f pop rdi + 00177 5d pop rbp + 00178 c3 ret 0 ?JitEmitRipRelativeAndD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z ENDP ; JitEmitRipRelativeAndD _TEXT ENDS ; COMDAT text$x @@ -1155,7 +1161,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1166,7 +1172,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -1184,7 +1190,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1195,7 +1201,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] diff --git a/CodeVirtualizer/x64/Debug/RipMovInst.cod b/CodeVirtualizer/x64/Debug/RipMovInst.cod index 6d58029..a642d15 100644 --- a/CodeVirtualizer/x64/Debug/RipMovInst.cod +++ b/CodeVirtualizer/x64/Debug/RipMovInst.cod @@ -116,7 +116,7 @@ EXTRN __imp_?_Getmonths@_Locinfo@std@@QEBAPEBDXZ:PROC EXTRN __imp_?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN __imp_?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN xed_decode:PROC -EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK +EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK EXTRN ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z:PROC ; NcAppendToBlock EXTRN _RTC_CheckStackVars:PROC EXTRN _RTC_InitBase:PROC @@ -190,7 +190,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DD imagerel $LN6 - DD imagerel $LN6+381 + DD imagerel $LN6+389 DD imagerel $unwind$?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z pdata ENDS ; COMDAT pdata @@ -202,7 +202,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DD imagerel $LN6 - DD imagerel $LN6+377 + DD imagerel $LN6+385 DD imagerel $unwind$?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z pdata ENDS ; COMDAT pdata @@ -214,7 +214,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DD imagerel $LN6 - DD imagerel $LN6+361 + DD imagerel $LN6+369 DD imagerel $unwind$?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z pdata ENDS ; COMDAT pdata @@ -270,7 +270,7 @@ $ip2state$?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DB 06H DB 00H DB 0faH DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -287,13 +287,13 @@ $cppxdata$?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DD 025054419H - DD 0117231cH - DD 07010002fH +$unwind$?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DD 035054419H + DD 0117331cH + DD 070100031H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z - DD 0162H + DD 0172H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -306,7 +306,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcVarDesc DD 024H ; JitEmitRipRelativeMovB +?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcVarDesc DD 034H ; JitEmitRipRelativeMovB DD 07H DQ FLAT:?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcName$0 ORG $+48 @@ -327,7 +327,7 @@ $ip2state$?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DB 06H DB 00H DB 015H, 02H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -344,13 +344,13 @@ $cppxdata$?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DD 025054419H - DD 0117231cH - DD 070100031H +$unwind$?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DD 035054419H + DD 0117331cH + DD 070100033H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z - DD 0172H + DD 0182H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -363,7 +363,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcVarDesc DD 028H ; JitEmitRipRelativeMovW +?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcVarDesc DD 038H ; JitEmitRipRelativeMovW DD 09H DQ FLAT:?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcName$0 ORG $+48 @@ -384,7 +384,7 @@ $ip2state$?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DB 06H DB 00H DB '%', 02H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -401,13 +401,13 @@ $cppxdata$?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DD 025054419H - DD 0117231cH - DD 070100031H +$unwind$?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z DD 035054419H + DD 0117331cH + DD 070100033H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z - DD 0172H + DD 0182H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -420,7 +420,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcVarDesc DD 028H ; JitEmitRipRelativeMovD +?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcVarDesc DD 038H ; JitEmitRipRelativeMovD DD 0aH DQ FLAT:?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcName$0 ORG $+48 @@ -603,7 +603,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -618,15 +618,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 78 01 - 00 00 sub rsp, 376 ; 00000178H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 88 01 + 00 00 sub rsp, 392 ; 00000188H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 5e 00 00 00 mov ecx, 94 ; 0000005eH + 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 98 - 01 00 00 mov rcx, QWORD PTR [rsp+408] + 0002b 48 8b 8c 24 a8 + 01 00 00 mov rcx, QWORD PTR [rsp+424] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -655,90 +655,92 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 0007d 48 83 bd 28 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00085 74 24 je SHORT $LN3@JitEmitRip - 00087 41 b9 07 00 00 + 00085 74 2c je SHORT $LN3@JitEmitRip + 00087 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0008f 41 b9 07 00 00 00 mov r9d, 7 - 0008d 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] - 00091 ba 0c 00 00 00 mov edx, 12 - 00096 48 8b 8d 28 01 + 00095 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] + 00099 ba 0c 00 00 00 mov edx, 12 + 0009e 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 0009d e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000a2 48 89 85 38 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000a9 eb 0b jmp SHORT $LN4@JitEmitRip + 000a5 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000aa 48 89 85 38 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000b1 eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000ab 48 c7 85 38 01 + 000b3 48 c7 85 38 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000b6 48 8b 85 38 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000bd 48 89 85 08 01 + 000be 48 8b 85 38 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000c5 48 89 85 08 01 00 00 mov QWORD PTR $T4[rbp], rax - 000c4 48 8b 85 08 01 + 000cc 48 8b 85 08 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000cb 48 89 45 28 mov QWORD PTR Link$[rbp], rax + 000d3 48 89 45 28 mov QWORD PTR Link$[rbp], rax ; 32 : *(PINT32)&Link->RawData[2] = RipDelta; - 000cf b8 01 00 00 00 mov eax, 1 - 000d4 48 6b c0 02 imul rax, rax, 2 - 000d8 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000dc 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000e0 8b 95 78 01 00 + 000d7 b8 01 00 00 00 mov eax, 1 + 000dc 48 6b c0 02 imul rax, rax, 2 + 000e0 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000e4 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000e8 8b 95 78 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000e6 89 14 08 mov DWORD PTR [rax+rcx], edx + 000ee 89 14 08 mov DWORD PTR [rax+rcx], edx ; 33 : Link->RawData[6] = *Data; - 000e9 b8 01 00 00 00 mov eax, 1 - 000ee 48 6b c0 06 imul rax, rax, 6 - 000f2 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000f6 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000fa 48 8b 95 80 01 + 000f1 b8 01 00 00 00 mov eax, 1 + 000f6 48 6b c0 06 imul rax, rax, 6 + 000fa 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000fe 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 00102 48 8b 95 80 01 00 00 mov rdx, QWORD PTR Data$[rbp] - 00101 0f b6 12 movzx edx, BYTE PTR [rdx] - 00104 88 14 08 mov BYTE PTR [rax+rcx], dl + 00109 0f b6 12 movzx edx, BYTE PTR [rdx] + 0010c 88 14 08 mov BYTE PTR [rax+rcx], dl ; 34 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 00107 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] - 0010b 48 83 c0 30 add rax, 48 ; 00000030H - 0010f 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 00113 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0010f 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] + 00113 48 83 c0 30 add rax, 48 ; 00000030H 00117 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 0011b 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 0011f 48 8b c8 mov rcx, rax - 00122 e8 00 00 00 00 call xed_decode + 0011b 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0011f 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 00123 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 00127 48 8b c8 mov rcx, rax + 0012a e8 00 00 00 00 call xed_decode ; 35 : NcAppendToBlock(Block, Link); - 00127 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] - 0012b 48 8b 8d 70 01 + 0012f 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] + 00133 48 8b 8d 70 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 00132 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 0013a e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 36 : return TRUE; - 00137 b8 01 00 00 00 mov eax, 1 + 0013f b8 01 00 00 00 mov eax, 1 ; 37 : } - 0013c 8b f8 mov edi, eax - 0013e 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 00142 48 8d 15 00 00 + 00144 8b f8 mov edi, eax + 00146 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 0014a 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcFrameData - 00149 e8 00 00 00 00 call _RTC_CheckStackVars - 0014e 8b c7 mov eax, edi - 00150 48 8b 8d 40 01 + 00151 e8 00 00 00 00 call _RTC_CheckStackVars + 00156 8b c7 mov eax, edi + 00158 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00157 48 33 cd xor rcx, rbp - 0015a e8 00 00 00 00 call __security_check_cookie - 0015f 48 8d a5 58 01 + 0015f 48 33 cd xor rcx, rbp + 00162 e8 00 00 00 00 call __security_check_cookie + 00167 48 8d a5 58 01 00 00 lea rsp, QWORD PTR [rbp+344] - 00166 5f pop rdi - 00167 5d pop rbp - 00168 c3 ret 0 + 0016e 5f pop rdi + 0016f 5d pop rbp + 00170 c3 ret 0 ?JitEmitRipRelativeMovB@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ENDP ; JitEmitRipRelativeMovB _TEXT ENDS ; COMDAT text$x @@ -747,7 +749,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -758,7 +760,7 @@ Data$ = 384 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -776,7 +778,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -787,7 +789,7 @@ Data$ = 384 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -806,7 +808,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -821,15 +823,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 88 01 - 00 00 sub rsp, 392 ; 00000188H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 98 01 + 00 00 sub rsp, 408 ; 00000198H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H + 0001f b9 66 00 00 00 mov ecx, 102 ; 00000066H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 a8 - 01 00 00 mov rcx, QWORD PTR [rsp+424] + 0002b 48 8b 8c 24 b8 + 01 00 00 mov rcx, QWORD PTR [rsp+440] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -860,92 +862,94 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 00085 48 83 bd 38 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 0008d 74 24 je SHORT $LN3@JitEmitRip - 0008f 41 b9 09 00 00 + 0008d 74 2c je SHORT $LN3@JitEmitRip + 0008f c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 00097 41 b9 09 00 00 00 mov r9d, 9 - 00095 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] - 00099 ba 0c 00 00 00 mov edx, 12 - 0009e 48 8b 8d 38 01 + 0009d 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] + 000a1 ba 0c 00 00 00 mov edx, 12 + 000a6 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 000a5 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000aa 48 89 85 48 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000b1 eb 0b jmp SHORT $LN4@JitEmitRip + 000ad e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000b2 48 89 85 48 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000b9 eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000b3 48 c7 85 48 01 + 000bb 48 c7 85 48 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000be 48 8b 85 48 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000c5 48 89 85 18 01 + 000c6 48 8b 85 48 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000cd 48 89 85 18 01 00 00 mov QWORD PTR $T4[rbp], rax - 000cc 48 8b 85 18 01 + 000d4 48 8b 85 18 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000d3 48 89 45 38 mov QWORD PTR Link$[rbp], rax + 000db 48 89 45 38 mov QWORD PTR Link$[rbp], rax ; 20 : *(PINT32)&Link->RawData[3] = RipDelta; - 000d7 b8 01 00 00 00 mov eax, 1 - 000dc 48 6b c0 03 imul rax, rax, 3 - 000e0 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000e4 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000e8 8b 95 88 01 00 + 000df b8 01 00 00 00 mov eax, 1 + 000e4 48 6b c0 03 imul rax, rax, 3 + 000e8 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 000ec 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000f0 8b 95 88 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000ee 89 14 08 mov DWORD PTR [rax+rcx], edx + 000f6 89 14 08 mov DWORD PTR [rax+rcx], edx ; 21 : RtlCopyMemory(&Link->RawData[7], Data, 2); - 000f1 b8 01 00 00 00 mov eax, 1 - 000f6 48 6b c0 07 imul rax, rax, 7 - 000fa 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000fe 48 03 41 20 add rax, QWORD PTR [rcx+32] - 00102 41 b8 02 00 00 + 000f9 b8 01 00 00 00 mov eax, 1 + 000fe 48 6b c0 07 imul rax, rax, 7 + 00102 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 00106 48 03 41 20 add rax, QWORD PTR [rcx+32] + 0010a 41 b8 02 00 00 00 mov r8d, 2 - 00108 48 8b 95 90 01 + 00110 48 8b 95 90 01 00 00 mov rdx, QWORD PTR Data$[rbp] - 0010f 48 8b c8 mov rcx, rax - 00112 e8 00 00 00 00 call memcpy + 00117 48 8b c8 mov rcx, rax + 0011a e8 00 00 00 00 call memcpy ; 22 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 00117 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] - 0011b 48 83 c0 30 add rax, 48 ; 00000030H - 0011f 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00123 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0011f 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] + 00123 48 83 c0 30 add rax, 48 ; 00000030H 00127 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 0012b 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 0012f 48 8b c8 mov rcx, rax - 00132 e8 00 00 00 00 call xed_decode + 0012b 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0012f 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 00133 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 00137 48 8b c8 mov rcx, rax + 0013a e8 00 00 00 00 call xed_decode ; 23 : NcAppendToBlock(Block, Link); - 00137 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] - 0013b 48 8b 8d 80 01 + 0013f 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] + 00143 48 8b 8d 80 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 00142 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 0014a e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 24 : return TRUE; - 00147 b8 01 00 00 00 mov eax, 1 + 0014f b8 01 00 00 00 mov eax, 1 ; 25 : } - 0014c 8b f8 mov edi, eax - 0014e 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 00152 48 8d 15 00 00 + 00154 8b f8 mov edi, eax + 00156 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 0015a 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcFrameData - 00159 e8 00 00 00 00 call _RTC_CheckStackVars - 0015e 8b c7 mov eax, edi - 00160 48 8b 8d 50 01 + 00161 e8 00 00 00 00 call _RTC_CheckStackVars + 00166 8b c7 mov eax, edi + 00168 48 8b 8d 50 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00167 48 33 cd xor rcx, rbp - 0016a e8 00 00 00 00 call __security_check_cookie - 0016f 48 8d a5 68 01 + 0016f 48 33 cd xor rcx, rbp + 00172 e8 00 00 00 00 call __security_check_cookie + 00177 48 8d a5 68 01 00 00 lea rsp, QWORD PTR [rbp+360] - 00176 5f pop rdi - 00177 5d pop rbp - 00178 c3 ret 0 + 0017e 5f pop rdi + 0017f 5d pop rbp + 00180 c3 ret 0 ?JitEmitRipRelativeMovW@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ENDP ; JitEmitRipRelativeMovW _TEXT ENDS ; COMDAT text$x @@ -954,7 +958,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -965,7 +969,7 @@ Data$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -983,7 +987,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -994,7 +998,7 @@ Data$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -1013,7 +1017,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1028,15 +1032,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 88 01 - 00 00 sub rsp, 392 ; 00000188H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 98 01 + 00 00 sub rsp, 408 ; 00000198H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H + 0001f b9 66 00 00 00 mov ecx, 102 ; 00000066H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 a8 - 01 00 00 mov rcx, QWORD PTR [rsp+424] + 0002b 48 8b 8c 24 b8 + 01 00 00 mov rcx, QWORD PTR [rsp+440] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -1068,92 +1072,94 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 00089 48 83 bd 38 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00091 74 24 je SHORT $LN3@JitEmitRip - 00093 41 b9 0a 00 00 + 00091 74 2c je SHORT $LN3@JitEmitRip + 00093 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0009b 41 b9 0a 00 00 00 mov r9d, 10 - 00099 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] - 0009d ba 0c 00 00 00 mov edx, 12 - 000a2 48 8b 8d 38 01 + 000a1 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] + 000a5 ba 0c 00 00 00 mov edx, 12 + 000aa 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 000a9 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000ae 48 89 85 48 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000b5 eb 0b jmp SHORT $LN4@JitEmitRip + 000b1 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000b6 48 89 85 48 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000bd eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000b7 48 c7 85 48 01 + 000bf 48 c7 85 48 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000c2 48 8b 85 48 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000c9 48 89 85 18 01 + 000ca 48 8b 85 48 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000d1 48 89 85 18 01 00 00 mov QWORD PTR $T4[rbp], rax - 000d0 48 8b 85 18 01 + 000d8 48 8b 85 18 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000d7 48 89 45 38 mov QWORD PTR Link$[rbp], rax + 000df 48 89 45 38 mov QWORD PTR Link$[rbp], rax ; 8 : *(PINT32)&Link->RawData[2] = RipDelta; - 000db b8 01 00 00 00 mov eax, 1 - 000e0 48 6b c0 02 imul rax, rax, 2 - 000e4 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000e8 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000ec 8b 95 88 01 00 + 000e3 b8 01 00 00 00 mov eax, 1 + 000e8 48 6b c0 02 imul rax, rax, 2 + 000ec 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 000f0 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000f4 8b 95 88 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000f2 89 14 08 mov DWORD PTR [rax+rcx], edx + 000fa 89 14 08 mov DWORD PTR [rax+rcx], edx ; 9 : RtlCopyMemory(&Link->RawData[6], Data, 4); - 000f5 b8 01 00 00 00 mov eax, 1 - 000fa 48 6b c0 06 imul rax, rax, 6 - 000fe 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00102 48 03 41 20 add rax, QWORD PTR [rcx+32] - 00106 41 b8 04 00 00 + 000fd b8 01 00 00 00 mov eax, 1 + 00102 48 6b c0 06 imul rax, rax, 6 + 00106 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 0010a 48 03 41 20 add rax, QWORD PTR [rcx+32] + 0010e 41 b8 04 00 00 00 mov r8d, 4 - 0010c 48 8b 95 90 01 + 00114 48 8b 95 90 01 00 00 mov rdx, QWORD PTR Data$[rbp] - 00113 48 8b c8 mov rcx, rax - 00116 e8 00 00 00 00 call memcpy + 0011b 48 8b c8 mov rcx, rax + 0011e e8 00 00 00 00 call memcpy ; 10 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 0011b 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] - 0011f 48 83 c0 30 add rax, 48 ; 00000030H - 00123 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00127 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00123 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] + 00127 48 83 c0 30 add rax, 48 ; 00000030H 0012b 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 0012f 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 00133 48 8b c8 mov rcx, rax - 00136 e8 00 00 00 00 call xed_decode + 0012f 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00133 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 00137 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 0013b 48 8b c8 mov rcx, rax + 0013e e8 00 00 00 00 call xed_decode ; 11 : NcAppendToBlock(Block, Link); - 0013b 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] - 0013f 48 8b 8d 80 01 + 00143 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] + 00147 48 8b 8d 80 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 00146 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 0014e e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 12 : return TRUE; - 0014b b8 01 00 00 00 mov eax, 1 + 00153 b8 01 00 00 00 mov eax, 1 ; 13 : } - 00150 8b f8 mov edi, eax - 00152 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 00156 48 8d 15 00 00 + 00158 8b f8 mov edi, eax + 0015a 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 0015e 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z$rtcFrameData - 0015d e8 00 00 00 00 call _RTC_CheckStackVars - 00162 8b c7 mov eax, edi - 00164 48 8b 8d 50 01 + 00165 e8 00 00 00 00 call _RTC_CheckStackVars + 0016a 8b c7 mov eax, edi + 0016c 48 8b 8d 50 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 0016b 48 33 cd xor rcx, rbp - 0016e e8 00 00 00 00 call __security_check_cookie - 00173 48 8d a5 68 01 + 00173 48 33 cd xor rcx, rbp + 00176 e8 00 00 00 00 call __security_check_cookie + 0017b 48 8d a5 68 01 00 00 lea rsp, QWORD PTR [rbp+360] - 0017a 5f pop rdi - 0017b 5d pop rbp - 0017c c3 ret 0 + 00182 5f pop rdi + 00183 5d pop rbp + 00184 c3 ret 0 ?JitEmitRipRelativeMovD@@YAHPEAU_NATIVE_CODE_BLOCK@@HPEAE@Z ENDP ; JitEmitRipRelativeMovD _TEXT ENDS ; COMDAT text$x @@ -1162,7 +1168,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1173,7 +1179,7 @@ Data$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -1191,7 +1197,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1202,7 +1208,7 @@ Data$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] diff --git a/CodeVirtualizer/x64/Debug/RipOrInst.cod b/CodeVirtualizer/x64/Debug/RipOrInst.cod index 25ff648..bc01b21 100644 --- a/CodeVirtualizer/x64/Debug/RipOrInst.cod +++ b/CodeVirtualizer/x64/Debug/RipOrInst.cod @@ -116,7 +116,7 @@ EXTRN __imp_?_Getmonths@_Locinfo@std@@QEBAPEBDXZ:PROC EXTRN __imp_?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN __imp_?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN xed_decode:PROC -EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK +EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK EXTRN ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z:PROC ; NcAppendToBlock EXTRN _RTC_CheckStackVars:PROC EXTRN _RTC_InitBase:PROC @@ -190,7 +190,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD imagerel $LN6 - DD imagerel $LN6+369 + DD imagerel $LN6+377 DD imagerel $unwind$?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z pdata ENDS ; COMDAT pdata @@ -202,7 +202,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD imagerel $LN6 - DD imagerel $LN6+367 + DD imagerel $LN6+375 DD imagerel $unwind$?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z pdata ENDS ; COMDAT pdata @@ -214,7 +214,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD imagerel $LN6 - DD imagerel $LN6+358 + DD imagerel $LN6+366 DD imagerel $unwind$?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z pdata ENDS ; COMDAT pdata @@ -270,7 +270,7 @@ $ip2state$?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 06H DB 00H DB 0faH DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -287,13 +287,13 @@ $cppxdata$?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 025054419H - DD 0117231cH - DD 07010002fH +$unwind$?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 035054419H + DD 0117331cH + DD 070100031H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z - DD 0162H + DD 0172H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -306,7 +306,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 024H ; JitEmitRipRelativeOrB +?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 034H ; JitEmitRipRelativeOrB DD 07H DQ FLAT:?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcName$0 ORG $+48 @@ -327,7 +327,7 @@ $ip2state$?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 06H DB 00H DB 015H, 02H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -344,13 +344,13 @@ $cppxdata$?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 025054419H - DD 0117231cH - DD 070100031H +$unwind$?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 035054419H + DD 0117331cH + DD 070100033H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z - DD 0172H + DD 0182H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -363,7 +363,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 028H ; JitEmitRipRelativeOrW +?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 038H ; JitEmitRipRelativeOrW DD 09H DQ FLAT:?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcName$0 ORG $+48 @@ -384,7 +384,7 @@ $ip2state$?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 06H DB 00H DB '%', 02H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -401,13 +401,13 @@ $cppxdata$?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 025054419H - DD 0117231cH - DD 070100031H +$unwind$?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 035054419H + DD 0117331cH + DD 070100033H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z - DD 0172H + DD 0182H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -420,7 +420,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 028H ; JitEmitRipRelativeOrD +?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 038H ; JitEmitRipRelativeOrD DD 0aH DQ FLAT:?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcName$0 ORG $+48 @@ -603,7 +603,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -618,15 +618,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 78 01 - 00 00 sub rsp, 376 ; 00000178H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 88 01 + 00 00 sub rsp, 392 ; 00000188H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 5e 00 00 00 mov ecx, 94 ; 0000005eH + 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 98 - 01 00 00 mov rcx, QWORD PTR [rsp+408] + 0002b 48 8b 8c 24 a8 + 01 00 00 mov rcx, QWORD PTR [rsp+424] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -655,89 +655,91 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 0007d 48 83 bd 28 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00085 74 24 je SHORT $LN3@JitEmitRip - 00087 41 b9 07 00 00 + 00085 74 2c je SHORT $LN3@JitEmitRip + 00087 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0008f 41 b9 07 00 00 00 mov r9d, 7 - 0008d 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] - 00091 ba 0c 00 00 00 mov edx, 12 - 00096 48 8b 8d 28 01 + 00095 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] + 00099 ba 0c 00 00 00 mov edx, 12 + 0009e 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 0009d e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000a2 48 89 85 38 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000a9 eb 0b jmp SHORT $LN4@JitEmitRip + 000a5 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000aa 48 89 85 38 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000b1 eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000ab 48 c7 85 38 01 + 000b3 48 c7 85 38 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000b6 48 8b 85 38 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000bd 48 89 85 08 01 + 000be 48 8b 85 38 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000c5 48 89 85 08 01 00 00 mov QWORD PTR $T4[rbp], rax - 000c4 48 8b 85 08 01 + 000cc 48 8b 85 08 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000cb 48 89 45 28 mov QWORD PTR Link$[rbp], rax + 000d3 48 89 45 28 mov QWORD PTR Link$[rbp], rax ; 32 : *(PINT32)&Link->RawData[2] = RipDelta; - 000cf b8 01 00 00 00 mov eax, 1 - 000d4 48 6b c0 02 imul rax, rax, 2 - 000d8 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000dc 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000e0 8b 95 78 01 00 + 000d7 b8 01 00 00 00 mov eax, 1 + 000dc 48 6b c0 02 imul rax, rax, 2 + 000e0 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000e4 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000e8 8b 95 78 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000e6 89 14 08 mov DWORD PTR [rax+rcx], edx + 000ee 89 14 08 mov DWORD PTR [rax+rcx], edx ; 33 : *(PUCHAR)&Link->RawData[6] = (UCHAR)Value; - 000e9 b8 01 00 00 00 mov eax, 1 - 000ee 48 6b c0 06 imul rax, rax, 6 - 000f2 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000f6 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000fa 0f b6 95 80 01 + 000f1 b8 01 00 00 00 mov eax, 1 + 000f6 48 6b c0 06 imul rax, rax, 6 + 000fa 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000fe 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 00102 0f b6 95 80 01 00 00 movzx edx, BYTE PTR Value$[rbp] - 00101 88 14 08 mov BYTE PTR [rax+rcx], dl + 00109 88 14 08 mov BYTE PTR [rax+rcx], dl ; 34 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 00104 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] - 00108 48 83 c0 30 add rax, 48 ; 00000030H - 0010c 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 00110 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0010c 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] + 00110 48 83 c0 30 add rax, 48 ; 00000030H 00114 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 00118 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 0011c 48 8b c8 mov rcx, rax - 0011f e8 00 00 00 00 call xed_decode + 00118 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0011c 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 00120 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 00124 48 8b c8 mov rcx, rax + 00127 e8 00 00 00 00 call xed_decode ; 35 : NcAppendToBlock(Block, Link); - 00124 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] - 00128 48 8b 8d 70 01 + 0012c 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] + 00130 48 8b 8d 70 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 0012f e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 00137 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 36 : return TRUE; - 00134 b8 01 00 00 00 mov eax, 1 + 0013c b8 01 00 00 00 mov eax, 1 ; 37 : } - 00139 8b f8 mov edi, eax - 0013b 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 0013f 48 8d 15 00 00 + 00141 8b f8 mov edi, eax + 00143 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00147 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcFrameData - 00146 e8 00 00 00 00 call _RTC_CheckStackVars - 0014b 8b c7 mov eax, edi - 0014d 48 8b 8d 40 01 + 0014e e8 00 00 00 00 call _RTC_CheckStackVars + 00153 8b c7 mov eax, edi + 00155 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00154 48 33 cd xor rcx, rbp - 00157 e8 00 00 00 00 call __security_check_cookie - 0015c 48 8d a5 58 01 + 0015c 48 33 cd xor rcx, rbp + 0015f e8 00 00 00 00 call __security_check_cookie + 00164 48 8d a5 58 01 00 00 lea rsp, QWORD PTR [rbp+344] - 00163 5f pop rdi - 00164 5d pop rbp - 00165 c3 ret 0 + 0016b 5f pop rdi + 0016c 5d pop rbp + 0016d c3 ret 0 ?JitEmitRipRelativeOrB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z ENDP ; JitEmitRipRelativeOrB _TEXT ENDS ; COMDAT text$x @@ -746,7 +748,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -757,7 +759,7 @@ Value$ = 384 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -775,7 +777,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -786,7 +788,7 @@ Value$ = 384 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -805,7 +807,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -820,15 +822,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 88 01 - 00 00 sub rsp, 392 ; 00000188H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 98 01 + 00 00 sub rsp, 408 ; 00000198H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H + 0001f b9 66 00 00 00 mov ecx, 102 ; 00000066H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 a8 - 01 00 00 mov rcx, QWORD PTR [rsp+424] + 0002b 48 8b 8c 24 b8 + 01 00 00 mov rcx, QWORD PTR [rsp+440] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -859,89 +861,91 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 00085 48 83 bd 38 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 0008d 74 24 je SHORT $LN3@JitEmitRip - 0008f 41 b9 09 00 00 + 0008d 74 2c je SHORT $LN3@JitEmitRip + 0008f c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 00097 41 b9 09 00 00 00 mov r9d, 9 - 00095 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] - 00099 ba 0c 00 00 00 mov edx, 12 - 0009e 48 8b 8d 38 01 + 0009d 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] + 000a1 ba 0c 00 00 00 mov edx, 12 + 000a6 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 000a5 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000aa 48 89 85 48 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000b1 eb 0b jmp SHORT $LN4@JitEmitRip + 000ad e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000b2 48 89 85 48 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000b9 eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000b3 48 c7 85 48 01 + 000bb 48 c7 85 48 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000be 48 8b 85 48 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000c5 48 89 85 18 01 + 000c6 48 8b 85 48 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000cd 48 89 85 18 01 00 00 mov QWORD PTR $T4[rbp], rax - 000cc 48 8b 85 18 01 + 000d4 48 8b 85 18 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000d3 48 89 45 38 mov QWORD PTR Link$[rbp], rax + 000db 48 89 45 38 mov QWORD PTR Link$[rbp], rax ; 20 : *(PINT32)&Link->RawData[3] = RipDelta; - 000d7 b8 01 00 00 00 mov eax, 1 - 000dc 48 6b c0 03 imul rax, rax, 3 - 000e0 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000e4 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000e8 8b 95 88 01 00 + 000df b8 01 00 00 00 mov eax, 1 + 000e4 48 6b c0 03 imul rax, rax, 3 + 000e8 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 000ec 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000f0 8b 95 88 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000ee 89 14 08 mov DWORD PTR [rax+rcx], edx + 000f6 89 14 08 mov DWORD PTR [rax+rcx], edx ; 21 : *(PUSHORT)&Link->RawData[7] = (USHORT)Value; - 000f1 b8 01 00 00 00 mov eax, 1 - 000f6 48 6b c0 07 imul rax, rax, 7 - 000fa 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000fe 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 00102 0f b7 95 90 01 + 000f9 b8 01 00 00 00 mov eax, 1 + 000fe 48 6b c0 07 imul rax, rax, 7 + 00102 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 00106 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 0010a 0f b7 95 90 01 00 00 movzx edx, WORD PTR Value$[rbp] - 00109 66 89 14 08 mov WORD PTR [rax+rcx], dx + 00111 66 89 14 08 mov WORD PTR [rax+rcx], dx ; 22 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 0010d 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] - 00111 48 83 c0 30 add rax, 48 ; 00000030H - 00115 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00119 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00115 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] + 00119 48 83 c0 30 add rax, 48 ; 00000030H 0011d 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00121 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 00125 48 8b c8 mov rcx, rax - 00128 e8 00 00 00 00 call xed_decode + 00121 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00125 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 00129 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 0012d 48 8b c8 mov rcx, rax + 00130 e8 00 00 00 00 call xed_decode ; 23 : NcAppendToBlock(Block, Link); - 0012d 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] - 00131 48 8b 8d 80 01 + 00135 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] + 00139 48 8b 8d 80 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 00138 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 00140 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 24 : return TRUE; - 0013d b8 01 00 00 00 mov eax, 1 + 00145 b8 01 00 00 00 mov eax, 1 ; 25 : } - 00142 8b f8 mov edi, eax - 00144 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 00148 48 8d 15 00 00 + 0014a 8b f8 mov edi, eax + 0014c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00150 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcFrameData - 0014f e8 00 00 00 00 call _RTC_CheckStackVars - 00154 8b c7 mov eax, edi - 00156 48 8b 8d 50 01 + 00157 e8 00 00 00 00 call _RTC_CheckStackVars + 0015c 8b c7 mov eax, edi + 0015e 48 8b 8d 50 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 0015d 48 33 cd xor rcx, rbp - 00160 e8 00 00 00 00 call __security_check_cookie - 00165 48 8d a5 68 01 + 00165 48 33 cd xor rcx, rbp + 00168 e8 00 00 00 00 call __security_check_cookie + 0016d 48 8d a5 68 01 00 00 lea rsp, QWORD PTR [rbp+360] - 0016c 5f pop rdi - 0016d 5d pop rbp - 0016e c3 ret 0 + 00174 5f pop rdi + 00175 5d pop rbp + 00176 c3 ret 0 ?JitEmitRipRelativeOrW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z ENDP ; JitEmitRipRelativeOrW _TEXT ENDS ; COMDAT text$x @@ -950,7 +954,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -961,7 +965,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -979,7 +983,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -990,7 +994,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -1009,7 +1013,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1024,15 +1028,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 88 01 - 00 00 sub rsp, 392 ; 00000188H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 98 01 + 00 00 sub rsp, 408 ; 00000198H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H + 0001f b9 66 00 00 00 mov ecx, 102 ; 00000066H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 a8 - 01 00 00 mov rcx, QWORD PTR [rsp+424] + 0002b 48 8b 8c 24 b8 + 01 00 00 mov rcx, QWORD PTR [rsp+440] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -1064,89 +1068,91 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 00089 48 83 bd 38 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00091 74 24 je SHORT $LN3@JitEmitRip - 00093 41 b9 0a 00 00 + 00091 74 2c je SHORT $LN3@JitEmitRip + 00093 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0009b 41 b9 0a 00 00 00 mov r9d, 10 - 00099 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] - 0009d ba 0c 00 00 00 mov edx, 12 - 000a2 48 8b 8d 38 01 + 000a1 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] + 000a5 ba 0c 00 00 00 mov edx, 12 + 000aa 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 000a9 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000ae 48 89 85 48 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000b5 eb 0b jmp SHORT $LN4@JitEmitRip + 000b1 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000b6 48 89 85 48 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000bd eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000b7 48 c7 85 48 01 + 000bf 48 c7 85 48 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000c2 48 8b 85 48 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000c9 48 89 85 18 01 + 000ca 48 8b 85 48 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000d1 48 89 85 18 01 00 00 mov QWORD PTR $T4[rbp], rax - 000d0 48 8b 85 18 01 + 000d8 48 8b 85 18 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000d7 48 89 45 38 mov QWORD PTR Link$[rbp], rax + 000df 48 89 45 38 mov QWORD PTR Link$[rbp], rax ; 8 : *(PINT32)&Link->RawData[2] = RipDelta; - 000db b8 01 00 00 00 mov eax, 1 - 000e0 48 6b c0 02 imul rax, rax, 2 - 000e4 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000e8 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000ec 8b 95 88 01 00 + 000e3 b8 01 00 00 00 mov eax, 1 + 000e8 48 6b c0 02 imul rax, rax, 2 + 000ec 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 000f0 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000f4 8b 95 88 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000f2 89 14 08 mov DWORD PTR [rax+rcx], edx + 000fa 89 14 08 mov DWORD PTR [rax+rcx], edx ; 9 : *(PULONG)&Link->RawData[6] = Value; - 000f5 b8 01 00 00 00 mov eax, 1 - 000fa 48 6b c0 06 imul rax, rax, 6 - 000fe 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00102 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 00106 8b 95 90 01 00 + 000fd b8 01 00 00 00 mov eax, 1 + 00102 48 6b c0 06 imul rax, rax, 6 + 00106 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 0010a 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 0010e 8b 95 90 01 00 00 mov edx, DWORD PTR Value$[rbp] - 0010c 89 14 08 mov DWORD PTR [rax+rcx], edx + 00114 89 14 08 mov DWORD PTR [rax+rcx], edx ; 10 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 0010f 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] - 00113 48 83 c0 30 add rax, 48 ; 00000030H - 00117 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 0011b 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00117 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] + 0011b 48 83 c0 30 add rax, 48 ; 00000030H 0011f 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00123 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 00127 48 8b c8 mov rcx, rax - 0012a e8 00 00 00 00 call xed_decode + 00123 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00127 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 0012b 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 0012f 48 8b c8 mov rcx, rax + 00132 e8 00 00 00 00 call xed_decode ; 11 : NcAppendToBlock(Block, Link); - 0012f 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] - 00133 48 8b 8d 80 01 + 00137 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] + 0013b 48 8b 8d 80 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 0013a e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 00142 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 12 : return TRUE; - 0013f b8 01 00 00 00 mov eax, 1 + 00147 b8 01 00 00 00 mov eax, 1 ; 13 : } - 00144 8b f8 mov edi, eax - 00146 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 0014a 48 8d 15 00 00 + 0014c 8b f8 mov edi, eax + 0014e 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00152 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcFrameData - 00151 e8 00 00 00 00 call _RTC_CheckStackVars - 00156 8b c7 mov eax, edi - 00158 48 8b 8d 50 01 + 00159 e8 00 00 00 00 call _RTC_CheckStackVars + 0015e 8b c7 mov eax, edi + 00160 48 8b 8d 50 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 0015f 48 33 cd xor rcx, rbp - 00162 e8 00 00 00 00 call __security_check_cookie - 00167 48 8d a5 68 01 + 00167 48 33 cd xor rcx, rbp + 0016a e8 00 00 00 00 call __security_check_cookie + 0016f 48 8d a5 68 01 00 00 lea rsp, QWORD PTR [rbp+360] - 0016e 5f pop rdi - 0016f 5d pop rbp - 00170 c3 ret 0 + 00176 5f pop rdi + 00177 5d pop rbp + 00178 c3 ret 0 ?JitEmitRipRelativeOrD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z ENDP ; JitEmitRipRelativeOrD _TEXT ENDS ; COMDAT text$x @@ -1155,7 +1161,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1166,7 +1172,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -1184,7 +1190,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1195,7 +1201,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] diff --git a/CodeVirtualizer/x64/Debug/RipXorInst.cod b/CodeVirtualizer/x64/Debug/RipXorInst.cod index e5caf51..038ff51 100644 --- a/CodeVirtualizer/x64/Debug/RipXorInst.cod +++ b/CodeVirtualizer/x64/Debug/RipXorInst.cod @@ -116,7 +116,7 @@ EXTRN __imp_?_Getmonths@_Locinfo@std@@QEBAPEBDXZ:PROC EXTRN __imp_?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN __imp_?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ:PROC EXTRN xed_decode:PROC -EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK +EXTRN ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z:PROC ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK EXTRN ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z:PROC ; NcAppendToBlock EXTRN _RTC_CheckStackVars:PROC EXTRN _RTC_InitBase:PROC @@ -190,7 +190,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD imagerel $LN6 - DD imagerel $LN6+369 + DD imagerel $LN6+377 DD imagerel $unwind$?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z pdata ENDS ; COMDAT pdata @@ -202,7 +202,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD imagerel $LN6 - DD imagerel $LN6+367 + DD imagerel $LN6+375 DD imagerel $unwind$?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z pdata ENDS ; COMDAT pdata @@ -214,7 +214,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD imagerel $LN6 - DD imagerel $LN6+358 + DD imagerel $LN6+366 DD imagerel $unwind$?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z pdata ENDS ; COMDAT pdata @@ -270,7 +270,7 @@ $ip2state$?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 06H DB 00H DB 0faH DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -287,13 +287,13 @@ $cppxdata$?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 025054419H - DD 0117231cH - DD 07010002fH +$unwind$?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 035054419H + DD 0117331cH + DD 070100031H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z - DD 0162H + DD 0172H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -306,7 +306,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 024H ; JitEmitRipRelativeXorB +?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 034H ; JitEmitRipRelativeXorB DD 07H DQ FLAT:?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcName$0 ORG $+48 @@ -327,7 +327,7 @@ $ip2state$?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 06H DB 00H DB 015H, 02H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -344,13 +344,13 @@ $cppxdata$?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 025054419H - DD 0117231cH - DD 070100031H +$unwind$?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 035054419H + DD 0117331cH + DD 070100033H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z - DD 0172H + DD 0182H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -363,7 +363,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 028H ; JitEmitRipRelativeXorW +?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 038H ; JitEmitRipRelativeXorW DD 09H DQ FLAT:?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcName$0 ORG $+48 @@ -384,7 +384,7 @@ $ip2state$?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 06H DB 00H DB '%', 02H DB 02H - DB 08eH + DB 09eH DB 00H xdata ENDS ; COMDAT xdata @@ -401,13 +401,13 @@ $cppxdata$?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DB 028H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 025054419H - DD 0117231cH - DD 070100031H +$unwind$?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z DD 035054419H + DD 0117331cH + DD 070100033H DD 0500fH DD imagerel __GSHandlerCheck_EH4 DD imagerel $cppxdata$?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z - DD 0172H + DD 0182H xdata ENDS ; COMDAT CONST CONST SEGMENT @@ -420,7 +420,7 @@ CONST SEGMENT DB 061H DB 00H ORG $+8 -?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 028H ; JitEmitRipRelativeXorD +?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcVarDesc DD 038H ; JitEmitRipRelativeXorD DD 0aH DQ FLAT:?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcName$0 ORG $+48 @@ -603,7 +603,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -618,15 +618,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 78 01 - 00 00 sub rsp, 376 ; 00000178H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 88 01 + 00 00 sub rsp, 392 ; 00000188H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 5e 00 00 00 mov ecx, 94 ; 0000005eH + 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 98 - 01 00 00 mov rcx, QWORD PTR [rsp+408] + 0002b 48 8b 8c 24 a8 + 01 00 00 mov rcx, QWORD PTR [rsp+424] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -655,89 +655,91 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 0007d 48 83 bd 28 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00085 74 24 je SHORT $LN3@JitEmitRip - 00087 41 b9 07 00 00 + 00085 74 2c je SHORT $LN3@JitEmitRip + 00087 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0008f 41 b9 07 00 00 00 mov r9d, 7 - 0008d 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] - 00091 ba 0c 00 00 00 mov edx, 12 - 00096 48 8b 8d 28 01 + 00095 4c 8d 45 04 lea r8, QWORD PTR RawData$[rbp] + 00099 ba 0c 00 00 00 mov edx, 12 + 0009e 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 0009d e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000a2 48 89 85 38 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000a9 eb 0b jmp SHORT $LN4@JitEmitRip + 000a5 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000aa 48 89 85 38 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000b1 eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000ab 48 c7 85 38 01 + 000b3 48 c7 85 38 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000b6 48 8b 85 38 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000bd 48 89 85 08 01 + 000be 48 8b 85 38 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000c5 48 89 85 08 01 00 00 mov QWORD PTR $T4[rbp], rax - 000c4 48 8b 85 08 01 + 000cc 48 8b 85 08 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000cb 48 89 45 28 mov QWORD PTR Link$[rbp], rax + 000d3 48 89 45 28 mov QWORD PTR Link$[rbp], rax ; 32 : *(PINT32)&Link->RawData[2] = RipDelta; - 000cf b8 01 00 00 00 mov eax, 1 - 000d4 48 6b c0 02 imul rax, rax, 2 - 000d8 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000dc 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000e0 8b 95 78 01 00 + 000d7 b8 01 00 00 00 mov eax, 1 + 000dc 48 6b c0 02 imul rax, rax, 2 + 000e0 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000e4 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000e8 8b 95 78 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000e6 89 14 08 mov DWORD PTR [rax+rcx], edx + 000ee 89 14 08 mov DWORD PTR [rax+rcx], edx ; 33 : *(PUCHAR)&Link->RawData[6] = (UCHAR)Value; - 000e9 b8 01 00 00 00 mov eax, 1 - 000ee 48 6b c0 06 imul rax, rax, 6 - 000f2 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 000f6 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000fa 0f b6 95 80 01 + 000f1 b8 01 00 00 00 mov eax, 1 + 000f6 48 6b c0 06 imul rax, rax, 6 + 000fa 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 000fe 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 00102 0f b6 95 80 01 00 00 movzx edx, BYTE PTR Value$[rbp] - 00101 88 14 08 mov BYTE PTR [rax+rcx], dl + 00109 88 14 08 mov BYTE PTR [rax+rcx], dl ; 34 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 00104 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] - 00108 48 83 c0 30 add rax, 48 ; 00000030H - 0010c 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 00110 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0010c 48 8b 45 28 mov rax, QWORD PTR Link$[rbp] + 00110 48 83 c0 30 add rax, 48 ; 00000030H 00114 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] - 00118 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 0011c 48 8b c8 mov rcx, rax - 0011f e8 00 00 00 00 call xed_decode + 00118 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 0011c 48 8b 4d 28 mov rcx, QWORD PTR Link$[rbp] + 00120 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 00124 48 8b c8 mov rcx, rax + 00127 e8 00 00 00 00 call xed_decode ; 35 : NcAppendToBlock(Block, Link); - 00124 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] - 00128 48 8b 8d 70 01 + 0012c 48 8b 55 28 mov rdx, QWORD PTR Link$[rbp] + 00130 48 8b 8d 70 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 0012f e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 00137 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 36 : return TRUE; - 00134 b8 01 00 00 00 mov eax, 1 + 0013c b8 01 00 00 00 mov eax, 1 ; 37 : } - 00139 8b f8 mov edi, eax - 0013b 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 0013f 48 8d 15 00 00 + 00141 8b f8 mov edi, eax + 00143 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00147 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcFrameData - 00146 e8 00 00 00 00 call _RTC_CheckStackVars - 0014b 8b c7 mov eax, edi - 0014d 48 8b 8d 40 01 + 0014e e8 00 00 00 00 call _RTC_CheckStackVars + 00153 8b c7 mov eax, edi + 00155 48 8b 8d 40 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 00154 48 33 cd xor rcx, rbp - 00157 e8 00 00 00 00 call __security_check_cookie - 0015c 48 8d a5 58 01 + 0015c 48 33 cd xor rcx, rbp + 0015f e8 00 00 00 00 call __security_check_cookie + 00164 48 8d a5 58 01 00 00 lea rsp, QWORD PTR [rbp+344] - 00163 5f pop rdi - 00164 5d pop rbp - 00165 c3 ret 0 + 0016b 5f pop rdi + 0016c 5d pop rbp + 0016d c3 ret 0 ?JitEmitRipRelativeXorB@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z ENDP ; JitEmitRipRelativeXorB _TEXT ENDS ; COMDAT text$x @@ -746,7 +748,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -757,7 +759,7 @@ Value$ = 384 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -775,7 +777,7 @@ RawData$ = 4 Link$ = 40 $T4 = 264 $T5 = 296 -tv78 = 312 +tv79 = 312 __$ArrayPad$ = 320 Block$ = 368 RipDelta$ = 376 @@ -786,7 +788,7 @@ Value$ = 384 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -805,7 +807,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -820,15 +822,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 88 01 - 00 00 sub rsp, 392 ; 00000188H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 98 01 + 00 00 sub rsp, 408 ; 00000198H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H + 0001f b9 66 00 00 00 mov ecx, 102 ; 00000066H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 a8 - 01 00 00 mov rcx, QWORD PTR [rsp+424] + 0002b 48 8b 8c 24 b8 + 01 00 00 mov rcx, QWORD PTR [rsp+440] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -859,89 +861,91 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 00085 48 83 bd 38 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 0008d 74 24 je SHORT $LN3@JitEmitRip - 0008f 41 b9 09 00 00 + 0008d 74 2c je SHORT $LN3@JitEmitRip + 0008f c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 00097 41 b9 09 00 00 00 mov r9d, 9 - 00095 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] - 00099 ba 0c 00 00 00 mov edx, 12 - 0009e 48 8b 8d 38 01 + 0009d 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] + 000a1 ba 0c 00 00 00 mov edx, 12 + 000a6 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 000a5 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000aa 48 89 85 48 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000b1 eb 0b jmp SHORT $LN4@JitEmitRip + 000ad e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000b2 48 89 85 48 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000b9 eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000b3 48 c7 85 48 01 + 000bb 48 c7 85 48 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000be 48 8b 85 48 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000c5 48 89 85 18 01 + 000c6 48 8b 85 48 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000cd 48 89 85 18 01 00 00 mov QWORD PTR $T4[rbp], rax - 000cc 48 8b 85 18 01 + 000d4 48 8b 85 18 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000d3 48 89 45 38 mov QWORD PTR Link$[rbp], rax + 000db 48 89 45 38 mov QWORD PTR Link$[rbp], rax ; 20 : *(PINT32)&Link->RawData[3] = RipDelta; - 000d7 b8 01 00 00 00 mov eax, 1 - 000dc 48 6b c0 03 imul rax, rax, 3 - 000e0 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000e4 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000e8 8b 95 88 01 00 + 000df b8 01 00 00 00 mov eax, 1 + 000e4 48 6b c0 03 imul rax, rax, 3 + 000e8 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 000ec 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000f0 8b 95 88 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000ee 89 14 08 mov DWORD PTR [rax+rcx], edx + 000f6 89 14 08 mov DWORD PTR [rax+rcx], edx ; 21 : *(PUSHORT)&Link->RawData[7] = (USHORT)Value; - 000f1 b8 01 00 00 00 mov eax, 1 - 000f6 48 6b c0 07 imul rax, rax, 7 - 000fa 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000fe 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 00102 0f b7 95 90 01 + 000f9 b8 01 00 00 00 mov eax, 1 + 000fe 48 6b c0 07 imul rax, rax, 7 + 00102 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 00106 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 0010a 0f b7 95 90 01 00 00 movzx edx, WORD PTR Value$[rbp] - 00109 66 89 14 08 mov WORD PTR [rax+rcx], dx + 00111 66 89 14 08 mov WORD PTR [rax+rcx], dx ; 22 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 0010d 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] - 00111 48 83 c0 30 add rax, 48 ; 00000030H - 00115 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00119 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00115 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] + 00119 48 83 c0 30 add rax, 48 ; 00000030H 0011d 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00121 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 00125 48 8b c8 mov rcx, rax - 00128 e8 00 00 00 00 call xed_decode + 00121 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00125 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 00129 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 0012d 48 8b c8 mov rcx, rax + 00130 e8 00 00 00 00 call xed_decode ; 23 : NcAppendToBlock(Block, Link); - 0012d 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] - 00131 48 8b 8d 80 01 + 00135 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] + 00139 48 8b 8d 80 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 00138 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 00140 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 24 : return TRUE; - 0013d b8 01 00 00 00 mov eax, 1 + 00145 b8 01 00 00 00 mov eax, 1 ; 25 : } - 00142 8b f8 mov edi, eax - 00144 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 00148 48 8d 15 00 00 + 0014a 8b f8 mov edi, eax + 0014c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00150 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcFrameData - 0014f e8 00 00 00 00 call _RTC_CheckStackVars - 00154 8b c7 mov eax, edi - 00156 48 8b 8d 50 01 + 00157 e8 00 00 00 00 call _RTC_CheckStackVars + 0015c 8b c7 mov eax, edi + 0015e 48 8b 8d 50 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 0015d 48 33 cd xor rcx, rbp - 00160 e8 00 00 00 00 call __security_check_cookie - 00165 48 8d a5 68 01 + 00165 48 33 cd xor rcx, rbp + 00168 e8 00 00 00 00 call __security_check_cookie + 0016d 48 8d a5 68 01 00 00 lea rsp, QWORD PTR [rbp+360] - 0016c 5f pop rdi - 0016d 5d pop rbp - 0016e c3 ret 0 + 00174 5f pop rdi + 00175 5d pop rbp + 00176 c3 ret 0 ?JitEmitRipRelativeXorW@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z ENDP ; JitEmitRipRelativeXorW _TEXT ENDS ; COMDAT text$x @@ -950,7 +954,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -961,7 +965,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -979,7 +983,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -990,7 +994,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -1009,7 +1013,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1024,15 +1028,15 @@ $LN6: 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000e 55 push rbp 0000f 57 push rdi - 00010 48 81 ec 88 01 - 00 00 sub rsp, 392 ; 00000188H - 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00010 48 81 ec 98 01 + 00 00 sub rsp, 408 ; 00000198H + 00017 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0001c 48 8b fc mov rdi, rsp - 0001f b9 62 00 00 00 mov ecx, 98 ; 00000062H + 0001f b9 66 00 00 00 mov ecx, 102 ; 00000066H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd - 0002b 48 8b 8c 24 a8 - 01 00 00 mov rcx, QWORD PTR [rsp+424] + 0002b 48 8b 8c 24 b8 + 01 00 00 mov rcx, QWORD PTR [rsp+440] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp @@ -1064,89 +1068,91 @@ $LN6: 00 00 mov QWORD PTR $T5[rbp], rax 00089 48 83 bd 38 01 00 00 00 cmp QWORD PTR $T5[rbp], 0 - 00091 74 24 je SHORT $LN3@JitEmitRip - 00093 41 b9 0a 00 00 + 00091 74 2c je SHORT $LN3@JitEmitRip + 00093 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 0009b 41 b9 0a 00 00 00 mov r9d, 10 - 00099 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] - 0009d ba 0c 00 00 00 mov edx, 12 - 000a2 48 8b 8d 38 01 + 000a1 4c 8d 45 08 lea r8, QWORD PTR RawData$[rbp] + 000a5 ba 0c 00 00 00 mov edx, 12 + 000aa 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] - 000a9 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXK@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK - 000ae 48 89 85 48 01 - 00 00 mov QWORD PTR tv78[rbp], rax - 000b5 eb 0b jmp SHORT $LN4@JitEmitRip + 000b1 e8 00 00 00 00 call ??0_NATIVE_CODE_LINK@@QEAA@KPEAXKH@Z ; _NATIVE_CODE_LINK::_NATIVE_CODE_LINK + 000b6 48 89 85 48 01 + 00 00 mov QWORD PTR tv79[rbp], rax + 000bd eb 0b jmp SHORT $LN4@JitEmitRip $LN3@JitEmitRip: - 000b7 48 c7 85 48 01 + 000bf 48 c7 85 48 01 00 00 00 00 00 - 00 mov QWORD PTR tv78[rbp], 0 + 00 mov QWORD PTR tv79[rbp], 0 $LN4@JitEmitRip: - 000c2 48 8b 85 48 01 - 00 00 mov rax, QWORD PTR tv78[rbp] - 000c9 48 89 85 18 01 + 000ca 48 8b 85 48 01 + 00 00 mov rax, QWORD PTR tv79[rbp] + 000d1 48 89 85 18 01 00 00 mov QWORD PTR $T4[rbp], rax - 000d0 48 8b 85 18 01 + 000d8 48 8b 85 18 01 00 00 mov rax, QWORD PTR $T4[rbp] - 000d7 48 89 45 38 mov QWORD PTR Link$[rbp], rax + 000df 48 89 45 38 mov QWORD PTR Link$[rbp], rax ; 8 : *(PINT32)&Link->RawData[2] = RipDelta; - 000db b8 01 00 00 00 mov eax, 1 - 000e0 48 6b c0 02 imul rax, rax, 2 - 000e4 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 000e8 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 000ec 8b 95 88 01 00 + 000e3 b8 01 00 00 00 mov eax, 1 + 000e8 48 6b c0 02 imul rax, rax, 2 + 000ec 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 000f0 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 000f4 8b 95 88 01 00 00 mov edx, DWORD PTR RipDelta$[rbp] - 000f2 89 14 08 mov DWORD PTR [rax+rcx], edx + 000fa 89 14 08 mov DWORD PTR [rax+rcx], edx ; 9 : *(PULONG)&Link->RawData[6] = Value; - 000f5 b8 01 00 00 00 mov eax, 1 - 000fa 48 6b c0 06 imul rax, rax, 6 - 000fe 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00102 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] - 00106 8b 95 90 01 00 + 000fd b8 01 00 00 00 mov eax, 1 + 00102 48 6b c0 06 imul rax, rax, 6 + 00106 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 0010a 48 8b 49 20 mov rcx, QWORD PTR [rcx+32] + 0010e 8b 95 90 01 00 00 mov edx, DWORD PTR Value$[rbp] - 0010c 89 14 08 mov DWORD PTR [rax+rcx], edx + 00114 89 14 08 mov DWORD PTR [rax+rcx], edx ; 10 : XedDecode(&Link->XedInstruction, Link->RawData, Link->RawDataSize); - 0010f 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] - 00113 48 83 c0 30 add rax, 48 ; 00000030H - 00117 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 0011b 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00117 48 8b 45 38 mov rax, QWORD PTR Link$[rbp] + 0011b 48 83 c0 30 add rax, 48 ; 00000030H 0011f 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] - 00123 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] - 00127 48 8b c8 mov rcx, rax - 0012a e8 00 00 00 00 call xed_decode + 00123 44 8b 41 28 mov r8d, DWORD PTR [rcx+40] + 00127 48 8b 4d 38 mov rcx, QWORD PTR Link$[rbp] + 0012b 48 8b 51 20 mov rdx, QWORD PTR [rcx+32] + 0012f 48 8b c8 mov rcx, rax + 00132 e8 00 00 00 00 call xed_decode ; 11 : NcAppendToBlock(Block, Link); - 0012f 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] - 00133 48 8b 8d 80 01 + 00137 48 8b 55 38 mov rdx, QWORD PTR Link$[rbp] + 0013b 48 8b 8d 80 01 00 00 mov rcx, QWORD PTR Block$[rbp] - 0013a e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock + 00142 e8 00 00 00 00 call ?NcAppendToBlock@@YAXPEAU_NATIVE_CODE_BLOCK@@PEAU_NATIVE_CODE_LINK@@@Z ; NcAppendToBlock ; 12 : return TRUE; - 0013f b8 01 00 00 00 mov eax, 1 + 00147 b8 01 00 00 00 mov eax, 1 ; 13 : } - 00144 8b f8 mov edi, eax - 00146 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] - 0014a 48 8d 15 00 00 + 0014c 8b f8 mov edi, eax + 0014e 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00152 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z$rtcFrameData - 00151 e8 00 00 00 00 call _RTC_CheckStackVars - 00156 8b c7 mov eax, edi - 00158 48 8b 8d 50 01 + 00159 e8 00 00 00 00 call _RTC_CheckStackVars + 0015e 8b c7 mov eax, edi + 00160 48 8b 8d 50 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] - 0015f 48 33 cd xor rcx, rbp - 00162 e8 00 00 00 00 call __security_check_cookie - 00167 48 8d a5 68 01 + 00167 48 33 cd xor rcx, rbp + 0016a e8 00 00 00 00 call __security_check_cookie + 0016f 48 8d a5 68 01 00 00 lea rsp, QWORD PTR [rbp+360] - 0016e 5f pop rdi - 0016f 5d pop rbp - 00170 c3 ret 0 + 00176 5f pop rdi + 00177 5d pop rbp + 00178 c3 ret 0 ?JitEmitRipRelativeXorD@@YAHPEAU_NATIVE_CODE_BLOCK@@HK@Z ENDP ; JitEmitRipRelativeXorD _TEXT ENDS ; COMDAT text$x @@ -1155,7 +1161,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1166,7 +1172,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] @@ -1184,7 +1190,7 @@ RawData$ = 8 Link$ = 56 $T4 = 280 $T5 = 312 -tv78 = 328 +tv79 = 328 __$ArrayPad$ = 336 Block$ = 384 RipDelta$ = 392 @@ -1195,7 +1201,7 @@ Value$ = 400 0000a 55 push rbp 0000b 57 push rdi 0000c 48 83 ec 28 sub rsp, 40 ; 00000028H - 00010 48 8d 6a 20 lea rbp, QWORD PTR [rdx+32] + 00010 48 8d 6a 30 lea rbp, QWORD PTR [rdx+48] 00014 ba f0 00 00 00 mov edx, 240 ; 000000f0H 00019 48 8b 8d 38 01 00 00 mov rcx, QWORD PTR $T5[rbp] diff --git a/CodeVirtualizer/x64/Debug/Virtualizer.cod b/CodeVirtualizer/x64/Debug/Virtualizer.cod index b0c05d1..aee0dfe 100644 --- a/CodeVirtualizer/x64/Debug/Virtualizer.cod +++ b/CodeVirtualizer/x64/Debug/Virtualizer.cod @@ -189,7 +189,7 @@ pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$?ViValidateNativeCodeBlock@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z DD imagerel $LN7 - DD imagerel $LN7+122 + DD imagerel $LN7+142 DD imagerel $unwind$?ViValidateNativeCodeBlock@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z pdata ENDS ; COMDAT rtc$TMZ @@ -434,7 +434,7 @@ $LN7: 00 00 lea rcx, OFFSET FLAT:__463C1148_Virtualizer@cpp 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode -; 9 : for (PNATIVE_CODE_LINK T = Block->Start; T; T = T->Next) +; 9 : for (PNATIVE_CODE_LINK T = Block->Start; T && T != Block->End->Next; T = T->Next) 00036 48 8b 85 00 01 00 00 mov rax, QWORD PTR Block$[rbp] @@ -447,39 +447,45 @@ $LN2@ViValidate: 0004d 48 89 45 08 mov QWORD PTR T$1[rbp], rax $LN4@ViValidate: 00051 48 83 7d 08 00 cmp QWORD PTR T$1[rbp], 0 - 00056 74 13 je SHORT $LN3@ViValidate + 00056 74 27 je SHORT $LN3@ViValidate + 00058 48 8b 85 00 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 08 cmp QWORD PTR T$1[rbp], rax + 0006a 74 13 je SHORT $LN3@ViValidate ; 10 : { ; 11 : if (!ViCanHandleInst(T)) - 00058 48 8b 4d 08 mov rcx, QWORD PTR T$1[rbp] - 0005c e8 00 00 00 00 call ?ViCanHandleInst@@YAHPEAU_NATIVE_CODE_LINK@@@Z ; ViCanHandleInst - 00061 85 c0 test eax, eax - 00063 75 04 jne SHORT $LN5@ViValidate + 0006c 48 8b 4d 08 mov rcx, QWORD PTR T$1[rbp] + 00070 e8 00 00 00 00 call ?ViCanHandleInst@@YAHPEAU_NATIVE_CODE_LINK@@@Z ; ViCanHandleInst + 00075 85 c0 test eax, eax + 00077 75 04 jne SHORT $LN5@ViValidate ; 12 : return FALSE; - 00065 33 c0 xor eax, eax - 00067 eb 07 jmp SHORT $LN1@ViValidate + 00079 33 c0 xor eax, eax + 0007b eb 07 jmp SHORT $LN1@ViValidate $LN5@ViValidate: ; 13 : } - 00069 eb db jmp SHORT $LN2@ViValidate + 0007d eb c7 jmp SHORT $LN2@ViValidate $LN3@ViValidate: ; 14 : return TRUE; - 0006b b8 01 00 00 00 mov eax, 1 + 0007f b8 01 00 00 00 mov eax, 1 $LN1@ViValidate: ; 15 : } - 00070 48 8d a5 e8 00 + 00084 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] - 00077 5f pop rdi - 00078 5d pop rbp - 00079 c3 ret 0 + 0008b 5f pop rdi + 0008c 5d pop rbp + 0008d c3 ret 0 ?ViValidateNativeCodeBlock@@YAHPEAU_NATIVE_CODE_BLOCK@@@Z ENDP ; ViValidateNativeCodeBlock _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI diff --git a/x64/Debug/CodeVirtualizer.ilk b/x64/Debug/CodeVirtualizer.ilk index f9f7387..adde3c0 100644 Binary files a/x64/Debug/CodeVirtualizer.ilk and b/x64/Debug/CodeVirtualizer.ilk differ