removed vtil, preparing to recode and add dump support...

merge-requests/6/head
_xeroxz 2 years ago
parent 17e6424303
commit 320c7e9638

1
.gitignore vendored

@ -17,6 +17,7 @@
mono_crash.*
# Build results
build/
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/

3
.gitmodules vendored

@ -1,6 +1,3 @@
[submodule "dependencies/xtils"]
path = dependencies/xtils
url = https://githacks.org/_xeroxz/xtils.git
[submodule "dependencies/unicorn"]
path = dependencies/unicorn
url = https://github.com/unicorn-engine/unicorn.git

@ -0,0 +1,84 @@
# This file is automatically generated from cmake.toml - DO NOT EDIT
# See https://github.com/build-cpp/cmkr for more information
cmake_minimum_required(VERSION 3.15)
# Regenerate CMakeLists.txt automatically in the root project
set(CMKR_ROOT_PROJECT OFF)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
set(CMKR_ROOT_PROJECT ON)
# Bootstrap cmkr
include(cmkr.cmake OPTIONAL RESULT_VARIABLE CMKR_INCLUDE_RESULT)
if(CMKR_INCLUDE_RESULT)
cmkr()
endif()
# Enable folder support
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
endif()
# Create a configure-time dependency on cmake.toml to improve IDE support
if(CMKR_ROOT_PROJECT)
configure_file(cmake.toml cmake.toml COPYONLY)
endif()
project(vmemu)
# dependencies
set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER})
if(CMAKE_FOLDER)
set(CMAKE_FOLDER "${CMAKE_FOLDER}/dependencies")
else()
set(CMAKE_FOLDER dependencies)
endif()
add_subdirectory(dependencies)
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
# Target vmemu
set(CMKR_TARGET vmemu)
set(vmemu_SOURCES "")
list(APPEND vmemu_SOURCES
"src/main.cpp"
"src/unpacker.cpp"
"src/vmemu_t.cpp"
"include/unpacker.hpp"
"include/vmemu_t.hpp"
)
list(APPEND vmemu_SOURCES
cmake.toml
)
set(CMKR_SOURCES ${vmemu_SOURCES})
add_executable(vmemu)
if(vmemu_SOURCES)
target_sources(vmemu PRIVATE ${vmemu_SOURCES})
endif()
get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT vmemu)
endif()
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${vmemu_SOURCES})
target_compile_definitions(vmemu PRIVATE
NOMINMAX
)
target_include_directories(vmemu PRIVATE
include
)
target_link_libraries(vmemu PRIVATE
vmprofiler
unicorn
cli-parser
)
unset(CMKR_TARGET)
unset(CMKR_SOURCES)

@ -0,0 +1,23 @@
[project]
name = "vmemu"
[subdir.dependencies]
[target.vmemu]
type = "executable"
sources = [
"src/**.cpp",
"include/**.hpp",
]
include-directories = [
"include",
]
link-libraries = [
"vmprofiler",
"unicorn",
"cli-parser",
]
compile-definitions = [
"NOMINMAX"
]

