From a5e60738482e763257ef72f565a7d90e0ca8f208 Mon Sep 17 00:00:00 2001 From: Iizerd Date: Fri, 15 Oct 2021 19:18:59 -0700 Subject: [PATCH] opque branches done --- CodeVirtualizer/Main.cpp | 117 +- CodeVirtualizer/NativeCode.cpp | 47 +- CodeVirtualizer/NativeCode.h | 6 +- CodeVirtualizer/Obfuscator.h | 3 + CodeVirtualizer/OpaqueBranching.cpp | 66 +- CodeVirtualizer/OpaqueBranching.h | 7 +- CodeVirtualizer/Virtualizer.cpp | 2 +- CodeVirtualizer/x64/Debug/Jit.cod | 234 +- CodeVirtualizer/x64/Debug/Main.cod | 4234 +++---- CodeVirtualizer/x64/Debug/NativeCode.cod | 3636 +++--- CodeVirtualizer/x64/Debug/Nop.cod | 108 +- CodeVirtualizer/x64/Debug/OpaqueBranching.cod | 10513 ++++------------ CodeVirtualizer/x64/Debug/RipAndInst.cod | 422 +- CodeVirtualizer/x64/Debug/RipMovInst.cod | 432 +- CodeVirtualizer/x64/Debug/RipOrInst.cod | 422 +- CodeVirtualizer/x64/Debug/RipXorInst.cod | 422 +- CodeVirtualizer/x64/Debug/Virtualizer.cod | 36 +- x64/Debug/CodeVirtualizer.ilk | Bin 4434560 -> 5876576 bytes 18 files changed, 6726 insertions(+), 13981 deletions(-) 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 f9f73879a3b20778c62552b5a6db23265caaaecc..adde3c0113b74dc8c4707b4fe9f3860a359cf99b 100644 GIT binary patch delta 402212 zcmdqKe_T|>{y%;W=PbJj$O6j`1$9--MN!uT#6(?V`JtjNifM_7ifN{@6$Pcmn3Q&f zTmyGBf1y&^)e_S>mXw(EQ&hZS+SL-1(yo+rrJG$TzpvMvb9R@N`}sWX=kb33^X2h4 z%)Fk@*SzL6b7tnuoO5;#Is1xF(^o(EILr})+n(D{dGs95RX@(bpC#|5F5IorkFHDK z$S>Z1`6kaVUUzw3d6JMBl#0CamvrZu@^YcK&!Wik_k_`Ytyd|@`*8}<(EWRTLJ#Q0 zg?zWX=ndreS9nO^!xG&If{3N!90Ij}8kJ1?yMt?WQb z#Jjw>{DrmTKzpQ45MmxFKcJ27A&RXT>&O9A2pfi?Fm@ewy9 zIYHf2qY-Z{1EV#A8Y2Q?WKE#Y$ci`NJZ-T{a01q6RK*kFV z$FiJ;i3A-m$GWq8pwSMILo~QwRJs%uU#;P)mZI5TePS%Ks=)Y`NxbD4sJ7I5sD6Axwi?|NRNu$q zIVbUC>{!0mPsD^Ax5!T@H=H!7bxg{ePsYfVcL3PA==Xi8Kc7a~UN1(j>|Y@Yl% zk>|$BNw}x8$`_n=)r{|fk4}g4ER6yEpALuR{mDEz1jq3VzP$BsE{}W}#%#;v0%Y5Y(j;0H$U_*1L9=4TKFq|mWypnWg~ZZ0zK2k<(@D>Pm57GDa)B)OnYb3E zKm>g3H6F647{888kH!o*?v=KF3o(mn9$DzCwpDsp=woT0|KP8v0d?@cW^eE2AyvzNJBwEg)P$s{A@$#Kj2^%;m>+>4_V z{Gk_Bi?9Lle5=#MIesgnYbWvjgjQ!6l_tR{ckGdUtekIxVMMNx7@>mRnFQJD*O$>= zlR>LmIk!y@o4A0-thSBN1}jFW?+>xDB$c2Ir>Rpt@{OmNgI=E*2;y z-D=|WHrdNtUpvSFr8fH5%d0VqZ#}Z8c-Bd8LgI+pt>`?@o3l+^k&+nC(a0=l8upDc z*)-C`8M0){Nah1M!Ms5xtCLJzhMOdP*bvBZEk*p9Feuc!e(sVvw##W+r<=It?lklq z=GLGZgl<^vLHbX@CQRj&`r#(7*@GMd8rnY2A%;v%QG{3L%-DtYyhCw8DKpTX4_ z|FC`7lr*i=OkAcr4c&#gRd16GI)Ee|KE z9*#_Y0IJZwQz2)XIMV~JB9L``vBEg+^aK1btil+W72+ROp;2m&UpuTE4*s`ycZP^CE zFshI`5r$D9p$^LE1+>-r*D@M3gHIKbGGQ2<0Z1l9)?g$TB1bS%0Fj#*Sq+i?4??6C zA~P{^3$Bc7AB5b@%H_cLh>2@ga%%*wW2kivBENx_V92I4;vw+dc!@d3aSdy^%@4|+ zTfn*54`H<`WQM+oOL|Bqv&9O6RfvC=;+KrWzWIZJi5!mTwMv>CNV8Z;Qwjz@1A`Iz zCONl;pdzkPAuEBrjbyGu=DuFUH7evmAcxEZSE?1V3C!wd%C3Cw;Y#LfNi)%vkZ`vv z++{hpq>v&mSxIvd3{o%{VN*zBKoMtGNaMtH^f;203MoRZR4HUUkav)5RY*ISJ+F`% zKn}~{$KqHYNlTOB0_cVu-WXx|PIkc_TEqq9$ZiwRJ(UB7916J_T-dFU6+jBJ;8g8~ z$naVGeEz5Mqer{ZXJ_$Uq}o}03GYXsZRYJyCHZvXY`)khHjk)m zhjz*32Y0c*RYocXOd*p8)BAJzM4#1Q1o7$vWyE-A8hK7f-vOL|oc@^05Anl>kkm4b zG}GR5_$U3Ez_<8gn8}to{4hWBl`>Mo#INV@#r#k7=xuE%ZHkK*CHq`HOn^eaG@oCn z$>+}Z%%?Z!^K1BgTKouq0u~+|SCcoE-WVF&gW4DHNka5LskCPSKh{@l8|5U_GJLRw znwRo3bmni%h(3QTp~jB~#!Bxmp;XOV{D>U1k zbn=J%b}{A&P^rBPhT=cs7lvxBB~DWEqLUuciDRYa(|nO2h^w7+_E~|KxS_;B7uqN)~kJQ5au5#LYSYhR zARW;wAxNrv&!=^wkhj!HsVK}BnzuOV9Z@(T#4m8tQyO8YQ1OV93ce7DS>mL_F#>Io zK8BIJC!KVg8aaazL!OgrwGe53%t=RL%=nq=kOM(1^N+<+Wq(Urbz{pFDqVzYiL!pU`7Mj6$}) zY~nV!N%AaQdLuO{M9;5n#)-~0WzB~Z9g$7QeR#(j6Ibs}L;H6TdPL;SmUC-`+_*08 z+-4#v=F6o0HJHkKkZXaQfI|{a$jq=rS?DH7OB}3RVa@BijO4GXv<9Gq;TiO{UXnZh6_XL9) zMlPw5&=3VlS0l?pgdT!*j+1TzWO#Fq>`?7$6K7WzXkdW67a}`wIpfdKI9ti@=iv~A z1{n%=OSVFTgh)imEZK??PIgSFyUfL*kXPL{Xr!nGV=KX$(O)oer5;*WK`WwpgG@Gj zZQ^P@$S4DlI2f}!g_La`VQ!+`mL$i!@Tb~W&@MeXy?0{zJCdpo$ zC&ORL&bZ&P74*Y+{eoBk{B@S1j*0ah2}G^fp))nv3DqLN{UPgc71?9Wimb zZm#^v=m^RA)5Ima(@@$C3j{L;ENugn*6u+b2Qubhk&@eP zxbNU5NsU&vKGeE)6T901cP?xH>b~1iT4^PR{AHb6C;#>k(+S}@J=pR5qYJwW(Gk{S zITx-5)=T%45Y)g5-_#x3>~k_{KM1!gy1NQYPXQ^!FM|tXcQ|=f1y0&G3L*uCPC6YU z;z}o71Ca@N51|2AN4^BN45C~H$lNH*hvP1E(XoYp*ic!<8mm&qLB}Q&x7VG9YNN5n z?6N`2W)s)sL5@TcW?KYvvz&l?5YevOXg-h=n#*Of_A9st;U>u(%yPu{+J z-L5phBB!bR8{C6%r=jOCx4MNg=~xfIhVH`L#F;W_UIq6cJje@3Rw-m9kOw`;pq}6g zPKMEJ?Ftij%}tV*l}p;mpMSlBu5?LsyJDR#r)gLTw=jCT+^2fkv3J zAIC_^444gIB<4XU9o7pXIGbMpk%;CgO76ubF1wf8(!O3`3Fhkb6sn64z*udB2+Z^8 zaE#>HVDf;GlBqB*VNzXte!m5nHxi|(J-6o@YLsj5Xf|Yh5jKLn{WFUuU-!GGP zJB-1-T`9>re82^N&;RQ?Sj$|SmKnmu;e55zzZ-uGKIgB*Il*hjhMCxFsGX^8L zUU-s4ro-3@kq9wM&dK;Z+<@)l%8B0S18&5Omr3(76Zg5BBw3+yw#(Lj@eR7MV3ga9 zw)(Z;&* zb1>I&ljMUwa@OA*KeHKYVDVVDD-|hl0f~XyuF7)Kh<*?$8Rw)EATr#lYDN`E~yITWD^_{cdx46X3#tR$!4yuRge)NsZt$$U z2h# zAhHG{jSxA4k(e2j-ZTmGBXD{T9&wK7BCg5gDi_U6z#X^Q zz&kcgmhmD9YXgD?bv=r>Kk^wHK=>;U~6jC2p#2xe? zg9buzabbeqwL{8lZjzbDEQ(t~N24o-43s!_?+h0*n1+KYiXQ0Btq=@Gh_hv~8c3T5 zxd+K?mFxwD@E|XtD^&_<>|4Yga+8pi{I_vt&PjA7XPhi!t+Xj=Y`u%P7Izw&9w+qh ztH_mIG1Db+!oY}TMT`X9>^QgE`#@KSpF`=XIB2dVa}@tUtHwhsVi5S>sE|hRztw}B zfMm>EIi;gd5f?MaZNC`E;ROm=4Q+0Qn4p8X9Ih7M5#Qh$&9 zP6EpK2MWY6Hk~j5{^7y|FsXQ$FkcsD{csJzcJMG9H6JN)>GzRBlum;^GmUn$3i+CJ zh^EsrtFST(8?e%dA;xj=jD=u`jtoo{26goSNL(uYw$Y~#U7adyrsOO1a?ojhMA&%9eikQdIKVN{1OUDViKL05>W`GG6j-x$S4(MY*8UH+e zq%B}t?}@aGOCdBj3hujQjEA;W?H8({v&IYa{5`Uv$HxnUiah|r3@f%Vt~!eG|0%ut z@hJo^0yx&gO?f(S?!94B=>(w_ZffpeM?S}U40uX@spUlf`IAy@mVH2Gy=q5+--uamZI5tax7482m&c40{vVzl@@=<^sk z@Sbp4fI5OpGmLNO53ad#ufZa2dojdW1=8a{3Z!M7bX^j<@$4Bj)x9so2VwJ>ku#Yo z>fcYHcWjA0sCi_ZNEg2^=%Urug?7|G6{C*#1#>Y-yRjLs+>K># zxEr(Wkg8{c{i5VcsHgN(ELFP zvBK=C2#&p7Q|JY7Vm8)9?zeX*%DHwoHshanV+-5w#`1h^1T(Gw08Y)DLT_4hScsc} zIeB&q)KJd~#?`<77NhNl1@puIZ7MZ44F9ibYv{v&6?#&0<5-dIt@*#Tu!b6;NQX9a z^)`Y7UnE`lp>SS#dJQw&uj!weLO9L+NO(YbV08E+VHG?uN;x9P4~$AbOmRIhGD~^2 zLJKb%zFP~u79O0?^&blp*k}f7Tp8Yqt zkf9rxd9S^IRQ*j@?m}i?itR@;&j>LtWFI1%J&~Z@kgEBNhn-8I0}^OvBP=#E^Pi#l zjlx)0a+XD7BlwI|&{+?P<+c2*cV6|L2+Paxm3LmtzY_G_t?(8^Y0Dxk3CV?f@Q?wq z7p0OUo-X}R45u|;31+Mx>Bd*W3f}DzJbMeRey)_W=q(oIQ9G**_6W}KwXj+{0Z$_i zcCFW85vKgrUtCKj^pyq8DSaqTMr$X@GTwiIb3!nU@h7;&*^~lt=v)`q(yL9vx?&VO z|FVg@L8$n`PO#;jV2)0(s!p&&Zp=^3gL8f-nC|kX$*t*9j9hWIhjE=?mQJwjPOyb; z%;?Hwxf^t0+;=H-?M0z?v7-~RsuS#DCs=DInE1loC5r3>tNSj6Bu^Sk7hDl~Pj*u_q;)=n@Ho=kZ=A1PyMqnGJM@M>+T zrU$Jq=EdZ=PLkzyf)#awNzKiI7^tm+j?n%yJcPR`^r53lEm|q^pMo_+$N`K!jBZ(< zsFNy1F;Wz)ZcT+z6HOoCB|NK(nI1v>5HD?&Tt{XXM>cVAfE6Mb9^=^qgv}| z(NB6bNxZ}B+5v36&#DqP1wU!yec}xtmTt``F{_JsQG|4r*+XL`zYKAnub7N78y)rO zU}xhbafqKTAYcQr%~0)FX26x8<~BU3ZR#loNYOLI_E6s(EvPJ}T?@tgXv?4AeC}c~ zgZG773Z!WX9i1Tn;T;PDHE$MUGEl7jOrBJzx%|Iibn|90j?KINC#?NHdeV)k2{H66 z2F=~_zvP~0j%u#ikK8?T1CHltz*aFk3LO*k(>g3Z5yR%OY^ylbstCl>_J6`Wbuf;4 z7}D0QqC6W%$@5Ru_}{?Vwpxh=-sWr%OCjcP7&y0yJ=pZrGc%0;PdGshm7Z@PE8sQZt_{cm!jx3+f} z2`oFrcs8Q2a{O;~;EWwsdIZYhn#f>P|8HfcR!1j!^zJY+bf!pm?-cXm|C^Se7K2)< z{+GrXHHXgp^}_xS!=U)O7{?0sUzj6kp60zS9`si;TKtKX-pLfgXwnkhLOSifYM0x3kzOtoTYoJC)vk!~% z+Kj=tezSB1xazQ2z*aa2vxSwl#zT=U;wn6mUitw&C<)R;(zY7W;7ZC?a@G&Q=aR2r z7W@(YHcRYIOFs0l#eA{rA=AbVu*;X2k3_Q;lh+@CbF0^MqXi#%q-WmMc_Pd^!x0Z1 z^v)Rq&J`T-aBj@#L5cK}BVsS+TurU)oLK9b5ZAb^Ay`ozVCGyXR#dIxT;|7CS{w?_ zwRtMaRd>|GqFi;J2wRg916JKp5AW9YACO2>KNf?!wL^o-{Am$uRJbt3y1<2LE4`d0 zM$nRvMYFD8vV$ZagJ~jr(ab(p6D_rWEGEm#RCaFh718DJBAM&lu=VN1I&rs7o^{zS z3PyV9gqRtlb|y7kot8q>xEfN^NzufvPDAisXHC4LgUbH_ljup2=UqLv?L{DKcgF!{s~$g`{(jTr4M0x)<3OhmHu{@?&7l^ zy6z4d|J8p=kn>fi31ZGcV~02SN&Pu@2Q57ZixX{jmV?Ayw6b?GrN#?lfkudVQt7h= zm$Ap(yu?A3P9upDp-7X?U1) zOuQMo#ShRepiPsSt4g=H>X{O|1?#if9blI)RaZr`Pv*z;tE=Mutiic_vR?DBBXbo7}IIaTvDwJ2gi3Is!U)?SD zRj~#7YD|%X)U9e` zO&^&mUmvgC5|=91$C; zzLm)kr76p|GFjQMM_ucxkuR5su;!5z{oC||J@?yCk@~#Ul^ifz9z&wbGWd%mDPSCXTB`dLz!iM zEz~>nB!dT{_6)Z{x#$LszT0Bx6c?dWK&e@$zz&F=B9{h-Y0`D}oet6z24~NG?WzpZ zDAz7lQ+Vw%MrZVV3cTiYIh|m3H>NZmM_)}`JUda!KRkyuZZ+3AZ1BQpYhR7} zjw#%^NKwZ2&to*|+9#!-2G>3p`f22~Pg~zq_u5BlzefWzDg6B+n@PpRYUGs;XmuRr zOJg;qT66=`vr#^KfJR=q+@-sGfQPO+%12V`!2gtB@xV?K#K&ojTKJJAxd`u1umRta zX7Q7@#KDNKwY?7W-Jz-ST&mfufw@%tXUbfvBvAu%sglps@g9FmL$gO{j1l)Ihd?5`(pZ>(ezKfraKi!c_e3pbG9eKysPp=T(c^1v?dIH zV~nL`^So)JHNBW`nPU{+Dn@%4ch9MsJHX60oKwY*QGB~-q0fhcZzW?qk~7~LJrTL) zEFL=Qg#&8Na#zh+;Oc?Pk(i$sq0j8*DKS!aY{Ggh;UbnZdix z0nVmEx#v4Rpkoz)ld8oja1oJTGf2+V5H`J9zW?rl=|5ofdZuO&uJ}3KLpFjT{q%Aa-D|##y;v5I0bmlS5C-AE;P}{UbvrjV)eq%X~PF||n#*d>nmTJBh z+Alh!9Oow(&=v2Mtl8*u%IHfrP(31_CZakX-)gQ~_cArcoCRoCYM^j1k#Z(eN zUq7uG!WT$qPs3?ZQcn0gOX+_>6Uz%Fr&H?uIYz})awt;XS`zP`k&0so;zU2 z@^0DsHNG41?Hk&k_noM1Jnkg*x->dwk#;DJ_VW#p4)MNQMJ4G>Ute?~O6&Wz7LpS9 zDYJB2>)RXlG?IGw`S$Lq=%w^WJxMV6&f)nIX@0ElPpXOOgBcYu1gZ1VGiKkP{FPLX zB{S;-NBMp&pk?i7-+nw))SxlGse+m@ln9ioBu^=|-k3!#H)OK+5Swj zwTy~#AXP0rx6b#hnreClqaxP(^6+B=sT=i8Q1hDl8lyrtA$3a%+v4k|Qhh5Kb*0jG zk7}rVCxfO|`JMppr@)KNZ}<-N(NCriyy3e@grCF{y5di5g7o_vzCWrB{OY?b&93*L zriAQ!A~oSrDOxI#@1!5vl!Eb^TZrqgF<1C#VhPjFCa*y-~YD z`n8W+`$j)T?Yjr5Iw{zseOxuPY5=3s2WpR~kpEx?9fv@L)(&OR* zk_we4F=*-tw^md#gDxa%$7qz2_qv}!m+sg80zcoAPN!J>+@JHP}IIi8z42z)&5Rqj z#&X8)dk$IKDqw4hwI|hV*OoAL@{7Pi`_5XW{awv-@?RJgv_?Bq%_;vC1`S!O{Y=%m zy^cYLU)7#bq4M<%n(FkZ_2Q;SEL| zdjm^R|2CAOVYl`x)vrB!8T;5<(0Zulh*r0&@olZ2PJL8I9hWuH_3r=Rri*Ig}18KVxr zf>hh8B@TaSi6h|6H3}US9f&C}LjJleSRF1Uq z@xUJ=6>8OA7?r*TGc!qVmIm@+3bk*$Y;XrsFyQPA{81f?j=agJ;=cwSRx5bSTMWAM z7HVfobM^(ktd21^Bu4E!6gc&SVq5!CSFDoHUh3*Hu_O2aAx^@F9x#u`(*ZHndzA$B|4h##UmC(whrf<9E3G7Op{$1B0*soA; z*_E!hH6D6?()u5}E@Qt-mO@*)rl@)|f9j~GlL~HjUG9S~8A~^RmF?lQvHx#fZ$kn4 z-s-CM7CP`YgZj634N@y*@R!>^L zCdjpm;9&Y~bkN%{HwyAqJv-(TG_PYxt$sm!eLUYMmu~w94OI091_q7ksJ}WisHmg9 ze|XRsRey4XxBlK9L9b!!!up%g+s#T)&pT8ieW06=Pe9esptn_adV)85aHQMl)G^*{ zb*h`4JkFclJK4=nnA(x`liqwV=q)whnX@{wI_c0nciQO-yxD_G-0alHz1iwQH#>Qm zH@kO*yS%es^k!?;xYN#D>&+fo?`EfO^kxrkbF))-db8DUy7Qg)mN#2_z@2usG0Z9hHCCM=R)fBk7}v&dZG}ly zHhwitNQ9t*p2eV&J~bSIy)-NdfjFkJ9y9`8H`*hW@gulQL1(DV_xW`UK=jFWB^% zYGKYymC2xK`t3e^4BbB+@`#kOX6PSORrbx4Rj%h?dCk&K59_~CtNqj*#!>%y`lE2M zJuy%JrkZTo0y&wqQ2&{Vtz0Z)N0y+e4C!dTeu%vL#7(7;m`>XWQW54zA!OS3-IuTv)K(#>Pc4ju9doCurr z%P0D0)MDm;A!o7YOZ|$jFs&H$wSJohZf~6U7OWIVOD^e8hbm1w<)*A!+=ewzq!s^i zH|=G=%bfIYeO7>v{t?f^YbUkI)bNAyEc>FaXd}`a1?2=*B<@ZqX54!BV6iEH!rpOHK5dAi!IsZu;P$ zP}@D1pAPo;sBO~cY5$fWOL&_JhUK(LqoiUIV-aS$A$3F9GHP0wNgy>S8r zGiX>Q1QqmM3@Yigi4fT7uNW+s)=vt)#Pb&VlnumqDJ(1a(ICakmASH)N9F`W>y4yy z@`AVd1T2tz<_BL?Pu!J-vQDo>!TZ$Cd}gVP1=)jxRIG1-jLm*3xR;8pd`7YVY;cr{ zU3y-|qDXLm6-zIXv6U~n)9!j%#;*J&7?!Xx^lTZpZR zP#NpBF?gVgP2M77YqkcbsMwhuG8R-73}a-nl(j2(rH>XnEuP*BZw4P$yZEL(vgWzH z!O$Etq_5u&zO0`5Bl~6U_B+A(s^xr1#`YWvE>yApAIjLgkAkzbd@gVxw?VR6dbAC)tC#lw8azvxbW5RsDyi=T4;A@# zx21v5OQ3e3RAPrAVxOh+}8{{ zR2O8yuG+BcGyK&aixg;lT!^wUv#pNJhF_)DK_OOf)KRo2`SW;y7j0{=Uk+t3*!fpm2+bb<3r6Wr+L*7%Ui;doftce4@idb34`-T9^;>Bz#e;FFMd zRj=lK(UH|jb*E&@H~}j@6Ow|Hvtx}R+tlG;!8sY*b3SB~icPp6V{0#l3{kOT-^!S_ zDMXnk8eWD58U*j85znD=E`MUAGYmXL##59!5R9 z!UW9;b=^joKG$2%zEIV>vB+(&?_zJg~yo|-tcBy_qy|ys=e8U_uOe$e&Ee+u637aWSuvg{iU0| zdBU3wXmsa$=A1X%@{K#+ZI`{-Ls#AGW7oael3(2H@L#=I+iiEg5qG>FU-&CpS<4%@-k2jke=Vn9A-fUc=o4qu`o4qy0&F)F@ zX6wcoTuo}tL~pigsyprU>E5h;mYeN6$D2)F;AU?u@@939yYoF&;LTop)}40K^WN;i z5;wbGwKq#%akIl-^=30SxbqF&?9ImQaHqZWx;J}kkDJ}I&zr4#*Uc8b@69@nxbvNU z%$v1;;ZEE4gg2XfMrQH88;w^Cu8Y8v zSH0QNpWOM6`Nf-^@tZsCZ~yjY^?aDi@;))l)g7eTE@7@I&VsIPLT>QH5a#Md!y>)e z%${!cPH%5E(&T235AV}ReAuL5WvP7q$1t|w>3==}voC5Fb1a zK>R@?$KjGADPAk}`ZH{xx=foagllouI9&|qgMD$s`*U&l+Ua1aG%P&1x5o5#K36K8 zNDLSJ_CH%i#s0M@`%(aAZ`Ja;*?9Uj*CD16~Q?)uphPU41Eh zS;oZ8fI|my+`=y4ao7uRJ*0*3T{sRpOSvWp17O?MJi2adctmmbDlk`I;{N^=?3H)C zlruhU;#L3p#;Y@=j>7rw=nEcV&X1>k{QB};0S;WS|OYSTQ}-40ffilh=Dk6=lCG(Wm)wq zI0vB*?5VhU9i)YDB^*tF<35Xb;E1N0l<+6{r|2^&;Zb}QU7r#@wc9l?jvGccz~KO8 z+|JSHgpyO<8s68ZzMS4;4Id1*;--Pv%>){_(`5}D7Sx7t;1&~SrR%KWBf}0s&bSw9 zU)b_AZ!M@o_&dF94UZ~r0tz?$d>W2;RD&=dHVLhBK+Qn-&R*Dh67b5mpq0E0`9r)K z!scoy1ehZGP24=#^>g_fPyrD3IRt0wCD4B#J_vCb4$#3ZL*qUK9PL9m=m>ZQ_Q??w zU6vZ2z>9Q$YWP&RwV_E1Plx-_6Vt+{1|EWP;2xZb=iyw^x6;Dn*U?gJU^LPiKJB-%3Abgx?Xv_1Ur9EI7`C@Am1C zdBaVS*(K_~HN5`HSnalVWMFvWNfJ}4uBjB7Whnu?1SyC~ ztsrsl!`CO6L=xd5^LZHwW)gn0$Np&<31Jd`FR1pNG7`!p{N`5mXJy17b0Asj%19WK z@UugfGi4-P)*J=R>Rl&^kfr;9J6T2|nPg0Xdic&sy2(-o)Y$1V(w#}RaWJx7a*`+} z)lP(ZI9^7gnbb51Mo0MMKo2?HRPgL*8R^L+{2~(hvW)a%5`GD&=?nPo2b1ulK^BmD zGYLOCq=z!}kvaIbQT114q%V`mgHZOfWh6$H9s*6^`pMEvIA8EBk$Yq*2kP^18R^d? z{Nz;YNANjBCgInksy{3vu}s1bO_BG?$N(l;a-ks|EF%M%gkKu7*OZYsnVSnGg0Gki zViJB3&Qe`Q27?r-%YzfPuZ#>~R4zzle;F||3BT;t0G|>W$|U1_IGJ#2??uTUznE1D zTa^?)$l=xFgfW$xE`4)iDwedaheBHlE5UK;N9tg<)0Rw05=)75pXPK*MlcCyKY8$}g!`C;^B?hylZ<2%ZeU+Bg_2|@ z84Ey)r(_h9a9Sh|r)0FuJq_7qQ8I=}I5moyM2SV#1gQ!>#4wggI6bmL?)S@@Fez#V zH&d8|Q>13FVr3Fel1kvq4yjDSX;REoO468w6Qw%HA)QGuRpMe2D9KTeLRzJzEn4kk_k-08B^X+N;2hiC?!%dQBDUlrK)==nIv-{8TwN)S(aetWF1C{ zjY&9n5+_iS#Uz|PHOEpig-JMlDoLSaDwA*mRWbxVOTi?ZLdC$@ohGM)iBnr&N*<6o zlzLJ!ok=*6YV1ehQ=B-4;Z&;N9!ef$5>BStI7%L35^gJB@}rZ?WD@T8Z~e(ha%Aph z;68PdSxmxDHdsG#l82duUw5eZ(n)5^97x$;z>aB5!VfhZ6e*d*B>awAW3!XYWl}9j z1@KXlc}&7j%Ebeh$0YI!*c?U4d?r<{h0=cLB#+3P1M2LElPqA8aUF2*eUyc=CP>y= zCwWxnUWK#rzLP9sQZ-01hn(awCfUm&_c5?lsjOK6UPBEoVG_g63Ld74T3*TBzuCn;nS`(TBUk|HMIw(X4|J;NlNy*A%Z$+Jwt`D+!_%QBhU z0<9J5WjT`?Kq{$mlINI|yA?{Sq2zfcwSrU-O-V76jFlkiC?QP339!MBk`+wCDR4Owg*_rB>Nkn8A(Zr%M?fOM;vgmYwTcS=?> z31`VMft0)~r`r!D>PE?5Q1Zu_@?O}^={a?r!g-U}g_1S0q4&WZaG(^VNL>xI>>x_Y zWIG>1YtmEliYy%g$(NF~OtK$^GpMD+!6e(qkPd2Q9h1z*pcK%PUS(2l9n?K&mNN;z zp>Qyik_sl_HwLVyoMb(d@S7lF9ehxTNtQ366t`g)BqmjYWNmkn4YG6`YNj_O8)eNC zAPJPb#-!Ynki#7(*~Fw;kV+byWHXcS!y@Jk|%e>lljCfQCyx;~U_V-oJJ zp9kLrs$`P!4Ak%MPO_az4v^|V+QB4qBWV8HNp>=+0i@=C!l#;K&9jiM%}HKo5`Gk; zB8HMTn1mbc8z8@3Ov2SiGn8*PlPb@HP555Wn{qmk8b?s_S0>>m@_DUJvWH3dS&!!5 zoMbPP9Dj%WZaB$XOv3MhRQ=*4Z_An>m7H~weX{07sLw_xsb*3WNNwkxWIvP0H(>KU zCwT{?NZq$^Qd;1n$BeRpRP`_T_z{z;K`Qy#N#2#YOW@eA@QD*9;YU824?Bs(Buf(% z7UpP&n1mlit!r|U_nBn=4$@tAk`I_v2~x!sCppX{{S_z>Xx7N-KoVh^^dXaSo1t3% z?j#?{-1pGvU@CcpN!35V$-D^r)-Xwb6>7kQWtYe_SKP0Z^g>xPWMf9nD@)0bFS;*K8m}wU0{@ zgUvxcVfJz9Xqez2pMn&ry8~sP=pdgl3RjPH@ay=`nS|@dI@l563nt+T()zT6e90tS zL+Yy>0)F$ouw*T4$Q($<7g9;1%o$?2z1vgCSteD36adm!G8YE< zolYg^XzxFT2tQ*u7=_>cd`B;TJR+3Z`6!L9Pb}BooJwxeKSHCTw078p7rvXyCTjk; znzj4BN=7R{04{0w@@WLW%}kG40u2EqCzgx$OCw`dB+xc1mdlGxBPoDr%XvOD(D*R? zw#uAF#sdjZ9Zkg#|2%7D^x^wBhuKu3i~^%5TSRm?X%KbZSGGMy}eSN@oJfBOrAxwby(BwtbS&s{y3)0@)C zlK|jsnA-bmMO{N`Iw@d@x3{%8#_7->tfI zvIBHxv${0~58*QZl}_L{eR89-&mY3seKLrT41{-i-OMcx$RL8MV18vNw;?ivh$>L~ zk~aXE#P+)h_;fDUuyZ1510;c^(*Hh}%iTAT#7fHnYp zRKPqJO8c6P2r6I$pl-8`h$>(Qpk$McXjH%ffOWl%_^LoK;9M`2~dGb0CGOGkw6uw1z`DM8|kV7`bP@6 ziyzoXkO~+V6mpy2w-LPxSO7={jbIhfFNB6$V)wZvdAD6Xab;dd=?oj1L0ksg-pQa5LJNykPRlxDo_hRTSgWcssc>_#Dj@@ zRlu?g+(^qJ!&Jbr9Be?6concb2X2hZA_*!$0BE*mkwg_}0H7o_iwsu*`}5GBKqE;7 z8UWztXOR&KKpW-;i`v}0EOMWWgm)oOwz4cTQk7SLU$115WYvTb0NbuCGD-yq0O#M% zBBNEH34oH%v&a|~u)P5F^GO!5xPTI zv=a}D$Q%{G=Q~vTj|Toq^npd_4PZgm?J{o@T*XZ-uIWPnfE*9At?KI1tEmkfkcn06+}vPMEI( z`fs7I&pL=*1#AdBG2=8(k z+<-b?t|+XE9~=coG#owP=m|$JIE--ghNBN0ec_0KqaPgiNb!UF=gnPp-qBw=?=Zzs zwhxKZ6dNCjFEMa?Qwa+_{?SZRtc`sOMFs7qN9n$mVsBb+iq)}CP#_~+G{wg8ees2Q zRgpVsb;lL(V(g=INE&>tBXdA(yu7Q(fJf=J6$5(H-2-Cf&Cgl^>6Ib$mNEy%X2L${ zib+}-7n{Vsx76|=OufAR4t9c7#XU-AkB7`mgJR=cc2?yKiiKkU90TEqgJTdJgW(tg zhZ&BcaNG;WFgW6+oIwf8Ewo|65F;(J;+LSl4@;6POB3w8rPMct7~Xt=IJ9zDp_4v*utqP89=ejS zoE1$cXa5bqC^Vs+Y~;NnC0Wz^0O_Vkg`pBuPsY_N!f(($>oXL zV56$g=Mv?Ostn7XRyL}-E|_WFi-{T3aV^1*&L@e(rJCmx>mq5x^N9whMzqjInwUxL zC5Z-_oF5CHZ_>cdx;Yy_L=9T9A+gkht@H&pb0ZM$6s?GDMvSE}Yr&}aS_h*|T2Lu{ zO;s`KK&9fjM1!Q;lz85NKWLy=_9bo!!ioXk**-k@HG;L(iKn~M+)p84%ehz+-FzHk z`gh=8@_7(jjwj~H;@ak-$@Lm$?rl@jFTbP`pclhEL2YxO?2^hs)e|{ zprW^dO3inmQh6XThE}7Pa|LP!Bxe=~dqI%1h|>?yQyXGnL+6KY1z7ZEi=GC)lNdo; zLI;>=X0w`?c?#s!((Fo$c{!#)+T`y&^3u`z?;#(|nM?&T?gv)_%&Y;iV z)tz8Cdo>fE1ZALLZZ%!WhPw z9wnYK#v?C3br+V@i5|5t9uYUeGxh3DQr32YHFkp87e7NUE$4erxz-8U-U$}}-Q8|x zbb>W6rVp2o=tGw;8KLXz>8)Yl-DRJ#1gdJ`h~9aNuiR~&bb?iMg6-}E`#kRM%xK)w z5pf+{YVAZTZs{|0$V5#K+zN$mUOGY-;8_S-y>vuXw+0;NzgxuR9=5Rk+E4@cYipqE z0>k0!jf2G?X>3uyZ|p>Bw2o?_4XYHcco;yrsiWX3v08z8 z#m7!`rj5$zZey21jsqJVHc#{8=*jrl(X=uRl2yN~B%7T8TcMfKM;V-dQILIz6s3=1 z`|6=1cM>48rgTWvs_JY@1c+n+L=$ z#7pC~sA%G-Bco_LUPe?j(P0z?O&y&XRJ8y5uCsS?0-f*q^E}Xf-gVh)?fY5hoV@{6 z->JBqQ%22t{?zjAc}9J`)>TGbr%~5kS{I=>p>_?0%VFq@%JRO3>u$x>Rt~OcCAi`m zs;U4K2mlH-C@#AfPzRvK)e31LQhz#_nl)7E1LQdakZ+CRN)c)&l+;k2f7Gnj>N8<| z<2_o}bm}^rx-?XI0(G53UH58TgxU!uHB@&Zpz1k*BKIjS_ep>p=K^xAQ&1bBD51E9 zs%8KR`~gsCz2dT;45$N8NDGnri^0^aA#6d;Wr1u%YLHH`N?qqtHRfUCV4TuBYp1p!rGg?8$CPI0w`07d@@DD=F7 z>=y#+xEe*%s*n~U^^2jZSwoc<0rFe}$hSpjNT{7qQbTp~0aafMDDr~ha$gL{aUCGn ziwbHZ6eSebP}L=X0!sjeUQ%541%NsLHEvZ%3z7Qk!PKmw%7qv+JU5iD$~7Xd=o~Kt zn`0?+jOiQ+MG3_rs|s0g)l}qoGjr4s=7zzI;qs-1@6U=U zbp^!Q!(d8ksP0NY)e%6E*Ay2vyDc^LMNnhy8anS6w8_vd;HrLIaXG8eM3w<@yrGa7 z5Tlt;R70}IZgCCfnZGEe7M|?51c(vPQ0G;UOV&WHLqkn}WTUBNqj^&arv6CVYr&P& zP~FwE{Z>GcZHmjin6}?a+cgwk46e{}a8>_RaXGI6*Y4%uifgEf(Bu{6jsa0F!tv8H z>HhDQMHW9-8#%<7x1#(GBl?z761*0AeJi0i@V0_FuZ5CrE6cG>ddD(j&&u-S@O+Yr zjFy!p=$yBKxqiE1F0z%ObKVZf^NxaEA`~aouA%VtwEhl2)$b}U=M5TML_ub7VU;lT-=3NFh*J|Y0{*i*hHB`Tb>UU`MwOAcA zQZVp|f;w*nSJD7ihlZM#1B$E#RR5_~zk=%T0p!`Kpah}#J;<^8Gp+tMSbraw9G@#B z1_UR(0g7rUcsn59IzWMh;_4)nB-EjyraJ&d)&r_fDlYFTK(6}%dA?9kf>4}LyN1Gd zqHsb@Tmg0LQfy82RQ4d1{ZlKui^?9Nvahro) z1$C|lSMm{Xb!ez*4WP(IK=t4192)_-HUaYN(K!-|Zz`Xqn{(Iz5PFpP?bZ3MMVW2} z;`mM>F(5`Wp{Ry}_W<%e1}N~o;_4)nB-Ejyrh5TJ9!HJUH%~QZ)0alDXFLHe&jSiN zZzQ15ljY`K-@3O-*TsLW@h8hm(C&Ux*#z%r&QU7(x6YYRl2E&bZX6Ark*5Gv|3`6Q z@q)8+o+@85Af$93m{oV@wtxrTlP)c7oQZ&Xb8jRjLPq57Xy zcGJcI@;ygYzbNQaLPD@+t!_*C z%x-I{^UR{fi3u1CUoJ-g2U`UiffveMM)UCELSyAC7$8Hy@_Yo40`HTF`7`#BWizP~^^@}e%p$eVQgC2f>z8(rzCb$7T?6Faui6<`)u{t77B zJGw(o7^ z(GDz=?Tqd4rjJ5oi|w`Bsar#m-Q;%wB@fTGE&dMO?3)dS-UZlkWH#uyW&D8F0d3{B zT*FhSvO*&rZbWZn5x3LOBebDtsRc%0DG2-8X)OpAYySo)uA5?8a0=eS{Tp(O!wj?P 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�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

OaiNGLX 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 G^M3$9*@*7| delta 67187 zcmeFa3v^Re`Zj(}PST{b(DYuUK!74C6bMoTrAV+XEm9zrDpjfkD1yi(D$*h(-GQno zRjLIxXpyR@s8#EL9+WCU>WEskCh*TSCxJtv&~USWKWFKkU4#Qa%)LKvlUVe^ z7e9(((fwb{t{Ej2#Mp?}|IS%zYNS4f-N`jCNtZ?DAM~@*Z?0q}KI|(ge!JB;PwdWm zuVlg+5e5du=v)kTRzcXf{eII_i;=MHC%W!1OY3?~-o7RA5m9nYpS(Rg`9)FX&ZJl* zY2BxjwwqIX8db<{vl^t#Z}PT}?mNjSRbDW8`VM6@?%c5_KDMU&uAdBB z#O>C`B_=~(Yt7j`J$cN>-Apyx_N0ijx9{0AQta1LZ4F^D_NUE)5V&0wg*^t*x$--O zaW;rGJ@%$c>~=H%qEzf(<7$fFuMLT~x@Os}sdQHMT&zP?Pe8Lvrfco;SAf>b_QE3R$=@uwFo4 zvNaY_@LNP@?hisu=ARvsO;>j{`D(hnIWV=m7T{a#Kcpd&;Ce(QLIi%KQ9hLUgjDKs$hQC{lyl!xWF(DSU=#5$k zeo=IKB1Pwge-~=1-*QNSP?HUp$5tbfwh-{`2`6q)Y4EjwF=Kcsl5E@=I*2r(C zOLd`EcfKAwnS_VMw z)JS1)8IR9{e`nj3JdX;Q2(+9E`6xV3g%T8w<%x5obtp{C2hy54l~+*VMAQ_%oeHNC zr|_@y5ybth7bzLU)>dR-%vRD%?N`WqOn{bkcs8Gc!pQvLDnrTlS=y42XcL4ub@o=e zNqA26;u&riPUfqXEP=5+LF_5jJ?G_z;3fI+U227#m)eCktwJTJQ12@cV%vgcY+5P> z5QO_q_Mb-~t_lf}QlT2N61#9}f*K+vH=Eye1!^&BrAk_7+6DI&D(M2b3!bG$G{g5) zXhEUhL=-Fwm+@&R@N!>HG+#GSv`Y>^y8(^NS-6Z*4)j;@=)tEbkJsqvz#pY^c##^) zHq0)p(?SVD%J_f+#FUbP=2HAE>~Ve4eIiJHb|^K+AtM~cVKdryJZ zPOZ0FueS@)Q&g?Yylg&q3bYQd^z*w&>l9Ocwal;!OEfJ8t@oidu~;KLAh&7cy1Z<5 zM}H-Ap*~i)fKu;|GdBHEbzSq+)U8$MqGYwY&2Tu%W?7Ba*{-!lUr$W~h4?Hags0NWe}r-JzGalWC_0MlLb+y4oi@4#IzUg3wkjen{tn7bEcxe^j%LD^#2IX?9^n(1stP zXoq!&I4~PR$fzr6Oy8nfT1VQ2<00f&kP}ZWS4r2^b|K};ag4$tPj*j#Dha~s-M2hS zsl16(J^fKC#hOj~Rd%5uXv3eRXghCL9ae*6A>093`nVDU@m_LE~J7%x%?az7NqC$;YBDkKa<1fQlYUv zhd)Gxqfh7X_o?7Ho5Q86P;j5i;UlTQe#_xEQK8^q4&OqBtdDZ|hg2vzki*SaBg?~H zN(5)tYca`&Br@e{G-0_S}u&bRwdi72%g41&s;cxj?KR$P@@V0P4W9Qn-bV8 z&}@tov-z8Fn4Gdpjn)!VF4Spc3dqw$&eKTuBuYe0#nPxo8x>bBWN9`xmY7@(dB|iBkhhd{tl7bG}4Gx*{YFQ zAkPtbN+UgRdsrh~AcvQT<7||}!ek`{r8(?fS27xJR)je$XEVO8L`+N0e^t%Q6JIVw zm#DQVg^Tw~;D4h=u7=4rjVuQ#U56g5MGua=PMjk?SF>kNcYgbIVi!4ZomeSGuEvlp zeIb_(sSz8Z&xm�urh|< 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