@ -0,0 +1,162 @@
include_guard()
# Change these defaults to point to your infrastructure if desired
set(CMKR_REPO "https://github.com/build-cpp/cmkr" CACHE STRING "cmkr git repository" FORCE)
set(CMKR_TAG "archive_264e4ace" CACHE STRING "cmkr git tag (this needs to be available forever)" FORCE)
# Set these from the command line to customize for development/debugging purposes
set(CMKR_EXECUTABLE "" CACHE FILEPATH "cmkr executable")
set(CMKR_SKIP_GENERATION OFF CACHE BOOL "skip automatic cmkr generation")
# Disable cmkr if generation is disabled
if(DEFINED ENV{CI} OR CMKR_SKIP_GENERATION)
message(STATUS "[cmkr] Skipping automatic cmkr generation")
macro(cmkr)
endmacro()
return()
endif()
# Disable cmkr if no cmake.toml file is found
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake.toml")
message(AUTHOR_WARNING "[cmkr] Not found: ${CMAKE_CURRENT_SOURCE_DIR}/cmake.toml")
macro(cmkr)
endmacro()
return()
endif()
# Convert a Windows native path to CMake path
if(CMKR_EXECUTABLE MATCHES "\\\\")
string(REPLACE "\\" "/" CMKR_EXECUTABLE_CMAKE "${CMKR_EXECUTABLE}")
set(CMKR_EXECUTABLE "${CMKR_EXECUTABLE_CMAKE}" CACHE FILEPATH "" FORCE)
unset(CMKR_EXECUTABLE_CMAKE)
endif()
# Helper macro to execute a process (COMMAND_ERROR_IS_FATAL ANY is 3.19 and higher)
function(cmkr_exec)
execute_process(COMMAND ${ARGV} RESULT_VARIABLE CMKR_EXEC_RESULT)
if(NOT CMKR_EXEC_RESULT EQUAL 0)
message(FATAL_ERROR "cmkr_exec(${ARGV}) failed (exit code ${CMKR_EXEC_RESULT})")
endif()
endfunction()
# Windows-specific hack (CMAKE_EXECUTABLE_PREFIX is not set at the moment)
if(WIN32)
set(CMKR_EXECUTABLE_NAME "cmkr.exe")
else()
set(CMKR_EXECUTABLE_NAME "cmkr")
endif()
# Use cached cmkr if found
set(CMKR_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_cmkr_${CMKR_TAG}")
set(CMKR_CACHED_EXECUTABLE "${CMKR_DIRECTORY}/bin/${CMKR_EXECUTABLE_NAME}")
if(NOT CMKR_CACHED_EXECUTABLE STREQUAL CMKR_EXECUTABLE AND CMKR_EXECUTABLE MATCHES "^${CMAKE_CURRENT_BINARY_DIR}/_cmkr")
message(AUTHOR_WARNING "[cmkr] Upgrading '${CMKR_EXECUTABLE}' to '${CMKR_CACHED_EXECUTABLE}'")
unset(CMKR_EXECUTABLE CACHE)
endif()
if(CMKR_EXECUTABLE AND EXISTS "${CMKR_EXECUTABLE}")
message(VERBOSE "[cmkr] Found cmkr: '${CMKR_EXECUTABLE}'")
elseif(CMKR_EXECUTABLE AND NOT CMKR_EXECUTABLE STREQUAL CMKR_CACHED_EXECUTABLE)
message(FATAL_ERROR "[cmkr] '${CMKR_EXECUTABLE}' not found")
else()
set(CMKR_EXECUTABLE "${CMKR_CACHED_EXECUTABLE}" CACHE FILEPATH "Full path to cmkr executable" FORCE)
message(VERBOSE "[cmkr] Bootstrapping '${CMKR_EXECUTABLE}'")
message(STATUS "[cmkr] Fetching cmkr...")
if(EXISTS "${CMKR_DIRECTORY}")
cmkr_exec("${CMAKE_COMMAND}" -E rm -rf "${CMKR_DIRECTORY}")
endif()
find_package(Git QUIET REQUIRED)
cmkr_exec("${GIT_EXECUTABLE}"
clone
--config advice.detachedHead=false
--branch ${CMKR_TAG}
--depth 1
${CMKR_REPO}
"${CMKR_DIRECTORY}"
)
message(STATUS "[cmkr] Building cmkr...")
cmkr_exec("${CMAKE_COMMAND}"
--no-warn-unused-cli
"${CMKR_DIRECTORY}"
"-B${CMKR_DIRECTORY}/build"
"-DCMAKE_BUILD_TYPE=Release"
"-DCMAKE_INSTALL_PREFIX=${CMKR_DIRECTORY}"
"-DCMKR_GENERATE_DOCUMENTATION=OFF"
)
cmkr_exec("${CMAKE_COMMAND}"
--build "${CMKR_DIRECTORY}/build"
--config Release
--parallel
)
cmkr_exec("${CMAKE_COMMAND}"
--install "${CMKR_DIRECTORY}/build"
--config Release
--prefix "${CMKR_DIRECTORY}"
--component cmkr
)
if(NOT EXISTS ${CMKR_EXECUTABLE})
message(FATAL_ERROR "[cmkr] Failed to bootstrap '${CMKR_EXECUTABLE}'")
endif()
cmkr_exec("${CMKR_EXECUTABLE}" version)
message(STATUS "[cmkr] Bootstrapped ${CMKR_EXECUTABLE}")
endif()
execute_process(COMMAND "${CMKR_EXECUTABLE}" version
RESULT_VARIABLE CMKR_EXEC_RESULT
)
if(NOT CMKR_EXEC_RESULT EQUAL 0)
message(FATAL_ERROR "[cmkr] Failed to get version, try clearing the cache and rebuilding")
endif()
# This is the macro that contains black magic
macro(cmkr)
# When this macro is called from the generated file, fake some internal CMake variables
get_source_file_property(CMKR_CURRENT_LIST_FILE "${CMAKE_CURRENT_LIST_FILE}" CMKR_CURRENT_LIST_FILE)
if(CMKR_CURRENT_LIST_FILE)
set(CMAKE_CURRENT_LIST_FILE "${CMKR_CURRENT_LIST_FILE}")
get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)
endif()
# File-based include guard (include_guard is not documented to work)
get_source_file_property(CMKR_INCLUDE_GUARD "${CMAKE_CURRENT_LIST_FILE}" CMKR_INCLUDE_GUARD)
if(NOT CMKR_INCLUDE_GUARD)
set_source_files_properties("${CMAKE_CURRENT_LIST_FILE}" PROPERTIES CMKR_INCLUDE_GUARD TRUE)
file(SHA256 "${CMAKE_CURRENT_LIST_FILE}" CMKR_LIST_FILE_SHA256_PRE)
# Generate CMakeLists.txt
cmkr_exec("${CMKR_EXECUTABLE}" gen
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
file(SHA256 "${CMAKE_CURRENT_LIST_FILE}" CMKR_LIST_FILE_SHA256_POST)
# Delete the temporary file if it was left for some reason
set(CMKR_TEMP_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CMakerLists.txt")
if(EXISTS "${CMKR_TEMP_FILE}")
file(REMOVE "${CMKR_TEMP_FILE}")
endif()
if(NOT CMKR_LIST_FILE_SHA256_PRE STREQUAL CMKR_LIST_FILE_SHA256_POST)
# Copy the now-generated CMakeLists.txt to CMakerLists.txt
# This is done because you cannot include() a file you are currently in
configure_file(CMakeLists.txt "${CMKR_TEMP_FILE}" COPYONLY)
# Add the macro required for the hack at the start of the cmkr macro
set_source_files_properties("${CMKR_TEMP_FILE}" PROPERTIES
CMKR_CURRENT_LIST_FILE "${CMAKE_CURRENT_LIST_FILE}"
)
# 'Execute' the newly-generated CMakeLists.txt
include("${CMKR_TEMP_FILE}")
# Delete the generated file
file(REMOVE "${CMKR_TEMP_FILE}")
# Do not execute the rest of the original CMakeLists.txt
return()
endif()
# Resume executing the unmodified CMakeLists.txt
endif()
endmacro()

@ -0,0 +1,46 @@
# This file is automatically generated from cmake.toml - DO NOT EDIT
# See https://github.com/build-cpp/cmkr for more information
# Create a configure-time dependency on cmake.toml to improve IDE support
if(CMKR_ROOT_PROJECT)
configure_file(cmake.toml cmake.toml COPYONLY)
endif()
# vmprofiler
set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER})
if(CMAKE_FOLDER)
set(CMAKE_FOLDER "${CMAKE_FOLDER}/vmprofiler")
else()
set(CMAKE_FOLDER vmprofiler)
endif()
add_subdirectory(vmprofiler)
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
# unicorn
set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER})
if(CMAKE_FOLDER)
set(CMAKE_FOLDER "${CMAKE_FOLDER}/unicorn")
else()
set(CMAKE_FOLDER unicorn)
endif()
add_subdirectory(unicorn)
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
# Target cli-parser
set(CMKR_TARGET cli-parser)
set(cli-parser_SOURCES "")
set(CMKR_SOURCES ${cli-parser_SOURCES})
add_library(cli-parser INTERFACE)
if(cli-parser_SOURCES)
target_sources(cli-parser INTERFACE ${cli-parser_SOURCES})
endif()
target_include_directories(cli-parser INTERFACE
cli-parser
)
unset(CMKR_TARGET)
unset(CMKR_SOURCES)

@ -0,0 +1,6 @@
[subdir.vmprofiler]
[subdir.unicorn]
[target.cli-parser]
type = "interface"
include-directories = ["cli-parser"]

@ -1 +1 @@
Subproject commit e75104fbb3b07540be51fcef169e9eaffd1cfee2
Subproject commit 99f1f695ed0e10c278076b037edd399965563140

@ -1 +0,0 @@
Subproject commit 99a1fc74e16af3261e7cfff4e03d470a7a05feb0

@ -0,0 +1,15 @@
#pragma once
#include <vmprofiler.hpp>
namespace vm
{
class emu_t
{
public:
explicit emu_t( vm::ctx_t *vm_ctx );
~emu_t();
bool init();
bool get_trace( std::vector< vm::instrs::code_block_t > &code_blocks );
};
} // namespace vm

@ -1,10 +1,10 @@
#define NOMINMAX
#include <unicorn/unicorn.h>
#include "vmemu_t.hpp"
#include <cli-parser.hpp>
#include <fstream>
#include <iostream>
#include <unicorn/unicorn.h>
#include <xtils.hpp>
#include "vmemu_t.hpp"
int __cdecl main( int argc, const char *argv[] )
{
@ -15,8 +15,9 @@ int __cdecl main( int argc, const char *argv[] )
.required( true )
.description( "relative virtual address to a vm entry..." );
parser.add_argument().name( "--vmpbin" ).required( true ).description( "path to unpacked virtualized binary..." );
parser.add_argument().name( "--bin" ).required( true ).description( "path to unpacked virtualized binary..." );
parser.add_argument().name( "--out" ).required( true ).description( "output file name for trace file..." );
parser.add_argument().name( "--unpack" ).description( "unpack a vmp2 binary..." );
parser.enable_help();
auto result = parser.parse( argc, argv );
@ -72,6 +73,7 @@ int __cdecl main( int argc, const char *argv[] )
std::printf( "[!] something failed during tracing, review the console for more information...\n" );
std::printf( "> number of blocks = %d\n", code_blocks.size() );
for ( auto &code_block : code_blocks )
{
std::printf( "> code block starts at = %p\n", code_block.vip_begin );
@ -121,4 +123,4 @@ int __cdecl main( int argc, const char *argv[] )
output.close();
std::printf( "> finished..." );
}
}

@ -2,393 +2,21 @@
namespace vm
{
emu_t::emu_t( vm::ctx_t *vmctx ) : uc( nullptr ), vmctx( vmctx )
emu_t::emu_t( vm::ctx_t *vmctx )
{
}
bool emu_t::init()
{
uc_err err;
std::uintptr_t stack_base = 0x1000000;
std::uintptr_t stack_addr = ( stack_base + ( 0x1000 * 20 ) ) - 0x6000;
const auto rip = vmctx->module_base + vmctx->vm_entry_rva;
if ( ( err = uc_open( UC_ARCH_X86, UC_MODE_64, &uc ) ) )
{
std::printf( "failed on uc_mem_map() with error returned %u: %s\n", err, uc_strerror( err ) );
return false;
}
if ( ( err = uc_mem_map( uc, vmctx->module_base, vmctx->image_size, UC_PROT_ALL ) ) )
{
std::printf( "failed on uc_mem_map() with error returned %u: %s\n", err, uc_strerror( err ) );
return false;
}
if ( ( err = uc_mem_map( uc, UC_STACK_ADDR, sizeof vm::cpu_ctx::stack, UC_PROT_ALL ) ) )
{
std::printf( "failed on uc_mem_map() with error returned %u: %s\n", err, uc_strerror( err ) );
return false;
}
if ( ( err = uc_mem_write( uc, vmctx->module_base, reinterpret_cast< void * >( vmctx->module_base ),
vmctx->image_size ) ) )
{
std::printf( "failed on uc_mem_write() with error returned %u: %s\n", err, uc_strerror( err ) );
return false;
}
if ( ( err = uc_reg_write( uc, UC_X86_REG_RIP, &rip ) ) )
{
std::printf( "failed on uc_reg_write() with error returned %u: %s\n", err, uc_strerror( err ) );
return false;
}
if ( ( err = uc_reg_write( uc, UC_X86_REG_RSP, &stack_addr ) ) )
{
std::printf( "failed on uc_reg_write() with error returned %u: %s\n", err, uc_strerror( err ) );
return false;
}
if ( ( err = uc_hook_add( uc, &trace, UC_HOOK_CODE, &vm::emu_t::hook_code, this, vmctx->module_base,
vmctx->module_base + vmctx->image_size ) ) )
{
std::printf( "failed on uc_hook_add() with error returned %u: %s\n", err, uc_strerror( err ) );
return false;
}
if ( ( err = uc_hook_add( uc, &trace1, UC_HOOK_MEM_READ_UNMAPPED | UC_HOOK_MEM_WRITE_UNMAPPED,
vm::emu_t::hook_mem_invalid, this, 1, 0 ) ) )
{
std::printf( "failed on uc_hook_add() with error returned %u: %s\n", err, uc_strerror( err ) );
return false;
}
return true;
}
emu_t::~emu_t()
{
if ( uc )
uc_close( uc );
}
bool emu_t::get_trace( std::vector< vm::instrs::code_block_t > &entries )
{
uc_err err;
code_blocks.push_back( { vm::instrs::code_block_t{ 0u }, { nullptr } } );
if ( ( err = uc_emu_start( uc, vmctx->vm_entry_rva + vmctx->module_base, NULL, NULL, NULL ) ) )
{
std::printf( "failed on uc_emu_start() with error returned %u: %s\n", err, uc_strerror( err ) );
return false;
}
static const auto _already_traced = [ & ]( std::uintptr_t code_block_addr ) -> bool {
return std::find_if( code_blocks.begin(), code_blocks.end(), [ & ]( const auto code_block_data ) -> bool {
return code_block_data.first.vip_begin == code_block_addr ||
// sometimes the code block address is displaced by 1... and another byte for the
// opcode...
code_block_data.first.vip_begin == code_block_addr - 2 ||
code_block_data.first.vip_begin == code_block_addr - 1;
} ) != code_blocks.end();
};
static const auto _traced_all_paths =
[ & ]( const std::vector< std::pair< vm::instrs::code_block_t, std::shared_ptr< cpu_ctx > > > &code_blocks )
-> bool {
return std::find_if(
code_blocks.begin(), code_blocks.end(),
[]( const std::pair< vm::instrs::code_block_t, std::shared_ptr< cpu_ctx > > &code_block_data )
-> bool {
return code_block_data.first.jcc.has_jcc &&
( !_already_traced( code_block_data.first.jcc.block_addr[ 0 ] ) ||
!_already_traced( code_block_data.first.jcc.block_addr[ 1 ] ) );
} ) == code_blocks.end();
};
static const auto _trace_branch = [ & ]( vm::instrs::code_block_t &code_block,
std::shared_ptr< cpu_ctx > &context,
std::uintptr_t branch_addr ) -> bool {
if ( !context )
return {};
// restore context to virtual jmp... changing branch...
uc_context_restore( uc, context->context );
// restore entire stack....
uc_mem_write( uc, UC_STACK_ADDR, context->stack, sizeof vm::cpu_ctx::stack );
std::uintptr_t rip = 0u;
uc_reg_read( uc, UC_X86_REG_RIP, &rip );
// change the top qword on the stack to the branch rva...
// the rva is image base'ed and only the bottom 32bits...
std::uintptr_t branch_rva = ( ( branch_addr - vmctx->module_base ) + vmctx->image_base ) & 0xFFFFFFFFull;
uc_mem_write( uc, code_block.vinstrs.back().trace_data.regs.rbp, &branch_rva, sizeof branch_rva );
code_blocks.push_back( { vm::instrs::code_block_t{ 0u }, { nullptr } } );
skip_current_jmp = true;
if ( ( err = uc_emu_start( uc, rip, NULL, NULL, NULL ) ) )
{
std::printf( "failed on uc_emu_start() with error returned %u: %s\n", err, uc_strerror( err ) );
return false;
}
return true;
};
while ( !_traced_all_paths( code_blocks ) )
{
for ( auto &[ code_block, uc_code_block_context ] : code_blocks )
{
if ( code_block.jcc.has_jcc )
{
if ( !_already_traced( code_block.jcc.block_addr[ 0 ] ) )
{
_trace_branch( code_block, uc_code_block_context, code_block.jcc.block_addr[ 0 ] );
break;
}
if ( !_already_traced( code_block.jcc.block_addr[ 1 ] ) )
{
_trace_branch( code_block, uc_code_block_context, code_block.jcc.block_addr[ 1 ] );
break;
}
}
}
}
for ( auto &[ code_block, uc_code_block_context ] : code_blocks )
entries.push_back( code_block );
return true;
}
uc_err emu_t::create_entry( vmp2::v2::entry_t *entry )
bool emu_t::init()
{
uc_reg_read( uc, UC_X86_REG_R15, &entry->regs.r15 );
uc_reg_read( uc, UC_X86_REG_R14, &entry->regs.r14 );
uc_reg_read( uc, UC_X86_REG_R13, &entry->regs.r13 );
uc_reg_read( uc, UC_X86_REG_R12, &entry->regs.r12 );
uc_reg_read( uc, UC_X86_REG_R11, &entry->regs.r11 );
uc_reg_read( uc, UC_X86_REG_R10, &entry->regs.r10 );
uc_reg_read( uc, UC_X86_REG_R9, &entry->regs.r9 );
uc_reg_read( uc, UC_X86_REG_R8, &entry->regs.r8 );
uc_reg_read( uc, UC_X86_REG_RBP, &entry->regs.rbp );
uc_reg_read( uc, UC_X86_REG_RDI, &entry->regs.rdi );
uc_reg_read( uc, UC_X86_REG_RSI, &entry->regs.rsi );
uc_reg_read( uc, UC_X86_REG_RDX, &entry->regs.rdx );
uc_reg_read( uc, UC_X86_REG_RCX, &entry->regs.rcx );
uc_reg_read( uc, UC_X86_REG_RBX, &entry->regs.rbx );
uc_reg_read( uc, UC_X86_REG_RAX, &entry->regs.rax );
uc_reg_read( uc, UC_X86_REG_EFLAGS, &entry->regs.rflags );
entry->vip = entry->regs.rsi;
entry->handler_idx = entry->regs.rax;
entry->decrypt_key = entry->regs.rbx;
uc_err err;
if ( ( err = uc_mem_read( uc, entry->regs.rdi, entry->vregs.raw, sizeof entry->vregs.raw ) ) )
return err;
// copy virtual stack values...
for ( auto idx = 0u; idx < sizeof( entry->vsp ) / 8; ++idx )
if ( ( err = uc_mem_read( uc, entry->regs.rbp + ( idx * 8 ), &entry->vsp.qword[ idx ],
sizeof entry->vsp.qword[ idx ] ) ) )
return err;
return UC_ERR_OK;
return {};
}
void emu_t::hook_code( uc_engine *uc, uint64_t address, uint32_t size, vm::emu_t *obj )
{
// std::printf( ">>> Tracing instruction at 0x%p, instruction size = 0x%x\n",
//( address - obj->vmctx->module_base ) + obj->vmctx->image_base, size );
// bad code... but i need to skip JMP instructions when tracing branches since i save context
// on the jmp instruction... so it needs to be skipped...
if ( obj->skip_current_jmp )
{
obj->skip_current_jmp = false;
return;
}
// grab JMP RDX/RCX <-- this register...
static const auto jmp_reg = obj->vmctx->vm_entry[ obj->vmctx->vm_entry.size() ].instr.operands[ 0 ].reg.value;
static ZydisDecoder decoder;
static ZydisDecodedInstruction instr;
static std::uintptr_t reg_val = 0u, rsi = 0u;
// init zydis decoder only a single time...
if ( static std::atomic< bool > once = true; once.exchange( false ) )
ZydisDecoderInit( &decoder, ZYDIS_MACHINE_MODE_LONG_64, ZYDIS_ADDRESS_WIDTH_64 );
if ( ZYAN_SUCCESS(
ZydisDecoderDecodeBuffer( &decoder, reinterpret_cast< void * >( address ), size, &instr ) ) &&
instr.mnemonic == ZYDIS_MNEMONIC_JMP && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
instr.operands[ 0 ].reg.value == jmp_reg )
{
uc_err err;
vmp2::v2::entry_t new_entry;
std::optional< vm::instrs::virt_instr_t > virt_instr;
vm::handler::profile_t *vm_handler_profile = nullptr;
switch ( jmp_reg )
{
case ZYDIS_REGISTER_RDX:
uc_reg_read( uc, UC_X86_REG_RDX, &reg_val );
break;
case ZYDIS_REGISTER_RCX:
uc_reg_read( uc, UC_X86_REG_RCX, &reg_val );
break;
default:
std::printf( "[!] invalid jump register... = %d\n", jmp_reg );
exit( 0 );
}
// checks to see if the address
// in JMP RDX/RCX is a vm handler address...
static const auto vm_handler_check = [ & ]( const vm::handler::handler_t &vm_handler ) -> bool {
return vm_handler.address == reg_val;
};
if ( std::find_if( obj->vmctx->vm_handlers.begin(), obj->vmctx->vm_handlers.end(), vm_handler_check ) ==
obj->vmctx->vm_handlers.end() )
return;
if ( ( err = obj->create_entry( &new_entry ) ) )
{
std::printf( "[!] failed to create new entry... reason = %u, %s\n", err, uc_strerror( err ) );
exit( 0 );
}
if ( !obj->code_blocks.back().first.vip_begin )
// -1 because the first byte is the opcode...
obj->code_blocks.back().first.vip_begin = new_entry.vip - 1;
if ( obj->code_blocks.back().first.vinstrs.size() > 500 )
{
obj->code_blocks.back().first.jcc.has_jcc = false;
uc_emu_stop( obj->uc );
return;
}
if ( virt_instr = vm::instrs::get( *obj->vmctx, new_entry ); !virt_instr.has_value() )
{
std::printf( "[!] failed to create vm::instrs::virt_instr_t...\n" );
exit( 0 );
}
obj->code_blocks.back().first.vinstrs.push_back( virt_instr.value() );
uc_reg_read( obj->uc, UC_X86_REG_RSI, &rsi );
std::printf( "> %s handler = 0x%p vip = 0x%p\n",
obj->vmctx->vm_handlers[ new_entry.handler_idx ].profile
? obj->vmctx->vm_handlers[ new_entry.handler_idx ].profile->name
: "UNK",
( reg_val - obj->vmctx->module_base ) + obj->vmctx->image_base,
( rsi - obj->vmctx->module_base ) + obj->vmctx->image_base );
// if there is a virtual JMP instruction then we need to grab jcc data for the current code_block_t
// and then create a new code_block_t...
if ( ( vm_handler_profile = obj->vmctx->vm_handlers[ new_entry.handler_idx ].profile ) &&
vm_handler_profile->mnemonic == vm::handler::mnemonic_t::JMP )
{
const auto code_block_address = vm::instrs::code_block_addr( *obj->vmctx, new_entry );
auto jcc = vm::instrs::get_jcc_data( *obj->vmctx, obj->code_blocks.back().first );
if ( jcc.has_value() )
{
obj->code_blocks.back().first.jcc = jcc.value();
}
else // the branch(s) dont start with SREGQ... stopping...
{
uc_emu_stop( uc );
return;
}
// save cpu state as well as stack...
obj->code_blocks.back().second = std::make_shared< cpu_ctx >();
if ( ( err = uc_context_alloc( uc, &obj->code_blocks.back().second->context ) ) )
{
std::printf( "[!] failed to allocate context space...\n" );
exit( 0 );
}
if ( ( err = uc_context_save( uc, obj->code_blocks.back().second->context ) ) )
{
std::printf( "[!] failed to save cpu context...\n" );
exit( 0 );
}
if ( ( err = uc_mem_read( uc, UC_STACK_ADDR, obj->code_blocks.back().second->stack,
sizeof vm::cpu_ctx::stack ) ) )
{
std::printf( "[!] failed to read stack into backup buffer...\n" );
exit( 0 );
}
// if the next code block has already been traced then stop emulation...
if ( auto already_traced = std::find_if( obj->code_blocks.begin(), obj->code_blocks.end(),
[ & ]( const auto &code_block_data ) -> bool {
return code_block_data.first.vip_begin ==
code_block_address;
} );
already_traced != obj->code_blocks.end() )
{
uc_emu_stop( uc );
}
else // else set the next code block up...
{
obj->code_blocks.push_back( { vm::instrs::code_block_t{ 0u }, {} } );
}
}
}
else if ( instr.mnemonic == ZYDIS_MNEMONIC_RET ) // finish tracing...
{
uc_emu_stop( uc );
// vmexit's cannot have a branch...
obj->code_blocks.back().first.jcc.has_jcc = false;
}
else if ( instr.mnemonic == ZYDIS_MNEMONIC_CALL && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER )
{
const auto rip = address + instr.length;
uc_reg_write( obj->uc, UC_X86_REG_RIP, &rip );
}
}
bool emu_t::hook_mem_invalid( uc_engine *uc, uc_mem_type type, uint64_t address, int size, int64_t value,
vm::emu_t *obj )
bool emu_t::get_trace( std::vector< vm::instrs::code_block_t > &entries )
{
uc_err err;
if ( ( err = uc_mem_map( obj->uc, address & ~0xFFFull, 0x1000, UC_PROT_ALL ) ) )
std::printf( "failed on uc_mem_map() with error returned %u: %s\n", err, uc_strerror( err ) );
switch ( type )
{
case UC_MEM_WRITE_UNMAPPED:
printf( ">>> Missing memory is being WRITE at 0x%p, data size = %u, data value = 0x%p\n", address, size,
value );
return true;
case UC_MEM_READ_UNMAPPED:
printf( ">>> Missing memory is being READ at 0x%p, data size = %u, data value = 0x%p\n", address, size,
value );
return true;
default:
printf( ">>> Missing memory at 0x%p, data size = %u, data value = 0x%p\n", address, size, value );
return true;
}
return {};
}
} // namespace vm

@ -1,47 +0,0 @@
#pragma once
#define NOMINMAX
#include <Zydis/Zydis.h>
#include <cstdint>
#include <exception>
#include <functional>
#include <mutex>
#include <unicorn/unicorn.h>
#include <vmp2.hpp>
#include <vmprofiler.hpp>
#include <xtils.hpp>
#define UC_STACK_ADDR 0x1000000
namespace vm
{
struct cpu_ctx
{
uc_context *context;
std::uint8_t stack[ PAGE_4K * 100 ];
};
class emu_t
{
using callback_t = std::function< void( uc_engine *, uint64_t, uint32_t, void * ) >;
public:
explicit emu_t( vm::ctx_t *vmctx );
~emu_t();
bool init();
bool get_trace( std::vector< vm::instrs::code_block_t > &entries );
private:
uc_err create_entry( vmp2::v2::entry_t *entry );
static void hook_code( uc_engine *uc, uint64_t address, uint32_t size, vm::emu_t *obj );
static bool hook_mem_invalid( uc_engine *uc, uc_mem_type type, uint64_t address, int size, int64_t value,
vm::emu_t *obj );
uc_engine *uc;
uc_hook trace, trace1;
bool skip_current_jmp;
vm::ctx_t *vmctx;
std::vector< std::pair< vm::instrs::code_block_t, std::shared_ptr<cpu_ctx> > > code_blocks;
};
} // namespace vm

@ -1,662 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30907.101
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Zydis", "dependencies\vmprofiler\dependencies\zydis\msvc\zydis\Zydis.vcxproj", "{88A23124-5640-35A0-B890-311D7A67A7D2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vmprofiler", "dependencies\vmprofiler\vmprofiler.vcxproj", "{D0B6092A-9944-4F24-9486-4B7DAE372619}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vmemu", "vmemu.vcxproj", "{F0D51879-E659-4BD3-B688-7864DB3C82AA}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependencies", "dependencies", "{7EE14D03-ED3D-4FA2-8974-8A285C974E3D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VTIL", "dependencies\vmprofiler\dependencies\vtil\VTIL\VTIL.vcxproj", "{8163E74C-DDE4-4507-BD3D-064CD95FF33B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VTIL-Architecture", "dependencies\vmprofiler\dependencies\vtil\VTIL-Architecture\VTIL-Architecture.vcxproj", "{A79E2869-7626-4801-B09D-5C12F5163BA3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VTIL-Common", "dependencies\vmprofiler\dependencies\vtil\VTIL-Common\VTIL-Common.vcxproj", "{EC6B8F7F-730C-4086-B143-4664CC16DF8F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VTIL-Compiler", "dependencies\vmprofiler\dependencies\vtil\VTIL-Compiler\VTIL-Compiler.vcxproj", "{F960486B-2DB4-44AF-91BB-0F19F228ABCF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VTIL-SymEx", "dependencies\vmprofiler\dependencies\vtil\VTIL-SymEx\VTIL-SymEx.vcxproj", "{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "keystone", "dependencies\vmprofiler\dependencies\vtil\dependencies\keystone\msvc\llvm\keystone\keystone.vcxproj", "{E4754E3E-2503-307A-8076-8AC2AD8B75B2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "capstone-static", "dependencies\vmprofiler\dependencies\vtil\dependencies\capstone\msvc\capstone-static.vcxproj", "{A0471FDD-F210-3D7E-B4EA-20543BC10911}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
DBG|x64 = DBG|x64
DBG|x86 = DBG|x86
Debug Kernel|x64 = Debug Kernel|x64
Debug Kernel|x86 = Debug Kernel|x86
Debug MD DLL|x64 = Debug MD DLL|x64
Debug MD DLL|x86 = Debug MD DLL|x86
Debug MD|x64 = Debug MD|x64
Debug MD|x86 = Debug MD|x86
Debug MT DLL|x64 = Debug MT DLL|x64
Debug MT DLL|x86 = Debug MT DLL|x86
Debug MT|x64 = Debug MT|x64
Debug MT|x86 = Debug MT|x86
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
MinSizeRel|x64 = MinSizeRel|x64
MinSizeRel|x86 = MinSizeRel|x86
Release Kernel|x64 = Release Kernel|x64
Release Kernel|x86 = Release Kernel|x86
Release MD DLL|x64 = Release MD DLL|x64
Release MD DLL|x86 = Release MD DLL|x86
Release MD|x64 = Release MD|x64
Release MD|x86 = Release MD|x86
Release MT DLL|x64 = Release MT DLL|x64
Release MT DLL|x86 = Release MT DLL|x86
Release MT|x64 = Release MT|x64
Release MT|x86 = Release MT|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
RelWithDebInfo|x64 = RelWithDebInfo|x64
RelWithDebInfo|x86 = RelWithDebInfo|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{88A23124-5640-35A0-B890-311D7A67A7D2}.DBG|x64.ActiveCfg = Debug MT|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.DBG|x64.Build.0 = Debug MT|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.DBG|x86.ActiveCfg = Debug MT|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.DBG|x86.Build.0 = Debug MT|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug Kernel|x64.ActiveCfg = Debug Kernel|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug Kernel|x64.Build.0 = Debug Kernel|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug Kernel|x64.Deploy.0 = Debug Kernel|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug Kernel|x86.ActiveCfg = Debug Kernel|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug Kernel|x86.Build.0 = Debug Kernel|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug Kernel|x86.Deploy.0 = Debug Kernel|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MD DLL|x64.ActiveCfg = Debug MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MD DLL|x64.Build.0 = Debug MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MD DLL|x86.ActiveCfg = Debug MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MD DLL|x86.Build.0 = Debug MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MD|x64.ActiveCfg = Debug MD|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MD|x64.Build.0 = Debug MD|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MD|x86.ActiveCfg = Debug MD|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MD|x86.Build.0 = Debug MD|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MT DLL|x64.ActiveCfg = Debug MT DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MT DLL|x64.Build.0 = Debug MT DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MT DLL|x86.ActiveCfg = Debug MT DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MT DLL|x86.Build.0 = Debug MT DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MT|x64.ActiveCfg = Debug MT|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MT|x64.Build.0 = Debug MT|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MT|x86.ActiveCfg = Debug MT|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug MT|x86.Build.0 = Debug MT|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug|x64.ActiveCfg = Debug MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug|x64.Build.0 = Debug MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug|x86.ActiveCfg = Debug MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug|x86.Build.0 = Debug MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.MinSizeRel|x64.ActiveCfg = Debug MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.MinSizeRel|x64.Build.0 = Debug MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.MinSizeRel|x86.ActiveCfg = Debug MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.MinSizeRel|x86.Build.0 = Debug MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release Kernel|x64.ActiveCfg = Release Kernel|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release Kernel|x64.Build.0 = Release Kernel|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release Kernel|x64.Deploy.0 = Release Kernel|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release Kernel|x86.ActiveCfg = Release Kernel|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release Kernel|x86.Build.0 = Release Kernel|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release Kernel|x86.Deploy.0 = Release Kernel|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MD DLL|x64.ActiveCfg = Release MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MD DLL|x64.Build.0 = Release MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MD DLL|x86.ActiveCfg = Release MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MD DLL|x86.Build.0 = Release MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MD|x64.ActiveCfg = Release MD|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MD|x64.Build.0 = Release MD|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MD|x86.ActiveCfg = Release MD|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MD|x86.Build.0 = Release MD|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MT DLL|x64.ActiveCfg = Release MT DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MT DLL|x64.Build.0 = Release MT DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MT DLL|x86.ActiveCfg = Release MT DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MT DLL|x86.Build.0 = Release MT DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MT|x64.ActiveCfg = Release MT|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MT|x64.Build.0 = Release MT|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MT|x86.ActiveCfg = Release MT|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release MT|x86.Build.0 = Release MT|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release|x64.ActiveCfg = Release MT|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release|x64.Build.0 = Release MT|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release|x86.ActiveCfg = Release MT DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release|x86.Build.0 = Release MT DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.RelWithDebInfo|x64.ActiveCfg = Release MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.RelWithDebInfo|x64.Build.0 = Release MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.RelWithDebInfo|x86.ActiveCfg = Release MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.RelWithDebInfo|x86.Build.0 = Release MD DLL|Win32
{D0B6092A-9944-4F24-9486-4B7DAE372619}.DBG|x64.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.DBG|x64.Build.0 = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.DBG|x86.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug Kernel|x64.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug Kernel|x64.Build.0 = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug Kernel|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug Kernel|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MD DLL|x64.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MD DLL|x64.Build.0 = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MD DLL|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MD DLL|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MD|x64.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MD|x64.Build.0 = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MD|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MD|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MT DLL|x64.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MT DLL|x64.Build.0 = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MT DLL|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MT DLL|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MT|x64.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MT|x64.Build.0 = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MT|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug MT|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug|x64.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug|x64.Build.0 = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.MinSizeRel|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.MinSizeRel|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.MinSizeRel|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.MinSizeRel|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release Kernel|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release Kernel|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release Kernel|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release Kernel|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MD DLL|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MD DLL|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MD DLL|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MD DLL|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MD|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MD|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MD|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MD|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MT DLL|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MT DLL|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MT DLL|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MT DLL|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MT|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MT|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MT|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release MT|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.RelWithDebInfo|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.RelWithDebInfo|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.RelWithDebInfo|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.DBG|x64.ActiveCfg = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.DBG|x64.Build.0 = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.DBG|x86.ActiveCfg = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.DBG|x86.Build.0 = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug Kernel|x64.ActiveCfg = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug Kernel|x64.Build.0 = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug Kernel|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug Kernel|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MD DLL|x64.ActiveCfg = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MD DLL|x64.Build.0 = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MD DLL|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MD DLL|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MD|x64.ActiveCfg = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MD|x64.Build.0 = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MD|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MD|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MT DLL|x64.ActiveCfg = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MT DLL|x64.Build.0 = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MT DLL|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MT DLL|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MT|x64.ActiveCfg = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MT|x64.Build.0 = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MT|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug MT|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug|x64.ActiveCfg = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug|x64.Build.0 = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Debug|x86.ActiveCfg = Debug|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.MinSizeRel|x64.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.MinSizeRel|x64.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.MinSizeRel|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.MinSizeRel|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release Kernel|x64.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release Kernel|x64.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release Kernel|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release Kernel|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MD DLL|x64.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MD DLL|x64.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MD DLL|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MD DLL|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MD|x64.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MD|x64.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MD|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MD|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MT DLL|x64.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MT DLL|x64.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MT DLL|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MT DLL|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MT|x64.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MT|x64.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MT|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release MT|x86.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release|x64.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release|x64.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.Release|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.RelWithDebInfo|x64.Build.0 = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.RelWithDebInfo|x86.ActiveCfg = Release|x64
{F0D51879-E659-4BD3-B688-7864DB3C82AA}.RelWithDebInfo|x86.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.DBG|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.DBG|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.DBG|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.DBG|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug Kernel|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug Kernel|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug Kernel|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug Kernel|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MD DLL|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MD DLL|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MD DLL|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MD DLL|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MD|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MD|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MD|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MD|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MT DLL|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MT DLL|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MT DLL|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MT DLL|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MT|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MT|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MT|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug MT|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.MinSizeRel|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.MinSizeRel|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.MinSizeRel|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.MinSizeRel|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release Kernel|x64.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release Kernel|x64.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release Kernel|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release Kernel|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MD DLL|x64.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MD DLL|x64.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MD DLL|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MD DLL|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MD|x64.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MD|x64.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MD|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MD|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MT DLL|x64.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MT DLL|x64.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MT DLL|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MT DLL|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MT|x64.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MT|x64.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MT|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release MT|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release|x64.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release|x64.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release|x86.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.RelWithDebInfo|x64.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.RelWithDebInfo|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.RelWithDebInfo|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.DBG|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.DBG|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.DBG|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.DBG|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug Kernel|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug Kernel|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug Kernel|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug Kernel|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MD DLL|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MD DLL|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MD DLL|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MD DLL|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MD|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MD|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MD|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MD|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MT DLL|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MT DLL|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MT DLL|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MT DLL|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MT|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MT|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MT|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug MT|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.MinSizeRel|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.MinSizeRel|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.MinSizeRel|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.MinSizeRel|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release Kernel|x64.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release Kernel|x64.Build.0 = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release Kernel|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release Kernel|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MD DLL|x64.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MD DLL|x64.Build.0 = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MD DLL|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MD DLL|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MD|x64.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MD|x64.Build.0 = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MD|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MD|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MT DLL|x64.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MT DLL|x64.Build.0 = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MT DLL|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MT DLL|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MT|x64.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MT|x64.Build.0 = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MT|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release MT|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release|x64.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release|x64.Build.0 = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release|x86.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.RelWithDebInfo|x64.Build.0 = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.RelWithDebInfo|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.RelWithDebInfo|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.DBG|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.DBG|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.DBG|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.DBG|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug Kernel|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug Kernel|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug Kernel|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug Kernel|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MD DLL|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MD DLL|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MD DLL|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MD DLL|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MD|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MD|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MD|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MD|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MT DLL|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MT DLL|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MT DLL|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MT DLL|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MT|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MT|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MT|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug MT|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.MinSizeRel|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.MinSizeRel|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.MinSizeRel|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.MinSizeRel|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release Kernel|x64.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release Kernel|x64.Build.0 = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release Kernel|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release Kernel|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MD DLL|x64.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MD DLL|x64.Build.0 = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MD DLL|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MD DLL|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MD|x64.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MD|x64.Build.0 = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MD|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MD|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MT DLL|x64.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MT DLL|x64.Build.0 = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MT DLL|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MT DLL|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MT|x64.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MT|x64.Build.0 = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MT|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release MT|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release|x64.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release|x64.Build.0 = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release|x86.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.RelWithDebInfo|x64.Build.0 = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.RelWithDebInfo|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.RelWithDebInfo|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.DBG|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.DBG|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.DBG|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.DBG|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug Kernel|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug Kernel|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug Kernel|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug Kernel|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MD DLL|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MD DLL|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MD DLL|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MD DLL|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MD|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MD|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MD|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MD|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MT DLL|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MT DLL|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MT DLL|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MT DLL|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MT|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MT|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MT|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug MT|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.MinSizeRel|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.MinSizeRel|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.MinSizeRel|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.MinSizeRel|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release Kernel|x64.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release Kernel|x64.Build.0 = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release Kernel|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release Kernel|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MD DLL|x64.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MD DLL|x64.Build.0 = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MD DLL|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MD DLL|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MD|x64.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MD|x64.Build.0 = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MD|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MD|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MT DLL|x64.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MT DLL|x64.Build.0 = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MT DLL|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MT DLL|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MT|x64.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MT|x64.Build.0 = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MT|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release MT|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release|x64.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release|x64.Build.0 = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release|x86.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.RelWithDebInfo|x64.Build.0 = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.RelWithDebInfo|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.RelWithDebInfo|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.DBG|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.DBG|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.DBG|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.DBG|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug Kernel|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug Kernel|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug Kernel|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug Kernel|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MD DLL|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MD DLL|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MD DLL|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MD DLL|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MD|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MD|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MD|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MD|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MT DLL|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MT DLL|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MT DLL|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MT DLL|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MT|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MT|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MT|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug MT|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.MinSizeRel|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.MinSizeRel|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.MinSizeRel|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.MinSizeRel|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release Kernel|x64.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release Kernel|x64.Build.0 = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release Kernel|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release Kernel|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MD DLL|x64.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MD DLL|x64.Build.0 = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MD DLL|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MD DLL|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MD|x64.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MD|x64.Build.0 = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MD|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MD|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MT DLL|x64.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MT DLL|x64.Build.0 = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MT DLL|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MT DLL|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MT|x64.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MT|x64.Build.0 = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MT|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release MT|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release|x64.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release|x64.Build.0 = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release|x86.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.RelWithDebInfo|x64.Build.0 = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.RelWithDebInfo|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.RelWithDebInfo|x86.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.DBG|x64.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.DBG|x64.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.DBG|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.DBG|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug Kernel|x64.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug Kernel|x64.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug Kernel|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug Kernel|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MD DLL|x64.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MD DLL|x64.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MD DLL|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MD DLL|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MD|x64.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MD|x64.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MD|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MD|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MT DLL|x64.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MT DLL|x64.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MT DLL|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MT DLL|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MT|x64.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MT|x64.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MT|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug MT|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug|x64.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug|x64.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug|x86.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release Kernel|x64.ActiveCfg = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release Kernel|x64.Build.0 = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release Kernel|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release Kernel|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MD DLL|x64.ActiveCfg = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MD DLL|x64.Build.0 = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MD DLL|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MD DLL|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MD|x64.ActiveCfg = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MD|x64.Build.0 = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MD|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MD|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MT DLL|x64.ActiveCfg = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MT DLL|x64.Build.0 = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MT DLL|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MT DLL|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MT|x64.ActiveCfg = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release MT|x64.Build.0 = Release|x64