From e75104fbb3b07540be51fcef169e9eaffd1cfee2 Mon Sep 17 00:00:00 2001 From: _xeroxz Date: Sat, 12 Jun 2021 21:27:21 -0700 Subject: [PATCH] removed html files... --- dependencies/vtil | 2 +- doxygen/html/_r_e_a_d_m_e_8md.html | 77 - doxygen/html/annotated.html | 101 - doxygen/html/bc_s.png | Bin 676 -> 0 bytes doxygen/html/bdwn.png | Bin 147 -> 0 bytes doxygen/html/calc__jmp_8cpp.html | 102 - doxygen/html/calc__jmp_8hpp.html | 105 - doxygen/html/calc__jmp_8hpp_source.html | 97 - doxygen/html/call_8cpp.html | 96 - doxygen/html/classes.html | 104 - doxygen/html/classvm_1_1ctx__t-members.html | 94 - doxygen/html/classvm_1_1ctx__t.html | 325 --- doxygen/html/closed.png | Bin 132 -> 0 bytes .../dir_34caf5031dac7df8f41881fc650fad9e.html | 109 - .../dir_41b4d5d37872f2c0144673a67fd94b20.html | 119 -- .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 102 - .../dir_d44c64559bbebec7f509842c48db8b23.html | 105 - doxygen/html/div_8cpp.html | 96 - doxygen/html/doc.png | Bin 746 -> 0 bytes doxygen/html/doxygen.css | 1793 ----------------- doxygen/html/doxygen.svg | 26 - doxygen/html/dynsections.js | 121 -- doxygen/html/files.html | 129 -- doxygen/html/folderclosed.png | Bin 616 -> 0 bytes doxygen/html/folderopen.png | Bin 597 -> 0 bytes doxygen/html/functions.html | 408 ---- doxygen/html/functions_func.html | 81 - doxygen/html/functions_vars.html | 402 ---- doxygen/html/globals.html | 108 - doxygen/html/globals_defs.html | 81 - doxygen/html/globals_type.html | 102 - doxygen/html/icon.png | Bin 6949 -> 0 bytes doxygen/html/index.html | 182 -- doxygen/html/jquery.js | 35 - doxygen/html/md__r_e_a_d_m_e.html | 81 - doxygen/html/menu.js | 51 - doxygen/html/menudata.js | 146 -- doxygen/html/mul_8cpp.html | 96 - doxygen/html/namespacemembers.html | 628 ------ doxygen/html/namespacemembers_enum.html | 93 - doxygen/html/namespacemembers_eval.html | 258 --- doxygen/html/namespacemembers_func.html | 237 --- doxygen/html/namespacemembers_type.html | 90 - doxygen/html/namespacemembers_vars.html | 316 --- doxygen/html/namespaces.html | 107 - doxygen/html/namespacevm.html | 105 - doxygen/html/namespacevm_1_1calc__jmp.html | 159 -- doxygen/html/namespacevm_1_1handler.html | 599 ------ .../namespacevm_1_1handler_1_1profile.html | 1236 ------------ .../html/namespacevm_1_1handler_1_1table.html | 241 --- doxygen/html/namespacevm_1_1instrs.html | 490 ----- doxygen/html/namespacevm_1_1lifters.html | 976 --------- doxygen/html/namespacevm_1_1transform.html | 1232 ----------- doxygen/html/namespacevm_1_1util.html | 336 --- doxygen/html/namespacevm_1_1util_1_1reg.html | 164 -- doxygen/html/namespacevmp2.html | 158 -- doxygen/html/namespacevmp2_1_1v1.html | 91 - doxygen/html/namespacevmp2_1_1v2.html | 91 - doxygen/html/namespacevmp2_1_1v3.html | 91 - doxygen/html/nav_f.png | Bin 153 -> 0 bytes doxygen/html/nav_g.png | Bin 95 -> 0 bytes doxygen/html/nav_h.png | Bin 98 -> 0 bytes doxygen/html/open.png | Bin 123 -> 0 bytes doxygen/html/pages.html | 82 - doxygen/html/search/all_0.html | 37 - doxygen/html/search/all_0.js | 22 - doxygen/html/search/all_1.html | 37 - doxygen/html/search/all_1.js | 16 - doxygen/html/search/all_10.html | 37 - doxygen/html/search/all_10.js | 4 - doxygen/html/search/all_11.html | 37 - doxygen/html/search/all_11.js | 30 - doxygen/html/search/all_12.html | 37 - doxygen/html/search/all_12.js | 23 - doxygen/html/search/all_13.html | 37 - doxygen/html/search/all_13.js | 9 - doxygen/html/search/all_14.html | 37 - doxygen/html/search/all_14.js | 10 - doxygen/html/search/all_15.html | 37 - doxygen/html/search/all_15.js | 47 - doxygen/html/search/all_16.html | 37 - doxygen/html/search/all_16.js | 11 - doxygen/html/search/all_17.html | 37 - doxygen/html/search/all_17.js | 10 - doxygen/html/search/all_2.html | 37 - doxygen/html/search/all_2.js | 6 - doxygen/html/search/all_3.html | 37 - doxygen/html/search/all_3.js | 15 - doxygen/html/search/all_4.html | 37 - doxygen/html/search/all_4.js | 10 - doxygen/html/search/all_5.html | 37 - doxygen/html/search/all_5.js | 13 - doxygen/html/search/all_6.html | 37 - doxygen/html/search/all_6.js | 6 - doxygen/html/search/all_7.html | 37 - doxygen/html/search/all_7.js | 17 - doxygen/html/search/all_8.html | 37 - doxygen/html/search/all_8.js | 7 - doxygen/html/search/all_9.html | 37 - doxygen/html/search/all_9.js | 15 - doxygen/html/search/all_a.html | 37 - doxygen/html/search/all_a.js | 9 - doxygen/html/search/all_b.html | 37 - doxygen/html/search/all_b.js | 35 - doxygen/html/search/all_c.html | 37 - doxygen/html/search/all_c.js | 14 - doxygen/html/search/all_d.html | 37 - doxygen/html/search/all_d.js | 14 - doxygen/html/search/all_e.html | 37 - doxygen/html/search/all_e.js | 5 - doxygen/html/search/all_f.html | 37 - doxygen/html/search/all_f.js | 9 - doxygen/html/search/classes_0.html | 37 - doxygen/html/search/classes_0.js | 5 - doxygen/html/search/classes_1.html | 37 - doxygen/html/search/classes_1.js | 4 - doxygen/html/search/classes_2.html | 37 - doxygen/html/search/classes_2.js | 4 - doxygen/html/search/classes_3.html | 37 - doxygen/html/search/classes_3.js | 4 - doxygen/html/search/classes_4.html | 37 - doxygen/html/search/classes_4.js | 4 - doxygen/html/search/classes_5.html | 37 - doxygen/html/search/classes_5.js | 4 - doxygen/html/search/classes_6.html | 37 - doxygen/html/search/classes_6.js | 4 - doxygen/html/search/classes_7.html | 37 - doxygen/html/search/classes_7.js | 4 - doxygen/html/search/close.svg | 31 - doxygen/html/search/defines_0.html | 37 - doxygen/html/search/defines_0.js | 4 - doxygen/html/search/defines_1.html | 37 - doxygen/html/search/defines_1.js | 4 - doxygen/html/search/enums_0.html | 37 - doxygen/html/search/enums_0.js | 5 - doxygen/html/search/enums_1.html | 37 - doxygen/html/search/enums_1.js | 4 - doxygen/html/search/enums_2.html | 37 - doxygen/html/search/enums_2.js | 4 - doxygen/html/search/enums_3.html | 37 - doxygen/html/search/enums_3.js | 4 - doxygen/html/search/enums_4.html | 37 - doxygen/html/search/enums_4.js | 4 - doxygen/html/search/enumvalues_0.html | 37 - doxygen/html/search/enumvalues_0.js | 7 - doxygen/html/search/enumvalues_1.html | 37 - doxygen/html/search/enumvalues_1.js | 5 - doxygen/html/search/enumvalues_10.html | 37 - doxygen/html/search/enumvalues_10.js | 7 - doxygen/html/search/enumvalues_11.html | 37 - doxygen/html/search/enumvalues_11.js | 4 - doxygen/html/search/enumvalues_2.html | 37 - doxygen/html/search/enumvalues_2.js | 4 - doxygen/html/search/enumvalues_3.html | 37 - doxygen/html/search/enumvalues_3.js | 4 - doxygen/html/search/enumvalues_4.html | 37 - doxygen/html/search/enumvalues_4.js | 4 - doxygen/html/search/enumvalues_5.html | 37 - doxygen/html/search/enumvalues_5.js | 7 - doxygen/html/search/enumvalues_6.html | 37 - doxygen/html/search/enumvalues_6.js | 5 - doxygen/html/search/enumvalues_7.html | 37 - doxygen/html/search/enumvalues_7.js | 4 - doxygen/html/search/enumvalues_8.html | 37 - doxygen/html/search/enumvalues_8.js | 16 - doxygen/html/search/enumvalues_9.html | 37 - doxygen/html/search/enumvalues_9.js | 4 - doxygen/html/search/enumvalues_a.html | 37 - doxygen/html/search/enumvalues_a.js | 7 - doxygen/html/search/enumvalues_b.html | 37 - doxygen/html/search/enumvalues_b.js | 4 - doxygen/html/search/enumvalues_c.html | 37 - doxygen/html/search/enumvalues_c.js | 7 - doxygen/html/search/enumvalues_d.html | 37 - doxygen/html/search/enumvalues_d.js | 11 - doxygen/html/search/enumvalues_e.html | 37 - doxygen/html/search/enumvalues_e.js | 4 - doxygen/html/search/enumvalues_f.html | 37 - doxygen/html/search/enumvalues_f.js | 7 - doxygen/html/search/files_0.html | 37 - doxygen/html/search/files_0.js | 4 - doxygen/html/search/files_1.html | 37 - doxygen/html/search/files_1.js | 6 - doxygen/html/search/files_2.html | 37 - doxygen/html/search/files_2.js | 4 - doxygen/html/search/files_3.html | 37 - doxygen/html/search/files_3.js | 4 - doxygen/html/search/files_4.html | 37 - doxygen/html/search/files_4.js | 7 - doxygen/html/search/files_5.html | 37 - doxygen/html/search/files_5.js | 4 - doxygen/html/search/files_6.html | 37 - doxygen/html/search/files_6.js | 4 - doxygen/html/search/files_7.html | 37 - doxygen/html/search/files_7.js | 4 - doxygen/html/search/files_8.html | 37 - doxygen/html/search/files_8.js | 5 - doxygen/html/search/files_9.html | 37 - doxygen/html/search/files_9.js | 6 - doxygen/html/search/files_a.html | 37 - doxygen/html/search/files_a.js | 4 - doxygen/html/search/files_b.html | 37 - doxygen/html/search/files_b.js | 16 - doxygen/html/search/files_c.html | 37 - doxygen/html/search/files_c.js | 4 - doxygen/html/search/functions_0.html | 37 - doxygen/html/search/functions_0.js | 12 - doxygen/html/search/functions_1.html | 37 - doxygen/html/search/functions_1.js | 4 - doxygen/html/search/functions_2.html | 37 - doxygen/html/search/functions_2.js | 6 - doxygen/html/search/functions_3.html | 37 - doxygen/html/search/functions_3.js | 6 - doxygen/html/search/functions_4.html | 37 - doxygen/html/search/functions_4.js | 5 - doxygen/html/search/functions_5.html | 37 - doxygen/html/search/functions_5.js | 4 - doxygen/html/search/functions_6.html | 37 - doxygen/html/search/functions_6.js | 13 - doxygen/html/search/functions_7.html | 37 - doxygen/html/search/functions_7.js | 4 - doxygen/html/search/functions_8.html | 37 - doxygen/html/search/functions_8.js | 7 - doxygen/html/search/functions_9.html | 37 - doxygen/html/search/functions_9.js | 4 - doxygen/html/search/functions_a.html | 37 - doxygen/html/search/functions_a.js | 4 - doxygen/html/search/functions_b.html | 37 - doxygen/html/search/functions_b.js | 4 - doxygen/html/search/functions_c.html | 37 - doxygen/html/search/functions_c.js | 4 - doxygen/html/search/mag_sel.svg | 74 - doxygen/html/search/namespaces_0.html | 37 - doxygen/html/search/namespaces_0.js | 17 - doxygen/html/search/nomatches.html | 13 - doxygen/html/search/pages_0.html | 37 - doxygen/html/search/pages_0.js | 4 - doxygen/html/search/search.css | 257 --- doxygen/html/search/search.js | 816 -------- doxygen/html/search/search_l.png | Bin 567 -> 0 bytes doxygen/html/search/search_m.png | Bin 158 -> 0 bytes doxygen/html/search/search_r.png | Bin 553 -> 0 bytes doxygen/html/search/searchdata.js | 42 - doxygen/html/search/typedefs_0.html | 37 - doxygen/html/search/typedefs_0.js | 5 - doxygen/html/search/typedefs_1.html | 37 - doxygen/html/search/typedefs_1.js | 4 - doxygen/html/search/typedefs_2.html | 37 - doxygen/html/search/typedefs_2.js | 4 - doxygen/html/search/typedefs_3.html | 37 - doxygen/html/search/typedefs_3.js | 8 - doxygen/html/search/typedefs_4.html | 37 - doxygen/html/search/typedefs_4.js | 8 - doxygen/html/search/variables_0.html | 37 - doxygen/html/search/variables_0.js | 13 - doxygen/html/search/variables_1.html | 37 - doxygen/html/search/variables_1.js | 10 - doxygen/html/search/variables_10.html | 37 - doxygen/html/search/variables_10.js | 12 - doxygen/html/search/variables_11.html | 37 - doxygen/html/search/variables_11.js | 6 - doxygen/html/search/variables_12.html | 37 - doxygen/html/search/variables_12.js | 4 - doxygen/html/search/variables_13.html | 37 - doxygen/html/search/variables_13.js | 15 - doxygen/html/search/variables_14.html | 37 - doxygen/html/search/variables_14.js | 6 - doxygen/html/search/variables_2.html | 37 - doxygen/html/search/variables_2.js | 4 - doxygen/html/search/variables_3.html | 37 - doxygen/html/search/variables_3.js | 7 - doxygen/html/search/variables_4.html | 37 - doxygen/html/search/variables_4.js | 5 - doxygen/html/search/variables_5.html | 37 - doxygen/html/search/variables_5.js | 8 - doxygen/html/search/variables_6.html | 37 - doxygen/html/search/variables_6.js | 6 - doxygen/html/search/variables_7.html | 37 - doxygen/html/search/variables_7.js | 10 - doxygen/html/search/variables_8.html | 37 - doxygen/html/search/variables_8.js | 5 - doxygen/html/search/variables_9.html | 37 - doxygen/html/search/variables_9.js | 16 - doxygen/html/search/variables_a.html | 37 - doxygen/html/search/variables_a.js | 10 - doxygen/html/search/variables_b.html | 37 - doxygen/html/search/variables_b.js | 8 - doxygen/html/search/variables_c.html | 37 - doxygen/html/search/variables_c.js | 5 - doxygen/html/search/variables_d.html | 37 - doxygen/html/search/variables_d.js | 5 - doxygen/html/search/variables_e.html | 37 - doxygen/html/search/variables_e.js | 4 - doxygen/html/search/variables_f.html | 37 - doxygen/html/search/variables_f.js | 24 - doxygen/html/shl_8cpp.html | 96 - doxygen/html/splitbar.png | Bin 314 -> 0 bytes ...ctvm_1_1handler_1_1handler__t-members.html | 89 - .../structvm_1_1handler_1_1handler__t.html | 194 -- ...ctvm_1_1handler_1_1profile__t-members.html | 89 - .../structvm_1_1handler_1_1profile__t.html | 194 -- ...m_1_1instrs_1_1code__block__t-members.html | 87 - .../structvm_1_1instrs_1_1code__block__t.html | 142 -- ...ructvm_1_1instrs_1_1jcc__data-members.html | 87 - .../html/structvm_1_1instrs_1_1jcc__data.html | 142 -- ...m_1_1instrs_1_1virt__instr__t-members.html | 93 - .../structvm_1_1instrs_1_1virt__instr__t.html | 243 --- .../structvmp2_1_1v1_1_1entry__t-members.html | 109 - .../html/structvmp2_1_1v1_1_1entry__t.html | 504 ----- ...uctvmp2_1_1v1_1_1file__header-members.html | 91 - .../structvmp2_1_1v1_1_1file__header.html | 206 -- .../structvmp2_1_1v2_1_1entry__t-members.html | 109 - .../html/structvmp2_1_1v2_1_1entry__t.html | 504 ----- ...uctvmp2_1_1v2_1_1file__header-members.html | 95 - .../structvmp2_1_1v2_1_1file__header.html | 270 --- ...tvmp2_1_1v3_1_1code__block__t-members.html | 89 - .../structvmp2_1_1v3_1_1code__block__t.html | 174 -- ...uctvmp2_1_1v3_1_1file__header-members.html | 94 - .../structvmp2_1_1v3_1_1file__header.html | 254 --- .../html/structzydis__instr__t-members.html | 83 - doxygen/html/structzydis__instr__t.html | 138 -- doxygen/html/sync_off.png | Bin 853 -> 0 bytes doxygen/html/sync_on.png | Bin 845 -> 0 bytes doxygen/html/tab_a.png | Bin 142 -> 0 bytes doxygen/html/tab_b.png | Bin 169 -> 0 bytes doxygen/html/tab_h.png | Bin 177 -> 0 bytes doxygen/html/tab_s.png | Bin 184 -> 0 bytes doxygen/html/tabs.css | 1 - doxygen/html/transform_8hpp.html | 210 -- doxygen/html/transform_8hpp_source.html | 344 ---- doxygen/html/vmctx_8cpp.html | 90 - doxygen/html/vmctx_8hpp.html | 101 - doxygen/html/vmctx_8hpp_source.html | 121 -- doxygen/html/vmhandler_8cpp.html | 131 -- doxygen/html/vmhandlers_8hpp.html | 142 -- doxygen/html/vmhandlers_8hpp_source.html | 152 -- doxygen/html/vminstrs_8cpp.html | 121 -- doxygen/html/vminstrs_8hpp.html | 126 -- doxygen/html/vminstrs_8hpp_source.html | 126 -- doxygen/html/vmlifters_2add_8cpp.html | 92 - doxygen/html/vmlifters_2jmp_8cpp.html | 92 - doxygen/html/vmlifters_2lconst_8cpp.html | 92 - doxygen/html/vmlifters_2lflags_8cpp.html | 92 - doxygen/html/vmlifters_2lreg_8cpp.html | 92 - doxygen/html/vmlifters_2lvsp_8cpp.html | 92 - doxygen/html/vmlifters_2nand_8cpp.html | 92 - doxygen/html/vmlifters_2pushvsp_8cpp.html | 92 - doxygen/html/vmlifters_2read_8cpp.html | 92 - doxygen/html/vmlifters_2shr_8cpp.html | 92 - doxygen/html/vmlifters_2sreg_8cpp.html | 92 - doxygen/html/vmlifters_2vmexit_8cpp.html | 92 - doxygen/html/vmlifters_8hpp.html | 176 -- doxygen/html/vmlifters_8hpp_source.html | 190 -- doxygen/html/vmp2_8hpp.html | 166 -- doxygen/html/vmp2_8hpp_source.html | 433 ---- doxygen/html/vmprofiler_8hpp.html | 92 - doxygen/html/vmprofiler_8hpp_source.html | 100 - doxygen/html/vmprofiles_2add_8cpp.html | 96 - doxygen/html/vmprofiles_2jmp_8cpp.html | 96 - doxygen/html/vmprofiles_2lconst_8cpp.html | 96 - doxygen/html/vmprofiles_2lflags_8cpp.html | 96 - doxygen/html/vmprofiles_2lreg_8cpp.html | 96 - doxygen/html/vmprofiles_2lvsp_8cpp.html | 96 - doxygen/html/vmprofiles_2nand_8cpp.html | 96 - doxygen/html/vmprofiles_2pushvsp_8cpp.html | 96 - doxygen/html/vmprofiles_2read_8cpp.html | 96 - doxygen/html/vmprofiles_2shr_8cpp.html | 96 - doxygen/html/vmprofiles_2sreg_8cpp.html | 96 - doxygen/html/vmprofiles_2vmexit_8cpp.html | 96 - doxygen/html/vmprofiles_8hpp.html | 265 --- doxygen/html/vmprofiles_8hpp_source.html | 322 --- doxygen/html/vmutils_8cpp.html | 127 -- doxygen/html/vmutils_8hpp.html | 310 --- doxygen/html/vmutils_8hpp_source.html | 155 -- doxygen/html/write_8cpp.html | 96 - 375 files changed, 1 insertion(+), 30036 deletions(-) delete mode 100644 doxygen/html/_r_e_a_d_m_e_8md.html delete mode 100644 doxygen/html/annotated.html delete mode 100644 doxygen/html/bc_s.png delete mode 100644 doxygen/html/bdwn.png delete mode 100644 doxygen/html/calc__jmp_8cpp.html delete mode 100644 doxygen/html/calc__jmp_8hpp.html delete mode 100644 doxygen/html/calc__jmp_8hpp_source.html delete mode 100644 doxygen/html/call_8cpp.html delete mode 100644 doxygen/html/classes.html delete mode 100644 doxygen/html/classvm_1_1ctx__t-members.html delete mode 100644 doxygen/html/classvm_1_1ctx__t.html delete mode 100644 doxygen/html/closed.png delete mode 100644 doxygen/html/dir_34caf5031dac7df8f41881fc650fad9e.html delete mode 100644 doxygen/html/dir_41b4d5d37872f2c0144673a67fd94b20.html delete mode 100644 doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html delete mode 100644 doxygen/html/dir_d44c64559bbebec7f509842c48db8b23.html delete mode 100644 doxygen/html/div_8cpp.html delete mode 100644 doxygen/html/doc.png delete mode 100644 doxygen/html/doxygen.css delete mode 100644 doxygen/html/doxygen.svg delete mode 100644 doxygen/html/dynsections.js delete mode 100644 doxygen/html/files.html delete mode 100644 doxygen/html/folderclosed.png delete mode 100644 doxygen/html/folderopen.png delete mode 100644 doxygen/html/functions.html delete mode 100644 doxygen/html/functions_func.html delete mode 100644 doxygen/html/functions_vars.html delete mode 100644 doxygen/html/globals.html delete mode 100644 doxygen/html/globals_defs.html delete mode 100644 doxygen/html/globals_type.html delete mode 100644 doxygen/html/icon.png delete mode 100644 doxygen/html/index.html delete mode 100644 doxygen/html/jquery.js delete mode 100644 doxygen/html/md__r_e_a_d_m_e.html delete mode 100644 doxygen/html/menu.js delete mode 100644 doxygen/html/menudata.js delete mode 100644 doxygen/html/mul_8cpp.html delete mode 100644 doxygen/html/namespacemembers.html delete mode 100644 doxygen/html/namespacemembers_enum.html delete mode 100644 doxygen/html/namespacemembers_eval.html delete mode 100644 doxygen/html/namespacemembers_func.html delete mode 100644 doxygen/html/namespacemembers_type.html delete mode 100644 doxygen/html/namespacemembers_vars.html delete mode 100644 doxygen/html/namespaces.html delete mode 100644 doxygen/html/namespacevm.html delete mode 100644 doxygen/html/namespacevm_1_1calc__jmp.html delete mode 100644 doxygen/html/namespacevm_1_1handler.html delete mode 100644 doxygen/html/namespacevm_1_1handler_1_1profile.html delete mode 100644 doxygen/html/namespacevm_1_1handler_1_1table.html delete mode 100644 doxygen/html/namespacevm_1_1instrs.html delete mode 100644 doxygen/html/namespacevm_1_1lifters.html delete mode 100644 doxygen/html/namespacevm_1_1transform.html delete mode 100644 doxygen/html/namespacevm_1_1util.html delete mode 100644 doxygen/html/namespacevm_1_1util_1_1reg.html delete mode 100644 doxygen/html/namespacevmp2.html delete mode 100644 doxygen/html/namespacevmp2_1_1v1.html delete mode 100644 doxygen/html/namespacevmp2_1_1v2.html delete mode 100644 doxygen/html/namespacevmp2_1_1v3.html delete mode 100644 doxygen/html/nav_f.png delete mode 100644 doxygen/html/nav_g.png delete mode 100644 doxygen/html/nav_h.png delete mode 100644 doxygen/html/open.png delete mode 100644 doxygen/html/pages.html delete mode 100644 doxygen/html/search/all_0.html delete mode 100644 doxygen/html/search/all_0.js delete mode 100644 doxygen/html/search/all_1.html delete mode 100644 doxygen/html/search/all_1.js delete mode 100644 doxygen/html/search/all_10.html delete mode 100644 doxygen/html/search/all_10.js delete mode 100644 doxygen/html/search/all_11.html delete mode 100644 doxygen/html/search/all_11.js delete mode 100644 doxygen/html/search/all_12.html delete mode 100644 doxygen/html/search/all_12.js delete mode 100644 doxygen/html/search/all_13.html delete mode 100644 doxygen/html/search/all_13.js delete mode 100644 doxygen/html/search/all_14.html delete mode 100644 doxygen/html/search/all_14.js delete mode 100644 doxygen/html/search/all_15.html delete mode 100644 doxygen/html/search/all_15.js delete mode 100644 doxygen/html/search/all_16.html delete mode 100644 doxygen/html/search/all_16.js delete mode 100644 doxygen/html/search/all_17.html delete mode 100644 doxygen/html/search/all_17.js delete mode 100644 doxygen/html/search/all_2.html delete mode 100644 doxygen/html/search/all_2.js delete mode 100644 doxygen/html/search/all_3.html delete mode 100644 doxygen/html/search/all_3.js delete mode 100644 doxygen/html/search/all_4.html delete mode 100644 doxygen/html/search/all_4.js delete mode 100644 doxygen/html/search/all_5.html delete mode 100644 doxygen/html/search/all_5.js delete mode 100644 doxygen/html/search/all_6.html delete mode 100644 doxygen/html/search/all_6.js delete mode 100644 doxygen/html/search/all_7.html delete mode 100644 doxygen/html/search/all_7.js delete mode 100644 doxygen/html/search/all_8.html delete mode 100644 doxygen/html/search/all_8.js delete mode 100644 doxygen/html/search/all_9.html delete mode 100644 doxygen/html/search/all_9.js delete mode 100644 doxygen/html/search/all_a.html delete mode 100644 doxygen/html/search/all_a.js delete mode 100644 doxygen/html/search/all_b.html delete mode 100644 doxygen/html/search/all_b.js delete mode 100644 doxygen/html/search/all_c.html delete mode 100644 doxygen/html/search/all_c.js delete mode 100644 doxygen/html/search/all_d.html delete mode 100644 doxygen/html/search/all_d.js delete mode 100644 doxygen/html/search/all_e.html delete mode 100644 doxygen/html/search/all_e.js delete mode 100644 doxygen/html/search/all_f.html delete mode 100644 doxygen/html/search/all_f.js delete mode 100644 doxygen/html/search/classes_0.html delete mode 100644 doxygen/html/search/classes_0.js delete mode 100644 doxygen/html/search/classes_1.html delete mode 100644 doxygen/html/search/classes_1.js delete mode 100644 doxygen/html/search/classes_2.html delete mode 100644 doxygen/html/search/classes_2.js delete mode 100644 doxygen/html/search/classes_3.html delete mode 100644 doxygen/html/search/classes_3.js delete mode 100644 doxygen/html/search/classes_4.html delete mode 100644 doxygen/html/search/classes_4.js delete mode 100644 doxygen/html/search/classes_5.html delete mode 100644 doxygen/html/search/classes_5.js delete mode 100644 doxygen/html/search/classes_6.html delete mode 100644 doxygen/html/search/classes_6.js delete mode 100644 doxygen/html/search/classes_7.html delete mode 100644 doxygen/html/search/classes_7.js delete mode 100644 doxygen/html/search/close.svg delete mode 100644 doxygen/html/search/defines_0.html delete mode 100644 doxygen/html/search/defines_0.js delete mode 100644 doxygen/html/search/defines_1.html delete mode 100644 doxygen/html/search/defines_1.js delete mode 100644 doxygen/html/search/enums_0.html delete mode 100644 doxygen/html/search/enums_0.js delete mode 100644 doxygen/html/search/enums_1.html delete mode 100644 doxygen/html/search/enums_1.js delete mode 100644 doxygen/html/search/enums_2.html delete mode 100644 doxygen/html/search/enums_2.js delete mode 100644 doxygen/html/search/enums_3.html delete mode 100644 doxygen/html/search/enums_3.js delete mode 100644 doxygen/html/search/enums_4.html delete mode 100644 doxygen/html/search/enums_4.js delete mode 100644 doxygen/html/search/enumvalues_0.html delete mode 100644 doxygen/html/search/enumvalues_0.js delete mode 100644 doxygen/html/search/enumvalues_1.html delete mode 100644 doxygen/html/search/enumvalues_1.js delete mode 100644 doxygen/html/search/enumvalues_10.html delete mode 100644 doxygen/html/search/enumvalues_10.js delete mode 100644 doxygen/html/search/enumvalues_11.html delete mode 100644 doxygen/html/search/enumvalues_11.js delete mode 100644 doxygen/html/search/enumvalues_2.html delete mode 100644 doxygen/html/search/enumvalues_2.js delete mode 100644 doxygen/html/search/enumvalues_3.html delete mode 100644 doxygen/html/search/enumvalues_3.js delete mode 100644 doxygen/html/search/enumvalues_4.html delete mode 100644 doxygen/html/search/enumvalues_4.js delete mode 100644 doxygen/html/search/enumvalues_5.html delete mode 100644 doxygen/html/search/enumvalues_5.js delete mode 100644 doxygen/html/search/enumvalues_6.html delete mode 100644 doxygen/html/search/enumvalues_6.js delete mode 100644 doxygen/html/search/enumvalues_7.html delete mode 100644 doxygen/html/search/enumvalues_7.js delete mode 100644 doxygen/html/search/enumvalues_8.html delete mode 100644 doxygen/html/search/enumvalues_8.js delete mode 100644 doxygen/html/search/enumvalues_9.html delete mode 100644 doxygen/html/search/enumvalues_9.js delete mode 100644 doxygen/html/search/enumvalues_a.html delete mode 100644 doxygen/html/search/enumvalues_a.js delete mode 100644 doxygen/html/search/enumvalues_b.html delete mode 100644 doxygen/html/search/enumvalues_b.js delete mode 100644 doxygen/html/search/enumvalues_c.html delete mode 100644 doxygen/html/search/enumvalues_c.js delete mode 100644 doxygen/html/search/enumvalues_d.html delete mode 100644 doxygen/html/search/enumvalues_d.js delete mode 100644 doxygen/html/search/enumvalues_e.html delete mode 100644 doxygen/html/search/enumvalues_e.js delete mode 100644 doxygen/html/search/enumvalues_f.html delete mode 100644 doxygen/html/search/enumvalues_f.js delete mode 100644 doxygen/html/search/files_0.html delete mode 100644 doxygen/html/search/files_0.js delete mode 100644 doxygen/html/search/files_1.html delete mode 100644 doxygen/html/search/files_1.js delete mode 100644 doxygen/html/search/files_2.html delete mode 100644 doxygen/html/search/files_2.js delete mode 100644 doxygen/html/search/files_3.html delete mode 100644 doxygen/html/search/files_3.js delete mode 100644 doxygen/html/search/files_4.html delete mode 100644 doxygen/html/search/files_4.js delete mode 100644 doxygen/html/search/files_5.html delete mode 100644 doxygen/html/search/files_5.js delete mode 100644 doxygen/html/search/files_6.html delete mode 100644 doxygen/html/search/files_6.js delete mode 100644 doxygen/html/search/files_7.html delete mode 100644 doxygen/html/search/files_7.js delete mode 100644 doxygen/html/search/files_8.html delete mode 100644 doxygen/html/search/files_8.js delete mode 100644 doxygen/html/search/files_9.html delete mode 100644 doxygen/html/search/files_9.js delete mode 100644 doxygen/html/search/files_a.html delete mode 100644 doxygen/html/search/files_a.js delete mode 100644 doxygen/html/search/files_b.html delete mode 100644 doxygen/html/search/files_b.js delete mode 100644 doxygen/html/search/files_c.html delete mode 100644 doxygen/html/search/files_c.js delete mode 100644 doxygen/html/search/functions_0.html delete mode 100644 doxygen/html/search/functions_0.js delete mode 100644 doxygen/html/search/functions_1.html delete mode 100644 doxygen/html/search/functions_1.js delete mode 100644 doxygen/html/search/functions_2.html delete mode 100644 doxygen/html/search/functions_2.js delete mode 100644 doxygen/html/search/functions_3.html delete mode 100644 doxygen/html/search/functions_3.js delete mode 100644 doxygen/html/search/functions_4.html delete mode 100644 doxygen/html/search/functions_4.js delete mode 100644 doxygen/html/search/functions_5.html delete mode 100644 doxygen/html/search/functions_5.js delete mode 100644 doxygen/html/search/functions_6.html delete mode 100644 doxygen/html/search/functions_6.js delete mode 100644 doxygen/html/search/functions_7.html delete mode 100644 doxygen/html/search/functions_7.js delete mode 100644 doxygen/html/search/functions_8.html delete mode 100644 doxygen/html/search/functions_8.js delete mode 100644 doxygen/html/search/functions_9.html delete mode 100644 doxygen/html/search/functions_9.js delete mode 100644 doxygen/html/search/functions_a.html delete mode 100644 doxygen/html/search/functions_a.js delete mode 100644 doxygen/html/search/functions_b.html delete mode 100644 doxygen/html/search/functions_b.js delete mode 100644 doxygen/html/search/functions_c.html delete mode 100644 doxygen/html/search/functions_c.js delete mode 100644 doxygen/html/search/mag_sel.svg delete mode 100644 doxygen/html/search/namespaces_0.html delete mode 100644 doxygen/html/search/namespaces_0.js delete mode 100644 doxygen/html/search/nomatches.html delete mode 100644 doxygen/html/search/pages_0.html delete mode 100644 doxygen/html/search/pages_0.js delete mode 100644 doxygen/html/search/search.css delete mode 100644 doxygen/html/search/search.js delete mode 100644 doxygen/html/search/search_l.png delete mode 100644 doxygen/html/search/search_m.png delete mode 100644 doxygen/html/search/search_r.png delete mode 100644 doxygen/html/search/searchdata.js delete mode 100644 doxygen/html/search/typedefs_0.html delete mode 100644 doxygen/html/search/typedefs_0.js delete mode 100644 doxygen/html/search/typedefs_1.html delete mode 100644 doxygen/html/search/typedefs_1.js delete mode 100644 doxygen/html/search/typedefs_2.html delete mode 100644 doxygen/html/search/typedefs_2.js delete mode 100644 doxygen/html/search/typedefs_3.html delete mode 100644 doxygen/html/search/typedefs_3.js delete mode 100644 doxygen/html/search/typedefs_4.html delete mode 100644 doxygen/html/search/typedefs_4.js delete mode 100644 doxygen/html/search/variables_0.html delete mode 100644 doxygen/html/search/variables_0.js delete mode 100644 doxygen/html/search/variables_1.html delete mode 100644 doxygen/html/search/variables_1.js delete mode 100644 doxygen/html/search/variables_10.html delete mode 100644 doxygen/html/search/variables_10.js delete mode 100644 doxygen/html/search/variables_11.html delete mode 100644 doxygen/html/search/variables_11.js delete mode 100644 doxygen/html/search/variables_12.html delete mode 100644 doxygen/html/search/variables_12.js delete mode 100644 doxygen/html/search/variables_13.html delete mode 100644 doxygen/html/search/variables_13.js delete mode 100644 doxygen/html/search/variables_14.html delete mode 100644 doxygen/html/search/variables_14.js delete mode 100644 doxygen/html/search/variables_2.html delete mode 100644 doxygen/html/search/variables_2.js delete mode 100644 doxygen/html/search/variables_3.html delete mode 100644 doxygen/html/search/variables_3.js delete mode 100644 doxygen/html/search/variables_4.html delete mode 100644 doxygen/html/search/variables_4.js delete mode 100644 doxygen/html/search/variables_5.html delete mode 100644 doxygen/html/search/variables_5.js delete mode 100644 doxygen/html/search/variables_6.html delete mode 100644 doxygen/html/search/variables_6.js delete mode 100644 doxygen/html/search/variables_7.html delete mode 100644 doxygen/html/search/variables_7.js delete mode 100644 doxygen/html/search/variables_8.html delete mode 100644 doxygen/html/search/variables_8.js delete mode 100644 doxygen/html/search/variables_9.html delete mode 100644 doxygen/html/search/variables_9.js delete mode 100644 doxygen/html/search/variables_a.html delete mode 100644 doxygen/html/search/variables_a.js delete mode 100644 doxygen/html/search/variables_b.html delete mode 100644 doxygen/html/search/variables_b.js delete mode 100644 doxygen/html/search/variables_c.html delete mode 100644 doxygen/html/search/variables_c.js delete mode 100644 doxygen/html/search/variables_d.html delete mode 100644 doxygen/html/search/variables_d.js delete mode 100644 doxygen/html/search/variables_e.html delete mode 100644 doxygen/html/search/variables_e.js delete mode 100644 doxygen/html/search/variables_f.html delete mode 100644 doxygen/html/search/variables_f.js delete mode 100644 doxygen/html/shl_8cpp.html delete mode 100644 doxygen/html/splitbar.png delete mode 100644 doxygen/html/structvm_1_1handler_1_1handler__t-members.html delete mode 100644 doxygen/html/structvm_1_1handler_1_1handler__t.html delete mode 100644 doxygen/html/structvm_1_1handler_1_1profile__t-members.html delete mode 100644 doxygen/html/structvm_1_1handler_1_1profile__t.html delete mode 100644 doxygen/html/structvm_1_1instrs_1_1code__block__t-members.html delete mode 100644 doxygen/html/structvm_1_1instrs_1_1code__block__t.html delete mode 100644 doxygen/html/structvm_1_1instrs_1_1jcc__data-members.html delete mode 100644 doxygen/html/structvm_1_1instrs_1_1jcc__data.html delete mode 100644 doxygen/html/structvm_1_1instrs_1_1virt__instr__t-members.html delete mode 100644 doxygen/html/structvm_1_1instrs_1_1virt__instr__t.html delete mode 100644 doxygen/html/structvmp2_1_1v1_1_1entry__t-members.html delete mode 100644 doxygen/html/structvmp2_1_1v1_1_1entry__t.html delete mode 100644 doxygen/html/structvmp2_1_1v1_1_1file__header-members.html delete mode 100644 doxygen/html/structvmp2_1_1v1_1_1file__header.html delete mode 100644 doxygen/html/structvmp2_1_1v2_1_1entry__t-members.html delete mode 100644 doxygen/html/structvmp2_1_1v2_1_1entry__t.html delete mode 100644 doxygen/html/structvmp2_1_1v2_1_1file__header-members.html delete mode 100644 doxygen/html/structvmp2_1_1v2_1_1file__header.html delete mode 100644 doxygen/html/structvmp2_1_1v3_1_1code__block__t-members.html delete mode 100644 doxygen/html/structvmp2_1_1v3_1_1code__block__t.html delete mode 100644 doxygen/html/structvmp2_1_1v3_1_1file__header-members.html delete mode 100644 doxygen/html/structvmp2_1_1v3_1_1file__header.html delete mode 100644 doxygen/html/structzydis__instr__t-members.html delete mode 100644 doxygen/html/structzydis__instr__t.html delete mode 100644 doxygen/html/sync_off.png delete mode 100644 doxygen/html/sync_on.png delete mode 100644 doxygen/html/tab_a.png delete mode 100644 doxygen/html/tab_b.png delete mode 100644 doxygen/html/tab_h.png delete mode 100644 doxygen/html/tab_s.png delete mode 100644 doxygen/html/tabs.css delete mode 100644 doxygen/html/transform_8hpp.html delete mode 100644 doxygen/html/transform_8hpp_source.html delete mode 100644 doxygen/html/vmctx_8cpp.html delete mode 100644 doxygen/html/vmctx_8hpp.html delete mode 100644 doxygen/html/vmctx_8hpp_source.html delete mode 100644 doxygen/html/vmhandler_8cpp.html delete mode 100644 doxygen/html/vmhandlers_8hpp.html delete mode 100644 doxygen/html/vmhandlers_8hpp_source.html delete mode 100644 doxygen/html/vminstrs_8cpp.html delete mode 100644 doxygen/html/vminstrs_8hpp.html delete mode 100644 doxygen/html/vminstrs_8hpp_source.html delete mode 100644 doxygen/html/vmlifters_2add_8cpp.html delete mode 100644 doxygen/html/vmlifters_2jmp_8cpp.html delete mode 100644 doxygen/html/vmlifters_2lconst_8cpp.html delete mode 100644 doxygen/html/vmlifters_2lflags_8cpp.html delete mode 100644 doxygen/html/vmlifters_2lreg_8cpp.html delete mode 100644 doxygen/html/vmlifters_2lvsp_8cpp.html delete mode 100644 doxygen/html/vmlifters_2nand_8cpp.html delete mode 100644 doxygen/html/vmlifters_2pushvsp_8cpp.html delete mode 100644 doxygen/html/vmlifters_2read_8cpp.html delete mode 100644 doxygen/html/vmlifters_2shr_8cpp.html delete mode 100644 doxygen/html/vmlifters_2sreg_8cpp.html delete mode 100644 doxygen/html/vmlifters_2vmexit_8cpp.html delete mode 100644 doxygen/html/vmlifters_8hpp.html delete mode 100644 doxygen/html/vmlifters_8hpp_source.html delete mode 100644 doxygen/html/vmp2_8hpp.html delete mode 100644 doxygen/html/vmp2_8hpp_source.html delete mode 100644 doxygen/html/vmprofiler_8hpp.html delete mode 100644 doxygen/html/vmprofiler_8hpp_source.html delete mode 100644 doxygen/html/vmprofiles_2add_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2jmp_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2lconst_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2lflags_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2lreg_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2lvsp_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2nand_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2pushvsp_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2read_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2shr_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2sreg_8cpp.html delete mode 100644 doxygen/html/vmprofiles_2vmexit_8cpp.html delete mode 100644 doxygen/html/vmprofiles_8hpp.html delete mode 100644 doxygen/html/vmprofiles_8hpp_source.html delete mode 100644 doxygen/html/vmutils_8cpp.html delete mode 100644 doxygen/html/vmutils_8hpp.html delete mode 100644 doxygen/html/vmutils_8hpp_source.html delete mode 100644 doxygen/html/write_8cpp.html diff --git a/dependencies/vtil b/dependencies/vtil index 04eaba7..e9dc43b 160000 --- a/dependencies/vtil +++ b/dependencies/vtil @@ -1 +1 @@ -Subproject commit 04eaba7cf2b30200ec894bc0b45d28e889ad1c1c +Subproject commit e9dc43bd7da388c5f8304407fd076f802bd97a7f diff --git a/doxygen/html/_r_e_a_d_m_e_8md.html b/doxygen/html/_r_e_a_d_m_e_8md.html deleted file mode 100644 index 64786bc..0000000 --- a/doxygen/html/_r_e_a_d_m_e_8md.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/README.md File Reference - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
D:/vmprofiler-qt/dependencies/vmprofiler/README.md File Reference
-
-
-
- - - - diff --git a/doxygen/html/annotated.html b/doxygen/html/annotated.html deleted file mode 100644 index dd92c5a..0000000 --- a/doxygen/html/annotated.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -VMProfiler: Class List - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 123]
- - - - - - - - - - - - - - - - - - - - -
 Nvm
 Nhandlercontains all information pertaining to vm handler identification..
 Chandler_thandler_t contains all the information for a vm handler such as its immidate value size (zero if there is no imm), the transformations applied to the imm to decrypt it (if any), a pointer to the profile (nullptr if there is none), and other meta data..
 Cprofile_tpre defined vm handler profile containing all compiled time known information about a vm handler..
 Ninstrscontains all functions related to virtual instructions..
 Cvirt_instr_t
 Cjcc_data
 Ccode_block_t
 Cctx_tvm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information... creating a vm::ctx_t object can make it easier to pass around information pertaining to a given vm entry..
 Nvmp2
 Nv1
 Cfile_header
 Centry_t
 Nv2
 Cfile_header
 Centry_t
 Nv3
 Cfile_header
 Ccode_block_t
 Czydis_instr_t
-
-
- - - - diff --git a/doxygen/html/bc_s.png b/doxygen/html/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT diff --git a/doxygen/html/bdwn.png b/doxygen/html/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/calc_jmp.cpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
calc_jmp.cpp File Reference
-
-
-
#include <vmprofiler.hpp>
-
- - - - - -

-Namespaces

 vm
 
 vm::calc_jmp
 
- - - - - - - -

-Functions

bool vm::calc_jmp::get (zydis_routine_t &vm_entry, zydis_routine_t &calc_jmp)
 extracts calc_jmp out of vm_entry... you can learn about calc_jmp here. More...
 
std::optional< vmp2::exec_type_tvm::calc_jmp::get_advancement (const zydis_routine_t &calc_jmp)
 gets the advancement of the virtual instruction pointer... iterates over calc_jmp for LEA, MOV, INC, DEC, SUB, ADD, ETC instructions and then decides which way VIP advances based upon this information... More...
 
-
- - - - diff --git a/doxygen/html/calc__jmp_8hpp.html b/doxygen/html/calc__jmp_8hpp.html deleted file mode 100644 index 631d1ab..0000000 --- a/doxygen/html/calc__jmp_8hpp.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/calc_jmp.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
calc_jmp.hpp File Reference
-
-
-
#include <transform.hpp>
-#include <vmp2.hpp>
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

 vm
 
 vm::calc_jmp
 
- - - - - - - -

-Functions

bool vm::calc_jmp::get (zydis_routine_t &vm_entry, zydis_routine_t &calc_jmp)
 extracts calc_jmp out of vm_entry... you can learn about calc_jmp here. More...
 
std::optional< vmp2::exec_type_tvm::calc_jmp::get_advancement (const zydis_routine_t &calc_jmp)
 gets the advancement of the virtual instruction pointer... iterates over calc_jmp for LEA, MOV, INC, DEC, SUB, ADD, ETC instructions and then decides which way VIP advances based upon this information... More...
 
-
- - - - diff --git a/doxygen/html/calc__jmp_8hpp_source.html b/doxygen/html/calc__jmp_8hpp_source.html deleted file mode 100644 index a3bee95..0000000 --- a/doxygen/html/calc__jmp_8hpp_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/calc_jmp.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
calc_jmp.hpp
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 #include <transform.hpp>
-
3 #include <vmp2.hpp>
-
4 
-
5 namespace vm::calc_jmp
-
6 {
-
14  bool get( zydis_routine_t &vm_entry, zydis_routine_t &calc_jmp );
-
15 
-
22  std::optional< vmp2::exec_type_t > get_advancement( const zydis_routine_t &calc_jmp );
-
23 } // namespace vm::calc_jmp
-
Definition: calc_jmp.hpp:6
-
bool get(zydis_routine_t &vm_entry, zydis_routine_t &calc_jmp)
extracts calc_jmp out of vm_entry... you can learn about calc_jmp here.
Definition: calc_jmp.cpp:5
-
std::optional< vmp2::exec_type_t > get_advancement(const zydis_routine_t &calc_jmp)
gets the advancement of the virtual instruction pointer... iterates over calc_jmp for LEA,...
Definition: calc_jmp.cpp:16
- - -
std::vector< zydis_instr_t > zydis_routine_t
Definition: vmutils.hpp:29
-
- - - - diff --git a/doxygen/html/call_8cpp.html b/doxygen/html/call_8cpp.html deleted file mode 100644 index e0993b6..0000000 --- a/doxygen/html/call_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/call.cpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
call.cpp File Reference
-
-
-
#include <vmprofiler.hpp>
-
- - - - - - - - - -

-Namespaces

 vm
 
 vm::handler
 contains all information pertaining to vm handler identification...
 
 vm::handler::profile
 contains all profiles defined, as well as a vector of all of the defined profiles...
 
-
- - - - diff --git a/doxygen/html/classes.html b/doxygen/html/classes.html deleted file mode 100644 index e4269a0..0000000 --- a/doxygen/html/classes.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -VMProfiler: Class Index - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Index
-
- - - - - diff --git a/doxygen/html/classvm_1_1ctx__t-members.html b/doxygen/html/classvm_1_1ctx__t-members.html deleted file mode 100644 index 20371b3..0000000 --- a/doxygen/html/classvm_1_1ctx__t-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
vm::ctx_t Member List
-
-
- -

This is the complete list of members for vm::ctx_t, including all inherited members.

- - - - - - - - - - - -
calc_jmpvm::ctx_t
ctx_t(std::uintptr_t module_base, std::uintptr_t image_base, std::uintptr_t image_size, std::uintptr_t vm_entry_rva)vm::ctx_texplicit
exec_typevm::ctx_t
image_basevm::ctx_t
image_sizevm::ctx_t
init()vm::ctx_t
module_basevm::ctx_t
vm_entryvm::ctx_t
vm_entry_rvavm::ctx_t
vm_handlersvm::ctx_t
- - - - diff --git a/doxygen/html/classvm_1_1ctx__t.html b/doxygen/html/classvm_1_1ctx__t.html deleted file mode 100644 index 0948da2..0000000 --- a/doxygen/html/classvm_1_1ctx__t.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - - -VMProfiler: vm::ctx_t Class Reference - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
vm::ctx_t Class Reference
-
-
- -

vm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information... creating a vm::ctx_t object can make it easier to pass around information pertaining to a given vm entry... - More...

- -

#include <vmctx.hpp>

- - - - - - - - -

-Public Member Functions

 ctx_t (std::uintptr_t module_base, std::uintptr_t image_base, std::uintptr_t image_size, std::uintptr_t vm_entry_rva)
 default constructor for vm::ctx_t... all information for a given vm entry must be provided... More...
 
bool init ()
 init all per-vm entry data such as vm_entry, calc_jmp, and vm handlers... More...
 
- - - - - - - - - - - - - - - - - - - -

-Public Attributes

const std::uintptr_t module_base
 
const std::uintptr_t image_base
 
const std::uintptr_t vm_entry_rva
 
const std::uintptr_t image_size
 
vmp2::exec_type_t exec_type
 the order in which VIP advances... More...
 
zydis_routine_t vm_entry
 
zydis_routine_t calc_jmp
 
std::vector< vm::handler::handler_tvm_handlers
 all the vm handlers for the given vm entry... More...
 
-

Detailed Description

-

vm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information... creating a vm::ctx_t object can make it easier to pass around information pertaining to a given vm entry...

-

Constructor & Destructor Documentation

- -

◆ ctx_t()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
vm::ctx_t::ctx_t (std::uintptr_t module_base,
std::uintptr_t image_base,
std::uintptr_t image_size,
std::uintptr_t vm_entry_rva 
)
-
-explicit
-
- -

default constructor for vm::ctx_t... all information for a given vm entry must be provided...

-
Parameters
- - - - - -
module_basethe linear virtual address of the module base...
image_baseimage base from optional nt header... IMAGE_OPTIONAL_HEADER64...
image_sizeimage size from optional nt header... IMAGE_OPTIONAL_HEADER64...
vm_entry_rvarelative virtual address from the module base address to the first push prior to a vm entry...
-
-
- -
-
-

Member Function Documentation

- -

◆ init()

- -
-
- - - - - - - -
bool vm::ctx_t::init ()
-
- -

init all per-vm entry data such as vm_entry, calc_jmp, and vm handlers...

-
Returns
returns true if no errors...
- -
-
-

Member Data Documentation

- -

◆ calc_jmp

- -
-
- - - - -
zydis_routine_t vm::ctx_t::calc_jmp
-
- -
-
- -

◆ exec_type

- -
-
- - - - -
vmp2::exec_type_t vm::ctx_t::exec_type
-
- -

the order in which VIP advances...

- -
-
- -

◆ image_base

- -
-
- - - - -
const std::uintptr_t vm::ctx_t::image_base
-
- -
-
- -

◆ image_size

- -
-
- - - - -
const std::uintptr_t vm::ctx_t::image_size
-
- -
-
- -

◆ module_base

- -
-
- - - - -
const std::uintptr_t vm::ctx_t::module_base
-
- -
-
- -

◆ vm_entry

- -
-
- - - - -
zydis_routine_t vm::ctx_t::vm_entry
-
- -
-
- -

◆ vm_entry_rva

- -
-
- - - - -
const std::uintptr_t vm::ctx_t::vm_entry_rva
-
- -
-
- -

◆ vm_handlers

- -
-
- - - - -
std::vector< vm::handler::handler_t > vm::ctx_t::vm_handlers
-
- -

all the vm handlers for the given vm entry...

- -
-
-
The documentation for this class was generated from the following files:
    -
  • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmctx.hpp
  • -
  • D:/vmprofiler-qt/dependencies/vmprofiler/src/vmctx.cpp
  • -
-
- - - - diff --git a/doxygen/html/closed.png b/doxygen/html/closed.png deleted file mode 100644 index 98cc2c909da37a6df914fbf67780eebd99c597f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT diff --git a/doxygen/html/dir_34caf5031dac7df8f41881fc650fad9e.html b/doxygen/html/dir_34caf5031dac7df8f41881fc650fad9e.html deleted file mode 100644 index d79cdf8..0000000 --- a/doxygen/html/dir_34caf5031dac7df8f41881fc650fad9e.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters Directory Reference - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
vmlifters Directory Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  add.cpp
 
file  jmp.cpp
 
file  lconst.cpp
 
file  lflags.cpp
 
file  lreg.cpp
 
file  lvsp.cpp
 
file  nand.cpp
 
file  pushvsp.cpp
 
file  read.cpp
 
file  shr.cpp
 
file  sreg.cpp
 
file  vmexit.cpp
 
-
- - - - diff --git a/doxygen/html/dir_41b4d5d37872f2c0144673a67fd94b20.html b/doxygen/html/dir_41b4d5d37872f2c0144673a67fd94b20.html deleted file mode 100644 index 556804a..0000000 --- a/doxygen/html/dir_41b4d5d37872f2c0144673a67fd94b20.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles Directory Reference - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
vmprofiles Directory Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  add.cpp
 
file  call.cpp
 
file  div.cpp
 
file  jmp.cpp
 
file  lconst.cpp
 
file  lflags.cpp
 
file  lreg.cpp
 
file  lvsp.cpp
 
file  mul.cpp
 
file  nand.cpp
 
file  pushvsp.cpp
 
file  read.cpp
 
file  shl.cpp
 
file  shr.cpp
 
file  sreg.cpp
 
file  vmexit.cpp
 
file  write.cpp
 
-
- - - - diff --git a/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html deleted file mode 100644 index 97f1398..0000000 --- a/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src Directory Reference - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
src Directory Reference
-
-
- - - - - - -

-Directories

directory  vmlifters
 
directory  vmprofiles
 
- - - - - - - - - - - -

-Files

file  calc_jmp.cpp
 
file  vmctx.cpp
 
file  vmhandler.cpp
 
file  vminstrs.cpp
 
file  vmutils.cpp
 
-
- - - - diff --git a/doxygen/html/dir_d44c64559bbebec7f509842c48db8b23.html b/doxygen/html/dir_d44c64559bbebec7f509842c48db8b23.html deleted file mode 100644 index f09fdad..0000000 --- a/doxygen/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include Directory Reference - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
include Directory Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - -

-Files

file  calc_jmp.hpp [code]
 
file  transform.hpp [code]
 
file  vmctx.hpp [code]
 
file  vmhandlers.hpp [code]
 
file  vminstrs.hpp [code]
 
file  vmlifters.hpp [code]
 
file  vmp2.hpp [code]
 
file  vmprofiler.hpp [code]
 
file  vmprofiles.hpp [code]
 
file  vmutils.hpp [code]
 
-
- - - - diff --git a/doxygen/html/div_8cpp.html b/doxygen/html/div_8cpp.html deleted file mode 100644 index f7bfe32..0000000 --- a/doxygen/html/div_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/div.cpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
div.cpp File Reference
-
-
-
#include <vmprofiler.hpp>
-
- - - - - - - - - -

-Namespaces

 vm
 
 vm::handler
 contains all information pertaining to vm handler identification...
 
 vm::handler::profile
 contains all profiles defined, as well as a vector of all of the defined profiles...
 
-
- - - - diff --git a/doxygen/html/doc.png b/doxygen/html/doc.png deleted file mode 100644 index 17edabff95f7b8da13c9516a04efe05493c29501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t diff --git a/doxygen/html/doxygen.css b/doxygen/html/doxygen.css deleted file mode 100644 index ffbff02..0000000 --- a/doxygen/html/doxygen.css +++ /dev/null @@ -1,1793 +0,0 @@ -/* The standard CSS for doxygen 1.9.1 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, th p.intertd, th p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.navtab { - border-right: 1px solid #A3B4D7; - padding-right: 15px; - text-align: right; - line-height: 110%; -} - -div.navtab table { - border-spacing: 0; -} - -td.navtab { - padding-right: 6px; - padding-left: 6px; -} -td.navtabHL { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL a, td.navtabHL a:visited { - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); -} - -a.navtab { - font-weight: bold; -} - -div.qindex{ - text-align: center; - width: 100%; - line-height: 140%; - font-size: 130%; - color: #A0A0A0; -} - -dt.alphachar{ - font-size: 180%; - font-weight: bold; -} - -.alphachar a{ - color: black; -} - -.alphachar a:hover, .alphachar a:visited{ - text-decoration: none; -} - -.classindex dl { - padding: 25px; - column-count:1 -} - -.classindex dd { - display:inline-block; - margin-left: 50px; - width: 90%; - line-height: 1.15em; -} - -.classindex dl.odd { - background-color: #F8F9FC; -} - -@media(min-width: 1120px) { - .classindex dl { - column-count:2 - } -} - -@media(min-width: 1320px) { - .classindex dl { - column-count:3 - } -} - - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -.contents a.qindexHL:visited { - color: #FFFFFF; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #FFFFFF; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; - text-align:right; - width:52px; -} - -dl.citelist dd { - margin:2px 0 2px 72px; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -span.emoji { - /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html - * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; - */ -} - -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -.DocNodeRTL { - text-align: right; - direction: rtl; -} - -.DocNodeLTR { - text-align: left; - direction: ltr; -} - -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; -} - -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; -} - -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; -} -/* @end */ - -u { - text-decoration: underline; -} - diff --git a/doxygen/html/doxygen.svg b/doxygen/html/doxygen.svg deleted file mode 100644 index d42dad5..0000000 --- a/doxygen/html/doxygen.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doxygen/html/dynsections.js b/doxygen/html/dynsections.js deleted file mode 100644 index 3174bd7..0000000 --- a/doxygen/html/dynsections.js +++ /dev/null @@ -1,121 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -VMProfiler: File List - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
File List
-
- - - - - diff --git a/doxygen/html/folderclosed.png b/doxygen/html/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA diff --git a/doxygen/html/functions.html b/doxygen/html/functions.html deleted file mode 100644 index 8ca669c..0000000 --- a/doxygen/html/functions.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - - - - -VMProfiler: Class Members - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- h -

- - -

- i -

- - -

- j -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- q -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

-
- - - - diff --git a/doxygen/html/functions_func.html b/doxygen/html/functions_func.html deleted file mode 100644 index fcd50e4..0000000 --- a/doxygen/html/functions_func.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -VMProfiler: Class Members - Functions - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/doxygen/html/functions_vars.html b/doxygen/html/functions_vars.html deleted file mode 100644 index dd5026e..0000000 --- a/doxygen/html/functions_vars.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - - -VMProfiler: Class Members - Variables - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- h -

- - -

- i -

- - -

- j -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- q -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

-
- - - - diff --git a/doxygen/html/globals.html b/doxygen/html/globals.html deleted file mode 100644 index fe14f8e..0000000 --- a/doxygen/html/globals.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -VMProfiler: File Members - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
-
- - - - diff --git a/doxygen/html/globals_defs.html b/doxygen/html/globals_defs.html deleted file mode 100644 index ece7eee..0000000 --- a/doxygen/html/globals_defs.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -VMProfiler: File Members - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/doxygen/html/globals_type.html b/doxygen/html/globals_type.html deleted file mode 100644 index 71d7242..0000000 --- a/doxygen/html/globals_type.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -VMProfiler: File Members - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/doxygen/html/icon.png b/doxygen/html/icon.png deleted file mode 100644 index 1a121c291146f7ce5fc93f0a5b43274d1763bffd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6949 zcmZ`;RZyHw(|s0qUEJMm2~Kd=;0rA7!CeBugS%@8kRZV&f^P6&2^QQv!FBPE_wv8^ zYpUneoUT*V-8Ws`6Zc9>85fHZ3jhFIRTTx@XY_nFZw$2OyZ+1J;xnK)$ZE<0Kw}E_ zy%p;7o8Cr6R}%n&SOFj`3IJ}Osjxi&@Z|@9zm@lFtrI4;5o?0Kn_} z&p=sRcvR0Mnzg#J0`T~|JMHzxVqaq*$4jr0)f5|C;(8hsVd0o2bdogVdjEoS_hvx{eMZ- z^a^9+(4*)~SB9CwRIK^q95J+QidBo%NErm&;-oUjG^e=-m|qK@SCudlr6W%AR8Vlz z!r~bt4hnj4MuFagDQAQ3r>eSaicb~oZ53@56`N0Y`TJcn1|k0*kHoGEO}}EP=k~-< z{%-mkDm@Jt9?46#kT^<}hYo3O3-^)s+)Wt6fAOK+9|l<+ariS}!P^IsnOM)c58)wG zUZl2u@)xat-P83)tdI(U%u|*o2~Z5xw`(8TW**&a`QffTpF1x2ln9_kkeVND09OTe zmob7j#)tejs#<9g?j~!$Ul$iC@=dc0f}J~d&EN)=WO%`LWPPjSpsP+iFpkw&ng z=~q;8eY~Yx{7(LNCMg8;>$o(t#FqL#-sdbp4t9n{9Z{W%B=K)keE99G#J$l#(AZAhyZ zxj-^IOlpxqqJ~k>S?UX;i5FY1-DT*~`8TV~gFG+!!X-^i7=b1;*jgLg1yXexhjn-) z*SD8(Q-rBEk$Z;dQbPw}-_B=LP@EKq?A#vJw?Z5Q8Tey4C^D$wmE1myZYI}B%y0nBzNC$dN3U#R5`SPI_B3F? zX%l7A&GSQ0WX3vc_9HE(fGR>Lzn%RU5|w~w(PWEms<+_OKmG{oJ7dOBBUwxQ7ao|h zg(9PKwH3F@oXLPW8QH}-lnhyCT+6rkhx+})L4(3XL{50w8zwg)o`?9si&o@jw;Ac( z~$3^-CA-R(tI*Z+;K97C+!#fWf!XPq|q^j&V z_aRh8t`;|~@=GO7Kzh}0iCY&PQVt1*$F2LJOq1#(zU)4h#X>mcPRviohm0C!+G__r z56c7dAm4#3#BmM{Q^}&0@TRxHx;bKCsG|Wh?Tx0K+!ray}ITe^W-b~MbD$b z6?B77nnLwz88t|jl7$!x@*te0vpeXh$>ij!a|lK4xDsvHeUBp5A_1=>O2{m{Dw{=m z->J=aKxc>Er!3W963NS(F~YLdB0u_MJ8sAdo_@uQm>@Oq#L4XL1SP5^Gt4qpn4!Wh zZ94hS|AxjsfEqrRR`9{MLKr>R{voFt5p8K-_Ka4CGDxZU8+P+}DO%I3BdgAe=k0or z^#)n(OoxV#5$(XxS7{K>v3JI!n@Sd(_M{!}Md#@~$pq)sq5lh0Lj%hiTP%c*!@;fS z4Q~b%I(+=dO-+p~6?^?Jar1O`7#<(a6Xiq%JUl?Xc!H1`>#!dsJ?tts`NN^$KmobT z?la@zJ9!$=L7sV%bkPJ#jC8D|dK}tW^gD?QzH*B^8e)s@?`-IKejAjM5k$;@UL>R8 z9kM}{Vos5;aY?_9Xut?1!ZQe&sqkntD8%n2Nx%N&(qn{&I2diF(78r0A6F@oh6WZaPVGylE_zkoA+FL<#37Z+bCnQx{oS2uet^N9?NUry@E*pKzAkMgSEgNsk>- z$xt^c7ZgW{pH-^OK|-lHR$BA&K~6566CD_Qe^!$u7wJW7+@Jw9ujYP{{fZeh=D#uk z&t3Lg31m{lI+OQJ3&b6P_&GtU0h(Djepi<$9KiCuWO4o8OUi}6qJh2LURX$aNAq)9 zpK;DY#Ce(o!}6VMPL~q#=7PIufwJ^ZmmFicP#+H2fn<}Xg%e~Km%#kgcc&Ube~fXt z9C3~Y{Xc(YT$O_I9oAi>#65irC%sam4r4Twx7y611%^K}9hZfu!zv51g~Khkd+MO8 z=xm>#X2QfW;su<9{^GdKhg{ zLaKSM8~1T{f(qdjttxC*oJ242$I_TAbubb=031Y)++3&NH(Q$r=G zK^(G)I>uImgcb)03p?_#a}vwN`as)c_1D#L9bsE^AhC2EXBoFCEi?>&KS;VzFVQ|O z>=y+ILeBAmO$ z`28qF)go%mpsHT2L~kW0)Ye^?3_W&}yYOq0zL=og4$w^k%-Wgo!>!T(Xtl0eWPrh^ zCsk^=F&G1%P^Fc&^h^Yt=gdUQ0_x1Yehep!QB3QC1(YF?$Z>otkT5=wqcEBkk78Lc8TMKEB_(kQ`vZZZ zO+8YzlsZ$|3kEZyu;6HA5RX^55ua8J$|tVGeRto|+-!DGqcM@=M9%13OVnQv^Zj5A zj>6i|vI>aEA*myBHvhr}KOdxDu6!YAX4`{ErPb@8Hf<<#yXyYki|C1mt@cr2^8({o z-;5rQ{$#QA^pe!~*PN~>d%YOf$|reE=mOI}eYlb#=sGP2FZ@iCjn6EjrBtg&Phjhw zwdk~xO$k6!5KkH7ivdH_alR9tH83#_P}piMs`&R$x$Zlb#iv^ zkCU-gxkw;1w49Coc|}M6Nj5C`vT;=dLQZyjNf+J0@`D5L;SVN6|0A|Bt_=<6cT(47 z^!q?GZ#Zs{Y&w<~Oru}dT1^H*)^ZH0wsWo2;AOT^)aQ?Sg$XhjARkKvoQLPAg>$+D z!clzY-W8Gf&4H8cLi|3lZ8ZcD=yxD)9?wgnB7>ZcA$X0O1Pwl3eJrm9*;T8{vUyWv zm9Yj^+uI_z)$wd!g_}SV``=SUlx6pxL>*Lex%8gupr)M)q}dwCzNK9upTdZ-riEAb zF&YR(#bD~T*O4m^nCJsirX(Qt?5(x9*Z*wOe=pR7#(RbyKUHH7of6$ZJk?Rsf!-Tb zsLwV(bt7$rdaHA`tZ#I9IaCj1=}*^79yGhV4h|qw9u6j8(D#(j)39-53Py6KN$5t^kit!6?R)ef?9{!P9{vr}Cgl&z4 zal6=M`L2w$RW%)bQkN#dz{4*tmY{4+7XOw-473ls>sd99YmP zOU@ar_f`KaIyv`WO5d zEcqxi{|j=0@-CW8T1|Shu;oNev?$C2o_RCo@=E3qj=0B`hQ6OF(%)yc9Ia8&mHPeB zt8fQ;H5E^GvYYHYv2qV+idnzWK@zGmYtOT7?z6oL%AZl=bft-F`5F{;)9=4 zWRjZ4hp=~ORAbj@kRW;KVmDDTd8%*gKKZJ zOWcHHDUC&5NA%4^BSS4-;B&>h%XRvqbR2x}D>jPOO%N+e@EAx_cFODz{#kylN))#A z)L8x0Z(;{IYX=h5xV>OM#S=MhNKKFoBN9ESiAk*MIK4k$4-NzZFI&rxl%@k#nTPIa z=^s!;r-h1voPCyM61vj8nR)C`I>K)BACk;JKUp{DAA?1H#otMigntmp)f_IphMZU~1;`3zllF37x zIgv$zbN!&zDruWh5S3XR5Kr`+XwfhJhko#E8fEH^T*$ZX17jDzQ1Fe$ZyQi*ydQK) z)L=fj{WYJ%AvR(IS_Qh;I33;&P%I)Pv($gvpHy9%R7rV(`@%^?KMz|szg5qvZ_MDc z&KCKH9M(U-u8Mox7Fz@+>sxGMow>VoyI`x7rUPfO*l&>&i;x3S_EA|AfECU*BC1UQ ztoq$$bt5;*rk~71+N2DvfmmCgr?;9P)FjA^#O^g8JhvJ|dL{gb_K_Ex=iMMghckkF zy*M2#GqK$p3Un`w8^!oJn=*zmZvI>wwLl`SV;Ms0gflxO%lvqc=g@lP!4WO+nNZ^f6= zIVmC$eeyRbd7iPQ-k~^!ZTwz#y)QU0=H9KBgcJ&+QKlt5bo>xc2TV^jW{5h#Qf$`Y zszBnfYHF*iUc=@P-K!0s0xaDc4ib{Ncb0EiV)!D}@JbyQ{2BR??H??NtbCx@>r4Qq zb)pKrU%ZeZ&p^UopMdlhc%5!3v`9^+`HZu~jttb~ue!ZOltGb|IW$e#=daY2 zD4#tM#ql%9y2?b4s((c<9idHmMy_^F%cPMrhx?B)B!5uIY6V(jZ0~qfxl*1}t{vyR zXpAqZNBF&Kk78K19K$2``)I_VPDJkVE!ZRjn)3P(S*8(=8TmHa`WGMh09iA0%AnUt z<`!B`7cy8izN8X#;HLdVoIpH_xZ#kQfSS-RI}DGJDo;{y(~cfMBl6bG9HSSh`IZyF zGjUD#{`@bV{1fS8P7+7MN!4jhF^eU9G9EcX;zQ92Xn)u8hOkwuvW7-lEiE7nV2<;N z_H75r4H=sms5CfGc~;r1al%g{)W#PWOoKyuoQa%;at%y|MebCIZ~Qg;K4q^sz;3G% zHl@%HF2c7sZZ~zX0iv9O_?8i6b87Beuy7&__{Ey$@hBGP)m_!Wjv1X)*+7UJwISug71{9jzvbe5K@$aIzijU#+AIGOFk+;f$ z*#EhXhrVbU5+!jWbSE5m@kH}}(F@a_@9SFWeJzFw1@86A3=Y@ml&^{1p>x^QN^E(` zqHEEd-$BeM6Bl^{bErcVw0zJ!KKs>6bC+*azotX-XeK+dLQj7wys=g!TDCX}=Io|M zq!d-H)_+J!J2)&#g5&xkZtI*XUGaO|md;sHmxOmVj42LCo<|6-L!4|I`9nx%+b|~N zhS}WODUTSpy6Bt3J#D7=$R$sR(fudSp~&f^e4yJQ=U6Y0Dct$00#8>r@89*>4iD4B zaPr6v20xWaXexb?fw;=%k!+oP%R4+Lj+jM1 z>yP;q@%W7!SjElDPV>(Bi_r|Emuhj zo&NQ|h~WJjgbm#J!def|x=whzTFWSv7ea6*F1?6Zek5VBNkI-MMO`Ei-|ys>>YCu_ zERq^xp(Yann`t3OyvC{MH{FbUKtV+7H}8Aaq2|TO4}DByyI+xA zTiE;ggeI|loqpi(%=m*57nGeR%!)iss#?NYp-#)lqi<-w9)QDES^%&yH$=6>+JE!7 zq}rgR&ORH9y2{jtFaxIPwCSIqvwFrAmAQfcyo~!pu>3jR*H`_O_50DX*7ND0;(|;e zRA-Mt#MddbSDAA}ijc!EuW2LOY8Mz`W2FH^3oj96ydd7&-ni2S5vOaP#Doxa8LF~* zF=vm(AI%<>dB9!1I(e!_F!pGgVmG|u-mWIy=${Q~!f-e0D><^Y&VlxQr36RcMt6Ii zEv4cHTyHjR_@6(m4P~i!%71ysIJFbo%5ICkX{)@DAD~y7>A)53(0V;|q;k!XR;kfX zk>%$e6PB5^-9}8n)xE*8G~q#uCmfiT0}9ho-KdW$YN^ozi}^#c=I|BsV#i;J1%HrB zj*;!!V7rl>iBEH5<7MxTrZ;k;S3I*-z_i9X-0wzb5sS4SQlI6b$EINLqehWx1h2Z^ zi2Bi9GD=4R?P`_~s_Do0#Z30>FAKd^7p&dZvU!8iDM{aPk6UXMyi3Au*6ii+R|Vzs zV%XD7QHx6wz6XmP;gA2=={0XFd;~dWBcX_m9`;PHi&$NqNRW3X&wMSnctF;fbr%J9 z!8ZFXXW?k%GmlsN#rf+$_Hb5FvPH!;%XXTZ@qA79l5cD2@;>F`k*M=|I8c{VTJQ)| z*LNSutMiX4%;hRp*EFT{8n$dSSQ2 zY&oB{JcZ6VsXd4aGmcUBN<*4_1V;CSoB8jkO4yz0lsk=*^6aCwx&jxL$Ognc z_G9M+L0tIJCy3$_VV$)hcxY`ZE}&?Ps^fEK`gYpS51oUwGKweQ^`}PXz;h8qi|3zg zrPO((SJU<3n%oZv4YGkP(>#y&d!~o7Yi*tbIrE{{`fSPQld~etm?iB0=;LW6H&Ilg z-CCwmVJ7y$kk-OGbK%M2?8N^WD?9&yV=l+s5C{QtoiZwJW$3>fKzcSgYFGRoO z)MT<;vQ{*30RoeVa*O`{w6S}J`1{syTy{z6-y1J~pr0d1JdXy#nO70A3BBif%6l~~ zBY9wO+HM9~YUL>5d7))T)Dan3obbmPTz>y}Y_{lkB3zA(P1vx!z z8h(hr9bldYV{Cep;EjH6+58(CfQzmG5gvcP*QeN<^ou>O7UUk6qU~?Ph>U}$vv4`2 z4}2k58>Dc>l1YOJ2rM*jUyEZjNoNrsT}Ua#I^Z@s@uwSbfeMwm+B|#Wsyc&jZOZV} zcKrFYtj$GehVukY|NPYA@po2ZBqTEm7@(&jEuMUdl`jBeUA@HjWS$C|iT;vUlaW+W zI70k>p00;(6`vIr%pyA~+O~eDl~T0JVge~`m`}b9BO!a!vd!>NRoK{9Sy$V%dHWij z3Ob`6qy{U|*uF%2b+ISrhU050L`IV;pnLoeNn1S3B0Fj{vpwm#`VuzHe?2hp1qtbn z_E)q~OJEdfT+B)rx@H*ebViMhIumuS$-~VX!O0(H4Ov11xy^=+V@ofUN$x!o= - - - - - - -VMProfiler: Main Page - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
VMProfiler Documentation
-
-
-

-VMProfiler - Library To Profile VMProtect 2 Virtual Machines

-

vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu. This is the base project for all other VMProtect 2 projects inside of this group on githacks.

-

-Credit & Contributors

-
    -
  • VTIL - Virtual-machine Translation Intermediate Language
  • -
  • Zydis - Fast and lightweight x86/x86-64 disassembler library
  • -
  • irql0 - helped with the first version of vm handler pattern matching
  • -
-

-Basic Usage - Creating a vm::ctx_t Object

-

The vm::ctx_t class is a small container-like class which is simply used to contain all information for a given vm entry. This class contains the following useful information:

-
    -
  • all vm handlers for a given vm entry
  • -
  • the linear virtual address of the module base in memory
  • -
  • the image base address
  • -
  • the image size in virtual memory
  • -
  • which way VIP advances (exec_type)
  • -
  • vm entry relative virtual address
  • -
  • vm entry deobfuscated and flattened
  • -
  • calc jmp deobfuscated and flattened
  • -
-

All of the above information is generated by executing the vm::ctx_t::init member function. Below is a C++ example of how to create a vm::ctx_t object.

-
const auto module_base = reinterpret_cast< std::uintptr_t >(
-
LoadLibraryExA( parser.get< std::string >( "bin" ).c_str(),
-
NULL, DONT_RESOLVE_DLL_REFERENCES ) );
-
-
const auto vm_entry_rva = std::strtoull( parser.get< std::string >( "vmentry" ).c_str(), nullptr, 16 );
-
const auto image_base = umtils->image_base( parser.get< std::string >( "bin" ).c_str() );
-
const auto image_size = NT_HEADER( module_base )->OptionalHeader.SizeOfImage;
-
vm::ctx_t vmctx( module_base, image_base, image_size, vm_entry_rva );
-
-
if ( !vmctx.init() )
-
{
-
std::printf( "[!] failed to init vm::ctx_t... make sure all cli arguments are correct!\n" );
-
return -1;
-
}
-
vm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information....
Definition: vmctx.hpp:13
-

-Using vm::ctx_t Object

-

Once you have instantiated vm::ctx_t and called vm::ctx_t::init with success, you now can directly access the data members of vm::ctx_t. Most importantly, vm::ctx_t::calc_jmp, vm::ctx_t::vm_entry, and vm::ctx_t::vm_handlers. An example usage of this data could be dumping the native x86_64 instructions which make up vm::ctx_t::vm_entry. Example c++ code for this is displayed below.

-
std::puts( "======================== [vm entry] ========================\n" );
-
vm::util::print( vmctx.vm_entry );
-
void print(zydis_routine_t &routine)
prints a disassembly view of a routine...
Definition: vmutils.cpp:69
-

Output

-
======================== [vm entry] ========================
-
> 0x00007FF7911A822C push 0xFFFFFFFF890001FA
-
> 0x00007FF7911A7FC9 push 0x45D3BF1F
-
> 0x00007FF7911A48E4 push r13
-
> 0x00007FF7911A4690 push rsi
-
> 0x00007FF7911A4E53 push r14
-
> 0x00007FF7911A74FB push rcx
-
> 0x00007FF7911A607C push rsp
-
> 0x00007FF7911A4926 pushfq
-
> 0x00007FF7911A4DC2 push rbp
-
> 0x00007FF7911A5C8C push r12
-
> 0x00007FF7911A52AC push r10
-
> 0x00007FF7911A51A5 push r9
-
> 0x00007FF7911A5189 push rdx
-
> 0x00007FF7911A7D5F push r8
-
> 0x00007FF7911A4505 push rdi
-
> 0x00007FF7911A4745 push r11
-
> 0x00007FF7911A478B push rax
-
> 0x00007FF7911A7A53 push rbx
-
> 0x00007FF7911A500D push r15
-
> 0x00007FF7911A6030 push [0x00007FF7911A7912]
-
> 0x00007FF7911A593A mov rax, 0x7FF6511A0000
-
> 0x00007FF7911A5955 mov r13, rax
-
> 0x00007FF7911A595F test dl, al
-
> 0x00007FF7911A5965 push rax
-
> 0x00007FF7911A5969 btr si, bx
-
> 0x00007FF7911A596F mov esi, [rsp+0xA0]
-
> 0x00007FF7911A5979 not esi
-
> 0x00007FF7911A5985 neg esi
-
> 0x00007FF7911A598D ror esi, 0x1A
-
> 0x00007FF7911A599E mov rbp, rsp
-
> 0x00007FF7911A59A8 sub rsp, 0x140
-
> 0x00007FF7911A59B5 and rsp, 0xFFFFFFFFFFFFFFF0
-
> 0x00007FF7911A59BE inc ax
-
> 0x00007FF7911A59C1 mov rdi, rsp
-
> 0x00007FF7911A59C7 bsr r12, rax
-
> 0x00007FF7911A59CB lea r12, [0x00007FF7911A6473]
-
> 0x00007FF7911A59DF mov rax, 0x100000000
-
> 0x00007FF7911A59EC add rsi, rax
-
> 0x00007FF7911A59F3 mov rbx, rsi
-
> 0x00007FF7911A59FA add rsi, [rbp]
-
> 0x00007FF7911A5A03 rcr dl, cl
-
> 0x00007FF7911A5A05 mov al, [rsi]
-
> 0x00007FF7911A5A0A xor al, bl
-
> 0x00007FF7911A5A11 neg al
-
> 0x00007FF7911A5A19 rol al, 0x05
-
> 0x00007FF7911A5A26 inc al
-
> 0x00007FF7911A5A2F xor bl, al
-
> 0x00007FF7911A5A34 movzx rax, al
-
> 0x00007FF7911A5A41 mov rdx, [r12+rax*8]
-
> 0x00007FF7911A5A49 xor rdx, 0x7F3D2149
-
> 0x00007FF7911A5507 inc rsi
-
> 0x00007FF7911A7951 add rdx, r13
-
> 0x00007FF7911A7954 jmp rdx
-

-License & Copyright

-

Copyright (c) 2021 _xeroxz, Independent Researcher @back.engineering

-

Licensed under the MIT License

-
-
- - - - diff --git a/doxygen/html/jquery.js b/doxygen/html/jquery.js deleted file mode 100644 index 103c32d..0000000 --- a/doxygen/html/jquery.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** - * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler - * Licensed under MIT - * @author Ariel Flesler - * @version 2.1.2 - */ -;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doxygen/html/md__r_e_a_d_m_e.html b/doxygen/html/md__r_e_a_d_m_e.html deleted file mode 100644 index f8d850d..0000000 --- a/doxygen/html/md__r_e_a_d_m_e.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -VMProfiler: README - - - - - - - - - -
-
- - - - - - - -
-
VMProfiler -  v1.8 -
-
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
README
-
-
-

-VMProfiler - Library To Profile VMProtect 2 Virtual Machines

-

vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu. This is the base project for all other VMProtect 2 projects inside of this group on githacks.

-
-
- - - - diff --git a/doxygen/html/menu.js b/doxygen/html/menu.js deleted file mode 100644 index 2fe2214..0000000 --- a/doxygen/html/menu.js +++ /dev/null @@ -1,51 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+=''; - } - return result; - } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchEnabled) { - if (serverSide) { - $('#main-menu').append('
  • '); - } else { - $('#main-menu').append('
  • '); - } - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/doxygen/html/menudata.js b/doxygen/html/menudata.js deleted file mode 100644 index c491248..0000000 --- a/doxygen/html/menudata.js +++ /dev/null @@ -1,146 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Namespaces",url:"namespaces.html",children:[ -{text:"Namespace List",url:"namespaces.html"}, -{text:"Namespace Members",url:"namespacemembers.html",children:[ -{text:"All",url:"namespacemembers.html",children:[ -{text:"_",url:"namespacemembers.html#index__5F"}, -{text:"a",url:"namespacemembers.html#index_a"}, -{text:"c",url:"namespacemembers.html#index_c"}, -{text:"d",url:"namespacemembers.html#index_d"}, -{text:"e",url:"namespacemembers.html#index_e"}, -{text:"f",url:"namespacemembers.html#index_f"}, -{text:"g",url:"namespacemembers.html#index_g"}, -{text:"h",url:"namespacemembers.html#index_h"}, -{text:"i",url:"namespacemembers.html#index_i"}, -{text:"j",url:"namespacemembers.html#index_j"}, -{text:"l",url:"namespacemembers.html#index_l"}, -{text:"m",url:"namespacemembers.html#index_m"}, -{text:"n",url:"namespacemembers.html#index_n"}, -{text:"p",url:"namespacemembers.html#index_p"}, -{text:"r",url:"namespacemembers.html#index_r"}, -{text:"s",url:"namespacemembers.html#index_s"}, -{text:"t",url:"namespacemembers.html#index_t"}, -{text:"v",url:"namespacemembers.html#index_v"}, -{text:"w",url:"namespacemembers.html#index_w"}, -{text:"z",url:"namespacemembers.html#index_z"}]}, -{text:"Functions",url:"namespacemembers_func.html",children:[ -{text:"_",url:"namespacemembers_func.html#index__5F"}, -{text:"a",url:"namespacemembers_func.html#index_a"}, -{text:"c",url:"namespacemembers_func.html#index_c"}, -{text:"d",url:"namespacemembers_func.html#index_d"}, -{text:"e",url:"namespacemembers_func.html#index_e"}, -{text:"f",url:"namespacemembers_func.html#index_f"}, -{text:"g",url:"namespacemembers_func.html#index_g"}, -{text:"h",url:"namespacemembers_func.html#index_h"}, -{text:"i",url:"namespacemembers_func.html#index_i"}, -{text:"m",url:"namespacemembers_func.html#index_m"}, -{text:"p",url:"namespacemembers_func.html#index_p"}, -{text:"t",url:"namespacemembers_func.html#index_t"}, -{text:"v",url:"namespacemembers_func.html#index_v"}]}, -{text:"Variables",url:"namespacemembers_vars.html",children:[ -{text:"_",url:"namespacemembers_vars.html#index__5F"}, -{text:"a",url:"namespacemembers_vars.html#index_a"}, -{text:"c",url:"namespacemembers_vars.html#index_c"}, -{text:"d",url:"namespacemembers_vars.html#index_d"}, -{text:"i",url:"namespacemembers_vars.html#index_i"}, -{text:"j",url:"namespacemembers_vars.html#index_j"}, -{text:"l",url:"namespacemembers_vars.html#index_l"}, -{text:"m",url:"namespacemembers_vars.html#index_m"}, -{text:"n",url:"namespacemembers_vars.html#index_n"}, -{text:"p",url:"namespacemembers_vars.html#index_p"}, -{text:"r",url:"namespacemembers_vars.html#index_r"}, -{text:"s",url:"namespacemembers_vars.html#index_s"}, -{text:"t",url:"namespacemembers_vars.html#index_t"}, -{text:"v",url:"namespacemembers_vars.html#index_v"}, -{text:"w",url:"namespacemembers_vars.html#index_w"}]}, -{text:"Typedefs",url:"namespacemembers_type.html"}, -{text:"Enumerations",url:"namespacemembers_enum.html"}, -{text:"Enumerator",url:"namespacemembers_eval.html",children:[ -{text:"a",url:"namespacemembers_eval.html#index_a"}, -{text:"c",url:"namespacemembers_eval.html#index_c"}, -{text:"d",url:"namespacemembers_eval.html#index_d"}, -{text:"i",url:"namespacemembers_eval.html#index_i"}, -{text:"j",url:"namespacemembers_eval.html#index_j"}, -{text:"l",url:"namespacemembers_eval.html#index_l"}, -{text:"m",url:"namespacemembers_eval.html#index_m"}, -{text:"n",url:"namespacemembers_eval.html#index_n"}, -{text:"p",url:"namespacemembers_eval.html#index_p"}, -{text:"r",url:"namespacemembers_eval.html#index_r"}, -{text:"s",url:"namespacemembers_eval.html#index_s"}, -{text:"v",url:"namespacemembers_eval.html#index_v"}, -{text:"w",url:"namespacemembers_eval.html#index_w"}, -{text:"z",url:"namespacemembers_eval.html#index_z"}]}]}]}, -{text:"Classes",url:"annotated.html",children:[ -{text:"Class List",url:"annotated.html"}, -{text:"Class Index",url:"classes.html"}, -{text:"Class Members",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"a",url:"functions.html#index_a"}, -{text:"b",url:"functions.html#index_b"}, -{text:"c",url:"functions.html#index_c"}, -{text:"d",url:"functions.html#index_d"}, -{text:"e",url:"functions.html#index_e"}, -{text:"h",url:"functions.html#index_h"}, -{text:"i",url:"functions.html#index_i"}, -{text:"j",url:"functions.html#index_j"}, -{text:"m",url:"functions.html#index_m"}, -{text:"n",url:"functions.html#index_n"}, -{text:"o",url:"functions.html#index_o"}, -{text:"p",url:"functions.html#index_p"}, -{text:"q",url:"functions.html#index_q"}, -{text:"r",url:"functions.html#index_r"}, -{text:"s",url:"functions.html#index_s"}, -{text:"t",url:"functions.html#index_t"}, -{text:"u",url:"functions.html#index_u"}, -{text:"v",url:"functions.html#index_v"}]}, -{text:"Functions",url:"functions_func.html"}, -{text:"Variables",url:"functions_vars.html",children:[ -{text:"a",url:"functions_vars.html#index_a"}, -{text:"b",url:"functions_vars.html#index_b"}, -{text:"c",url:"functions_vars.html#index_c"}, -{text:"d",url:"functions_vars.html#index_d"}, -{text:"e",url:"functions_vars.html#index_e"}, -{text:"h",url:"functions_vars.html#index_h"}, -{text:"i",url:"functions_vars.html#index_i"}, -{text:"j",url:"functions_vars.html#index_j"}, -{text:"m",url:"functions_vars.html#index_m"}, -{text:"n",url:"functions_vars.html#index_n"}, -{text:"o",url:"functions_vars.html#index_o"}, -{text:"p",url:"functions_vars.html#index_p"}, -{text:"q",url:"functions_vars.html#index_q"}, -{text:"r",url:"functions_vars.html#index_r"}, -{text:"s",url:"functions_vars.html#index_s"}, -{text:"t",url:"functions_vars.html#index_t"}, -{text:"u",url:"functions_vars.html#index_u"}, -{text:"v",url:"functions_vars.html#index_v"}]}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"File Members",url:"globals.html",children:[ -{text:"All",url:"globals.html"}, -{text:"Typedefs",url:"globals_type.html"}, -{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/doxygen/html/mul_8cpp.html b/doxygen/html/mul_8cpp.html deleted file mode 100644 index 86cb4a4..0000000 --- a/doxygen/html/mul_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/mul.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    mul.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/namespacemembers.html b/doxygen/html/namespacemembers.html deleted file mode 100644 index 6a92f17..0000000 --- a/doxygen/html/namespacemembers.html +++ /dev/null @@ -1,628 +0,0 @@ - - - - - - - -VMProfiler: Namespace Members - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all namespace members with links to the namespace documentation for each member:
    - -

    - _ -

    - - -

    - a -

    - - -

    - c -

    - - -

    - d -

    - - -

    - e -

    - - -

    - f -

    - - -

    - g -

    - - -

    - h -

    - - -

    - i -

    - - -

    - j -

    - - -

    - l -

    - - -

    - m -

    - - -

    - n -

    - - -

    - p -

    - - -

    - r -

    - - -

    - s -

    - - -

    - t -

    - - -

    - v -

    - - -

    - w -

    - - -

    - z -

    -
    - - - - diff --git a/doxygen/html/namespacemembers_enum.html b/doxygen/html/namespacemembers_enum.html deleted file mode 100644 index 3eee583..0000000 --- a/doxygen/html/namespacemembers_enum.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -VMProfiler: Namespace Members - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - - - - diff --git a/doxygen/html/namespacemembers_eval.html b/doxygen/html/namespacemembers_eval.html deleted file mode 100644 index 1622568..0000000 --- a/doxygen/html/namespacemembers_eval.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - - -VMProfiler: Namespace Members - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - a -

    - - -

    - c -

    - - -

    - d -

    - - -

    - i -

    - - -

    - j -

    - - -

    - l -

    - - -

    - m -

    - - -

    - n -

    - - -

    - p -

    - - -

    - r -

    - - -

    - s -

    - - -

    - v -

    - - -

    - w -

    - - -

    - z -

    -
    - - - - diff --git a/doxygen/html/namespacemembers_func.html b/doxygen/html/namespacemembers_func.html deleted file mode 100644 index 5a8e44a..0000000 --- a/doxygen/html/namespacemembers_func.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - -VMProfiler: Namespace Members - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - _ -

    - - -

    - a -

    - - -

    - c -

    - - -

    - d -

    - - -

    - e -

    - - -

    - f -

    - - -

    - g -

    - - -

    - h -

    - - -

    - i -

    - - -

    - m -

    - - -

    - p -

    - - -

    - t -

    - - -

    - v -

    -
    - - - - diff --git a/doxygen/html/namespacemembers_type.html b/doxygen/html/namespacemembers_type.html deleted file mode 100644 index a27713e..0000000 --- a/doxygen/html/namespacemembers_type.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -VMProfiler: Namespace Members - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - - - - diff --git a/doxygen/html/namespacemembers_vars.html b/doxygen/html/namespacemembers_vars.html deleted file mode 100644 index 214e0dd..0000000 --- a/doxygen/html/namespacemembers_vars.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - -VMProfiler: Namespace Members - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - _ -

    - - -

    - a -

    - - -

    - c -

    - - -

    - d -

    - - -

    - i -

    - - -

    - j -

    - - -

    - l -

    - - -

    - m -

    - - -

    - n -

    - - -

    - p -

    - - -

    - r -

    - - -

    - s -

    - - -

    - t -

    - - -

    - v -

    - - -

    - w -

    -
    - - - - diff --git a/doxygen/html/namespaces.html b/doxygen/html/namespaces.html deleted file mode 100644 index c4fc6ab..0000000 --- a/doxygen/html/namespaces.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -VMProfiler: Namespace List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    Namespace List
    -
    -
    -
    Here is a list of all namespaces with brief descriptions:
    -
    [detail level 123]
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
     Nvm
     Ncalc_jmp
     Nhandlercontains all information pertaining to vm handler identification..
     Nprofilecontains all profiles defined, as well as a vector of all of the defined profiles..
     Ntable
     Chandler_thandler_t contains all the information for a vm handler such as its immidate value size (zero if there is no imm), the transformations applied to the imm to decrypt it (if any), a pointer to the profile (nullptr if there is none), and other meta data..
     Cprofile_tpre defined vm handler profile containing all compiled time known information about a vm handler..
     Ninstrscontains all functions related to virtual instructions..
     Cvirt_instr_t
     Cjcc_data
     Ccode_block_t
     Nlifters
     Ntransform
     Nutilutils used by the other cpp files... misc things that get used a lot..
     Nregutils pertaining to native registers..
     Cctx_tvm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information... creating a vm::ctx_t object can make it easier to pass around information pertaining to a given vm entry..
     Nvmp2
     Nv1
     Cfile_header
     Centry_t
     Nv2
     Cfile_header
     Centry_t
     Nv3
     Cfile_header
     Ccode_block_t
    -
    -
    - - - - diff --git a/doxygen/html/namespacevm.html b/doxygen/html/namespacevm.html deleted file mode 100644 index f26c8bf..0000000 --- a/doxygen/html/namespacevm.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -VMProfiler: vm Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    vm Namespace Reference
    -
    -
    - - - - - - - - - - - - - - - - - -

    -Namespaces

     calc_jmp
     
     handler
     contains all information pertaining to vm handler identification...
     
     instrs
     contains all functions related to virtual instructions...
     
     lifters
     
     transform
     
     util
     utils used by the other cpp files... misc things that get used a lot...
     
    - - - - -

    -Classes

    class  ctx_t
     vm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information... creating a vm::ctx_t object can make it easier to pass around information pertaining to a given vm entry... More...
     
    -
    - - - - diff --git a/doxygen/html/namespacevm_1_1calc__jmp.html b/doxygen/html/namespacevm_1_1calc__jmp.html deleted file mode 100644 index 8c2414d..0000000 --- a/doxygen/html/namespacevm_1_1calc__jmp.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -VMProfiler: vm::calc_jmp Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::calc_jmp Namespace Reference
    -
    -
    - - - - - - - - -

    -Functions

    bool get (zydis_routine_t &vm_entry, zydis_routine_t &calc_jmp)
     extracts calc_jmp out of vm_entry... you can learn about calc_jmp here. More...
     
    std::optional< vmp2::exec_type_tget_advancement (const zydis_routine_t &calc_jmp)
     gets the advancement of the virtual instruction pointer... iterates over calc_jmp for LEA, MOV, INC, DEC, SUB, ADD, ETC instructions and then decides which way VIP advances based upon this information... More...
     
    -

    Function Documentation

    - -

    ◆ get()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool vm::calc_jmp::get (zydis_routine_tvm_entry,
    zydis_routine_tcalc_jmp 
    )
    -
    - -

    extracts calc_jmp out of vm_entry... you can learn about calc_jmp here.

    -
    Parameters
    - - - -
    vm_entrypass by reference vm entry...
    calc_jmpzydis_routine_t filled up with native instructions by this routine...
    -
    -
    -
    Returns
    returns truee if no errors happen...
    - -
    -
    - -

    ◆ get_advancement()

    - -
    -
    - - - - - - - - -
    std::optional< vmp2::exec_type_t > vm::calc_jmp::get_advancement (const zydis_routine_tcalc_jmp)
    -
    - -

    gets the advancement of the virtual instruction pointer... iterates over calc_jmp for LEA, MOV, INC, DEC, SUB, ADD, ETC instructions and then decides which way VIP advances based upon this information...

    -
    Parameters
    - - -
    calc_jmp
    -
    -
    -
    Returns
    - -
    -
    -
    - - - - diff --git a/doxygen/html/namespacevm_1_1handler.html b/doxygen/html/namespacevm_1_1handler.html deleted file mode 100644 index 7876328..0000000 --- a/doxygen/html/namespacevm_1_1handler.html +++ /dev/null @@ -1,599 +0,0 @@ - - - - - - - -VMProfiler: vm::handler Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::handler Namespace Reference
    -
    -
    - -

    contains all information pertaining to vm handler identification... -More...

    - - - - - - - -

    -Namespaces

     profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
     table
     
    - - - - - - - -

    -Classes

    struct  handler_t
     handler_t contains all the information for a vm handler such as its immidate value size (zero if there is no imm), the transformations applied to the imm to decrypt it (if any), a pointer to the profile (nullptr if there is none), and other meta data... More...
     
    struct  profile_t
     pre defined vm handler profile containing all compiled time known information about a vm handler... More...
     
    - - - - -

    -Typedefs

    using zydis_callback_t = std::function< bool(const zydis_decoded_instr_t &instr) >
     zydis callback lambda used to pattern match native instructions... More...
     
    - - - - - - - -

    -Enumerations

    enum  mnemonic_t {
    -  INVALID -, LRFLAGS -, PUSHVSP -, MULQ -,
    -  DIVQ -, CALL -, JMP -, VMEXIT -,
    -  LVSP -, SREGQ -, SREGDW -, SREGW -,
    -  LREGQ -, LREGDW -, LCONSTQ -, LCONSTBZXW -,
    -  LCONSTBSXQ -, LCONSTBSXDW -, LCONSTDWSXQ -, LCONSTWSXQ -,
    -  LCONSTWSXDW -, LCONSTDW -, LCONSTW -, READQ -,
    -  READDW -, READW -, WRITEQ -, WRITEDW -,
    -  WRITEW -, WRITEB -, ADDQ -, ADDDW -,
    -  ADDW -, SHLQ -, SHLDW -, SHRQ -,
    -  SHRW -, NANDQ -, NANDDW -, NANDW -
    - }
     vm handler mnemonic... so you dont need to compare strings! More...
     
    enum  extention_t { none -, sign_extend -, zero_extend - }
     how sign extention is handled... More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    bool has_imm (const zydis_routine_t &vm_handler)
     given a vm handler returns true if the vm handler decrypts an operand... More...
     
    std::optional< std::uint8_t > imm_size (const zydis_routine_t &vm_handler)
     gets the imm size of a vm handler... More...
     
    bool get (zydis_routine_t &vm_entry, zydis_routine_t &vm_handler, std::uintptr_t handler_addr)
     gets a vm handler, puts all of the native instructions inside of the vm_handler param... More...
     
    bool get_all (std::uintptr_t module_base, std::uintptr_t image_base, zydis_routine_t &vm_entry, std::uintptr_t *vm_handler_table, std::vector< handler_t > &vm_handlers)
     get all 256 vm handlers... More...
     
    bool get_operand_transforms (zydis_routine_t &vm_handler, transform::map_t &transforms)
     get operand decryption instructions given a vm handler... More...
     
    vm::handler::profile_tget_profile (handler_t &vm_handler)
     get a vm handler profile given a handler_t... More...
     
    vm::handler::profile_tget_profile (vm::handler::mnemonic_t mnemonic)
     get a vm handler profile given the mnemonic of the vm handler... More...
     
    bool get_all (std::uintptr_t module_base, std::uintptr_t image_base, zydis_routine_t &vm_entry, std::uintptr_t *vm_handler_table, std::vector< vm::handler::handler_t > &vm_handlers)
     
    -

    Detailed Description

    -

    contains all information pertaining to vm handler identification...

    -

    Typedef Documentation

    - -

    ◆ zydis_callback_t

    - -
    -
    - - - - -
    using vm::handler::zydis_callback_t = typedef std::function< bool( const zydis_decoded_instr_t &instr ) >
    -
    - -

    zydis callback lambda used to pattern match native instructions...

    - -
    -
    -

    Enumeration Type Documentation

    - -

    ◆ extention_t

    - -
    -
    - - - - -
    enum vm::handler::extention_t
    -
    - -

    how sign extention is handled...

    - - - - -
    Enumerator
    none 
    sign_extend 
    zero_extend 
    - -
    -
    - -

    ◆ mnemonic_t

    - -
    -
    - - - - -
    enum vm::handler::mnemonic_t
    -
    - -

    vm handler mnemonic... so you dont need to compare strings!

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Enumerator
    INVALID 
    LRFLAGS 
    PUSHVSP 
    MULQ 
    DIVQ 
    CALL 
    JMP 
    VMEXIT 
    LVSP 
    SREGQ 
    SREGDW 
    SREGW 
    LREGQ 
    LREGDW 
    LCONSTQ 
    LCONSTBZXW 
    LCONSTBSXQ 
    LCONSTBSXDW 
    LCONSTDWSXQ 
    LCONSTWSXQ 
    LCONSTWSXDW 
    LCONSTDW 
    LCONSTW 
    READQ 
    READDW 
    READW 
    WRITEQ 
    WRITEDW 
    WRITEW 
    WRITEB 
    ADDQ 
    ADDDW 
    ADDW 
    SHLQ 
    SHLDW 
    SHRQ 
    SHRW 
    NANDQ 
    NANDDW 
    NANDW 
    - -
    -
    -

    Function Documentation

    - -

    ◆ get()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    bool vm::handler::get (zydis_routine_tvm_entry,
    zydis_routine_tvm_handler,
    std::uintptr_t handler_addr 
    )
    -
    - -

    gets a vm handler, puts all of the native instructions inside of the vm_handler param...

    -
    Parameters
    - - - - -
    vm_entryreference to a zydis_routine_t containing the native instructions of a vm entry...
    vm_handlerreference to a zydis_routine_t that will get filled with the native instructions of the vm handler...
    handler_addrlinear virtual address to the first instruction of the vm handler...
    -
    -
    -
    Returns
    returns true if the native instructions of the vm handler was extracted...
    - -
    -
    - -

    ◆ get_all() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool vm::handler::get_all (std::uintptr_t module_base,
    std::uintptr_t image_base,
    zydis_routine_tvm_entry,
    std::uintptr_t * vm_handler_table,
    std::vector< handler_t > & vm_handlers 
    )
    -
    - -

    get all 256 vm handlers...

    -
    Parameters
    - - - - - - -
    module_baselinear virtual address of the module base...
    image_baseimage base from optional nt header... IMAGE_OPTIONAL_HEADER64...
    vm_entryzydis_routine_t containing the deobfuscated and flattened vm entry native instructions...
    vm_handler_tablelinear virtual address to the vm handler table...
    vm_handlersvector of handler_t's that will be filled with the vm handlers...
    -
    -
    -
    Returns
    returns true if all vm handlers were extracted, else false...
    - -
    -
    - -

    ◆ get_all() [2/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool vm::handler::get_all (std::uintptr_t module_base,
    std::uintptr_t image_base,
    zydis_routine_tvm_entry,
    std::uintptr_t * vm_handler_table,
    std::vector< vm::handler::handler_t > & vm_handlers 
    )
    -
    - -
    -
    - -

    ◆ get_operand_transforms()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool vm::handler::get_operand_transforms (zydis_routine_tvm_handler,
    transform::map_ttransforms 
    )
    -
    - -

    get operand decryption instructions given a vm handler...

    -
    Parameters
    - - - -
    vm_handlerreference to a zydis_routine_t containing the deobfuscated and flattened vm handler native instructions...
    transformsreference to a transform::map_t that will get filled up with the transforms needed to decrypt operands...
    -
    -
    -
    Returns
    returns true if the transformations were extracted successfully
    - -
    -
    - -

    ◆ get_profile() [1/2]

    - -
    -
    - - - - - - - - -
    vm::handler::profile_t * vm::handler::get_profile (handler_tvm_handler)
    -
    - -

    get a vm handler profile given a handler_t...

    -
    Parameters
    - - -
    vm_handlerreference to a handler_t structure that contains all the information of a given vm handler...
    -
    -
    -
    Returns
    returns a pointer to the vm profile, else a nullptr...
    - -
    -
    - -

    ◆ get_profile() [2/2]

    - -
    -
    - - - - - - - - -
    vm::handler::profile_t * vm::handler::get_profile (vm::handler::mnemonic_t mnemonic)
    -
    - -

    get a vm handler profile given the mnemonic of the vm handler...

    -
    Parameters
    - - -
    mnemonicmnemonic of the vm handler...
    -
    -
    -
    Returns
    returns a pointer to the profile if the given menmonic is implimented, else a nullptr...
    - -
    -
    - -

    ◆ has_imm()

    - -
    -
    - - - - - - - - -
    bool vm::handler::has_imm (const zydis_routine_tvm_handler)
    -
    - -

    given a vm handler returns true if the vm handler decrypts an operand...

    -
    Parameters
    - - -
    vm_handlerconst reference to a vm handler...
    -
    -
    -
    Returns
    returns true if the vm handler decrypts an operand, else false...
    - -
    -
    - -

    ◆ imm_size()

    - -
    -
    - - - - - - - - -
    std::optional< std::uint8_t > vm::handler::imm_size (const zydis_routine_tvm_handler)
    -
    - -

    gets the imm size of a vm handler...

    -
    Parameters
    - - -
    vm_handlerconst reference to a vm handler...
    -
    -
    -
    Returns
    returns the imm size, otherwise returns an empty optional value...
    - -
    -
    -
    - - - - diff --git a/doxygen/html/namespacevm_1_1handler_1_1profile.html b/doxygen/html/namespacevm_1_1handler_1_1profile.html deleted file mode 100644 index c69daf8..0000000 --- a/doxygen/html/namespacevm_1_1handler_1_1profile.html +++ /dev/null @@ -1,1236 +0,0 @@ - - - - - - - -VMProfiler: vm::handler::profile Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::handler::profile Namespace Reference
    -
    -
    - -

    contains all profiles defined, as well as a vector of all of the defined profiles... -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    vm::handler::profile_t sregq
     
    vm::handler::profile_t sregdw
     
    vm::handler::profile_t sregw
     
    vm::handler::profile_t lregq
     
    vm::handler::profile_t lregdw
     
    vm::handler::profile_t lconstq
     mov rax, [rsi] xor rax, rbx ; transformation bswap rax ; transformation lea rsi, [rsi+8] ; advance VIP… rol rax, 0Ch ; transformation inc rax ; transformation xor rbx, rax ; transformation (update rolling decrypt key) sub rbp, 8 mov [rbp+0], rax More...
     
    vm::handler::profile_t lconstdw
     mov eax, [rsi-0x04] bswap eax add eax, ebx dec eax neg eax xor eax, 0x2FFD187C push rbx add [rsp], eax pop rbx sub rbp, 0x04 mov [rbp], eax add rsi, 0xFFFFFFFFFFFFFFFC More...
     
    vm::handler::profile_t lconstw
     
    vm::handler::profile_t lconstbzxw
     
    vm::handler::profile_t lconstbsxdw
     
    vm::handler::profile_t lconstbsxq
     
    vm::handler::profile_t lconstdwsxq
     
    vm::handler::profile_t lconstwsxq
     
    vm::handler::profile_t lconstwsxdw
     
    vm::handler::profile_t addq
     mov rax, [rbp+0] add [rbp+8], rax pushfq pop qword ptr [rbp+0] More...
     
    vm::handler::profile_t adddw
     mov ax, [rbp] sub rbp, 0x06 add [rbp+0x08], ax pushfq pop [rbp] More...
     
    vm::handler::profile_t addw
     
    vm::handler::profile_t shlq
     
    vm::handler::profile_t shldw
     
    vm::handler::profile_t nandq
     
    vm::handler::profile_t nanddw
     
    vm::handler::profile_t nandw
     
    vm::handler::profile_t writeq
     
    vm::handler::profile_t writedw
     
    vm::handler::profile_t writeb
     
    vm::handler::profile_t readq
     
    vm::handler::profile_t readdw
     
    vm::handler::profile_t shrq
     
    vm::handler::profile_t shrw
     
    vm::handler::profile_t lrflags
     
    vm::handler::profile_t call
     mov rdx, [rbp] add rbp, 0x08 call rdx More...
     
    vm::handler::profile_t pushvsp
     
    vm::handler::profile_t mulq
     
    vm::handler::profile_t divq
     mov rdx, [rbp] mov rax, [rbp+0x08] div [rbp+0x10] mov [rbp+0x08], rdx mov [rbp+0x10], rax pushfq pop [rbp] More...
     
    vm::handler::profile_t jmp
     mov esi, [rbp] add rbp, 0x08 lea r12, [0x0000000000048F29] mov rax, 0x00 ; image base bytes above 32bits... add rsi, rax mov rbx, rsi ; update decrypt key add rsi, [rbp] ; add module base address More...
     
    vm::handler::profile_t lvsp
     mov rbp [rbp+0] More...
     
    vm::handler::profile_t vmexit
     
    std::vector< vm::handler::profile_t * > all
     a vector of pointers to all defined vm handler profiles... More...
     
    -

    Detailed Description

    -

    contains all profiles defined, as well as a vector of all of the defined profiles...

    -

    Variable Documentation

    - -

    ◆ adddw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::adddw
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "ADDDW",
    - -
    NULL,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_ADD && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 0 ].mem.disp.value == 0x8 &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_EAX;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool { return instr.mnemonic == ZYDIS_MNEMONIC_PUSHFQ; },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_POP && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP;
    -
    } } } }
    -
    @ ADDDW
    Definition: vmprofiles.hpp:51
    -
    ZydisDecodedInstruction zydis_decoded_instr_t
    Definition: vmutils.hpp:18
    -
    -

    mov ax, [rbp] sub rbp, 0x06 add [rbp+0x08], ax pushfq pop [rbp]

    - -
    -
    - -

    ◆ addq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::addq
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "ADDQ",
    - -
    NULL,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_ADD && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 0 ].mem.disp.value == 0x8 &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_RAX;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool { return instr.mnemonic == ZYDIS_MNEMONIC_PUSHFQ; },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_POP && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP;
    -
    } } } }
    -
    @ ADDQ
    Definition: vmprofiles.hpp:50
    -
    -

    mov rax, [rbp+0] add [rbp+8], rax pushfq pop qword ptr [rbp+0]

    - -
    -
    - -

    ◆ addw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::addw
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "ADDW",
    - -
    NULL,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_ADD && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 0 ].mem.disp.value == 0x8 &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_AX;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool { return instr.mnemonic == ZYDIS_MNEMONIC_PUSHFQ; },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_POP && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP;
    -
    } } } }
    -
    @ ADDW
    Definition: vmprofiles.hpp:52
    -
    -
    -
    - -

    ◆ all

    - -
    -
    - - - - - -
    - - - - -
    std::vector< vm::handler::profile_t * > vm::handler::profile::all
    -
    -inline
    -
    -Initial value:
    = {
    - - -
    &addw, &lvsp,
    -
    - -
    - - -
    vm::handler::profile_t lconstw
    Definition: lconst.cpp:50
    -
    vm::handler::profile_t writeb
    Definition: write.cpp:85
    -
    vm::handler::profile_t lconstwsxq
    Definition: lconst.cpp:171
    -
    vm::handler::profile_t lvsp
    mov rbp [rbp+0]
    Definition: lvsp.cpp:5
    -
    vm::handler::profile_t lconstdw
    mov eax, [rsi-0x04] bswap eax add eax, ebx dec eax neg eax xor eax, 0x2FFD187C push rbx add [rsp],...
    Definition: lconst.cpp:28
    -
    vm::handler::profile_t pushvsp
    Definition: pushvsp.cpp:5
    -
    vm::handler::profile_t lconstbsxq
    Definition: lconst.cpp:121
    -
    vm::handler::profile_t lregq
    Definition: lreg.cpp:5
    -
    vm::handler::profile_t nandq
    Definition: nand.cpp:5
    -
    vm::handler::profile_t sregdw
    Definition: sreg.cpp:38
    -
    vm::handler::profile_t sregw
    Definition: sreg.cpp:72
    -
    vm::handler::profile_t shrw
    Definition: shr.cpp:64
    -
    vm::handler::profile_t lrflags
    Definition: lflags.cpp:5
    -
    vm::handler::profile_t mulq
    Definition: mul.cpp:5
    -
    vm::handler::profile_t nanddw
    Definition: nand.cpp:68
    -
    vm::handler::profile_t adddw
    mov ax, [rbp] sub rbp, 0x06 add [rbp+0x08], ax pushfq pop [rbp]
    Definition: add.cpp:28
    -
    vm::handler::profile_t writeq
    Definition: write.cpp:5
    -
    vm::handler::profile_t jmp
    mov esi, [rbp] add rbp, 0x08 lea r12, [0x0000000000048F29] mov rax, 0x00 ; image base bytes above 32b...
    Definition: jmp.cpp:5
    -
    vm::handler::profile_t readq
    Definition: read.cpp:5
    -
    vm::handler::profile_t writedw
    Definition: write.cpp:45
    -
    vm::handler::profile_t vmexit
    Definition: vmexit.cpp:5
    -
    vm::handler::profile_t sregq
    Definition: sreg.cpp:5
    -
    vm::handler::profile_t addq
    mov rax, [rbp+0] add [rbp+8], rax pushfq pop qword ptr [rbp+0]
    Definition: add.cpp:5
    -
    vm::handler::profile_t readdw
    Definition: read.cpp:27
    -
    vm::handler::profile_t lconstbzxw
    Definition: lconst.cpp:72
    -
    vm::handler::profile_t shlq
    Definition: shl.cpp:5
    -
    vm::handler::profile_t call
    mov rdx, [rbp] add rbp, 0x08 call rdx
    Definition: call.cpp:5
    -
    vm::handler::profile_t shldw
    Definition: shl.cpp:64
    -
    vm::handler::profile_t lconstbsxdw
    Definition: lconst.cpp:95
    -
    vm::handler::profile_t lconstq
    mov rax, [rsi] xor rax, rbx ; transformation bswap rax ; transformation lea rsi, [rsi+8] ; advance VI...
    Definition: lconst.cpp:5
    -
    vm::handler::profile_t nandw
    Definition: nand.cpp:115
    -
    vm::handler::profile_t lregdw
    Definition: lreg.cpp:39
    -
    vm::handler::profile_t lconstdwsxq
    Definition: lconst.cpp:147
    -
    vm::handler::profile_t shrq
    Definition: shr.cpp:5
    -
    vm::handler::profile_t addw
    Definition: add.cpp:51
    -
    vm::handler::profile_t lconstwsxdw
    Definition: lconst.cpp:197
    -
    vm::handler::profile_t divq
    mov rdx, [rbp] mov rax, [rbp+0x08] div [rbp+0x10] mov [rbp+0x08], rdx mov [rbp+0x10],...
    Definition: div.cpp:5
    -
    -

    a vector of pointers to all defined vm handler profiles...

    - -
    -
    - -

    ◆ call

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::call
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "CALL",
    - -
    NULL,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RDX &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 1 ].mem.base == ZYDIS_REGISTER_RBP;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_ADD &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x8;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_CALL &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RDX;
    -
    } } } }
    -
    @ CALL
    Definition: vmprofiles.hpp:19
    -
    -

    mov rdx, [rbp] add rbp, 0x08 call rdx

    - -
    -
    - -

    ◆ divq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::divq
    -
    - -

    mov rdx, [rbp] mov rax, [rbp+0x08] div [rbp+0x10] mov [rbp+0x08], rdx mov [rbp+0x10], rax pushfq pop [rbp]

    - -
    -
    - -

    ◆ jmp

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::jmp
    -
    - -

    mov esi, [rbp] add rbp, 0x08 lea r12, [0x0000000000048F29] mov rax, 0x00 ; image base bytes above 32bits... add rsi, rax mov rbx, rsi ; update decrypt key add rsi, [rbp] ; add module base address

    - -
    -
    - -

    ◆ lconstbsxdw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lconstbsxdw
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "LCONSTBSXDW",
    - -
    8,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool { return instr.mnemonic == ZYDIS_MNEMONIC_CWDE; },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_SUB &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x4;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_EAX;
    -
    } } },
    - -
    @ LCONSTBSXDW
    Definition: vmprofiles.hpp:34
    -
    @ sign_extend
    Definition: vmprofiles.hpp:76
    -
    -
    -
    - -

    ◆ lconstbsxq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lconstbsxq
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "LCONSTBSXQ",
    - -
    8,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool { return instr.mnemonic == ZYDIS_MNEMONIC_CDQE; },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_SUB &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x8;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_RAX;
    -
    } } },
    - -
    @ LCONSTBSXQ
    Definition: vmprofiles.hpp:33
    -
    -
    -
    - -

    ◆ lconstbzxw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lconstbzxw
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "LCONSTBZXW",
    - -
    8,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_SUB &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x2;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_AX;
    -
    } } } }
    -
    @ LCONSTBZXW
    Definition: vmprofiles.hpp:32
    -
    -
    -
    - -

    ◆ lconstdw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lconstdw
    -
    -Initial value:
    = {
    -
    -
    -
    "LCONSTDW",
    - -
    32,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_SUB &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x4;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_EAX;
    -
    } } } }
    -
    @ LCONSTDW
    Definition: vmprofiles.hpp:38
    -
    -

    mov eax, [rsi-0x04] bswap eax add eax, ebx dec eax neg eax xor eax, 0x2FFD187C push rbx add [rsp], eax pop rbx sub rbp, 0x04 mov [rbp], eax add rsi, 0xFFFFFFFFFFFFFFFC

    - -
    -
    - -

    ◆ lconstdwsxq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lconstdwsxq
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "LCONSTDWSXQ",
    - -
    32,
    -
    {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool { return instr.mnemonic == ZYDIS_MNEMONIC_CDQE; },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_SUB && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE && instr.operands[ 1 ].imm.value.u == 0x8;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_RAX;
    -
    } },
    - -
    @ LCONSTDWSXQ
    Definition: vmprofiles.hpp:35
    -
    -
    -
    - -

    ◆ lconstq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lconstq
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "LCONSTQ",
    - -
    64,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_SUB &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x8;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_RAX;
    -
    } } } }
    -
    @ LCONSTQ
    Definition: vmprofiles.hpp:31
    -
    -

    mov rax, [rsi] xor rax, rbx ; transformation bswap rax ; transformation lea rsi, [rsi+8] ; advance VIP… rol rax, 0Ch ; transformation inc rax ; transformation xor rbx, rax ; transformation (update rolling decrypt key) sub rbp, 8 mov [rbp+0], rax

    - -
    -
    - -

    ◆ lconstw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lconstw
    -
    -Initial value:
    = {
    -
    -
    -
    "LCONSTW",
    - -
    16,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_SUB &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x2;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_AX;
    -
    } } } }
    -
    @ LCONSTW
    Definition: vmprofiles.hpp:39
    -
    -
    -
    - -

    ◆ lconstwsxdw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lconstwsxdw
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "LCONSTWSXDW",
    - -
    16,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool { return instr.mnemonic == ZYDIS_MNEMONIC_CWDE; },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_SUB &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x4;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_EAX;
    -
    } } },
    - -
    @ LCONSTWSXDW
    Definition: vmprofiles.hpp:37
    -
    -
    -
    - -

    ◆ lconstwsxq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lconstwsxq
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "LCONSTWSXQ",
    - -
    16,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool { return instr.mnemonic == ZYDIS_MNEMONIC_CDQE; },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_SUB &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x8;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_RAX;
    -
    } } },
    - -
    @ LCONSTWSXQ
    Definition: vmprofiles.hpp:36
    -
    -
    -
    - -

    ◆ lregdw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lregdw
    -
    - -
    -
    - -

    ◆ lregq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lregq
    -
    - -
    -
    - -

    ◆ lrflags

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lrflags
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "LRFLAGS",
    - -
    NULL,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_PUSH && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_ADD &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x8;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool { return instr.mnemonic == ZYDIS_MNEMONIC_POPFQ; } } } }
    -
    @ LRFLAGS
    Definition: vmprofiles.hpp:15
    -
    -
    -
    - -

    ◆ lvsp

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::lvsp
    -
    -Initial value:
    = {
    -
    -
    "LVSP",
    - -
    NULL,
    -
    { { []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 1 ].mem.base == ZYDIS_REGISTER_RBP;
    -
    } } } }
    -
    @ LVSP
    Definition: vmprofiles.hpp:22
    -
    -

    mov rbp [rbp+0]

    - -
    -
    - -

    ◆ mulq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::mulq
    -
    - -
    -
    - -

    ◆ nanddw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::nanddw
    -
    - -
    -
    - -

    ◆ nandq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::nandq
    -
    - -
    -
    - -

    ◆ nandw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::nandw
    -
    - -
    -
    - -

    ◆ pushvsp

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::pushvsp
    -
    -Initial value:
    = {
    -
    -
    -
    "PUSHVSP",
    - -
    NULL,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RAX &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_RBP;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_SUB &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x8;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_RAX;
    -
    } } } }
    -
    @ PUSHVSP
    Definition: vmprofiles.hpp:16
    -
    -
    -
    - -

    ◆ readdw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::readdw
    -
    -Initial value:
    = {
    -
    -
    -
    -
    "READDW",
    - -
    NULL,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_ADD &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE &&
    -
    instr.operands[ 1 ].imm.value.u == 0x4;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_EAX &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 1 ].mem.base == ZYDIS_REGISTER_RAX;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_EAX;
    -
    } } } }
    -
    @ READDW
    Definition: vmprofiles.hpp:42
    -
    -
    -
    - -

    ◆ readq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::readq
    -
    -Initial value:
    = {
    -
    -
    -
    "READQ",
    - -
    NULL,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RAX &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 1 ].mem.base == ZYDIS_REGISTER_RAX;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV && instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_MEMORY &&
    -
    instr.operands[ 0 ].mem.base == ZYDIS_REGISTER_RBP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_RAX;
    -
    } } } }
    -
    @ READQ
    Definition: vmprofiles.hpp:41
    -
    -
    -
    - -

    ◆ shldw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::shldw
    -
    - -
    -
    - -

    ◆ shlq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::shlq
    -
    - -
    -
    - -

    ◆ shrq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::shrq
    -
    - -
    -
    - -

    ◆ shrw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::shrw
    -
    - -
    -
    - -

    ◆ sregdw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::sregdw
    -
    - -
    -
    - -

    ◆ sregq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::sregq
    -
    - -
    -
    - -

    ◆ sregw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::sregw
    -
    - -
    -
    - -

    ◆ vmexit

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::vmexit
    -
    -Initial value:
    = {
    -
    -
    -
    "VMEXIT",
    - -
    NULL,
    -
    { {
    -
    []( const zydis_decoded_instr_t &instr ) -> bool {
    -
    return instr.mnemonic == ZYDIS_MNEMONIC_MOV &&
    -
    instr.operands[ 0 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 0 ].reg.value == ZYDIS_REGISTER_RSP &&
    -
    instr.operands[ 1 ].type == ZYDIS_OPERAND_TYPE_REGISTER &&
    -
    instr.operands[ 1 ].reg.value == ZYDIS_REGISTER_RBP;
    -
    },
    -
    -
    []( const zydis_decoded_instr_t &instr ) -> bool { return instr.mnemonic == ZYDIS_MNEMONIC_RET; } } } }
    -
    @ VMEXIT
    Definition: vmprofiles.hpp:21
    -
    -
    -
    - -

    ◆ writeb

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::writeb
    -
    - -
    -
    - -

    ◆ writedw

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::writedw
    -
    - -
    -
    - -

    ◆ writeq

    - -
    -
    - - - - -
    vm::handler::profile_t vm::handler::profile::writeq
    -
    - -
    -
    -
    - - - - diff --git a/doxygen/html/namespacevm_1_1handler_1_1table.html b/doxygen/html/namespacevm_1_1handler_1_1table.html deleted file mode 100644 index fc3cd24..0000000 --- a/doxygen/html/namespacevm_1_1handler_1_1table.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - -VMProfiler: vm::handler::table Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::handler::table Namespace Reference
    -
    -
    - - - - - - - - - - - - - - -

    -Functions

    std::uintptr_t * get (const zydis_routine_t &vm_entry)
     get the linear virtual address of the vm handler table give a deobfuscated, flattened, vm entry... More...
     
    bool get_transform (const zydis_routine_t &vm_entry, zydis_decoded_instr_t *transform_instr)
     get the single native instruction used to decrypt vm handler entries... More...
     
    std::uint64_t encrypt (zydis_decoded_instr_t &transform_instr, std::uint64_t val)
     encrypt a linear virtual address given the transformation that is used to decrypt the vm handler table entry... this function will apply the inverse of the transformation so you dont need to get the inverse yourself... More...
     
    std::uint64_t decrypt (zydis_decoded_instr_t &transform_instr, std::uint64_t val)
     decrypts a vm handler table entry... More...
     
    -

    Function Documentation

    - -

    ◆ decrypt()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::uint64_t vm::handler::table::decrypt (zydis_decoded_instr_ttransform_instr,
    std::uint64_t val 
    )
    -
    - -

    decrypts a vm handler table entry...

    -
    Parameters
    - - - -
    transform_instrtransformation extracted from vm_entry that decrypts vm handler table entries...
    valencrypted value to be decrypted...
    -
    -
    -
    Returns
    returns the decrypted value...
    - -
    -
    - -

    ◆ encrypt()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::uint64_t vm::handler::table::encrypt (zydis_decoded_instr_ttransform_instr,
    std::uint64_t val 
    )
    -
    - -

    encrypt a linear virtual address given the transformation that is used to decrypt the vm handler table entry... this function will apply the inverse of the transformation so you dont need to get the inverse yourself...

    -
    Parameters
    - - - -
    transform_instrreference to the transformation native instruction...
    valvalue to be encrypted (linear virtual address)
    -
    -
    -
    Returns
    returns the encrypted value...
    - -
    -
    - -

    ◆ get()

    - -
    -
    - - - - - - - - -
    std::uintptr_t * vm::handler::table::get (const zydis_routine_tvm_entry)
    -
    - -

    get the linear virtual address of the vm handler table give a deobfuscated, flattened, vm entry...

    -
    Parameters
    - - -
    vm_entrydeobfuscated, flattened, vm entry...
    -
    -
    -
    Returns
    returns the linear virtual address of the vm handler table...
    - -
    -
    - -

    ◆ get_transform()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool vm::handler::table::get_transform (const zydis_routine_tvm_entry,
    zydis_decoded_instr_ttransform_instr 
    )
    -
    - -

    get the single native instruction used to decrypt vm handler entries...

    -
    Parameters
    - - - -
    vm_entryreference to the deobfuscated, flattened, vm entry...
    transform_instr
    -
    -
    -
    Returns
    - -
    -
    -
    - - - - diff --git a/doxygen/html/namespacevm_1_1instrs.html b/doxygen/html/namespacevm_1_1instrs.html deleted file mode 100644 index f256db9..0000000 --- a/doxygen/html/namespacevm_1_1instrs.html +++ /dev/null @@ -1,490 +0,0 @@ - - - - - - - -VMProfiler: vm::instrs Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::instrs Namespace Reference
    -
    -
    - -

    contains all functions related to virtual instructions... -More...

    - - - - - - - - -

    -Classes

    struct  virt_instr_t
     
    struct  jcc_data
     
    struct  code_block_t
     
    - - - -

    -Enumerations

    enum class  jcc_type { none -, branching -, absolute - }
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    bool get_rva_decrypt (const zydis_routine_t &vm_entry, std::vector< zydis_decoded_instr_t > &transform_instrs)
     gets the native instructions that are used to decrypt the relative virtual address to virtual instructions located on the stack at RSP+0xA0... you can learn about this https://back.engineering/17/05/2021/#vm_entry More...
     
    std::pair< std::uint64_t, std::uint64_t > decrypt_operand (transform::map_t &transforms, std::uint64_t operand, std::uint64_t rolling_key)
     decrypt virtual instruction operand given the decryption transformations... you can read about these transformations https://back.engineering/17/05/2021/#operand-decryption More...
     
    std::pair< std::uint64_t, std::uint64_t > encrypt_operand (transform::map_t &transforms, std::uint64_t operand, std::uint64_t rolling_key)
     encrypt a virtual instructions operand given the transformations to decrypt the operand... the transformations are inversed by this functions so you dont need to worry about doing that. More...
     
    std::optional< virt_instr_tget (vm::ctx_t &ctx, vmp2::v2::entry_t &entry)
     get virt_instr_t filled in with data given a vmp2 trace entry and vm context... More...
     
    std::optional< std::uint64_t > get_imm (vm::ctx_t &ctx, std::uint8_t imm_size, std::uintptr_t vip)
     gets the encrypted second operand (imm) given vip and vm::ctx_t... More...
     
    std::optional< jcc_dataget_jcc_data (vm::ctx_t &ctx, code_block_t &code_block)
     get jcc data out of a code block... this function will loop over the code block and look for the last LCONSTDW in the virtual instructions. More...
     
    std::uintptr_t code_block_addr (const vm::ctx_t &ctx, const vmp2::v2::entry_t &entry)
     the top of the stack will contain the lower 32bits of the RVA to the virtual instructions that will be jumping too... the RVA is image based (not module based, but optional header image based)... this means the value ontop of the stack could be "40007fd8" with image base being 0x140000000... as you can see the 0x100000000 is missing... the below statement deals with this... More...
     
    std::uintptr_t code_block_addr (const vm::ctx_t &ctx, const std::uint32_t lower_32bits)
     same routine as above except lower_32bits is passed directly and not extracted from the stack... More...
     
    -

    Detailed Description

    -

    contains all functions related to virtual instructions...

    -

    Enumeration Type Documentation

    - -

    ◆ jcc_type

    - -
    -
    - - - - - -
    - - - - -
    enum vm::instrs::jcc_type
    -
    -strong
    -
    - - - - -
    Enumerator
    none 
    branching 
    absolute 
    - -
    -
    -

    Function Documentation

    - -

    ◆ code_block_addr() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::uintptr_t vm::instrs::code_block_addr (const vm::ctx_tctx,
    const std::uint32_t lower_32bits 
    )
    -
    - -

    same routine as above except lower_32bits is passed directly and not extracted from the stack...

    -
    Parameters
    - - - -
    ctxvm context
    lower_32bitslower 32bits of the relative virtual address...
    -
    -
    -
    Returns
    returns full linear virtual address of code block...
    - -
    -
    - -

    ◆ code_block_addr() [2/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::uintptr_t vm::instrs::code_block_addr (const vm::ctx_tctx,
    const vmp2::v2::entry_tentry 
    )
    -
    - -

    the top of the stack will contain the lower 32bits of the RVA to the virtual instructions that will be jumping too... the RVA is image based (not module based, but optional header image based)... this means the value ontop of the stack could be "40007fd8" with image base being 0x140000000... as you can see the 0x100000000 is missing... the below statement deals with this...

    -
    Parameters
    - - - -
    ctxvm context
    entrycurrent trace entry for virtual JMP instruction
    -
    -
    -
    Returns
    returns linear virtual address of the next code block...
    - -
    -
    - -

    ◆ decrypt_operand()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    std::pair< std::uint64_t, std::uint64_t > vm::instrs::decrypt_operand (transform::map_ttransforms,
    std::uint64_t operand,
    std::uint64_t rolling_key 
    )
    -
    - -

    decrypt virtual instruction operand given the decryption transformations... you can read about these transformations https://back.engineering/17/05/2021/#operand-decryption

    -
    Parameters
    - - - - -
    transformsdecryption transformations...
    operandencrypted virtual instruction operand...
    rolling_keythe decryption key (RBX)...
    -
    -
    -
    Returns
    - -
    -
    - -

    ◆ encrypt_operand()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    std::pair< std::uint64_t, std::uint64_t > vm::instrs::encrypt_operand (transform::map_ttransforms,
    std::uint64_t operand,
    std::uint64_t rolling_key 
    )
    -
    - -

    encrypt a virtual instructions operand given the transformations to decrypt the operand... the transformations are inversed by this functions so you dont need to worry about doing that.

    -

    you can learn about transformations https://back.engineering/17/05/2021/#operand-decryption

    Parameters
    - - - - -
    transformstransformations to decrypt operand, these transformations are inversed by the function...
    operandoperand to be encrypted...
    rolling_keyencryption key... (RBX)...
    -
    -
    -
    Returns
    - -
    -
    - -

    ◆ get()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::optional< virt_instr_t > vm::instrs::get (vm::ctx_tctx,
    vmp2::v2::entry_tentry 
    )
    -
    - -

    get virt_instr_t filled in with data given a vmp2 trace entry and vm context...

    -
    Parameters
    - - - -
    ctxcurrent vm context
    entryvmp2 trace entry containing all of the native/virtual register/stack values...
    -
    -
    -
    Returns
    returns a filled in virt_instr_t on success...
    - -
    -
    - -

    ◆ get_imm()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    std::optional< std::uint64_t > vm::instrs::get_imm (vm::ctx_tctx,
    std::uint8_t imm_size,
    std::uintptr_t vip 
    )
    -
    - -

    gets the encrypted second operand (imm) given vip and vm::ctx_t...

    -
    Parameters
    - - - - -
    ctxvm context
    imm_sizeimmediate value size in bits...
    vipvirtual instruction pointer, linear virtual address...
    -
    -
    -
    Returns
    returns immediate value if imm_size is not 0...
    - -
    -
    - -

    ◆ get_jcc_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::optional< jcc_data > vm::instrs::get_jcc_data (vm::ctx_tctx,
    code_block_tcode_block 
    )
    -
    - -

    get jcc data out of a code block... this function will loop over the code block and look for the last LCONSTDW in the virtual instructions.

    -

    it will then loop and look for all PUSHVSP's, checking each to see if the stack contains two encrypted rva's to each branch.. if there is not two encrypted rva's then the virtual jmp instruction only has one dest...

    -
    Parameters
    - - - -
    ctxvm context
    code_blockcode block that does not have its jcc_data yet
    -
    -
    -
    Returns
    if last lconstdw is found, return filled in jcc_data structure...
    - -
    -
    - -

    ◆ get_rva_decrypt()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool vm::instrs::get_rva_decrypt (const zydis_routine_tvm_entry,
    std::vector< zydis_decoded_instr_t > & transform_instrs 
    )
    -
    - -

    gets the native instructions that are used to decrypt the relative virtual address to virtual instructions located on the stack at RSP+0xA0... you can learn about this https://back.engineering/17/05/2021/#vm_entry

    -
    Parameters
    - - - -
    vm_entrypass by reference of the specific vm entry you want to get the decryption instructions from...
    transform_instrspass by reference vector that will be filled with the decryption instructions...
    -
    -
    -
    Returns
    returns true if the decryption instructions are extracted...
    - -
    -
    -
    - - - - diff --git a/doxygen/html/namespacevm_1_1lifters.html b/doxygen/html/namespacevm_1_1lifters.html deleted file mode 100644 index 9c17063..0000000 --- a/doxygen/html/namespacevm_1_1lifters.html +++ /dev/null @@ -1,976 +0,0 @@ - - - - - - - -VMProfiler: vm::lifters Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::lifters Namespace Reference
    -
    -
    - - - - - - -

    -Typedefs

    using lifter_callback_t = std::function< void(vtil::basic_block *, vm::instrs::virt_instr_t *, vmp2::v3::code_block_t *) >
     
    using lifter_t = std::pair< vm::handler::mnemonic_t, lifter_callback_t >
     
    - - - -

    -Functions

    constexpr vtil::register_desc make_virtual_register (uint8_t context_offset, uint8_t size)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    vm::lifters::lifter_t lregq
     
    vm::lifters::lifter_t lregdw
     
    vm::lifters::lifter_t addq
     
    vm::lifters::lifter_t adddw
     
    vm::lifters::lifter_t addw
     
    vm::lifters::lifter_t sregq
     
    vm::lifters::lifter_t sregdw
     
    vm::lifters::lifter_t sregw
     
    vm::lifters::lifter_t lconstq
     
    vm::lifters::lifter_t lconstdw
     
    vm::lifters::lifter_t lconstw
     
    vm::lifters::lifter_t lconstbzxw
     
    vm::lifters::lifter_t lconstbsxdw
     
    vm::lifters::lifter_t lconstbsxq
     
    vm::lifters::lifter_t lconstdwsxq
     
    vm::lifters::lifter_t lconstwsxq
     
    vm::lifters::lifter_t lconstwsxdw
     
    vm::lifters::lifter_t nandq
     
    vm::lifters::lifter_t nanddw
     
    vm::lifters::lifter_t nandw
     
    vm::lifters::lifter_t readq
     
    vm::lifters::lifter_t readdw
     
    vm::lifters::lifter_t readw
     
    vm::lifters::lifter_t shrq
     
    vm::lifters::lifter_t shrw
     
    vm::lifters::lifter_t jmp
     
    vm::lifters::lifter_t vmexit
     
    vm::lifters::lifter_t pushvsp
     
    vm::lifters::lifter_t lrflags
     
    vm::lifters::lifter_t lvsp
     
    std::vector< vm::lifters::lifter_t * > all
     
    -

    Typedef Documentation

    - -

    ◆ lifter_callback_t

    - -
    -
    - - - - -
    using vm::lifters::lifter_callback_t = typedef std::function< void( vtil::basic_block *, vm::instrs::virt_instr_t *, vmp2::v3::code_block_t* ) >
    -
    - -
    -
    - -

    ◆ lifter_t

    - -
    -
    - - - - -
    using vm::lifters::lifter_t = typedef std::pair< vm::handler::mnemonic_t, lifter_callback_t >
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ make_virtual_register()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    constexpr vtil::register_desc vm::lifters::make_virtual_register (uint8_t context_offset,
    uint8_t size 
    )
    -
    -inlineconstexpr
    -
    - -
    -
    -

    Variable Documentation

    - -

    ◆ adddw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::adddw
    -
    -Initial value:
    = {
    -
    -
    vm::handler::ADDDW, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t* code_blk ) {
    -
    auto [ t0, t1 ] = blk->tmp( 32, 32 );
    -
    blk->pop( t0 );
    -
    blk->pop( t1 );
    -
    blk->add( t1, t0 );
    -
    blk->push( t1 );
    -
    blk->pushf();
    -
    } }
    -
    @ ADDDW
    Definition: vmprofiles.hpp:51
    -
    Definition: vmp2.hpp:150
    -
    Definition: vmp2.hpp:217
    -
    -
    -
    - -

    ◆ addq

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::addq
    -
    -Initial value:
    = {
    -
    -
    vm::handler::ADDQ, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t* code_blk ) {
    -
    auto [ t0, t1 ] = blk->tmp( 64, 64 );
    -
    blk->pop( t0 );
    -
    blk->pop( t1 );
    -
    blk->add( t1, t0 );
    -
    blk->push( t1 );
    -
    blk->pushf();
    -
    } }
    -
    @ ADDQ
    Definition: vmprofiles.hpp:50
    -
    -
    -
    - -

    ◆ addw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::addw
    -
    -Initial value:
    = {
    -
    -
    vm::handler::ADDW, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t* code_blk ) {
    -
    auto [ t0, t1 ] = blk->tmp( 16, 16 );
    -
    blk->pop( t0 );
    -
    blk->pop( t1 );
    -
    blk->add( t1, t0 );
    -
    blk->push( t1 );
    -
    blk->pushf();
    -
    } }
    -
    @ ADDW
    Definition: vmprofiles.hpp:52
    -
    -
    -
    - -

    ◆ all

    - -
    -
    - - - - - -
    - - - - -
    std::vector< vm::lifters::lifter_t * > vm::lifters::all
    -
    -inline
    -
    - -
    -
    - -

    ◆ jmp

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::jmp
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    if ( code_blk->jcc.has_jcc )
    -
    {
    -
    -
    blk->js( vtil::REG_FLAGS.select( 1, 11 ), code_blk->jcc.block_addr[ 0 ] - vinstr->trace_data.regs.r13,
    -
    code_blk->jcc.block_addr[ 1 ] - vinstr->trace_data.regs.r13 );
    -
    }
    -
    else
    -
    blk->jmp( vinstr->trace_data.vsp.qword[ 0 ] - vinstr->trace_data.regs.r13 );
    -
    } }
    -
    @ JMP
    Definition: vmprofiles.hpp:20
    -
    -
    -
    - -

    ◆ lconstbsxdw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lconstbsxdw
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( vtil::operand( vinstr->operand.imm.u, 32 ) );
    -
    } }
    -
    @ LCONSTBSXDW
    Definition: vmprofiles.hpp:34
    -
    -
    -
    - -

    ◆ lconstbsxq

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lconstbsxq
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
    -
    } }
    -
    @ LCONSTBSXQ
    Definition: vmprofiles.hpp:33
    -
    -
    -
    - -

    ◆ lconstbzxw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lconstbzxw
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( vtil::operand( vinstr->operand.imm.u, 16 ) );
    -
    } }
    -
    @ LCONSTBZXW
    Definition: vmprofiles.hpp:32
    -
    -
    -
    - -

    ◆ lconstdw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lconstdw
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( vtil::operand( vinstr->operand.imm.u, 32 ) );
    -
    } }
    -
    @ LCONSTDW
    Definition: vmprofiles.hpp:38
    -
    -
    -
    - -

    ◆ lconstdwsxq

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lconstdwsxq
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
    -
    } }
    -
    @ LCONSTDWSXQ
    Definition: vmprofiles.hpp:35
    -
    -
    -
    - -

    ◆ lconstq

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lconstq
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
    -
    } }
    -
    @ LCONSTQ
    Definition: vmprofiles.hpp:31
    -
    -
    -
    - -

    ◆ lconstw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lconstw
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( vtil::operand( vinstr->operand.imm.u, 16 ) );
    -
    } }
    -
    @ LCONSTW
    Definition: vmprofiles.hpp:39
    -
    -
    -
    - -

    ◆ lconstwsxdw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lconstwsxdw
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( vtil::operand( vinstr->operand.imm.u, 32 ) );
    -
    } }
    -
    @ LCONSTWSXDW
    Definition: vmprofiles.hpp:37
    -
    -
    -
    - -

    ◆ lconstwsxq

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lconstwsxq
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
    -
    } }
    -
    @ LCONSTWSXQ
    Definition: vmprofiles.hpp:36
    -
    -
    -
    - -

    ◆ lregdw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lregdw
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( make_virtual_register( vinstr->operand.imm.u, 4 ) );
    -
    } }
    -
    @ LREGDW
    Definition: vmprofiles.hpp:29
    -
    constexpr vtil::register_desc make_virtual_register(uint8_t context_offset, uint8_t size)
    Definition: vmlifters.hpp:12
    -
    -
    -
    - -

    ◆ lregq

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lregq
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->push( make_virtual_register( vinstr->operand.imm.u, 8 ) );
    -
    } }
    -
    @ LREGQ
    Definition: vmprofiles.hpp:28
    -
    -
    -
    - -

    ◆ lrflags

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lrflags
    -
    -Initial value:
    = {
    -
    -
    vm::handler::LRFLAGS, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr,
    -
    vmp2::v3::code_block_t *code_blk ) { blk->push( vtil::REG_FLAGS ); } }
    -
    @ LRFLAGS
    Definition: vmprofiles.hpp:15
    -
    -
    -
    - -

    ◆ lvsp

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::lvsp
    -
    -Initial value:
    = {
    -
    -
    vm::handler::LVSP, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr,
    -
    vmp2::v3::code_block_t *code_blk ) { blk->pop( vtil::REG_SP ); } }
    -
    @ LVSP
    Definition: vmprofiles.hpp:22
    -
    -
    -
    - -

    ◆ nanddw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::nanddw
    -
    -Initial value:
    = {
    -
    -
    -
    -
    -
    -
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    auto [ t1, t2 ] = blk->tmp( 32, 32 );
    -
    blk->pop( t1 );
    -
    blk->pop( t2 );
    -
    -
    blk->bnot( t1 );
    -
    blk->bnot( t2 );
    -
    -
    blk->band( t1, t2 );
    -
    blk->push( t1 );
    -
    blk->pushf();
    -
    } }
    -
    @ NANDDW
    Definition: vmprofiles.hpp:61
    -
    -
    -
    - -

    ◆ nandq

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::nandq
    -
    -Initial value:
    = {
    -
    -
    -
    -
    -
    -
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    auto [ t1, t2 ] = blk->tmp( 64, 64 );
    -
    blk->pop( t1 );
    -
    blk->pop( t2 );
    -
    -
    blk->bnot( t1 );
    -
    blk->bnot( t2 );
    -
    -
    blk->band( t1, t2 );
    -
    blk->push( t1 );
    -
    blk->pushf();
    -
    } }
    -
    @ NANDQ
    Definition: vmprofiles.hpp:60
    -
    -
    -
    - -

    ◆ nandw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::nandw
    -
    -Initial value:
    = {
    -
    -
    -
    -
    -
    -
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    auto [ t1, t2 ] = blk->tmp( 16, 16 );
    -
    blk->pop( t1 );
    -
    blk->pop( t2 );
    -
    -
    blk->bnot( t1 );
    -
    blk->bnot( t2 );
    -
    -
    blk->band( t1, t2 );
    -
    blk->push( t1 );
    -
    blk->pushf();
    -
    } }
    -
    @ NANDW
    Definition: vmprofiles.hpp:62
    -
    -
    -
    - -

    ◆ pushvsp

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::pushvsp
    -
    -Initial value:
    = {
    -
    -
    vm::handler::PUSHVSP, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr,
    -
    vmp2::v3::code_block_t *code_blk ) { blk->push( vtil::REG_SP ); } }
    -
    @ PUSHVSP
    Definition: vmprofiles.hpp:16
    -
    -
    -
    - -

    ◆ readdw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::readdw
    -
    -Initial value:
    = {
    -
    -
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    auto [ t0, t1 ] = blk->tmp( 64, 32 );
    -
    blk->pop( t0 );
    -
    blk->ldd( t1, t0, vtil::make_imm( 0ull ) );
    -
    blk->push( t1 );
    -
    } }
    -
    @ READDW
    Definition: vmprofiles.hpp:42
    -
    -
    -
    - -

    ◆ readq

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::readq
    -
    -Initial value:
    = {
    -
    -
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    auto [ t0, t1 ] = blk->tmp( 64, 64 );
    -
    blk->pop( t0 );
    -
    blk->ldd( t1, t0, vtil::make_imm( 0ull ) );
    -
    blk->push( t1 );
    -
    } }
    -
    @ READQ
    Definition: vmprofiles.hpp:41
    -
    -
    -
    - -

    ◆ readw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::readw
    -
    -Initial value:
    = {
    -
    -
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    auto [ t0, t1 ] = blk->tmp( 64, 16 );
    -
    blk->pop( t0 );
    -
    blk->ldd( t1, t0, vtil::make_imm( 0ull ) );
    -
    blk->push( t1 );
    -
    } }
    -
    @ READW
    Definition: vmprofiles.hpp:43
    -
    -
    -
    - -

    ◆ shrq

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::shrq
    -
    -Initial value:
    = {
    -
    -
    -
    -
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    auto [ t0, t1 ] = blk->tmp( 64, 8 );
    -
    blk->pop( t0 );
    -
    blk->pop( t1 );
    -
    blk->bshr( t0, t1 );
    -
    blk->push( t0 );
    -
    blk->pushf();
    -
    } }
    -
    @ SHRQ
    Definition: vmprofiles.hpp:57
    -
    -
    -
    - -

    ◆ shrw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::shrw
    -
    -Initial value:
    = {
    -
    -
    -
    -
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    auto [ t0, t1 ] = blk->tmp( 16, 8 );
    -
    blk->pop( t0 );
    -
    blk->pop( t1 );
    -
    blk->bshr( t0, t1 );
    -
    blk->push( t0 );
    -
    blk->pushf();
    -
    } }
    -
    @ SHRW
    Definition: vmprofiles.hpp:58
    -
    -
    -
    - -

    ◆ sregdw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::sregdw
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->pop( make_virtual_register( vinstr->operand.imm.u, 4 ) );
    -
    } }
    -
    @ SREGDW
    Definition: vmprofiles.hpp:25
    -
    -
    -
    - -

    ◆ sregq

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::sregq
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->pop( make_virtual_register( vinstr->operand.imm.u, 8 ) );
    -
    } }
    -
    @ SREGQ
    Definition: vmprofiles.hpp:24
    -
    -
    -
    - -

    ◆ sregw

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::sregw
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->pop( make_virtual_register( vinstr->operand.imm.u, 2 ) );
    -
    } }
    -
    @ SREGW
    Definition: vmprofiles.hpp:26
    -
    -
    -
    - -

    ◆ vmexit

    - -
    -
    - - - - -
    vm::lifters::lifter_t vm::lifters::vmexit
    -
    -Initial value:
    = {
    -
    - -
    []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
    -
    blk->vexit( vtil::make_imm( vinstr->trace_data.vsp.qword[ 0x13 ] - vinstr->trace_data.regs.r13 ) );
    -
    } }
    -
    @ VMEXIT
    Definition: vmprofiles.hpp:21
    -
    -
    -
    -
    - - - - diff --git a/doxygen/html/namespacevm_1_1transform.html b/doxygen/html/namespacevm_1_1transform.html deleted file mode 100644 index 2617e67..0000000 --- a/doxygen/html/namespacevm_1_1transform.html +++ /dev/null @@ -1,1232 +0,0 @@ - - - - - - - -VMProfiler: vm::transform Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::transform Namespace Reference
    -
    -
    - - - - - - - - - -

    -Typedefs

    template<typename T >
    using transform_t = std::function< T(T, T) >
     transform function, such as ADD, SUB, BSWAP... etc... More...
     
    using map_t = std::map< transform::type, zydis_decoded_instr_t >
     map of transform type to zydis decoded instruction of the transform... More...
     
    - - - - -

    -Enumerations

    enum class  type {
    -  generic0 -, rolling_key -, generic1 -, generic2 -,
    -  generic3 -, update_key -
    - }
     type of transformation... More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    template<class T >
    __ROL__ (T value, int count)
     rotate left template function take from IDA SDK... More...
     
    u8 __ROL1__ (u8 value, int count)
     rotate left a one byte value... More...
     
    u16 __ROL2__ (u16 value, int count)
     rotate left a two byte value... More...
     
    u32 __ROL4__ (u32 value, int count)
     rotate left a four byte value... More...
     
    u64 __ROL8__ (u64 value, int count)
     rotate left an eight byte value... More...
     
    u8 __ROR1__ (u8 value, int count)
     rotate right a one byte value... More...
     
    u16 __ROR2__ (u16 value, int count)
     rotate right a two byte value... More...
     
    u32 __ROR4__ (u32 value, int count)
     rotate right a four byte value... More...
     
    u64 __ROR8__ (u64 value, int count)
     rotate right an eight byte value... More...
     
    bool valid (zydis_mnemonic_t op)
     determines if the given mnemonic is a valid transformation... More...
     
    void inverse_transforms (transform::map_t &transforms, transform::map_t &inverse)
     inverse operand decryption transformations... More...
     
    auto inverse_transforms (std::vector< zydis_decoded_instr_t > &instrs) -> bool
     inverse transformations given a vector of them... More...
     
    auto apply (std::uint8_t bitsize, ZydisMnemonic op, std::uint64_t a, std::uint64_t b) -> std::uint64_t
     
    bool has_imm (const zydis_decoded_instr_t *instr)
     determines if a given decoded instruction has a second operand that is an immediate value... More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    template<class T >
    const auto _bswap
     
    template<class T >
    const auto _add = []( T a, T b ) -> T { return a + b; }
     
    template<class T >
    const auto _xor = []( T a, T b ) -> T { return a ^ b; }
     
    template<class T >
    const auto _sub = []( T a, T b ) -> T { return a - b; }
     
    template<class T >
    const auto _neg = []( T a, T b ) -> T { return a * -1; }
     
    template<class T >
    const auto _not = []( T a, T b ) -> T { return ~a; }
     
    template<class T >
    const auto _ror
     
    template<class T >
    const auto _rol
     
    template<class T >
    const auto _inc = []( T a, T b ) -> T { return a + 1; }
     
    template<class T >
    const auto _dec = []( T a, T b ) -> T { return a - 1; }
     
    template<class T >
    std::map< zydis_mnemonic_t, transform_t< T > > transforms
     
    std::map< zydis_mnemonic_t, zydis_mnemonic_tinverse
     
    -

    Typedef Documentation

    - -

    ◆ map_t

    - -
    -
    - - - - -
    using vm::transform::map_t = typedef std::map< transform::type, zydis_decoded_instr_t >
    -
    - -

    map of transform type to zydis decoded instruction of the transform...

    - -
    -
    - -

    ◆ transform_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using vm::transform::transform_t = typedef std::function< T( T, T ) >
    -
    - -

    transform function, such as ADD, SUB, BSWAP... etc...

    -
    Template Parameters
    - - -
    Treturns the transform result...
    -
    -
    - -
    -
    -

    Enumeration Type Documentation

    - -

    ◆ type

    - -
    -
    - - - - - -
    - - - - -
    enum vm::transform::type
    -
    -strong
    -
    - -

    type of transformation...

    - - - - - - - -
    Enumerator
    generic0 
    rolling_key 
    generic1 
    generic2 
    generic3 
    update_key 
    - -
    -
    -

    Function Documentation

    - -

    ◆ __ROL1__()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    u8 vm::transform::__ROL1__ (u8 value,
    int count 
    )
    -
    -inline
    -
    - -

    rotate left a one byte value...

    -
    Parameters
    - - - -
    valuebyte value
    countnumber of bits to rotate
    -
    -
    -
    Returns
    return rotated value...
    - -
    -
    - -

    ◆ __ROL2__()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    u16 vm::transform::__ROL2__ (u16 value,
    int count 
    )
    -
    -inline
    -
    - -

    rotate left a two byte value...

    -
    Parameters
    - - - -
    valuetwo byte value to rotate...
    countnumber of bits to rotate...
    -
    -
    -
    Returns
    return rotated value...
    - -
    -
    - -

    ◆ __ROL4__()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    u32 vm::transform::__ROL4__ (u32 value,
    int count 
    )
    -
    -inline
    -
    - -

    rotate left a four byte value...

    -
    Parameters
    - - - -
    valuefour byte value to rotate...
    countnumber of bits to shift...
    -
    -
    -
    Returns
    return rotated value...
    - -
    -
    - -

    ◆ __ROL8__()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    u64 vm::transform::__ROL8__ (u64 value,
    int count 
    )
    -
    -inline
    -
    - -

    rotate left an eight byte value...

    -
    Parameters
    - - - -
    valueeight byte value...
    countnumber of bits to shift...
    -
    -
    -
    Returns
    return rotated value...
    - -
    -
    - -

    ◆ __ROL__()

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    T vm::transform::__ROL__ (value,
    int count 
    )
    -
    -inline
    -
    - -

    rotate left template function take from IDA SDK...

    -
    Template Parameters
    - - -
    Ttype of data to rotate left...
    -
    -
    -
    Parameters
    - - - -
    valuevalue to rotate left
    countnumber of bits to rotate left...
    -
    -
    -
    Returns
    returns the rotated value...
    - -
    -
    - -

    ◆ __ROR1__()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    u8 vm::transform::__ROR1__ (u8 value,
    int count 
    )
    -
    -inline
    -
    - -

    rotate right a one byte value...

    -
    Parameters
    - - - -
    valueone byte value...
    countnumber of bits to shift...
    -
    -
    -
    Returns
    return rotated value...
    - -
    -
    - -

    ◆ __ROR2__()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    u16 vm::transform::__ROR2__ (u16 value,
    int count 
    )
    -
    -inline
    -
    - -

    rotate right a two byte value...

    -
    Parameters
    - - - -
    valuetwo byte value to rotate...
    countnumber of bits to shift...
    -
    -
    -
    Returns
    - -
    -
    - -

    ◆ __ROR4__()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    u32 vm::transform::__ROR4__ (u32 value,
    int count 
    )
    -
    -inline
    -
    - -

    rotate right a four byte value...

    -
    Parameters
    - - - -
    valuefour byte value to rotate...
    countnumber of bits to rotate...
    -
    -
    -
    Returns
    return rotated value...
    - -
    -
    - -

    ◆ __ROR8__()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    u64 vm::transform::__ROR8__ (u64 value,
    int count 
    )
    -
    -inline
    -
    - -

    rotate right an eight byte value...

    -
    Parameters
    - - - -
    valueeight byte value
    countnumber of bits to rotate...
    -
    -
    -
    Returns
    return rotated value...
    - -
    -
    - -

    ◆ apply()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    auto vm::transform::apply (std::uint8_t bitsize,
    ZydisMnemonic op,
    std::uint64_t a,
    std::uint64_t b 
    ) -> std::uint64_t -
    -
    -inline
    -
    - -
    -
    - -

    ◆ has_imm()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool vm::transform::has_imm (const zydis_decoded_instr_tinstr)
    -
    -inline
    -
    - -

    determines if a given decoded instruction has a second operand that is an immediate value...

    -
    Parameters
    - - -
    instrpointer to a decoded instruction...
    -
    -
    -
    Returns
    returns true if the second operand is of type immediate...
    - -
    -
    - -

    ◆ inverse_transforms() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - -
    auto vm::transform::inverse_transforms (std::vector< zydis_decoded_instr_t > & instrs) -> bool -
    -
    -inline
    -
    - -

    inverse transformations given a vector of them...

    -
    Parameters
    - - -
    instrsreference to a vector of transformations...
    -
    -
    -
    Returns
    returns true if all transformations were inversed...
    - -
    -
    - -

    ◆ inverse_transforms() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    void vm::transform::inverse_transforms (transform::map_ttransforms,
    transform::map_tinverse 
    )
    -
    -inline
    -
    - -

    inverse operand decryption transformations...

    -
    Parameters
    - - - -
    transformsreference to the transformations to be inversed...
    inversereference to the resulting inversed transformations...
    -
    -
    - -
    -
    - -

    ◆ valid()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool vm::transform::valid (zydis_mnemonic_t op)
    -
    -inline
    -
    - -

    determines if the given mnemonic is a valid transformation...

    -
    Parameters
    - - -
    opmnemonic of the native instruction...
    -
    -
    -
    Returns
    returns true if the mnemonic is a transformation...
    - -
    -
    -

    Variable Documentation

    - -

    ◆ _add

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    const auto vm::transform::_add = []( T a, T b ) -> T { return a + b; }
    -
    -inline
    -
    - -
    -
    - -

    ◆ _bswap

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    const auto vm::transform::_bswap
    -
    -inline
    -
    -Initial value:
    = []( T a, T b ) -> T {
    -
    if constexpr ( std::is_same_v< T, std::uint64_t > )
    -
    return _byteswap_uint64( a );
    -
    if constexpr ( std::is_same_v< T, std::uint32_t > )
    -
    return _byteswap_ulong( a );
    -
    if constexpr ( std::is_same_v< T, std::uint16_t > )
    -
    return _byteswap_ushort( a );
    -
    -
    throw std::invalid_argument( "invalid type size..." );
    -
    }
    -
    -
    -
    - -

    ◆ _dec

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    const auto vm::transform::_dec = []( T a, T b ) -> T { return a - 1; }
    -
    -inline
    -
    - -
    -
    - -

    ◆ _inc

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    const auto vm::transform::_inc = []( T a, T b ) -> T { return a + 1; }
    -
    -inline
    -
    - -
    -
    - -

    ◆ _neg

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    const auto vm::transform::_neg = []( T a, T b ) -> T { return a * -1; }
    -
    -inline
    -
    - -
    -
    - -

    ◆ _not

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    const auto vm::transform::_not = []( T a, T b ) -> T { return ~a; }
    -
    -inline
    -
    - -
    -
    - -

    ◆ _rol

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    const auto vm::transform::_rol
    -
    -inline
    -
    -Initial value:
    = []( T a, T b ) -> T {
    -
    if constexpr ( std::is_same_v< T, std::uint64_t > )
    -
    return __ROL8__( a, b );
    -
    if constexpr ( std::is_same_v< T, std::uint32_t > )
    -
    return __ROL4__( a, b );
    -
    if constexpr ( std::is_same_v< T, std::uint16_t > )
    -
    return __ROL2__( a, b );
    -
    if constexpr ( std::is_same_v< T, std::uint8_t > )
    -
    return __ROL1__( a, b );
    -
    -
    throw std::invalid_argument( "invalid type size..." );
    -
    }
    -
    u8 __ROL1__(u8 value, int count)
    rotate left a one byte value...
    Definition: transform.hpp:46
    -
    u32 __ROL4__(u32 value, int count)
    rotate left a four byte value...
    Definition: transform.hpp:68
    -
    u64 __ROL8__(u64 value, int count)
    rotate left an eight byte value...
    Definition: transform.hpp:79
    -
    u16 __ROL2__(u16 value, int count)
    rotate left a two byte value...
    Definition: transform.hpp:57
    -
    -
    -
    - -

    ◆ _ror

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    const auto vm::transform::_ror
    -
    -inline
    -
    -Initial value:
    = []( T a, T b ) -> T {
    -
    if constexpr ( std::is_same_v< T, std::uint64_t > )
    -
    return __ROR8__( a, b );
    -
    if constexpr ( std::is_same_v< T, std::uint32_t > )
    -
    return __ROR4__( a, b );
    -
    if constexpr ( std::is_same_v< T, std::uint16_t > )
    -
    return __ROR2__( a, b );
    -
    if constexpr ( std::is_same_v< T, std::uint8_t > )
    -
    return __ROR1__( a, b );
    -
    -
    throw std::invalid_argument( "invalid type size..." );
    -
    }
    -
    u8 __ROR1__(u8 value, int count)
    rotate right a one byte value...
    Definition: transform.hpp:90
    -
    u32 __ROR4__(u32 value, int count)
    rotate right a four byte value...
    Definition: transform.hpp:112
    -
    u64 __ROR8__(u64 value, int count)
    rotate right an eight byte value...
    Definition: transform.hpp:123
    -
    u16 __ROR2__(u16 value, int count)
    rotate right a two byte value...
    Definition: transform.hpp:101
    -
    -
    -
    - -

    ◆ _sub

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    const auto vm::transform::_sub = []( T a, T b ) -> T { return a - b; }
    -
    -inline
    -
    - -
    -
    - -

    ◆ _xor

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    const auto vm::transform::_xor = []( T a, T b ) -> T { return a ^ b; }
    -
    -inline
    -
    - -
    -
    - -

    ◆ inverse

    - -
    -
    - - - - - -
    - - - - -
    std::map< zydis_mnemonic_t, zydis_mnemonic_t > vm::transform::inverse
    -
    -inline
    -
    -Initial value:
    = {
    -
    { ZYDIS_MNEMONIC_ADD, ZYDIS_MNEMONIC_SUB }, { ZYDIS_MNEMONIC_XOR, ZYDIS_MNEMONIC_XOR },
    -
    { ZYDIS_MNEMONIC_BSWAP, ZYDIS_MNEMONIC_BSWAP }, { ZYDIS_MNEMONIC_SUB, ZYDIS_MNEMONIC_ADD },
    -
    { ZYDIS_MNEMONIC_NEG, ZYDIS_MNEMONIC_NEG }, { ZYDIS_MNEMONIC_NOT, ZYDIS_MNEMONIC_NOT },
    -
    { ZYDIS_MNEMONIC_ROR, ZYDIS_MNEMONIC_ROL }, { ZYDIS_MNEMONIC_ROL, ZYDIS_MNEMONIC_ROR },
    -
    { ZYDIS_MNEMONIC_INC, ZYDIS_MNEMONIC_DEC }, { ZYDIS_MNEMONIC_DEC, ZYDIS_MNEMONIC_INC } }
    -
    -
    -
    - -

    ◆ transforms

    - -
    -
    -
    -template<class T >
    - - - - - -
    - - - - -
    std::map< zydis_mnemonic_t, transform_t< T > > vm::transform::transforms
    -
    -inline
    -
    -Initial value:
    = {
    -
    { ZYDIS_MNEMONIC_ADD, _add< T > }, { ZYDIS_MNEMONIC_XOR, _xor< T > }, { ZYDIS_MNEMONIC_BSWAP, _bswap< T > },
    -
    { ZYDIS_MNEMONIC_SUB, _sub< T > }, { ZYDIS_MNEMONIC_NEG, _neg< T > }, { ZYDIS_MNEMONIC_NOT, _not< T > },
    -
    { ZYDIS_MNEMONIC_ROR, _ror< T > }, { ZYDIS_MNEMONIC_ROL, _rol< T > }, { ZYDIS_MNEMONIC_INC, _inc< T > },
    -
    { ZYDIS_MNEMONIC_DEC, _dec< T > } }
    -
    -
    -
    -
    - - - - diff --git a/doxygen/html/namespacevm_1_1util.html b/doxygen/html/namespacevm_1_1util.html deleted file mode 100644 index f0810a3..0000000 --- a/doxygen/html/namespacevm_1_1util.html +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - -VMProfiler: vm::util Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::util Namespace Reference
    -
    -
    - -

    utils used by the other cpp files... misc things that get used a lot... -More...

    - - - - - -

    -Namespaces

     reg
     utils pertaining to native registers...
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    bool get_fetch_operand (const zydis_routine_t &routine, zydis_instr_t &fetch_instr)
     get the instruction that fetches an operand out of VIP... More...
     
    std::optional< zydis_routine_t::iterator > get_fetch_operand (zydis_routine_t &routine)
     gets the instruction that fetches an operand out of VIP and returns an iterator to it... More...
     
    void print (zydis_routine_t &routine)
     prints a disassembly view of a routine... More...
     
    void print (const zydis_decoded_instr_t &instr)
     prints a single disassembly view of an instruction... More...
     
    bool is_jmp (const zydis_decoded_instr_t &instr)
     determines if a given decoded native instruction is a JCC... More...
     
    bool flatten (zydis_routine_t &routine, std::uintptr_t routine_addr, bool keep_jmps=false)
     flatten native instruction stream, takes every JCC (follows the branch)... More...
     
    void deobfuscate (zydis_routine_t &routine)
     deadstore deobfuscation of a flattened routine... More...
     
    -

    Detailed Description

    -

    utils used by the other cpp files... misc things that get used a lot...

    -

    Function Documentation

    - -

    ◆ deobfuscate()

    - -
    -
    - - - - - - - - -
    void vm::util::deobfuscate (zydis_routine_troutine)
    -
    - -

    deadstore deobfuscation of a flattened routine...

    -
    Parameters
    - - -
    routinereference to a flattened instruction vector...
    -
    -
    - -
    -
    - -

    ◆ flatten()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    bool vm::util::flatten (zydis_routine_troutine,
    std::uintptr_t routine_addr,
    bool keep_jmps = false 
    )
    -
    - -

    flatten native instruction stream, takes every JCC (follows the branch)...

    -
    Parameters
    - - - - -
    routinefilled with decoded instructions...
    routine_addrlinear virtual address to start flattening from...
    keep_jmpskeep JCC's in the flattened instruction stream...
    -
    -
    -
    Returns
    returns true if flattened was successful...
    - -
    -
    - -

    ◆ get_fetch_operand() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool vm::util::get_fetch_operand (const zydis_routine_troutine,
    zydis_instr_tfetch_instr 
    )
    -
    - -

    get the instruction that fetches an operand out of VIP...

    -
    Parameters
    - - - -
    routinethis is a deobfuscated, flattened, view of any set of native instructions that read an operand out of VIP... can be calc_jmp, vm_entry, or vm handlers...
    fetch_instr
    -
    -
    -
    Returns
    returns true of the fetch operand native instruction is found...
    - -
    -
    - -

    ◆ get_fetch_operand() [2/2]

    - -
    -
    - - - - - - - - -
    std::optional< zydis_routine_t::iterator > vm::util::get_fetch_operand (zydis_routine_troutine)
    -
    - -

    gets the instruction that fetches an operand out of VIP and returns an iterator to it...

    -
    Parameters
    - - -
    routinethis is a deobfuscated, flattened, view of any set of native instructions that read an operand out of VIP... can be calc_jmp, vm_entry, or vm handlers...
    -
    -
    -
    Returns
    returns the iterator of the native instruction, else an empty std::optional...
    - -
    -
    - -

    ◆ is_jmp()

    - -
    -
    - - - - - - - - -
    bool vm::util::is_jmp (const zydis_decoded_instr_tinstr)
    -
    - -

    determines if a given decoded native instruction is a JCC...

    -
    Parameters
    - - -
    instr
    -
    -
    -
    Returns
    - -
    -
    - -

    ◆ print() [1/2]

    - -
    -
    - - - - - - - - -
    void vm::util::print (const zydis_decoded_instr_tinstr)
    -
    - -

    prints a single disassembly view of an instruction...

    -
    Parameters
    - - -
    instrinstruction to print...
    -
    -
    - -
    -
    - -

    ◆ print() [2/2]

    - -
    -
    - - - - - - - - -
    void vm::util::print (zydis_routine_troutine)
    -
    - -

    prints a disassembly view of a routine...

    -
    Parameters
    - - -
    routinereference to a zydis_routine_t to be printed...
    -
    -
    - -
    -
    -
    - - - - diff --git a/doxygen/html/namespacevm_1_1util_1_1reg.html b/doxygen/html/namespacevm_1_1util_1_1reg.html deleted file mode 100644 index 0884424..0000000 --- a/doxygen/html/namespacevm_1_1util_1_1reg.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -VMProfiler: vm::util::reg Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::util::reg Namespace Reference
    -
    -
    - -

    utils pertaining to native registers... -More...

    - - - - - - - - -

    -Functions

    zydis_register_t to64 (zydis_register_t reg)
     converts say... AL to RAX... More...
     
    bool compare (zydis_register_t a, zydis_register_t b)
     compares to registers with each other... calls to64 and compares... More...
     
    -

    Detailed Description

    -

    utils pertaining to native registers...

    -

    Function Documentation

    - -

    ◆ compare()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool vm::util::reg::compare (zydis_register_t a,
    zydis_register_t b 
    )
    -
    - -

    compares to registers with each other... calls to64 and compares...

    -
    Parameters
    - - - -
    aregister a...
    bregister b...
    -
    -
    -
    Returns
    returns true if register to64(a) == to64(b)...
    - -
    -
    - -

    ◆ to64()

    - -
    -
    - - - - - - - - -
    zydis_register_t vm::util::reg::to64 (zydis_register_t reg)
    -
    - -

    converts say... AL to RAX...

    -
    Parameters
    - - -
    rega zydis decoded register value...
    -
    -
    -
    Returns
    returns the largest width register of the given register... AL gives RAX...
    - -
    -
    -
    - - - - diff --git a/doxygen/html/namespacevmp2.html b/doxygen/html/namespacevmp2.html deleted file mode 100644 index 5fc3b04..0000000 --- a/doxygen/html/namespacevmp2.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -VMProfiler: vmp2 Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    vmp2 Namespace Reference
    -
    -
    - - - - - - - - -

    -Namespaces

     v1
     
     v2
     
     v3
     
    - - - - - -

    -Enumerations

    enum class  exec_type_t { forward -, backward - }
     
    enum class  version_t { invalid -, v1 = 0x101 -, v2 = 0x102 -, v3 = 0x103 - }
     
    -

    Enumeration Type Documentation

    - -

    ◆ exec_type_t

    - -
    -
    - - - - - -
    - - - - -
    enum vmp2::exec_type_t
    -
    -strong
    -
    - - - -
    Enumerator
    forward 
    backward 
    - -
    -
    - -

    ◆ version_t

    - -
    -
    - - - - - -
    - - - - -
    enum vmp2::version_t
    -
    -strong
    -
    - - - - - -
    Enumerator
    invalid 
    v1 
    v2 
    v3 
    - -
    -
    -
    - - - - diff --git a/doxygen/html/namespacevmp2_1_1v1.html b/doxygen/html/namespacevmp2_1_1v1.html deleted file mode 100644 index ffc3d38..0000000 --- a/doxygen/html/namespacevmp2_1_1v1.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -VMProfiler: vmp2::v1 Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmp2::v1 Namespace Reference
    -
    -
    - - - - - - -

    -Classes

    struct  file_header
     
    struct  entry_t
     
    -
    - - - - diff --git a/doxygen/html/namespacevmp2_1_1v2.html b/doxygen/html/namespacevmp2_1_1v2.html deleted file mode 100644 index 4015033..0000000 --- a/doxygen/html/namespacevmp2_1_1v2.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -VMProfiler: vmp2::v2 Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmp2::v2 Namespace Reference
    -
    -
    - - - - - - -

    -Classes

    struct  file_header
     
    struct  entry_t
     
    -
    - - - - diff --git a/doxygen/html/namespacevmp2_1_1v3.html b/doxygen/html/namespacevmp2_1_1v3.html deleted file mode 100644 index 0410a1d..0000000 --- a/doxygen/html/namespacevmp2_1_1v3.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -VMProfiler: vmp2::v3 Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmp2::v3 Namespace Reference
    -
    -
    - - - - - - -

    -Classes

    struct  file_header
     
    struct  code_block_t
     
    -
    - - - - diff --git a/doxygen/html/nav_f.png b/doxygen/html/nav_f.png deleted file mode 100644 index 72a58a529ed3a9ed6aa0c51a79cf207e026deee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U diff --git a/doxygen/html/nav_g.png b/doxygen/html/nav_g.png deleted file mode 100644 index 2093a237a94f6c83e19ec6e5fd42f7ddabdafa81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM - - - - - - -VMProfiler: Related Pages - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    Related Pages
    -
    -
    -
    Here is a list of all related documentation pages:
    - - -
     README
    -
    -
    - - - - diff --git a/doxygen/html/search/all_0.html b/doxygen/html/search/all_0.html deleted file mode 100644 index 1ec5b2d..0000000 --- a/doxygen/html/search/all_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_0.js b/doxygen/html/search/all_0.js deleted file mode 100644 index d8a1301..0000000 --- a/doxygen/html/search/all_0.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['_5f_5frol1_5f_5f_0',['__ROL1__',['../namespacevm_1_1transform.html#a2f914dc341284423d3cf0bc83fbbc6d4',1,'vm::transform']]], - ['_5f_5frol2_5f_5f_1',['__ROL2__',['../namespacevm_1_1transform.html#af597f7ca1a317d800345ba0ce3139145',1,'vm::transform']]], - ['_5f_5frol4_5f_5f_2',['__ROL4__',['../namespacevm_1_1transform.html#a5845d259b97aa94ad627cb323f79bc43',1,'vm::transform']]], - ['_5f_5frol8_5f_5f_3',['__ROL8__',['../namespacevm_1_1transform.html#adeb404f2e3208d35eae516af9d979814',1,'vm::transform']]], - ['_5f_5frol_5f_5f_4',['__ROL__',['../namespacevm_1_1transform.html#a95343da0cff7223109113b65ff4211b6',1,'vm::transform']]], - ['_5f_5fror1_5f_5f_5',['__ROR1__',['../namespacevm_1_1transform.html#a22a3bc4437a3fe171d16c08e26bd8098',1,'vm::transform']]], - ['_5f_5fror2_5f_5f_6',['__ROR2__',['../namespacevm_1_1transform.html#ae461230c2fd31540a32f7b7d439c00cc',1,'vm::transform']]], - ['_5f_5fror4_5f_5f_7',['__ROR4__',['../namespacevm_1_1transform.html#a84ceeae51a16def42530b6ce2bd52d23',1,'vm::transform']]], - ['_5f_5fror8_5f_5f_8',['__ROR8__',['../namespacevm_1_1transform.html#a8a109ae3f6a76f60fafedabde509594f',1,'vm::transform']]], - ['_5fadd_9',['_add',['../namespacevm_1_1transform.html#a281896b8949d10bf13fe43c6467766ef',1,'vm::transform']]], - ['_5fbswap_10',['_bswap',['../namespacevm_1_1transform.html#a688d8184e8ff721cbe284891a79649be',1,'vm::transform']]], - ['_5fdec_11',['_dec',['../namespacevm_1_1transform.html#a15aa399b06335fdc06b738f5053eec27',1,'vm::transform']]], - ['_5finc_12',['_inc',['../namespacevm_1_1transform.html#a127fda1c7440c539496a2265a089ed25',1,'vm::transform']]], - ['_5fneg_13',['_neg',['../namespacevm_1_1transform.html#a734672243d8d96890e13da03edb148ba',1,'vm::transform']]], - ['_5fnot_14',['_not',['../namespacevm_1_1transform.html#aef95e6402789d702d4a0dceb09c58fdf',1,'vm::transform']]], - ['_5frol_15',['_rol',['../namespacevm_1_1transform.html#a95949473ea57a6a4b310b3701ddbc646',1,'vm::transform']]], - ['_5fror_16',['_ror',['../namespacevm_1_1transform.html#ab2a83f6cb174fe5a090d38f4b426865a',1,'vm::transform']]], - ['_5fsub_17',['_sub',['../namespacevm_1_1transform.html#a91ad3d31de52b5178cbf433259b887d9',1,'vm::transform']]], - ['_5fxor_18',['_xor',['../namespacevm_1_1transform.html#a4ee7a00ae0c62ad5db5455d16ac64491',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/all_1.html b/doxygen/html/search/all_1.html deleted file mode 100644 index 9f80e90..0000000 --- a/doxygen/html/search/all_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_1.js b/doxygen/html/search/all_1.js deleted file mode 100644 index 089dc6d..0000000 --- a/doxygen/html/search/all_1.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['absolute_19',['absolute',['../namespacevm_1_1instrs.html#a6266fd623fdf44291ecc8897b060fd57adc4d53aa0d117d8b189b36d161af4e96',1,'vm::instrs']]], - ['add_2ecpp_20',['add.cpp',['../vmlifters_2add_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2add_8cpp.html',1,'(Global Namespace)']]], - ['adddw_21',['ADDDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1abb62bc05ab9e2b13eea6e0a68a9a850f',1,'vm::handler']]], - ['adddw_22',['adddw',['../namespacevm_1_1lifters.html#a7332fe92bc5b62d3a1eadc3be1650286',1,'vm::lifters::adddw()'],['../namespacevm_1_1handler_1_1profile.html#a5bf6399e884a3e41d3cb953f00d62c13',1,'vm::handler::profile::adddw()']]], - ['addq_23',['ADDQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a1c1d818ac0054ac2bab61885479fd10b',1,'vm::handler']]], - ['addq_24',['addq',['../namespacevm_1_1lifters.html#a0491abd30c8c9f167a5573fedc83326c',1,'vm::lifters::addq()'],['../namespacevm_1_1handler_1_1profile.html#a6fec819ec586b0f38fd4dc9489a2faf8',1,'vm::handler::profile::addq()']]], - ['addr_25',['addr',['../structzydis__instr__t.html#ac180f5e918619afc94f594c91f0ec389',1,'zydis_instr_t']]], - ['address_26',['address',['../structvm_1_1handler_1_1handler__t.html#afa8853308fc1039e4a2940594c3e443e',1,'vm::handler::handler_t']]], - ['addw_27',['addw',['../namespacevm_1_1lifters.html#a15434e7a31a2d0839b9fc423879576b9',1,'vm::lifters::addw()'],['../namespacevm_1_1handler_1_1profile.html#ac6638f78fcb7d781db4476b11bd3c139',1,'vm::handler::profile::addw()']]], - ['addw_28',['ADDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a658535c08ac0930a31bd92dfc8b2efc6',1,'vm::handler']]], - ['advancement_29',['advancement',['../structvmp2_1_1v1_1_1file__header.html#a1a95d42495b9ed9d96538a50c4d17347',1,'vmp2::v1::file_header::advancement()'],['../structvmp2_1_1v2_1_1file__header.html#a8c4bd608935f89aeeacf8a24c46e12a7',1,'vmp2::v2::file_header::advancement()']]], - ['all_30',['all',['../namespacevm_1_1lifters.html#a74eecbae2fe9125108fed0a717c4d1fd',1,'vm::lifters::all()'],['../namespacevm_1_1handler_1_1profile.html#a39376b2fb191d8ff1af7ef0128f715ed',1,'vm::handler::profile::all()']]], - ['apply_31',['apply',['../namespacevm_1_1transform.html#a4f111b0cc38dd9e03f6f5eed3fa824f7',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/all_10.html b/doxygen/html/search/all_10.html deleted file mode 100644 index 3bf1196..0000000 --- a/doxygen/html/search/all_10.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_10.js b/doxygen/html/search/all_10.js deleted file mode 100644 index 7ee5d35..0000000 --- a/doxygen/html/search/all_10.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['qword_165',['qword',['../structvmp2_1_1v1_1_1entry__t.html#a2bcd067629686dbe25c5f029fd6a90b2',1,'vmp2::v1::entry_t::qword()'],['../structvmp2_1_1v2_1_1entry__t.html#adf0282edfe2729f777de01181573817a',1,'vmp2::v2::entry_t::qword()']]] -]; diff --git a/doxygen/html/search/all_11.html b/doxygen/html/search/all_11.html deleted file mode 100644 index c9f79d2..0000000 --- a/doxygen/html/search/all_11.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_11.js b/doxygen/html/search/all_11.js deleted file mode 100644 index 274fa13..0000000 --- a/doxygen/html/search/all_11.js +++ /dev/null @@ -1,30 +0,0 @@ -var searchData= -[ - ['r10_166',['r10',['../structvmp2_1_1v1_1_1entry__t.html#a8d1765833c99a7f2d08717851eebab82',1,'vmp2::v1::entry_t::r10()'],['../structvmp2_1_1v2_1_1entry__t.html#a48c7745b16af9fa47fddaea8478618b1',1,'vmp2::v2::entry_t::r10()']]], - ['r11_167',['r11',['../structvmp2_1_1v2_1_1entry__t.html#aa1a5db4120d667a1c87b8e5cebffd6bc',1,'vmp2::v2::entry_t::r11()'],['../structvmp2_1_1v1_1_1entry__t.html#a2b6490513a27218e981395caf46c6a36',1,'vmp2::v1::entry_t::r11()']]], - ['r12_168',['r12',['../structvmp2_1_1v1_1_1entry__t.html#ac070dd8a3b266aca6d384092d44c45db',1,'vmp2::v1::entry_t::r12()'],['../structvmp2_1_1v2_1_1entry__t.html#ad54f902a6c9356b34fa32bb57afecde4',1,'vmp2::v2::entry_t::r12()']]], - ['r13_169',['r13',['../structvmp2_1_1v1_1_1entry__t.html#ac892c7b25abf33b68cd23218088c19a2',1,'vmp2::v1::entry_t::r13()'],['../structvmp2_1_1v2_1_1entry__t.html#ad63c471813aaffa87b51f44f4e778e27',1,'vmp2::v2::entry_t::r13()']]], - ['r14_170',['r14',['../structvmp2_1_1v2_1_1entry__t.html#a5eca8495531c6b7c230397121c448aa5',1,'vmp2::v2::entry_t::r14()'],['../structvmp2_1_1v1_1_1entry__t.html#a73f9533987a51cd2ed85dac181cb8e36',1,'vmp2::v1::entry_t::r14()']]], - ['r15_171',['r15',['../structvmp2_1_1v1_1_1entry__t.html#abb759c2488fa9a384ab5b424e84a225b',1,'vmp2::v1::entry_t::r15()'],['../structvmp2_1_1v2_1_1entry__t.html#ad7e5388fa85783e2f628562073945a3e',1,'vmp2::v2::entry_t::r15()']]], - ['r8_172',['r8',['../structvmp2_1_1v1_1_1entry__t.html#a439476f676acc77b1f75abd0ce6f1dc9',1,'vmp2::v1::entry_t::r8()'],['../structvmp2_1_1v2_1_1entry__t.html#a75ab4ecd1d412e886e785202ad208a80',1,'vmp2::v2::entry_t::r8()']]], - ['r9_173',['r9',['../structvmp2_1_1v1_1_1entry__t.html#a82183b6e1580ebc77cf8e60e8d197688',1,'vmp2::v1::entry_t::r9()'],['../structvmp2_1_1v2_1_1entry__t.html#a1c22268aa724bdbe1b2c7e08ca6f91bf',1,'vmp2::v2::entry_t::r9()']]], - ['raw_174',['raw',['../structvmp2_1_1v2_1_1entry__t.html#a30d79c65c6656f2da0b7ef0305861d18',1,'vmp2::v2::entry_t::raw()'],['../structvmp2_1_1v2_1_1entry__t.html#ad10b50bd2342eacc4cf3c2df45f4923d',1,'vmp2::v2::entry_t::raw()'],['../structzydis__instr__t.html#a63731d9c4bc131dd63253a671f494926',1,'zydis_instr_t::raw()'],['../structvmp2_1_1v1_1_1entry__t.html#a33eb058b38f364b0dc70bc51ccce665f',1,'vmp2::v1::entry_t::raw()'],['../structvmp2_1_1v1_1_1entry__t.html#a3cb51b6b59b26726d126ab223f4bea89',1,'vmp2::v1::entry_t::raw()']]], - ['rax_175',['rax',['../structvmp2_1_1v2_1_1entry__t.html#a5bcddf6039712e77b1e929c5e23d7102',1,'vmp2::v2::entry_t::rax()'],['../structvmp2_1_1v1_1_1entry__t.html#aece27444f4d7739a65e105c99bb80405',1,'vmp2::v1::entry_t::rax()']]], - ['rbp_176',['rbp',['../structvmp2_1_1v1_1_1entry__t.html#a897b61a9d552321649e2125f0309087f',1,'vmp2::v1::entry_t::rbp()'],['../structvmp2_1_1v2_1_1entry__t.html#adaa7ac7e16b4c5334f710276e5424bb2',1,'vmp2::v2::entry_t::rbp()']]], - ['rbx_177',['rbx',['../structvmp2_1_1v1_1_1entry__t.html#ad1209ca45ba032f5b153243755ca4715',1,'vmp2::v1::entry_t::rbx()'],['../structvmp2_1_1v2_1_1entry__t.html#adb2f787630408583f8d788b1e0ffbc26',1,'vmp2::v2::entry_t::rbx()']]], - ['rcx_178',['rcx',['../structvmp2_1_1v1_1_1entry__t.html#ad5a8918cb544c45077f2d8226d23e6e8',1,'vmp2::v1::entry_t::rcx()'],['../structvmp2_1_1v2_1_1entry__t.html#af0fe75c5c42bd2d3639661db73195c21',1,'vmp2::v2::entry_t::rcx()']]], - ['rdi_179',['rdi',['../structvmp2_1_1v1_1_1entry__t.html#a1629840800a9af9adb8fdd63b596bc4c',1,'vmp2::v1::entry_t::rdi()'],['../structvmp2_1_1v2_1_1entry__t.html#ab22621550901e08d7d541faa940332a9',1,'vmp2::v2::entry_t::rdi()']]], - ['rdx_180',['rdx',['../structvmp2_1_1v1_1_1entry__t.html#a4e80774ff8364a9237dd99702a8b7d9b',1,'vmp2::v1::entry_t::rdx()'],['../structvmp2_1_1v2_1_1entry__t.html#a6216b34ae98199196363d268ebd917c5',1,'vmp2::v2::entry_t::rdx()']]], - ['read_2ecpp_181',['read.cpp',['../vmlifters_2read_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2read_8cpp.html',1,'(Global Namespace)']]], - ['readdw_182',['READDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a483ae76aeaa24a4278793ac99f32e45b',1,'vm::handler']]], - ['readdw_183',['readdw',['../namespacevm_1_1lifters.html#a1e05b6d05c703d4ea79ed6dca1466708',1,'vm::lifters::readdw()'],['../namespacevm_1_1handler_1_1profile.html#a7dcb388eb57317a1fb30a882c1f659de',1,'vm::handler::profile::readdw()']]], - ['readme_2emd_184',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]], - ['readq_185',['readq',['../namespacevm_1_1lifters.html#a4dd33a06403bf5e6cc5b0f833e88508a',1,'vm::lifters::readq()'],['../namespacevm_1_1handler_1_1profile.html#a6969c269658e6069415fc19924a8eff1',1,'vm::handler::profile::readq()']]], - ['readq_186',['READQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aedc758f639062bd366e49b155618225b',1,'vm::handler']]], - ['readw_187',['READW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a20f6daaede6cf418b6e3cb7a5b242a47',1,'vm::handler']]], - ['readw_188',['readw',['../namespacevm_1_1lifters.html#a5b37dec0f1b7182f3aefbfe6a102096b',1,'vm::lifters']]], - ['regs_189',['regs',['../structvmp2_1_1v1_1_1entry__t.html#ac0c039b3a555ca4b2716caf8c9d65dd7',1,'vmp2::v1::entry_t::regs()'],['../structvmp2_1_1v2_1_1entry__t.html#a5f0c8c53f295f3c500e6e1700260567d',1,'vmp2::v2::entry_t::regs()']]], - ['rflags_190',['rflags',['../structvmp2_1_1v2_1_1entry__t.html#a7231c47303e74cba3f4be781b23365fe',1,'vmp2::v2::entry_t::rflags()'],['../structvmp2_1_1v1_1_1entry__t.html#ac01afa0dffbd2377d722232a8db98bff',1,'vmp2::v1::entry_t::rflags()']]], - ['rolling_5fkey_191',['rolling_key',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a2b4d8b33b65a6ec012bfee034f0eb535',1,'vm::transform']]], - ['rsi_192',['rsi',['../structvmp2_1_1v1_1_1entry__t.html#ab4699f11425e593d9745c3ce533481f4',1,'vmp2::v1::entry_t::rsi()'],['../structvmp2_1_1v2_1_1entry__t.html#a2449e4175d235152aa3d47cc0cd3fa54',1,'vmp2::v2::entry_t::rsi()']]] -]; diff --git a/doxygen/html/search/all_12.html b/doxygen/html/search/all_12.html deleted file mode 100644 index ab93472..0000000 --- a/doxygen/html/search/all_12.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_12.js b/doxygen/html/search/all_12.js deleted file mode 100644 index 05c0ef9..0000000 --- a/doxygen/html/search/all_12.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['s_193',['s',['../structvm_1_1instrs_1_1virt__instr__t.html#a3feeff8ff61091838dd488625d7b25a2',1,'vm::instrs::virt_instr_t']]], - ['shl_2ecpp_194',['shl.cpp',['../shl_8cpp.html',1,'']]], - ['shldw_195',['shldw',['../namespacevm_1_1handler_1_1profile.html#a94b3e7b23ca523249a1b4149f2b221a9',1,'vm::handler::profile']]], - ['shldw_196',['SHLDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ab8cddf6b4543c598ccb714551141aa81',1,'vm::handler']]], - ['shlq_197',['shlq',['../namespacevm_1_1handler_1_1profile.html#a8be3b9aa44bba9c01a0544356f4a35ad',1,'vm::handler::profile']]], - ['shlq_198',['SHLQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ae820c14a2d48db026b12e60ef2bf55b3',1,'vm::handler']]], - ['shr_2ecpp_199',['shr.cpp',['../vmlifters_2shr_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2shr_8cpp.html',1,'(Global Namespace)']]], - ['shrq_200',['shrq',['../namespacevm_1_1lifters.html#af33473ca92a8e1ab2e1a965b7520110d',1,'vm::lifters::shrq()'],['../namespacevm_1_1handler_1_1profile.html#ab32d8a91ff2c9e28a0e5062338d9ef14',1,'vm::handler::profile::shrq()']]], - ['shrq_201',['SHRQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ac14306e538f382de3093cc8f3d4d95ec',1,'vm::handler']]], - ['shrw_202',['shrw',['../namespacevm_1_1lifters.html#a129e17bac76f26029ea048d5f459fd8e',1,'vm::lifters::shrw()'],['../namespacevm_1_1handler_1_1profile.html#a53a3ad22aa1a2f0e83eeda486f447cfc',1,'vm::handler::profile::shrw()']]], - ['shrw_203',['SHRW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ab36694ea7404c953f0fefdd201592d37',1,'vm::handler']]], - ['sign_5fextend_204',['sign_extend',['../namespacevm_1_1handler.html#ac79240b14c7251b5358709c130821e07acae8cc1c1114ea88d7d8affeecb19b1d',1,'vm::handler']]], - ['signature_205',['signature',['../structvm_1_1handler_1_1profile__t.html#a27b22dbeada71cf631918847d7be84ba',1,'vm::handler::profile_t']]], - ['sreg_2ecpp_206',['sreg.cpp',['../vmlifters_2sreg_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2sreg_8cpp.html',1,'(Global Namespace)']]], - ['sregdw_207',['SREGDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ac41895fb285b8cb4ebe33755fc9b4974',1,'vm::handler']]], - ['sregdw_208',['sregdw',['../namespacevm_1_1lifters.html#a1ed6bccf37fd06d306357cc231dc85d8',1,'vm::lifters::sregdw()'],['../namespacevm_1_1handler_1_1profile.html#a4918ca8880971ab57dde31168d0c52ff',1,'vm::handler::profile::sregdw()']]], - ['sregq_209',['sregq',['../namespacevm_1_1lifters.html#ad71cc0003e40f40512d4f755bf128f75',1,'vm::lifters::sregq()'],['../namespacevm_1_1handler_1_1profile.html#a6c5922a24f03ad5104fad36b59cdb664',1,'vm::handler::profile::sregq()']]], - ['sregq_210',['SREGQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a624092452de9f6648610ceffce32f78e',1,'vm::handler']]], - ['sregw_211',['sregw',['../namespacevm_1_1lifters.html#aab4b15f694be1f476b6336cc0b4cbf83',1,'vm::lifters::sregw()'],['../namespacevm_1_1handler_1_1profile.html#a4f55c3b0945cb86413d3c40fc08d6db7',1,'vm::handler::profile::sregw()']]], - ['sregw_212',['SREGW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a918bd3d416c98957043ace785146adeb',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/all_13.html b/doxygen/html/search/all_13.html deleted file mode 100644 index 51172c2..0000000 --- a/doxygen/html/search/all_13.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_13.js b/doxygen/html/search/all_13.js deleted file mode 100644 index 9715521..0000000 --- a/doxygen/html/search/all_13.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['to64_213',['to64',['../namespacevm_1_1util_1_1reg.html#a00b8eb62aa844682cceca117eca5b945',1,'vm::util::reg']]], - ['trace_5fdata_214',['trace_data',['../structvm_1_1instrs_1_1virt__instr__t.html#a5d51d8778458f649434e6c96c159a260',1,'vm::instrs::virt_instr_t']]], - ['transform_2ehpp_215',['transform.hpp',['../transform_8hpp.html',1,'']]], - ['transform_5ft_216',['transform_t',['../namespacevm_1_1transform.html#a67d5906292cf0f9aa61364e0846fa1e6',1,'vm::transform']]], - ['transforms_217',['transforms',['../structvm_1_1handler_1_1handler__t.html#a47f9e94f5e156d9215e9ae585e928a92',1,'vm::handler::handler_t::transforms()'],['../namespacevm_1_1transform.html#ac5fcbe5497bc1e136caf781b61fbd8f1',1,'vm::transform::transforms()']]], - ['type_218',['type',['../structvm_1_1instrs_1_1jcc__data.html#a7a26a802234641a6a721c60055b6866c',1,'vm::instrs::jcc_data::type()'],['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384',1,'vm::transform::type()']]] -]; diff --git a/doxygen/html/search/all_14.html b/doxygen/html/search/all_14.html deleted file mode 100644 index afecf56..0000000 --- a/doxygen/html/search/all_14.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_14.js b/doxygen/html/search/all_14.js deleted file mode 100644 index 7d0b27c..0000000 --- a/doxygen/html/search/all_14.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['u_219',['u',['../structvm_1_1instrs_1_1virt__instr__t.html#a046c32e02a63f3fd94c34088f2d6fc4f',1,'vm::instrs::virt_instr_t']]], - ['u128_220',['u128',['../vmutils_8hpp.html#a7aa2d9a3b9a80fc61ad2ccf99ebb95f8',1,'vmutils.hpp']]], - ['u16_221',['u16',['../vmutils_8hpp.html#a78c47e7d1e6386136297f10fa86b5f99',1,'vmutils.hpp']]], - ['u32_222',['u32',['../vmutils_8hpp.html#a5b58b50033aff6031759d9708b5156f2',1,'vmutils.hpp']]], - ['u64_223',['u64',['../vmutils_8hpp.html#a4870a1025a59df53c952b95ac2c85bf6',1,'vmutils.hpp']]], - ['u8_224',['u8',['../vmutils_8hpp.html#ad24825e11b71d87e40f5c0e88dd980a0',1,'vmutils.hpp']]], - ['update_5fkey_225',['update_key',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a1033ce2eeb9b85e88eacb326208e9e4b',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/all_15.html b/doxygen/html/search/all_15.html deleted file mode 100644 index 69f382b..0000000 --- a/doxygen/html/search/all_15.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_15.js b/doxygen/html/search/all_15.js deleted file mode 100644 index 1f90643..0000000 --- a/doxygen/html/search/all_15.js +++ /dev/null @@ -1,47 +0,0 @@ -var searchData= -[ - ['calc_5fjmp_226',['calc_jmp',['../namespacevm_1_1calc__jmp.html',1,'vm']]], - ['handler_227',['handler',['../namespacevm_1_1handler.html',1,'vm']]], - ['instrs_228',['instrs',['../namespacevm_1_1instrs.html',1,'vm']]], - ['lifters_229',['lifters',['../namespacevm_1_1lifters.html',1,'vm']]], - ['profile_230',['profile',['../namespacevm_1_1handler_1_1profile.html',1,'vm::handler']]], - ['reg_231',['reg',['../namespacevm_1_1util_1_1reg.html',1,'vm::util']]], - ['table_232',['table',['../namespacevm_1_1handler_1_1table.html',1,'vm::handler']]], - ['transform_233',['transform',['../namespacevm_1_1transform.html',1,'vm']]], - ['util_234',['util',['../namespacevm_1_1util.html',1,'vm']]], - ['v1_235',['v1',['../namespacevmp2.html#a144e081c8a268c0bfc9f738f32f19579a6654c734ccab8f440ff0825eb443dc7f',1,'vmp2::v1()'],['../namespacevmp2_1_1v1.html',1,'vmp2::v1']]], - ['v2_236',['v2',['../namespacevmp2.html#a144e081c8a268c0bfc9f738f32f19579a1b267619c4812cc46ee281747884ca50',1,'vmp2::v2()'],['../namespacevmp2_1_1v2.html',1,'vmp2::v2']]], - ['v3_237',['v3',['../namespacevmp2.html#a144e081c8a268c0bfc9f738f32f19579a43a03299a3c3fed3d8ce7b820f3aca81',1,'vmp2::v3()'],['../namespacevmp2_1_1v3.html',1,'vmp2::v3']]], - ['valid_238',['valid',['../namespacevm_1_1transform.html#aa14dcd108c7800a9763255873e474988',1,'vm::transform']]], - ['version_239',['version',['../structvmp2_1_1v3_1_1file__header.html#ad5b0868596548490caca7609cbf7a040',1,'vmp2::v3::file_header::version()'],['../structvmp2_1_1v2_1_1file__header.html#a051f78fa2f1d251a24ac7ab843c93885',1,'vmp2::v2::file_header::version()'],['../structvmp2_1_1v1_1_1file__header.html#a6104dc2211338773a0d7770fb2557976',1,'vmp2::v1::file_header::version()']]], - ['version_5ft_240',['version_t',['../namespacevmp2.html#a144e081c8a268c0bfc9f738f32f19579',1,'vmp2']]], - ['vinstr_241',['vinstr',['../structvmp2_1_1v3_1_1code__block__t.html#a53661b42cbaf7a61580db7816877c1a6',1,'vmp2::v3::code_block_t']]], - ['vinstr_5fcount_242',['vinstr_count',['../structvmp2_1_1v3_1_1code__block__t.html#ad2206d01c7fa4e3d767993cb4582ce37',1,'vmp2::v3::code_block_t']]], - ['vinstrs_243',['vinstrs',['../structvm_1_1instrs_1_1code__block__t.html#a5479652a78162e85f4d40b26bdffc15e',1,'vm::instrs::code_block_t']]], - ['vip_244',['vip',['../structvmp2_1_1v2_1_1entry__t.html#af995fc5074e0c18fe987bacf73ce6773',1,'vmp2::v2::entry_t::vip()'],['../structvmp2_1_1v1_1_1entry__t.html#af9d863dc4165755e5b31549f30e7a58a',1,'vmp2::v1::entry_t::vip()']]], - ['vip_5fbegin_245',['vip_begin',['../structvmp2_1_1v3_1_1code__block__t.html#a8acca6685fb25b092df96b2d7a7ed773',1,'vmp2::v3::code_block_t::vip_begin()'],['../structvm_1_1instrs_1_1code__block__t.html#aaca2c6f30eee7a05c378c41c46cdfcb9',1,'vm::instrs::code_block_t::vip_begin()']]], - ['virt_5finstr_5ft_246',['virt_instr_t',['../structvm_1_1instrs_1_1virt__instr__t.html',1,'vm::instrs']]], - ['vm_247',['vm',['../namespacevm.html',1,'']]], - ['vm_5fentry_248',['vm_entry',['../classvm_1_1ctx__t.html#a40f0524813578bcddf9ded1e74443793',1,'vm::ctx_t']]], - ['vm_5fentry_5frva_249',['vm_entry_rva',['../structvmp2_1_1v2_1_1file__header.html#afdf98118a9049deafd613e9ef2dfc988',1,'vmp2::v2::file_header::vm_entry_rva()'],['../structvmp2_1_1v3_1_1file__header.html#aea15e18f812d2d3239f3e466e85c68c4',1,'vmp2::v3::file_header::vm_entry_rva()'],['../classvm_1_1ctx__t.html#a44b4eb5513ad87a12173e599591847c3',1,'vm::ctx_t::vm_entry_rva()']]], - ['vm_5fhandlers_250',['vm_handlers',['../classvm_1_1ctx__t.html#a0fa31b5bd78861dbd2c5cf04af81aa4d',1,'vm::ctx_t']]], - ['vmctx_2ecpp_251',['vmctx.cpp',['../vmctx_8cpp.html',1,'']]], - ['vmctx_2ehpp_252',['vmctx.hpp',['../vmctx_8hpp.html',1,'']]], - ['vmexit_253',['vmexit',['../namespacevm_1_1lifters.html#a8d8d8c92bc0e93b2301aa101600f0f5e',1,'vm::lifters::vmexit()'],['../namespacevm_1_1handler_1_1profile.html#a6c388fd726713355c8c37cb9776c83c7',1,'vm::handler::profile::vmexit()']]], - ['vmexit_254',['VMEXIT',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aca4bfa0932d82166e9731d77d4ddd42e',1,'vm::handler']]], - ['vmexit_2ecpp_255',['vmexit.cpp',['../vmprofiles_2vmexit_8cpp.html',1,'(Global Namespace)'],['../vmlifters_2vmexit_8cpp.html',1,'(Global Namespace)']]], - ['vmhandler_2ecpp_256',['vmhandler.cpp',['../vmhandler_8cpp.html',1,'']]], - ['vmhandlers_2ehpp_257',['vmhandlers.hpp',['../vmhandlers_8hpp.html',1,'']]], - ['vminstrs_2ecpp_258',['vminstrs.cpp',['../vminstrs_8cpp.html',1,'']]], - ['vminstrs_2ehpp_259',['vminstrs.hpp',['../vminstrs_8hpp.html',1,'']]], - ['vmlifters_2ehpp_260',['vmlifters.hpp',['../vmlifters_8hpp.html',1,'']]], - ['vmp2_261',['vmp2',['../namespacevmp2.html',1,'']]], - ['vmp2_2ehpp_262',['vmp2.hpp',['../vmp2_8hpp.html',1,'']]], - ['vmp_5fmagic_263',['VMP_MAGIC',['../vmp2_8hpp.html#ae060e76e1844535a1d8bfb65b2ce8391',1,'vmp2.hpp']]], - ['vmprofiler_2ehpp_264',['vmprofiler.hpp',['../vmprofiler_8hpp.html',1,'']]], - ['vmprofiles_2ehpp_265',['vmprofiles.hpp',['../vmprofiles_8hpp.html',1,'']]], - ['vmutils_2ecpp_266',['vmutils.cpp',['../vmutils_8cpp.html',1,'']]], - ['vmutils_2ehpp_267',['vmutils.hpp',['../vmutils_8hpp.html',1,'']]], - ['vregs_268',['vregs',['../structvmp2_1_1v1_1_1entry__t.html#ade6ea682fa296e2c9cea58c1a3f2d373',1,'vmp2::v1::entry_t::vregs()'],['../structvmp2_1_1v2_1_1entry__t.html#afb8279d89fb28d2d306fb429841ee3eb',1,'vmp2::v2::entry_t::vregs()']]], - ['vsp_269',['vsp',['../structvmp2_1_1v1_1_1entry__t.html#a44ed5e932965dbc068230b94b533b4a6',1,'vmp2::v1::entry_t::vsp()'],['../structvmp2_1_1v2_1_1entry__t.html#a3eef4253b78238be9391999dcc6bcfd3',1,'vmp2::v2::entry_t::vsp()']]] -]; diff --git a/doxygen/html/search/all_16.html b/doxygen/html/search/all_16.html deleted file mode 100644 index b19867a..0000000 --- a/doxygen/html/search/all_16.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_16.js b/doxygen/html/search/all_16.js deleted file mode 100644 index f582be5..0000000 --- a/doxygen/html/search/all_16.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['write_2ecpp_270',['write.cpp',['../write_8cpp.html',1,'']]], - ['writeb_271',['WRITEB',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aa5646e9d21720029b354bfeca29f6241',1,'vm::handler']]], - ['writeb_272',['writeb',['../namespacevm_1_1handler_1_1profile.html#a1192aea2b68e7e979971a8b683819749',1,'vm::handler::profile']]], - ['writedw_273',['writedw',['../namespacevm_1_1handler_1_1profile.html#a6a00ac48c8ce010f1d3d55573beb52aa',1,'vm::handler::profile']]], - ['writedw_274',['WRITEDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1af92bc6344b93fea2c0e5d1fdf8500160',1,'vm::handler']]], - ['writeq_275',['writeq',['../namespacevm_1_1handler_1_1profile.html#a64dd8aa864a3d3e6956cdb177947f739',1,'vm::handler::profile']]], - ['writeq_276',['WRITEQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a24fc686c7f66e479c8c1ae145bf2ba14',1,'vm::handler']]], - ['writew_277',['WRITEW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ae5197ebd4240e18268cdeca4371c25d5',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/all_17.html b/doxygen/html/search/all_17.html deleted file mode 100644 index 1ad5d34..0000000 --- a/doxygen/html/search/all_17.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_17.js b/doxygen/html/search/all_17.js deleted file mode 100644 index 5223f9b..0000000 --- a/doxygen/html/search/all_17.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['zero_5fextend_278',['zero_extend',['../namespacevm_1_1handler.html#ac79240b14c7251b5358709c130821e07a6ff2bd786349a5d9affb290a9c602725',1,'vm::handler']]], - ['zydis_5fcallback_5ft_279',['zydis_callback_t',['../namespacevm_1_1handler.html#a1016539777a69d79479f5fdf066440be',1,'vm::handler']]], - ['zydis_5fdecoded_5finstr_5ft_280',['zydis_decoded_instr_t',['../vmutils_8hpp.html#ad180fbf8cef52662febedec0f54b6188',1,'vmutils.hpp']]], - ['zydis_5finstr_5ft_281',['zydis_instr_t',['../structzydis__instr__t.html',1,'']]], - ['zydis_5fmnemonic_5ft_282',['zydis_mnemonic_t',['../vmutils_8hpp.html#a910e81858860c70b9744949887567148',1,'vmutils.hpp']]], - ['zydis_5fregister_5ft_283',['zydis_register_t',['../vmutils_8hpp.html#ab8cac5db83e0d71d373779cccbf2d782',1,'vmutils.hpp']]], - ['zydis_5froutine_5ft_284',['zydis_routine_t',['../vmutils_8hpp.html#a5fdde6e9d3e6c6eca28ecadf2e837d3c',1,'vmutils.hpp']]] -]; diff --git a/doxygen/html/search/all_2.html b/doxygen/html/search/all_2.html deleted file mode 100644 index 02cfffc..0000000 --- a/doxygen/html/search/all_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_2.js b/doxygen/html/search/all_2.js deleted file mode 100644 index f433a8d..0000000 --- a/doxygen/html/search/all_2.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['backward_32',['backward',['../namespacevmp2.html#ab2b6fa03f63a776a5c68007f89b140b5a195fe59b6f103787a914aead0f3db502',1,'vmp2']]], - ['block_5faddr_33',['block_addr',['../structvm_1_1instrs_1_1jcc__data.html#ad0439fc4249349e333d31ebed7f0344f',1,'vm::instrs::jcc_data']]], - ['branching_34',['branching',['../namespacevm_1_1instrs.html#a6266fd623fdf44291ecc8897b060fd57a2c28b4e01b26788eab59ce1479b88494',1,'vm::instrs']]] -]; diff --git a/doxygen/html/search/all_3.html b/doxygen/html/search/all_3.html deleted file mode 100644 index 39767b8..0000000 --- a/doxygen/html/search/all_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_3.js b/doxygen/html/search/all_3.js deleted file mode 100644 index c903324..0000000 --- a/doxygen/html/search/all_3.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['calc_5fjmp_35',['calc_jmp',['../classvm_1_1ctx__t.html#aed0dfa1748035f48bda0f59f76643d8d',1,'vm::ctx_t']]], - ['calc_5fjmp_2ecpp_36',['calc_jmp.cpp',['../calc__jmp_8cpp.html',1,'']]], - ['calc_5fjmp_2ehpp_37',['calc_jmp.hpp',['../calc__jmp_8hpp.html',1,'']]], - ['call_38',['CALL',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a20b781d295b3872217cec880fc659ff9',1,'vm::handler']]], - ['call_39',['call',['../namespacevm_1_1handler_1_1profile.html#a8f262e2cec2009b84e4b01c93a16d9bc',1,'vm::handler::profile']]], - ['call_2ecpp_40',['call.cpp',['../call_8cpp.html',1,'']]], - ['code_5fblock_5faddr_41',['code_block_addr',['../namespacevm_1_1instrs.html#a5ee4814b206e0a4f8fc27356efc9503a',1,'vm::instrs::code_block_addr(const vm::ctx_t &ctx, const vmp2::v2::entry_t &entry)'],['../namespacevm_1_1instrs.html#ab49694becc7c7cbd618468b675e1b22a',1,'vm::instrs::code_block_addr(const vm::ctx_t &ctx, const std::uint32_t lower_32bits)']]], - ['code_5fblock_5fcount_42',['code_block_count',['../structvmp2_1_1v3_1_1file__header.html#a24a59e4770152a60ba08b7e838fec2d4',1,'vmp2::v3::file_header']]], - ['code_5fblock_5foffset_43',['code_block_offset',['../structvmp2_1_1v3_1_1file__header.html#a5114dc45569676f5d392832dfee2a46b',1,'vmp2::v3::file_header']]], - ['code_5fblock_5ft_44',['code_block_t',['../structvm_1_1instrs_1_1code__block__t.html',1,'vm::instrs::code_block_t'],['../structvmp2_1_1v3_1_1code__block__t.html',1,'vmp2::v3::code_block_t']]], - ['compare_45',['compare',['../namespacevm_1_1util_1_1reg.html#aa6e516ed1170cd627f330ca68c1bfd4b',1,'vm::util::reg']]], - ['ctx_5ft_46',['ctx_t',['../classvm_1_1ctx__t.html#aac2f090b11989dacf989648f751f77ad',1,'vm::ctx_t::ctx_t()'],['../classvm_1_1ctx__t.html',1,'vm::ctx_t']]] -]; diff --git a/doxygen/html/search/all_4.html b/doxygen/html/search/all_4.html deleted file mode 100644 index fc40463..0000000 --- a/doxygen/html/search/all_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_4.js b/doxygen/html/search/all_4.js deleted file mode 100644 index 615dee0..0000000 --- a/doxygen/html/search/all_4.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['decrypt_47',['decrypt',['../namespacevm_1_1handler_1_1table.html#aa8ffcb4e9e445f940723179cf9c87818',1,'vm::handler::table']]], - ['decrypt_5fkey_48',['decrypt_key',['../structvmp2_1_1v1_1_1entry__t.html#afc01193413881c666404d9ae89e41032',1,'vmp2::v1::entry_t::decrypt_key()'],['../structvmp2_1_1v2_1_1entry__t.html#ad2ec680e1eb7beefeb8aad7f968e1401',1,'vmp2::v2::entry_t::decrypt_key()']]], - ['decrypt_5foperand_49',['decrypt_operand',['../namespacevm_1_1instrs.html#a995be4b7dd3764aec88207611a2b879d',1,'vm::instrs']]], - ['deobfuscate_50',['deobfuscate',['../namespacevm_1_1util.html#afb0bd6aeba990fd37a612d6d318cebb5',1,'vm::util']]], - ['div_2ecpp_51',['div.cpp',['../div_8cpp.html',1,'']]], - ['divq_52',['divq',['../namespacevm_1_1handler_1_1profile.html#af13cfd2b6021da3a4a6c49523d7ffb39',1,'vm::handler::profile']]], - ['divq_53',['DIVQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a3b8d706f88294ce7a8a8b08a9f5ff394',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/all_5.html b/doxygen/html/search/all_5.html deleted file mode 100644 index 9dd9344..0000000 --- a/doxygen/html/search/all_5.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_5.js b/doxygen/html/search/all_5.js deleted file mode 100644 index fe3c990..0000000 --- a/doxygen/html/search/all_5.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['encrypt_54',['encrypt',['../namespacevm_1_1handler_1_1table.html#a69494eb8dca48abd03ff543c8adbf186',1,'vm::handler::table']]], - ['encrypt_5foperand_55',['encrypt_operand',['../namespacevm_1_1instrs.html#a388b00855c582da503850d72de7e8f57',1,'vm::instrs']]], - ['entry_5fcount_56',['entry_count',['../structvmp2_1_1v1_1_1file__header.html#ace410271f9fb3da72ee2aafcd16a23b8',1,'vmp2::v1::file_header::entry_count()'],['../structvmp2_1_1v2_1_1file__header.html#a2ac4c9cdbc65aa53a643a3c73d89be8f',1,'vmp2::v2::file_header::entry_count()']]], - ['entry_5foffset_57',['entry_offset',['../structvmp2_1_1v1_1_1file__header.html#a66dde50694bdccead01e50137a9bbd5d',1,'vmp2::v1::file_header::entry_offset()'],['../structvmp2_1_1v2_1_1file__header.html#a352666a046aaecff042304e326d2bf97',1,'vmp2::v2::file_header::entry_offset()']]], - ['entry_5ft_58',['entry_t',['../structvmp2_1_1v1_1_1entry__t.html',1,'vmp2::v1::entry_t'],['../structvmp2_1_1v2_1_1entry__t.html',1,'vmp2::v2::entry_t']]], - ['epoch_5ftime_59',['epoch_time',['../structvmp2_1_1v1_1_1file__header.html#adcb827f599e85414725407ac46f031ee',1,'vmp2::v1::file_header::epoch_time()'],['../structvmp2_1_1v2_1_1file__header.html#a30e53a5b6383237a52bf39c9ad7e3af6',1,'vmp2::v2::file_header::epoch_time()'],['../structvmp2_1_1v3_1_1file__header.html#adab57c587431f54d55c160a5895d9dfb',1,'vmp2::v3::file_header::epoch_time()']]], - ['exec_5ftype_60',['exec_type',['../classvm_1_1ctx__t.html#a1451637395107d39f69b097a07ef9a0f',1,'vm::ctx_t']]], - ['exec_5ftype_5ft_61',['exec_type_t',['../namespacevmp2.html#ab2b6fa03f63a776a5c68007f89b140b5',1,'vmp2']]], - ['extention_62',['extention',['../structvm_1_1handler_1_1profile__t.html#a2d419cb79f8947e0cbb2b391a067d639',1,'vm::handler::profile_t']]], - ['extention_5ft_63',['extention_t',['../namespacevm_1_1handler.html#ac79240b14c7251b5358709c130821e07',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/all_6.html b/doxygen/html/search/all_6.html deleted file mode 100644 index f1e516d..0000000 --- a/doxygen/html/search/all_6.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_6.js b/doxygen/html/search/all_6.js deleted file mode 100644 index 30015a4..0000000 --- a/doxygen/html/search/all_6.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['file_5fheader_64',['file_header',['../structvmp2_1_1v1_1_1file__header.html',1,'vmp2::v1::file_header'],['../structvmp2_1_1v2_1_1file__header.html',1,'vmp2::v2::file_header'],['../structvmp2_1_1v3_1_1file__header.html',1,'vmp2::v3::file_header']]], - ['flatten_65',['flatten',['../namespacevm_1_1util.html#a86a98ad0643716aef1ef80b3cd58d0e9',1,'vm::util']]], - ['forward_66',['forward',['../namespacevmp2.html#ab2b6fa03f63a776a5c68007f89b140b5a965dbaac085fc891bfbbd4f9d145bbc8',1,'vmp2']]] -]; diff --git a/doxygen/html/search/all_7.html b/doxygen/html/search/all_7.html deleted file mode 100644 index 8ddbf6c..0000000 --- a/doxygen/html/search/all_7.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_7.js b/doxygen/html/search/all_7.js deleted file mode 100644 index fef0e20..0000000 --- a/doxygen/html/search/all_7.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['generic0_67',['generic0',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384ab30d1c29c4a3eff9ff46c9c9ff3ac330',1,'vm::transform']]], - ['generic1_68',['generic1',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a5b034533010375fbc25ce97ffcdd36bc',1,'vm::transform']]], - ['generic2_69',['generic2',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a0a454dce1e3512aace652c12ba85ae83',1,'vm::transform']]], - ['generic3_70',['generic3',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a167e51d9fbde7c7356bb71cd04f61beb',1,'vm::transform']]], - ['get_71',['get',['../namespacevm_1_1calc__jmp.html#a20adb0aacf7a4ccf90484540c8004a30',1,'vm::calc_jmp::get()'],['../namespacevm_1_1handler.html#aa04be3f452edc65f17c38ef91fbed341',1,'vm::handler::get()'],['../namespacevm_1_1handler_1_1table.html#a664a7f96f12e1305466df77d761d43fc',1,'vm::handler::table::get()'],['../namespacevm_1_1instrs.html#aa7a629de41909a287c549397a4043c2f',1,'vm::instrs::get()']]], - ['get_5fadvancement_72',['get_advancement',['../namespacevm_1_1calc__jmp.html#a963e598b01968c61ef992a9c7235cf8e',1,'vm::calc_jmp']]], - ['get_5fall_73',['get_all',['../namespacevm_1_1handler.html#ae40eade4312e1383ae334ad2e0adacbf',1,'vm::handler::get_all(std::uintptr_t module_base, std::uintptr_t image_base, zydis_routine_t &vm_entry, std::uintptr_t *vm_handler_table, std::vector< handler_t > &vm_handlers)'],['../namespacevm_1_1handler.html#ae5e88e98b57b69a61e344e17386a06c3',1,'vm::handler::get_all(std::uintptr_t module_base, std::uintptr_t image_base, zydis_routine_t &vm_entry, std::uintptr_t *vm_handler_table, std::vector< vm::handler::handler_t > &vm_handlers)']]], - ['get_5ffetch_5foperand_74',['get_fetch_operand',['../namespacevm_1_1util.html#a6ef2ebfb858878e2e06d3c96ef5b275b',1,'vm::util::get_fetch_operand(const zydis_routine_t &routine, zydis_instr_t &fetch_instr)'],['../namespacevm_1_1util.html#ae2d46e089059f00dc56790216c5cc234',1,'vm::util::get_fetch_operand(zydis_routine_t &routine)']]], - ['get_5fimm_75',['get_imm',['../namespacevm_1_1instrs.html#a432536e816a10200518676e5616335a6',1,'vm::instrs']]], - ['get_5fjcc_5fdata_76',['get_jcc_data',['../namespacevm_1_1instrs.html#a093e8f1c37d98c4454a3d0b58fda6188',1,'vm::instrs']]], - ['get_5foperand_5ftransforms_77',['get_operand_transforms',['../namespacevm_1_1handler.html#ad63629408ca7f8b34169a38399ffcf02',1,'vm::handler']]], - ['get_5fprofile_78',['get_profile',['../namespacevm_1_1handler.html#ad410231628efa1c4ee7fe9a8c4c7db90',1,'vm::handler::get_profile(handler_t &vm_handler)'],['../namespacevm_1_1handler.html#a0ba01b3a015d7f25b83261e9183a2e40',1,'vm::handler::get_profile(vm::handler::mnemonic_t mnemonic)']]], - ['get_5frva_5fdecrypt_79',['get_rva_decrypt',['../namespacevm_1_1instrs.html#abfbe5c819730d2693296df3c71393de3',1,'vm::instrs']]], - ['get_5ftransform_80',['get_transform',['../namespacevm_1_1handler_1_1table.html#a5e8586b80ccde98882291ded921749ff',1,'vm::handler::table']]] -]; diff --git a/doxygen/html/search/all_8.html b/doxygen/html/search/all_8.html deleted file mode 100644 index 83c55ae..0000000 --- a/doxygen/html/search/all_8.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_8.js b/doxygen/html/search/all_8.js deleted file mode 100644 index 7ed23e1..0000000 --- a/doxygen/html/search/all_8.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['handler_5fidx_81',['handler_idx',['../structvmp2_1_1v1_1_1entry__t.html#a6eadb65583e755c34e5dfe94b1de9d58',1,'vmp2::v1::entry_t::handler_idx()'],['../structvmp2_1_1v2_1_1entry__t.html#a0790f4f0961fc3ec556727f0e9eff292',1,'vmp2::v2::entry_t::handler_idx()']]], - ['handler_5ft_82',['handler_t',['../structvm_1_1handler_1_1handler__t.html',1,'vm::handler']]], - ['has_5fimm_83',['has_imm',['../structvm_1_1instrs_1_1virt__instr__t.html#ac91bab4ece39b8424e9ef617333948fd',1,'vm::instrs::virt_instr_t::has_imm()'],['../namespacevm_1_1transform.html#a9c79900f35ec03b9f38b239e4678788c',1,'vm::transform::has_imm()'],['../namespacevm_1_1handler.html#ab830e56e2b4ee32851937ae0fe1a4918',1,'vm::handler::has_imm()']]], - ['has_5fjcc_84',['has_jcc',['../structvm_1_1instrs_1_1jcc__data.html#affad18f3c23aeb243a00db2da0ea45e6',1,'vm::instrs::jcc_data']]] -]; diff --git a/doxygen/html/search/all_9.html b/doxygen/html/search/all_9.html deleted file mode 100644 index 1e263c1..0000000 --- a/doxygen/html/search/all_9.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_9.js b/doxygen/html/search/all_9.js deleted file mode 100644 index ecc5676..0000000 --- a/doxygen/html/search/all_9.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['image_5fbase_85',['image_base',['../classvm_1_1ctx__t.html#a9cec1f42d21b006cba4ac370d5962869',1,'vm::ctx_t::image_base()'],['../structvmp2_1_1v2_1_1file__header.html#a834187075d20d68bc3c44df466927018',1,'vmp2::v2::file_header::image_base()'],['../structvmp2_1_1v3_1_1file__header.html#ab4930fa2c29a3020bafbbb1de5cfe400',1,'vmp2::v3::file_header::image_base()']]], - ['image_5fsize_86',['image_size',['../classvm_1_1ctx__t.html#a469ea113041b62e9a044db8e56fa78cb',1,'vm::ctx_t']]], - ['imm_87',['imm',['../structvm_1_1instrs_1_1virt__instr__t.html#a19d74c16a3d29041b59a8897d70a087c',1,'vm::instrs::virt_instr_t']]], - ['imm_5fsize_88',['imm_size',['../structvm_1_1handler_1_1handler__t.html#a7c5be45604678830c9f8b433c94ef830',1,'vm::handler::handler_t::imm_size()'],['../structvm_1_1instrs_1_1virt__instr__t.html#a13ae413a43eaecb9f258a0a4f75b5e57',1,'vm::instrs::virt_instr_t::imm_size()'],['../structvm_1_1handler_1_1profile__t.html#a0761c86417303eb402606a780ea90c30',1,'vm::handler::profile_t::imm_size()'],['../namespacevm_1_1handler.html#a073cb14b6691023771ad8eada2452138',1,'vm::handler::imm_size()']]], - ['init_89',['init',['../classvm_1_1ctx__t.html#a7f24e3ed32d1cca86c296dd8dae4b6d2',1,'vm::ctx_t']]], - ['instr_90',['instr',['../structzydis__instr__t.html#a83f141fec54512c612709a4b3af10242',1,'zydis_instr_t']]], - ['instrs_91',['instrs',['../structvm_1_1handler_1_1handler__t.html#a6c080e14331c4092909c3b0f0c27367d',1,'vm::handler::handler_t']]], - ['invalid_92',['INVALID',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a9bb151fee0df242f0a304a3785191465',1,'vm::handler']]], - ['invalid_93',['invalid',['../namespacevmp2.html#a144e081c8a268c0bfc9f738f32f19579afedb2d84cafe20862cb4399751a8a7e3',1,'vmp2']]], - ['inverse_94',['inverse',['../namespacevm_1_1transform.html#a694675c95aced2c9e406c26d0313ba9a',1,'vm::transform']]], - ['inverse_5ftransforms_95',['inverse_transforms',['../namespacevm_1_1transform.html#a362be5277a6670ab1e2715673f759ae7',1,'vm::transform::inverse_transforms(transform::map_t &transforms, transform::map_t &inverse)'],['../namespacevm_1_1transform.html#aaaaa068fcec7c9d5f627dd2d32db0c9a',1,'vm::transform::inverse_transforms(std::vector< zydis_decoded_instr_t > &instrs) -> bool']]], - ['is_5fjmp_96',['is_jmp',['../namespacevm_1_1util.html#a3bb957b17b2bd94bb66c94b2407799c8',1,'vm::util']]] -]; diff --git a/doxygen/html/search/all_a.html b/doxygen/html/search/all_a.html deleted file mode 100644 index 3a6cac1..0000000 --- a/doxygen/html/search/all_a.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_a.js b/doxygen/html/search/all_a.js deleted file mode 100644 index efe3a5d..0000000 --- a/doxygen/html/search/all_a.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['jcc_97',['jcc',['../structvm_1_1instrs_1_1code__block__t.html#a8531e96fe56f6f936293a6094271c497',1,'vm::instrs::code_block_t::jcc()'],['../structvmp2_1_1v3_1_1code__block__t.html#a2671994201d68daf71d6bad7a666da16',1,'vmp2::v3::code_block_t::jcc()']]], - ['jcc_5fdata_98',['jcc_data',['../structvm_1_1instrs_1_1jcc__data.html',1,'vm::instrs']]], - ['jcc_5ftype_99',['jcc_type',['../namespacevm_1_1instrs.html#a6266fd623fdf44291ecc8897b060fd57',1,'vm::instrs']]], - ['jmp_100',['jmp',['../namespacevm_1_1lifters.html#a5cebba7ce499bc0606117613599fa5d8',1,'vm::lifters::jmp()'],['../namespacevm_1_1handler_1_1profile.html#a677748b24e229ec7417fa89092928fae',1,'vm::handler::profile::jmp()']]], - ['jmp_101',['JMP',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ad9ceecb5b5d78d7467ae3187dd3b0bd8',1,'vm::handler']]], - ['jmp_2ecpp_102',['jmp.cpp',['../vmlifters_2jmp_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2jmp_8cpp.html',1,'(Global Namespace)']]] -]; diff --git a/doxygen/html/search/all_b.html b/doxygen/html/search/all_b.html deleted file mode 100644 index 130deb4..0000000 --- a/doxygen/html/search/all_b.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_b.js b/doxygen/html/search/all_b.js deleted file mode 100644 index 2abbe4e..0000000 --- a/doxygen/html/search/all_b.js +++ /dev/null @@ -1,35 +0,0 @@ -var searchData= -[ - ['lconst_2ecpp_103',['lconst.cpp',['../vmlifters_2lconst_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2lconst_8cpp.html',1,'(Global Namespace)']]], - ['lconstbsxdw_104',['lconstbsxdw',['../namespacevm_1_1lifters.html#a72d98a11da4c9e39ec2b5b2afd22e70c',1,'vm::lifters::lconstbsxdw()'],['../namespacevm_1_1handler_1_1profile.html#a9564effe8ffeb39e275721e0061d2329',1,'vm::handler::profile::lconstbsxdw()']]], - ['lconstbsxdw_105',['LCONSTBSXDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1accb986463feaa5f71f92067dc688aa93',1,'vm::handler']]], - ['lconstbsxq_106',['lconstbsxq',['../namespacevm_1_1handler_1_1profile.html#a3e8dd1515687cbf22241bb7b0ac9c20a',1,'vm::handler::profile::lconstbsxq()'],['../namespacevm_1_1lifters.html#a9c2ff30b47ff5f62aae07043f6e54c07',1,'vm::lifters::lconstbsxq()']]], - ['lconstbsxq_107',['LCONSTBSXQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aed58a3d6bbdb580c2817a128eb1ffe11',1,'vm::handler']]], - ['lconstbzxw_108',['LCONSTBZXW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aa8a6a0d6b5d0cc301380df7bbdcf42b8',1,'vm::handler']]], - ['lconstbzxw_109',['lconstbzxw',['../namespacevm_1_1lifters.html#ae1b69c3029b02505fd5c3b888d9a2f53',1,'vm::lifters::lconstbzxw()'],['../namespacevm_1_1handler_1_1profile.html#a894ae9fb4ec1e6a1a2509e8180ecae09',1,'vm::handler::profile::lconstbzxw()']]], - ['lconstdw_110',['LCONSTDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a21632363cca2c18a0bc30ddd9e718a6b',1,'vm::handler']]], - ['lconstdw_111',['lconstdw',['../namespacevm_1_1lifters.html#a542f3b5caa1095dd8025c9fa33a54140',1,'vm::lifters::lconstdw()'],['../namespacevm_1_1handler_1_1profile.html#a372c4bf2fd4e6925a143d2fa4f7b1d3c',1,'vm::handler::profile::lconstdw()']]], - ['lconstdwsxq_112',['lconstdwsxq',['../namespacevm_1_1lifters.html#af9e2ac54515ca216d4eaa5afc84e2001',1,'vm::lifters::lconstdwsxq()'],['../namespacevm_1_1handler_1_1profile.html#aaeefadf94f965a133da38f0018c3a3fa',1,'vm::handler::profile::lconstdwsxq()']]], - ['lconstdwsxq_113',['LCONSTDWSXQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aa57a3ad6bd862f3e73785b6ac54c1591',1,'vm::handler']]], - ['lconstq_114',['lconstq',['../namespacevm_1_1lifters.html#a6024fb9a51be812a67b061962b4a9073',1,'vm::lifters::lconstq()'],['../namespacevm_1_1handler_1_1profile.html#a9bd4c8f24b989dd0b4d2939f80ce229a',1,'vm::handler::profile::lconstq()']]], - ['lconstq_115',['LCONSTQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a7691f0a92bb227b10a879f701b807c6c',1,'vm::handler']]], - ['lconstw_116',['LCONSTW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1acf151e8e073bb5fc5d0e967fe68a92b7',1,'vm::handler']]], - ['lconstw_117',['lconstw',['../namespacevm_1_1lifters.html#adf386a124868fdac0799765abc41318c',1,'vm::lifters::lconstw()'],['../namespacevm_1_1handler_1_1profile.html#a10a05027b8a8e7b743b4864887ae2726',1,'vm::handler::profile::lconstw()']]], - ['lconstwsxdw_118',['LCONSTWSXDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a1b719f2ae2d0a537fa2965ebd8b467d7',1,'vm::handler']]], - ['lconstwsxdw_119',['lconstwsxdw',['../namespacevm_1_1lifters.html#a0037d3980a52839a609d1af3401e93d3',1,'vm::lifters::lconstwsxdw()'],['../namespacevm_1_1handler_1_1profile.html#ae1b7c27b6a7e02e2ff12583429a50fc5',1,'vm::handler::profile::lconstwsxdw()']]], - ['lconstwsxq_120',['LCONSTWSXQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1adf57df5a2ccfeec8f29a0ca75bdf595b',1,'vm::handler']]], - ['lconstwsxq_121',['lconstwsxq',['../namespacevm_1_1lifters.html#a17c37df162f730e307de53489b5112da',1,'vm::lifters::lconstwsxq()'],['../namespacevm_1_1handler_1_1profile.html#a15f60c9f437f9051a35d2f75865b8a96',1,'vm::handler::profile::lconstwsxq()']]], - ['lflags_2ecpp_122',['lflags.cpp',['../vmlifters_2lflags_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2lflags_8cpp.html',1,'(Global Namespace)']]], - ['lifter_5fcallback_5ft_123',['lifter_callback_t',['../namespacevm_1_1lifters.html#ad6d45fc87d11eea76019f1159069eb6d',1,'vm::lifters']]], - ['lifter_5ft_124',['lifter_t',['../namespacevm_1_1lifters.html#ae0e3f407f89e62897a46763b3de93fa9',1,'vm::lifters']]], - ['lreg_2ecpp_125',['lreg.cpp',['../vmlifters_2lreg_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2lreg_8cpp.html',1,'(Global Namespace)']]], - ['lregdw_126',['lregdw',['../namespacevm_1_1lifters.html#a44522dea5997a2c5d4f743bee1ea4084',1,'vm::lifters::lregdw()'],['../namespacevm_1_1handler_1_1profile.html#aa4ec0ea607d5a6f1288912ce4a888443',1,'vm::handler::profile::lregdw()']]], - ['lregdw_127',['LREGDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ac04ea404828638e83dee7b69ef22810f',1,'vm::handler']]], - ['lregq_128',['lregq',['../namespacevm_1_1lifters.html#a8f85b8d616456ffaf0699e34643aa5a9',1,'vm::lifters::lregq()'],['../namespacevm_1_1handler_1_1profile.html#a414cfdeee11134889ee43e27db751810',1,'vm::handler::profile::lregq()']]], - ['lregq_129',['LREGQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a52308ac93a020fa701b6dee83c3d58f3',1,'vm::handler']]], - ['lrflags_130',['LRFLAGS',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a9ee93798eb7945788dfe63a908a3f423',1,'vm::handler']]], - ['lrflags_131',['lrflags',['../namespacevm_1_1lifters.html#a34a345873c127b0bf9225051ce8453bf',1,'vm::lifters::lrflags()'],['../namespacevm_1_1handler_1_1profile.html#a5548b091697d700b516f23e807880d55',1,'vm::handler::profile::lrflags()']]], - ['lvsp_132',['lvsp',['../namespacevm_1_1lifters.html#ad481b2cb4df18abe8727e942bae7d00c',1,'vm::lifters::lvsp()'],['../namespacevm_1_1handler_1_1profile.html#a355ddd09a3e6f6978304c70d3a33aff7',1,'vm::handler::profile::lvsp()']]], - ['lvsp_133',['LVSP',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a9c71d9caebd124594f42632b6df8c1df',1,'vm::handler']]], - ['lvsp_2ecpp_134',['lvsp.cpp',['../vmprofiles_2lvsp_8cpp.html',1,'(Global Namespace)'],['../vmlifters_2lvsp_8cpp.html',1,'(Global Namespace)']]] -]; diff --git a/doxygen/html/search/all_c.html b/doxygen/html/search/all_c.html deleted file mode 100644 index 3dd5af0..0000000 --- a/doxygen/html/search/all_c.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_c.js b/doxygen/html/search/all_c.js deleted file mode 100644 index b503d8e..0000000 --- a/doxygen/html/search/all_c.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['magic_135',['magic',['../structvmp2_1_1v1_1_1file__header.html#a022ada89136cc9192e849e26e7dfab0d',1,'vmp2::v1::file_header::magic()'],['../structvmp2_1_1v2_1_1file__header.html#adcf136a036f9f2af783f16bec94866c8',1,'vmp2::v2::file_header::magic()'],['../structvmp2_1_1v3_1_1file__header.html#a4d9c6ee3fbb00ded1d3f1952e70d9ab2',1,'vmp2::v3::file_header::magic()']]], - ['make_5fvirtual_5fregister_136',['make_virtual_register',['../namespacevm_1_1lifters.html#acb5a26d705669f85de67543eb131738b',1,'vm::lifters']]], - ['map_5ft_137',['map_t',['../namespacevm_1_1transform.html#af3bd71c380a50beece9341287b7cc025',1,'vm::transform']]], - ['mnemonic_138',['mnemonic',['../structvm_1_1handler_1_1profile__t.html#a7383a473cfa87294b0f7345560c8742d',1,'vm::handler::profile_t']]], - ['mnemonic_5ft_139',['mnemonic_t',['../structvm_1_1instrs_1_1virt__instr__t.html#ac0bd0e3880a6c8f202fd18202f6fcd03',1,'vm::instrs::virt_instr_t::mnemonic_t()'],['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1',1,'vm::handler::mnemonic_t()']]], - ['module_5fbase_140',['module_base',['../classvm_1_1ctx__t.html#a41019acb80ba763e3154c4417b133b5a',1,'vm::ctx_t::module_base()'],['../structvmp2_1_1v1_1_1file__header.html#a0a8fea55e5a66c8f3a47677ce3f69b59',1,'vmp2::v1::file_header::module_base()'],['../structvmp2_1_1v2_1_1file__header.html#a7ebc024810907c119fb47c851c99e82e',1,'vmp2::v2::file_header::module_base()'],['../structvmp2_1_1v3_1_1file__header.html#aa3ff84434ca579d5ac5730e991eade61',1,'vmp2::v3::file_header::module_base()']]], - ['module_5foffset_141',['module_offset',['../structvmp2_1_1v2_1_1file__header.html#a10378288c8899bea07daf5256aa3baaa',1,'vmp2::v2::file_header::module_offset()'],['../structvmp2_1_1v3_1_1file__header.html#a6106a4ebc9e2f7ba730e3aa4106cf787',1,'vmp2::v3::file_header::module_offset()']]], - ['module_5fsize_142',['module_size',['../structvmp2_1_1v2_1_1file__header.html#acfb0589f755fc8702fade3663e4a206d',1,'vmp2::v2::file_header::module_size()'],['../structvmp2_1_1v3_1_1file__header.html#aa73a51bb4a303d12227420d353bd2db2',1,'vmp2::v3::file_header::module_size()']]], - ['mul_2ecpp_143',['mul.cpp',['../mul_8cpp.html',1,'']]], - ['mulq_144',['MULQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a65232b40f75ab995af9eea0d5aee6444',1,'vm::handler']]], - ['mulq_145',['mulq',['../namespacevm_1_1handler_1_1profile.html#a570412f201d1738c4ac5ecac2dc90a2d',1,'vm::handler::profile']]] -]; diff --git a/doxygen/html/search/all_d.html b/doxygen/html/search/all_d.html deleted file mode 100644 index af7f2f0..0000000 --- a/doxygen/html/search/all_d.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_d.js b/doxygen/html/search/all_d.js deleted file mode 100644 index b9ee597..0000000 --- a/doxygen/html/search/all_d.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['name_146',['name',['../structvm_1_1handler_1_1profile__t.html#a9cabcfd822b118e7cb73b978d13c2847',1,'vm::handler::profile_t']]], - ['nand_2ecpp_147',['nand.cpp',['../vmlifters_2nand_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2nand_8cpp.html',1,'(Global Namespace)']]], - ['nanddw_148',['NANDDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ae64f69da87f4b139ed9d2444589ef3f0',1,'vm::handler']]], - ['nanddw_149',['nanddw',['../namespacevm_1_1lifters.html#a9cf0e6ca49b7789e313686478c3590bb',1,'vm::lifters::nanddw()'],['../namespacevm_1_1handler_1_1profile.html#a57bdbf79f0a2209d3599a6684b337d41',1,'vm::handler::profile::nanddw()']]], - ['nandq_150',['nandq',['../namespacevm_1_1lifters.html#a9693c38a1eb8ff1d4849e93929e3debf',1,'vm::lifters::nandq()'],['../namespacevm_1_1handler_1_1profile.html#a44a09dbad0ad33f4e9a3e03547befee1',1,'vm::handler::profile::nandq()']]], - ['nandq_151',['NANDQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a2731b10387427c3422e7d822575bf55a',1,'vm::handler']]], - ['nandw_152',['NANDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aea25395449f2b159a0b9e1547c9b7d13',1,'vm::handler']]], - ['nandw_153',['nandw',['../namespacevm_1_1lifters.html#ac3ae8152bf358b6ab2e705624de1b7c3',1,'vm::lifters::nandw()'],['../namespacevm_1_1handler_1_1profile.html#a9c947e851b1e0829f15fb5fccb77c016',1,'vm::handler::profile::nandw()']]], - ['next_5fblock_5foffset_154',['next_block_offset',['../structvmp2_1_1v3_1_1code__block__t.html#a7fb06d95ee032b63f2d33e382eafa619',1,'vmp2::v3::code_block_t']]], - ['nominmax_155',['NOMINMAX',['../vmutils_8hpp.html#a9f918755b601cf4bffca775992e6fb90',1,'vmutils.hpp']]], - ['none_156',['none',['../namespacevm_1_1handler.html#ac79240b14c7251b5358709c130821e07a8dffe0c4e6ca7a545daca4edac325522',1,'vm::handler::none()'],['../namespacevm_1_1instrs.html#a6266fd623fdf44291ecc8897b060fd57a334c4a4c42fdb79d7ebc3e73b517e6f8',1,'vm::instrs::none()']]] -]; diff --git a/doxygen/html/search/all_e.html b/doxygen/html/search/all_e.html deleted file mode 100644 index e25df42..0000000 --- a/doxygen/html/search/all_e.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_e.js b/doxygen/html/search/all_e.js deleted file mode 100644 index 9265031..0000000 --- a/doxygen/html/search/all_e.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['opcode_157',['opcode',['../structvm_1_1instrs_1_1virt__instr__t.html#ae9ccb599603fb3a6286be7b53221f379',1,'vm::instrs::virt_instr_t']]], - ['operand_158',['operand',['../structvm_1_1instrs_1_1virt__instr__t.html#aa5f9792167cb0ff7f0d906e73f14ed09',1,'vm::instrs::virt_instr_t']]] -]; diff --git a/doxygen/html/search/all_f.html b/doxygen/html/search/all_f.html deleted file mode 100644 index b23da6c..0000000 --- a/doxygen/html/search/all_f.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/all_f.js b/doxygen/html/search/all_f.js deleted file mode 100644 index 8e82c43..0000000 --- a/doxygen/html/search/all_f.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['print_159',['print',['../namespacevm_1_1util.html#abcfe75a7d22f907a6187579373679204',1,'vm::util::print(zydis_routine_t &routine)'],['../namespacevm_1_1util.html#a9e29bef639bd3c9f94669b0acdc8f2b0',1,'vm::util::print(const zydis_decoded_instr_t &instr)']]], - ['profile_160',['profile',['../structvm_1_1handler_1_1handler__t.html#adba165c7493524bf21b2b1aafc15c6be',1,'vm::handler::handler_t']]], - ['profile_5ft_161',['profile_t',['../structvm_1_1handler_1_1profile__t.html',1,'vm::handler']]], - ['pushvsp_162',['PUSHVSP',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aa9f0e1b43f89c1e555a7d3577f5c7b8f',1,'vm::handler']]], - ['pushvsp_163',['pushvsp',['../namespacevm_1_1lifters.html#aedbb6765771fc1b8dcea94891bf23684',1,'vm::lifters::pushvsp()'],['../namespacevm_1_1handler_1_1profile.html#a3d827f69b569476e699a96c16b0334f6',1,'vm::handler::profile::pushvsp()']]], - ['pushvsp_2ecpp_164',['pushvsp.cpp',['../vmlifters_2pushvsp_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2pushvsp_8cpp.html',1,'(Global Namespace)']]] -]; diff --git a/doxygen/html/search/classes_0.html b/doxygen/html/search/classes_0.html deleted file mode 100644 index af8159e..0000000 --- a/doxygen/html/search/classes_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/classes_0.js b/doxygen/html/search/classes_0.js deleted file mode 100644 index 2b93496..0000000 --- a/doxygen/html/search/classes_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['code_5fblock_5ft_285',['code_block_t',['../structvm_1_1instrs_1_1code__block__t.html',1,'vm::instrs::code_block_t'],['../structvmp2_1_1v3_1_1code__block__t.html',1,'vmp2::v3::code_block_t']]], - ['ctx_5ft_286',['ctx_t',['../classvm_1_1ctx__t.html',1,'vm']]] -]; diff --git a/doxygen/html/search/classes_1.html b/doxygen/html/search/classes_1.html deleted file mode 100644 index 576e916..0000000 --- a/doxygen/html/search/classes_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/classes_1.js b/doxygen/html/search/classes_1.js deleted file mode 100644 index cee7572..0000000 --- a/doxygen/html/search/classes_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['entry_5ft_287',['entry_t',['../structvmp2_1_1v1_1_1entry__t.html',1,'vmp2::v1::entry_t'],['../structvmp2_1_1v2_1_1entry__t.html',1,'vmp2::v2::entry_t']]] -]; diff --git a/doxygen/html/search/classes_2.html b/doxygen/html/search/classes_2.html deleted file mode 100644 index 956405e..0000000 --- a/doxygen/html/search/classes_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/classes_2.js b/doxygen/html/search/classes_2.js deleted file mode 100644 index e485e0f..0000000 --- a/doxygen/html/search/classes_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['file_5fheader_288',['file_header',['../structvmp2_1_1v1_1_1file__header.html',1,'vmp2::v1::file_header'],['../structvmp2_1_1v2_1_1file__header.html',1,'vmp2::v2::file_header'],['../structvmp2_1_1v3_1_1file__header.html',1,'vmp2::v3::file_header']]] -]; diff --git a/doxygen/html/search/classes_3.html b/doxygen/html/search/classes_3.html deleted file mode 100644 index d33343b..0000000 --- a/doxygen/html/search/classes_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/classes_3.js b/doxygen/html/search/classes_3.js deleted file mode 100644 index 9a728d9..0000000 --- a/doxygen/html/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['handler_5ft_289',['handler_t',['../structvm_1_1handler_1_1handler__t.html',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/classes_4.html b/doxygen/html/search/classes_4.html deleted file mode 100644 index 8430b07..0000000 --- a/doxygen/html/search/classes_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/classes_4.js b/doxygen/html/search/classes_4.js deleted file mode 100644 index eadc9b2..0000000 --- a/doxygen/html/search/classes_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jcc_5fdata_290',['jcc_data',['../structvm_1_1instrs_1_1jcc__data.html',1,'vm::instrs']]] -]; diff --git a/doxygen/html/search/classes_5.html b/doxygen/html/search/classes_5.html deleted file mode 100644 index c2f1b76..0000000 --- a/doxygen/html/search/classes_5.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/classes_5.js b/doxygen/html/search/classes_5.js deleted file mode 100644 index b10dab4..0000000 --- a/doxygen/html/search/classes_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['profile_5ft_291',['profile_t',['../structvm_1_1handler_1_1profile__t.html',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/classes_6.html b/doxygen/html/search/classes_6.html deleted file mode 100644 index e39847c..0000000 --- a/doxygen/html/search/classes_6.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/classes_6.js b/doxygen/html/search/classes_6.js deleted file mode 100644 index d1cc894..0000000 --- a/doxygen/html/search/classes_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['virt_5finstr_5ft_292',['virt_instr_t',['../structvm_1_1instrs_1_1virt__instr__t.html',1,'vm::instrs']]] -]; diff --git a/doxygen/html/search/classes_7.html b/doxygen/html/search/classes_7.html deleted file mode 100644 index a2c4d1a..0000000 --- a/doxygen/html/search/classes_7.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/classes_7.js b/doxygen/html/search/classes_7.js deleted file mode 100644 index 757fc6b..0000000 --- a/doxygen/html/search/classes_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zydis_5finstr_5ft_293',['zydis_instr_t',['../structzydis__instr__t.html',1,'']]] -]; diff --git a/doxygen/html/search/close.svg b/doxygen/html/search/close.svg deleted file mode 100644 index a933eea..0000000 --- a/doxygen/html/search/close.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - diff --git a/doxygen/html/search/defines_0.html b/doxygen/html/search/defines_0.html deleted file mode 100644 index 15cc3de..0000000 --- a/doxygen/html/search/defines_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/defines_0.js b/doxygen/html/search/defines_0.js deleted file mode 100644 index 856df74..0000000 --- a/doxygen/html/search/defines_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['nominmax_576',['NOMINMAX',['../vmutils_8hpp.html#a9f918755b601cf4bffca775992e6fb90',1,'vmutils.hpp']]] -]; diff --git a/doxygen/html/search/defines_1.html b/doxygen/html/search/defines_1.html deleted file mode 100644 index c49009c..0000000 --- a/doxygen/html/search/defines_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/defines_1.js b/doxygen/html/search/defines_1.js deleted file mode 100644 index 9466c79..0000000 --- a/doxygen/html/search/defines_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['vmp_5fmagic_577',['VMP_MAGIC',['../vmp2_8hpp.html#ae060e76e1844535a1d8bfb65b2ce8391',1,'vmp2.hpp']]] -]; diff --git a/doxygen/html/search/enums_0.html b/doxygen/html/search/enums_0.html deleted file mode 100644 index 141fff5..0000000 --- a/doxygen/html/search/enums_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enums_0.js b/doxygen/html/search/enums_0.js deleted file mode 100644 index c0a7406..0000000 --- a/doxygen/html/search/enums_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['exec_5ftype_5ft_513',['exec_type_t',['../namespacevmp2.html#ab2b6fa03f63a776a5c68007f89b140b5',1,'vmp2']]], - ['extention_5ft_514',['extention_t',['../namespacevm_1_1handler.html#ac79240b14c7251b5358709c130821e07',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enums_1.html b/doxygen/html/search/enums_1.html deleted file mode 100644 index d29f3b1..0000000 --- a/doxygen/html/search/enums_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enums_1.js b/doxygen/html/search/enums_1.js deleted file mode 100644 index fbbd225..0000000 --- a/doxygen/html/search/enums_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jcc_5ftype_515',['jcc_type',['../namespacevm_1_1instrs.html#a6266fd623fdf44291ecc8897b060fd57',1,'vm::instrs']]] -]; diff --git a/doxygen/html/search/enums_2.html b/doxygen/html/search/enums_2.html deleted file mode 100644 index 59aadf2..0000000 --- a/doxygen/html/search/enums_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enums_2.js b/doxygen/html/search/enums_2.js deleted file mode 100644 index 707d3a6..0000000 --- a/doxygen/html/search/enums_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mnemonic_5ft_516',['mnemonic_t',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enums_3.html b/doxygen/html/search/enums_3.html deleted file mode 100644 index 87c1744..0000000 --- a/doxygen/html/search/enums_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enums_3.js b/doxygen/html/search/enums_3.js deleted file mode 100644 index 768afdd..0000000 --- a/doxygen/html/search/enums_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['type_517',['type',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/enums_4.html b/doxygen/html/search/enums_4.html deleted file mode 100644 index 90dda13..0000000 --- a/doxygen/html/search/enums_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enums_4.js b/doxygen/html/search/enums_4.js deleted file mode 100644 index 1fcde41..0000000 --- a/doxygen/html/search/enums_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['version_5ft_518',['version_t',['../namespacevmp2.html#a144e081c8a268c0bfc9f738f32f19579',1,'vmp2']]] -]; diff --git a/doxygen/html/search/enumvalues_0.html b/doxygen/html/search/enumvalues_0.html deleted file mode 100644 index 0d131d9..0000000 --- a/doxygen/html/search/enumvalues_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_0.js b/doxygen/html/search/enumvalues_0.js deleted file mode 100644 index 3650e52..0000000 --- a/doxygen/html/search/enumvalues_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['absolute_519',['absolute',['../namespacevm_1_1instrs.html#a6266fd623fdf44291ecc8897b060fd57adc4d53aa0d117d8b189b36d161af4e96',1,'vm::instrs']]], - ['adddw_520',['ADDDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1abb62bc05ab9e2b13eea6e0a68a9a850f',1,'vm::handler']]], - ['addq_521',['ADDQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a1c1d818ac0054ac2bab61885479fd10b',1,'vm::handler']]], - ['addw_522',['ADDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a658535c08ac0930a31bd92dfc8b2efc6',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enumvalues_1.html b/doxygen/html/search/enumvalues_1.html deleted file mode 100644 index cd9187a..0000000 --- a/doxygen/html/search/enumvalues_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_1.js b/doxygen/html/search/enumvalues_1.js deleted file mode 100644 index 3b30794..0000000 --- a/doxygen/html/search/enumvalues_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['backward_523',['backward',['../namespacevmp2.html#ab2b6fa03f63a776a5c68007f89b140b5a195fe59b6f103787a914aead0f3db502',1,'vmp2']]], - ['branching_524',['branching',['../namespacevm_1_1instrs.html#a6266fd623fdf44291ecc8897b060fd57a2c28b4e01b26788eab59ce1479b88494',1,'vm::instrs']]] -]; diff --git a/doxygen/html/search/enumvalues_10.html b/doxygen/html/search/enumvalues_10.html deleted file mode 100644 index dee29cc..0000000 --- a/doxygen/html/search/enumvalues_10.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_10.js b/doxygen/html/search/enumvalues_10.js deleted file mode 100644 index 6a94ddf..0000000 --- a/doxygen/html/search/enumvalues_10.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['writeb_571',['WRITEB',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aa5646e9d21720029b354bfeca29f6241',1,'vm::handler']]], - ['writedw_572',['WRITEDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1af92bc6344b93fea2c0e5d1fdf8500160',1,'vm::handler']]], - ['writeq_573',['WRITEQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a24fc686c7f66e479c8c1ae145bf2ba14',1,'vm::handler']]], - ['writew_574',['WRITEW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ae5197ebd4240e18268cdeca4371c25d5',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enumvalues_11.html b/doxygen/html/search/enumvalues_11.html deleted file mode 100644 index 6d0e918..0000000 --- a/doxygen/html/search/enumvalues_11.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_11.js b/doxygen/html/search/enumvalues_11.js deleted file mode 100644 index d5c1360..0000000 --- a/doxygen/html/search/enumvalues_11.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zero_5fextend_575',['zero_extend',['../namespacevm_1_1handler.html#ac79240b14c7251b5358709c130821e07a6ff2bd786349a5d9affb290a9c602725',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enumvalues_2.html b/doxygen/html/search/enumvalues_2.html deleted file mode 100644 index 2b95d92..0000000 --- a/doxygen/html/search/enumvalues_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_2.js b/doxygen/html/search/enumvalues_2.js deleted file mode 100644 index c370692..0000000 --- a/doxygen/html/search/enumvalues_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['call_525',['CALL',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a20b781d295b3872217cec880fc659ff9',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enumvalues_3.html b/doxygen/html/search/enumvalues_3.html deleted file mode 100644 index bc0ac8a..0000000 --- a/doxygen/html/search/enumvalues_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_3.js b/doxygen/html/search/enumvalues_3.js deleted file mode 100644 index 211e0cc..0000000 --- a/doxygen/html/search/enumvalues_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['divq_526',['DIVQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a3b8d706f88294ce7a8a8b08a9f5ff394',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enumvalues_4.html b/doxygen/html/search/enumvalues_4.html deleted file mode 100644 index ef94dd8..0000000 --- a/doxygen/html/search/enumvalues_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_4.js b/doxygen/html/search/enumvalues_4.js deleted file mode 100644 index 86693a3..0000000 --- a/doxygen/html/search/enumvalues_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['forward_527',['forward',['../namespacevmp2.html#ab2b6fa03f63a776a5c68007f89b140b5a965dbaac085fc891bfbbd4f9d145bbc8',1,'vmp2']]] -]; diff --git a/doxygen/html/search/enumvalues_5.html b/doxygen/html/search/enumvalues_5.html deleted file mode 100644 index 1c2e2f3..0000000 --- a/doxygen/html/search/enumvalues_5.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_5.js b/doxygen/html/search/enumvalues_5.js deleted file mode 100644 index 3af31c8..0000000 --- a/doxygen/html/search/enumvalues_5.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['generic0_528',['generic0',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384ab30d1c29c4a3eff9ff46c9c9ff3ac330',1,'vm::transform']]], - ['generic1_529',['generic1',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a5b034533010375fbc25ce97ffcdd36bc',1,'vm::transform']]], - ['generic2_530',['generic2',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a0a454dce1e3512aace652c12ba85ae83',1,'vm::transform']]], - ['generic3_531',['generic3',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a167e51d9fbde7c7356bb71cd04f61beb',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/enumvalues_6.html b/doxygen/html/search/enumvalues_6.html deleted file mode 100644 index f985df9..0000000 --- a/doxygen/html/search/enumvalues_6.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_6.js b/doxygen/html/search/enumvalues_6.js deleted file mode 100644 index 74c2b6f..0000000 --- a/doxygen/html/search/enumvalues_6.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['invalid_532',['INVALID',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a9bb151fee0df242f0a304a3785191465',1,'vm::handler']]], - ['invalid_533',['invalid',['../namespacevmp2.html#a144e081c8a268c0bfc9f738f32f19579afedb2d84cafe20862cb4399751a8a7e3',1,'vmp2']]] -]; diff --git a/doxygen/html/search/enumvalues_7.html b/doxygen/html/search/enumvalues_7.html deleted file mode 100644 index 7fdf663..0000000 --- a/doxygen/html/search/enumvalues_7.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_7.js b/doxygen/html/search/enumvalues_7.js deleted file mode 100644 index 98d5f24..0000000 --- a/doxygen/html/search/enumvalues_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jmp_534',['JMP',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ad9ceecb5b5d78d7467ae3187dd3b0bd8',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enumvalues_8.html b/doxygen/html/search/enumvalues_8.html deleted file mode 100644 index 674ccda..0000000 --- a/doxygen/html/search/enumvalues_8.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_8.js b/doxygen/html/search/enumvalues_8.js deleted file mode 100644 index 53f2f06..0000000 --- a/doxygen/html/search/enumvalues_8.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['lconstbsxdw_535',['LCONSTBSXDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1accb986463feaa5f71f92067dc688aa93',1,'vm::handler']]], - ['lconstbsxq_536',['LCONSTBSXQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aed58a3d6bbdb580c2817a128eb1ffe11',1,'vm::handler']]], - ['lconstbzxw_537',['LCONSTBZXW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aa8a6a0d6b5d0cc301380df7bbdcf42b8',1,'vm::handler']]], - ['lconstdw_538',['LCONSTDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a21632363cca2c18a0bc30ddd9e718a6b',1,'vm::handler']]], - ['lconstdwsxq_539',['LCONSTDWSXQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aa57a3ad6bd862f3e73785b6ac54c1591',1,'vm::handler']]], - ['lconstq_540',['LCONSTQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a7691f0a92bb227b10a879f701b807c6c',1,'vm::handler']]], - ['lconstw_541',['LCONSTW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1acf151e8e073bb5fc5d0e967fe68a92b7',1,'vm::handler']]], - ['lconstwsxdw_542',['LCONSTWSXDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a1b719f2ae2d0a537fa2965ebd8b467d7',1,'vm::handler']]], - ['lconstwsxq_543',['LCONSTWSXQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1adf57df5a2ccfeec8f29a0ca75bdf595b',1,'vm::handler']]], - ['lregdw_544',['LREGDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ac04ea404828638e83dee7b69ef22810f',1,'vm::handler']]], - ['lregq_545',['LREGQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a52308ac93a020fa701b6dee83c3d58f3',1,'vm::handler']]], - ['lrflags_546',['LRFLAGS',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a9ee93798eb7945788dfe63a908a3f423',1,'vm::handler']]], - ['lvsp_547',['LVSP',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a9c71d9caebd124594f42632b6df8c1df',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enumvalues_9.html b/doxygen/html/search/enumvalues_9.html deleted file mode 100644 index 60f15ee..0000000 --- a/doxygen/html/search/enumvalues_9.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_9.js b/doxygen/html/search/enumvalues_9.js deleted file mode 100644 index 9226a91..0000000 --- a/doxygen/html/search/enumvalues_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mulq_548',['MULQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a65232b40f75ab995af9eea0d5aee6444',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enumvalues_a.html b/doxygen/html/search/enumvalues_a.html deleted file mode 100644 index ce1064c..0000000 --- a/doxygen/html/search/enumvalues_a.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_a.js b/doxygen/html/search/enumvalues_a.js deleted file mode 100644 index 96351e3..0000000 --- a/doxygen/html/search/enumvalues_a.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['nanddw_549',['NANDDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ae64f69da87f4b139ed9d2444589ef3f0',1,'vm::handler']]], - ['nandq_550',['NANDQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a2731b10387427c3422e7d822575bf55a',1,'vm::handler']]], - ['nandw_551',['NANDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aea25395449f2b159a0b9e1547c9b7d13',1,'vm::handler']]], - ['none_552',['none',['../namespacevm_1_1handler.html#ac79240b14c7251b5358709c130821e07a8dffe0c4e6ca7a545daca4edac325522',1,'vm::handler::none()'],['../namespacevm_1_1instrs.html#a6266fd623fdf44291ecc8897b060fd57a334c4a4c42fdb79d7ebc3e73b517e6f8',1,'vm::instrs::none()']]] -]; diff --git a/doxygen/html/search/enumvalues_b.html b/doxygen/html/search/enumvalues_b.html deleted file mode 100644 index ec768e7..0000000 --- a/doxygen/html/search/enumvalues_b.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_b.js b/doxygen/html/search/enumvalues_b.js deleted file mode 100644 index daeb368..0000000 --- a/doxygen/html/search/enumvalues_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['pushvsp_553',['PUSHVSP',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aa9f0e1b43f89c1e555a7d3577f5c7b8f',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enumvalues_c.html b/doxygen/html/search/enumvalues_c.html deleted file mode 100644 index bdb4e13..0000000 --- a/doxygen/html/search/enumvalues_c.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_c.js b/doxygen/html/search/enumvalues_c.js deleted file mode 100644 index 43607de..0000000 --- a/doxygen/html/search/enumvalues_c.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['readdw_554',['READDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a483ae76aeaa24a4278793ac99f32e45b',1,'vm::handler']]], - ['readq_555',['READQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aedc758f639062bd366e49b155618225b',1,'vm::handler']]], - ['readw_556',['READW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a20f6daaede6cf418b6e3cb7a5b242a47',1,'vm::handler']]], - ['rolling_5fkey_557',['rolling_key',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a2b4d8b33b65a6ec012bfee034f0eb535',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/enumvalues_d.html b/doxygen/html/search/enumvalues_d.html deleted file mode 100644 index 47a7615..0000000 --- a/doxygen/html/search/enumvalues_d.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_d.js b/doxygen/html/search/enumvalues_d.js deleted file mode 100644 index 3990c48..0000000 --- a/doxygen/html/search/enumvalues_d.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['shldw_558',['SHLDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ab8cddf6b4543c598ccb714551141aa81',1,'vm::handler']]], - ['shlq_559',['SHLQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ae820c14a2d48db026b12e60ef2bf55b3',1,'vm::handler']]], - ['shrq_560',['SHRQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ac14306e538f382de3093cc8f3d4d95ec',1,'vm::handler']]], - ['shrw_561',['SHRW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ab36694ea7404c953f0fefdd201592d37',1,'vm::handler']]], - ['sign_5fextend_562',['sign_extend',['../namespacevm_1_1handler.html#ac79240b14c7251b5358709c130821e07acae8cc1c1114ea88d7d8affeecb19b1d',1,'vm::handler']]], - ['sregdw_563',['SREGDW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1ac41895fb285b8cb4ebe33755fc9b4974',1,'vm::handler']]], - ['sregq_564',['SREGQ',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a624092452de9f6648610ceffce32f78e',1,'vm::handler']]], - ['sregw_565',['SREGW',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1a918bd3d416c98957043ace785146adeb',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/enumvalues_e.html b/doxygen/html/search/enumvalues_e.html deleted file mode 100644 index c7b30bf..0000000 --- a/doxygen/html/search/enumvalues_e.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_e.js b/doxygen/html/search/enumvalues_e.js deleted file mode 100644 index bf52524..0000000 --- a/doxygen/html/search/enumvalues_e.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['update_5fkey_566',['update_key',['../namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a1033ce2eeb9b85e88eacb326208e9e4b',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/enumvalues_f.html b/doxygen/html/search/enumvalues_f.html deleted file mode 100644 index 9a7bb12..0000000 --- a/doxygen/html/search/enumvalues_f.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/enumvalues_f.js b/doxygen/html/search/enumvalues_f.js deleted file mode 100644 index ad992b4..0000000 --- a/doxygen/html/search/enumvalues_f.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['v1_567',['v1',['../namespacevmp2.html#a144e081c8a268c0bfc9f738f32f19579a6654c734ccab8f440ff0825eb443dc7f',1,'vmp2']]], - ['v2_568',['v2',['../namespacevmp2.html#a144e081c8a268c0bfc9f738f32f19579a1b267619c4812cc46ee281747884ca50',1,'vmp2']]], - ['v3_569',['v3',['../namespacevmp2.html#a144e081c8a268c0bfc9f738f32f19579a43a03299a3c3fed3d8ce7b820f3aca81',1,'vmp2']]], - ['vmexit_570',['VMEXIT',['../namespacevm_1_1handler.html#a83cdfb05acdea9268310c37165bd13c1aca4bfa0932d82166e9731d77d4ddd42e',1,'vm::handler']]] -]; diff --git a/doxygen/html/search/files_0.html b/doxygen/html/search/files_0.html deleted file mode 100644 index 9498842..0000000 --- a/doxygen/html/search/files_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_0.js b/doxygen/html/search/files_0.js deleted file mode 100644 index 4e3a7a3..0000000 --- a/doxygen/html/search/files_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['add_2ecpp_308',['add.cpp',['../vmlifters_2add_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2add_8cpp.html',1,'(Global Namespace)']]] -]; diff --git a/doxygen/html/search/files_1.html b/doxygen/html/search/files_1.html deleted file mode 100644 index 7050ef4..0000000 --- a/doxygen/html/search/files_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_1.js b/doxygen/html/search/files_1.js deleted file mode 100644 index aeb97ca..0000000 --- a/doxygen/html/search/files_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['calc_5fjmp_2ecpp_309',['calc_jmp.cpp',['../calc__jmp_8cpp.html',1,'']]], - ['calc_5fjmp_2ehpp_310',['calc_jmp.hpp',['../calc__jmp_8hpp.html',1,'']]], - ['call_2ecpp_311',['call.cpp',['../call_8cpp.html',1,'']]] -]; diff --git a/doxygen/html/search/files_2.html b/doxygen/html/search/files_2.html deleted file mode 100644 index 497cdf5..0000000 --- a/doxygen/html/search/files_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_2.js b/doxygen/html/search/files_2.js deleted file mode 100644 index afbffbc..0000000 --- a/doxygen/html/search/files_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['div_2ecpp_312',['div.cpp',['../div_8cpp.html',1,'']]] -]; diff --git a/doxygen/html/search/files_3.html b/doxygen/html/search/files_3.html deleted file mode 100644 index 1ba106b..0000000 --- a/doxygen/html/search/files_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_3.js b/doxygen/html/search/files_3.js deleted file mode 100644 index c2ce988..0000000 --- a/doxygen/html/search/files_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jmp_2ecpp_313',['jmp.cpp',['../vmlifters_2jmp_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2jmp_8cpp.html',1,'(Global Namespace)']]] -]; diff --git a/doxygen/html/search/files_4.html b/doxygen/html/search/files_4.html deleted file mode 100644 index 753b7b1..0000000 --- a/doxygen/html/search/files_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_4.js b/doxygen/html/search/files_4.js deleted file mode 100644 index c8df8b8..0000000 --- a/doxygen/html/search/files_4.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['lconst_2ecpp_314',['lconst.cpp',['../vmlifters_2lconst_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2lconst_8cpp.html',1,'(Global Namespace)']]], - ['lflags_2ecpp_315',['lflags.cpp',['../vmlifters_2lflags_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2lflags_8cpp.html',1,'(Global Namespace)']]], - ['lreg_2ecpp_316',['lreg.cpp',['../vmlifters_2lreg_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2lreg_8cpp.html',1,'(Global Namespace)']]], - ['lvsp_2ecpp_317',['lvsp.cpp',['../vmlifters_2lvsp_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2lvsp_8cpp.html',1,'(Global Namespace)']]] -]; diff --git a/doxygen/html/search/files_5.html b/doxygen/html/search/files_5.html deleted file mode 100644 index 7b6affd..0000000 --- a/doxygen/html/search/files_5.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_5.js b/doxygen/html/search/files_5.js deleted file mode 100644 index e5bf054..0000000 --- a/doxygen/html/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mul_2ecpp_318',['mul.cpp',['../mul_8cpp.html',1,'']]] -]; diff --git a/doxygen/html/search/files_6.html b/doxygen/html/search/files_6.html deleted file mode 100644 index 802ebf7..0000000 --- a/doxygen/html/search/files_6.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_6.js b/doxygen/html/search/files_6.js deleted file mode 100644 index ea78925..0000000 --- a/doxygen/html/search/files_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['nand_2ecpp_319',['nand.cpp',['../vmlifters_2nand_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2nand_8cpp.html',1,'(Global Namespace)']]] -]; diff --git a/doxygen/html/search/files_7.html b/doxygen/html/search/files_7.html deleted file mode 100644 index 365e648..0000000 --- a/doxygen/html/search/files_7.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_7.js b/doxygen/html/search/files_7.js deleted file mode 100644 index 539e8e6..0000000 --- a/doxygen/html/search/files_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['pushvsp_2ecpp_320',['pushvsp.cpp',['../vmlifters_2pushvsp_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2pushvsp_8cpp.html',1,'(Global Namespace)']]] -]; diff --git a/doxygen/html/search/files_8.html b/doxygen/html/search/files_8.html deleted file mode 100644 index 3df0f2f..0000000 --- a/doxygen/html/search/files_8.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_8.js b/doxygen/html/search/files_8.js deleted file mode 100644 index 981d124..0000000 --- a/doxygen/html/search/files_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['read_2ecpp_321',['read.cpp',['../vmlifters_2read_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2read_8cpp.html',1,'(Global Namespace)']]], - ['readme_2emd_322',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]] -]; diff --git a/doxygen/html/search/files_9.html b/doxygen/html/search/files_9.html deleted file mode 100644 index 52f8b6c..0000000 --- a/doxygen/html/search/files_9.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_9.js b/doxygen/html/search/files_9.js deleted file mode 100644 index 9545f43..0000000 --- a/doxygen/html/search/files_9.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['shl_2ecpp_323',['shl.cpp',['../shl_8cpp.html',1,'']]], - ['shr_2ecpp_324',['shr.cpp',['../vmlifters_2shr_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2shr_8cpp.html',1,'(Global Namespace)']]], - ['sreg_2ecpp_325',['sreg.cpp',['../vmlifters_2sreg_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2sreg_8cpp.html',1,'(Global Namespace)']]] -]; diff --git a/doxygen/html/search/files_a.html b/doxygen/html/search/files_a.html deleted file mode 100644 index 11d4c11..0000000 --- a/doxygen/html/search/files_a.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_a.js b/doxygen/html/search/files_a.js deleted file mode 100644 index d897097..0000000 --- a/doxygen/html/search/files_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['transform_2ehpp_326',['transform.hpp',['../transform_8hpp.html',1,'']]] -]; diff --git a/doxygen/html/search/files_b.html b/doxygen/html/search/files_b.html deleted file mode 100644 index 9fc8343..0000000 --- a/doxygen/html/search/files_b.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_b.js b/doxygen/html/search/files_b.js deleted file mode 100644 index 41470ad..0000000 --- a/doxygen/html/search/files_b.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['vmctx_2ecpp_327',['vmctx.cpp',['../vmctx_8cpp.html',1,'']]], - ['vmctx_2ehpp_328',['vmctx.hpp',['../vmctx_8hpp.html',1,'']]], - ['vmexit_2ecpp_329',['vmexit.cpp',['../vmlifters_2vmexit_8cpp.html',1,'(Global Namespace)'],['../vmprofiles_2vmexit_8cpp.html',1,'(Global Namespace)']]], - ['vmhandler_2ecpp_330',['vmhandler.cpp',['../vmhandler_8cpp.html',1,'']]], - ['vmhandlers_2ehpp_331',['vmhandlers.hpp',['../vmhandlers_8hpp.html',1,'']]], - ['vminstrs_2ecpp_332',['vminstrs.cpp',['../vminstrs_8cpp.html',1,'']]], - ['vminstrs_2ehpp_333',['vminstrs.hpp',['../vminstrs_8hpp.html',1,'']]], - ['vmlifters_2ehpp_334',['vmlifters.hpp',['../vmlifters_8hpp.html',1,'']]], - ['vmp2_2ehpp_335',['vmp2.hpp',['../vmp2_8hpp.html',1,'']]], - ['vmprofiler_2ehpp_336',['vmprofiler.hpp',['../vmprofiler_8hpp.html',1,'']]], - ['vmprofiles_2ehpp_337',['vmprofiles.hpp',['../vmprofiles_8hpp.html',1,'']]], - ['vmutils_2ecpp_338',['vmutils.cpp',['../vmutils_8cpp.html',1,'']]], - ['vmutils_2ehpp_339',['vmutils.hpp',['../vmutils_8hpp.html',1,'']]] -]; diff --git a/doxygen/html/search/files_c.html b/doxygen/html/search/files_c.html deleted file mode 100644 index c266b4c..0000000 --- a/doxygen/html/search/files_c.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/files_c.js b/doxygen/html/search/files_c.js deleted file mode 100644 index ae029db..0000000 --- a/doxygen/html/search/files_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['write_2ecpp_340',['write.cpp',['../write_8cpp.html',1,'']]] -]; diff --git a/doxygen/html/search/functions_0.html b/doxygen/html/search/functions_0.html deleted file mode 100644 index eb4c501..0000000 --- a/doxygen/html/search/functions_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_0.js b/doxygen/html/search/functions_0.js deleted file mode 100644 index 21f5ca2..0000000 --- a/doxygen/html/search/functions_0.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['_5f_5frol1_5f_5f_341',['__ROL1__',['../namespacevm_1_1transform.html#a2f914dc341284423d3cf0bc83fbbc6d4',1,'vm::transform']]], - ['_5f_5frol2_5f_5f_342',['__ROL2__',['../namespacevm_1_1transform.html#af597f7ca1a317d800345ba0ce3139145',1,'vm::transform']]], - ['_5f_5frol4_5f_5f_343',['__ROL4__',['../namespacevm_1_1transform.html#a5845d259b97aa94ad627cb323f79bc43',1,'vm::transform']]], - ['_5f_5frol8_5f_5f_344',['__ROL8__',['../namespacevm_1_1transform.html#adeb404f2e3208d35eae516af9d979814',1,'vm::transform']]], - ['_5f_5frol_5f_5f_345',['__ROL__',['../namespacevm_1_1transform.html#a95343da0cff7223109113b65ff4211b6',1,'vm::transform']]], - ['_5f_5fror1_5f_5f_346',['__ROR1__',['../namespacevm_1_1transform.html#a22a3bc4437a3fe171d16c08e26bd8098',1,'vm::transform']]], - ['_5f_5fror2_5f_5f_347',['__ROR2__',['../namespacevm_1_1transform.html#ae461230c2fd31540a32f7b7d439c00cc',1,'vm::transform']]], - ['_5f_5fror4_5f_5f_348',['__ROR4__',['../namespacevm_1_1transform.html#a84ceeae51a16def42530b6ce2bd52d23',1,'vm::transform']]], - ['_5f_5fror8_5f_5f_349',['__ROR8__',['../namespacevm_1_1transform.html#a8a109ae3f6a76f60fafedabde509594f',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/functions_1.html b/doxygen/html/search/functions_1.html deleted file mode 100644 index ef4088b..0000000 --- a/doxygen/html/search/functions_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_1.js b/doxygen/html/search/functions_1.js deleted file mode 100644 index c27bc9c..0000000 --- a/doxygen/html/search/functions_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['apply_350',['apply',['../namespacevm_1_1transform.html#a4f111b0cc38dd9e03f6f5eed3fa824f7',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/functions_2.html b/doxygen/html/search/functions_2.html deleted file mode 100644 index ca5aa10..0000000 --- a/doxygen/html/search/functions_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_2.js b/doxygen/html/search/functions_2.js deleted file mode 100644 index ad24a02..0000000 --- a/doxygen/html/search/functions_2.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['code_5fblock_5faddr_351',['code_block_addr',['../namespacevm_1_1instrs.html#a5ee4814b206e0a4f8fc27356efc9503a',1,'vm::instrs::code_block_addr(const vm::ctx_t &ctx, const vmp2::v2::entry_t &entry)'],['../namespacevm_1_1instrs.html#ab49694becc7c7cbd618468b675e1b22a',1,'vm::instrs::code_block_addr(const vm::ctx_t &ctx, const std::uint32_t lower_32bits)']]], - ['compare_352',['compare',['../namespacevm_1_1util_1_1reg.html#aa6e516ed1170cd627f330ca68c1bfd4b',1,'vm::util::reg']]], - ['ctx_5ft_353',['ctx_t',['../classvm_1_1ctx__t.html#aac2f090b11989dacf989648f751f77ad',1,'vm::ctx_t']]] -]; diff --git a/doxygen/html/search/functions_3.html b/doxygen/html/search/functions_3.html deleted file mode 100644 index d79f55b..0000000 --- a/doxygen/html/search/functions_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_3.js b/doxygen/html/search/functions_3.js deleted file mode 100644 index dec2245..0000000 --- a/doxygen/html/search/functions_3.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['decrypt_354',['decrypt',['../namespacevm_1_1handler_1_1table.html#aa8ffcb4e9e445f940723179cf9c87818',1,'vm::handler::table']]], - ['decrypt_5foperand_355',['decrypt_operand',['../namespacevm_1_1instrs.html#a995be4b7dd3764aec88207611a2b879d',1,'vm::instrs']]], - ['deobfuscate_356',['deobfuscate',['../namespacevm_1_1util.html#afb0bd6aeba990fd37a612d6d318cebb5',1,'vm::util']]] -]; diff --git a/doxygen/html/search/functions_4.html b/doxygen/html/search/functions_4.html deleted file mode 100644 index 1657cad..0000000 --- a/doxygen/html/search/functions_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_4.js b/doxygen/html/search/functions_4.js deleted file mode 100644 index 3d64d72..0000000 --- a/doxygen/html/search/functions_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['encrypt_357',['encrypt',['../namespacevm_1_1handler_1_1table.html#a69494eb8dca48abd03ff543c8adbf186',1,'vm::handler::table']]], - ['encrypt_5foperand_358',['encrypt_operand',['../namespacevm_1_1instrs.html#a388b00855c582da503850d72de7e8f57',1,'vm::instrs']]] -]; diff --git a/doxygen/html/search/functions_5.html b/doxygen/html/search/functions_5.html deleted file mode 100644 index 9301d6b..0000000 --- a/doxygen/html/search/functions_5.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_5.js b/doxygen/html/search/functions_5.js deleted file mode 100644 index f089131..0000000 --- a/doxygen/html/search/functions_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['flatten_359',['flatten',['../namespacevm_1_1util.html#a86a98ad0643716aef1ef80b3cd58d0e9',1,'vm::util']]] -]; diff --git a/doxygen/html/search/functions_6.html b/doxygen/html/search/functions_6.html deleted file mode 100644 index 9c4f5fc..0000000 --- a/doxygen/html/search/functions_6.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_6.js b/doxygen/html/search/functions_6.js deleted file mode 100644 index 4633986..0000000 --- a/doxygen/html/search/functions_6.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['get_360',['get',['../namespacevm_1_1calc__jmp.html#a20adb0aacf7a4ccf90484540c8004a30',1,'vm::calc_jmp::get()'],['../namespacevm_1_1handler.html#aa04be3f452edc65f17c38ef91fbed341',1,'vm::handler::get()'],['../namespacevm_1_1handler_1_1table.html#a664a7f96f12e1305466df77d761d43fc',1,'vm::handler::table::get()'],['../namespacevm_1_1instrs.html#aa7a629de41909a287c549397a4043c2f',1,'vm::instrs::get()']]], - ['get_5fadvancement_361',['get_advancement',['../namespacevm_1_1calc__jmp.html#a963e598b01968c61ef992a9c7235cf8e',1,'vm::calc_jmp']]], - ['get_5fall_362',['get_all',['../namespacevm_1_1handler.html#ae40eade4312e1383ae334ad2e0adacbf',1,'vm::handler::get_all(std::uintptr_t module_base, std::uintptr_t image_base, zydis_routine_t &vm_entry, std::uintptr_t *vm_handler_table, std::vector< handler_t > &vm_handlers)'],['../namespacevm_1_1handler.html#ae5e88e98b57b69a61e344e17386a06c3',1,'vm::handler::get_all(std::uintptr_t module_base, std::uintptr_t image_base, zydis_routine_t &vm_entry, std::uintptr_t *vm_handler_table, std::vector< vm::handler::handler_t > &vm_handlers)']]], - ['get_5ffetch_5foperand_363',['get_fetch_operand',['../namespacevm_1_1util.html#a6ef2ebfb858878e2e06d3c96ef5b275b',1,'vm::util::get_fetch_operand(const zydis_routine_t &routine, zydis_instr_t &fetch_instr)'],['../namespacevm_1_1util.html#ae2d46e089059f00dc56790216c5cc234',1,'vm::util::get_fetch_operand(zydis_routine_t &routine)']]], - ['get_5fimm_364',['get_imm',['../namespacevm_1_1instrs.html#a432536e816a10200518676e5616335a6',1,'vm::instrs']]], - ['get_5fjcc_5fdata_365',['get_jcc_data',['../namespacevm_1_1instrs.html#a093e8f1c37d98c4454a3d0b58fda6188',1,'vm::instrs']]], - ['get_5foperand_5ftransforms_366',['get_operand_transforms',['../namespacevm_1_1handler.html#ad63629408ca7f8b34169a38399ffcf02',1,'vm::handler']]], - ['get_5fprofile_367',['get_profile',['../namespacevm_1_1handler.html#ad410231628efa1c4ee7fe9a8c4c7db90',1,'vm::handler::get_profile(handler_t &vm_handler)'],['../namespacevm_1_1handler.html#a0ba01b3a015d7f25b83261e9183a2e40',1,'vm::handler::get_profile(vm::handler::mnemonic_t mnemonic)']]], - ['get_5frva_5fdecrypt_368',['get_rva_decrypt',['../namespacevm_1_1instrs.html#abfbe5c819730d2693296df3c71393de3',1,'vm::instrs']]], - ['get_5ftransform_369',['get_transform',['../namespacevm_1_1handler_1_1table.html#a5e8586b80ccde98882291ded921749ff',1,'vm::handler::table']]] -]; diff --git a/doxygen/html/search/functions_7.html b/doxygen/html/search/functions_7.html deleted file mode 100644 index 46b5c0f..0000000 --- a/doxygen/html/search/functions_7.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_7.js b/doxygen/html/search/functions_7.js deleted file mode 100644 index 81c5d74..0000000 --- a/doxygen/html/search/functions_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['has_5fimm_370',['has_imm',['../namespacevm_1_1transform.html#a9c79900f35ec03b9f38b239e4678788c',1,'vm::transform::has_imm()'],['../namespacevm_1_1handler.html#ab830e56e2b4ee32851937ae0fe1a4918',1,'vm::handler::has_imm()']]] -]; diff --git a/doxygen/html/search/functions_8.html b/doxygen/html/search/functions_8.html deleted file mode 100644 index 31a1d95..0000000 --- a/doxygen/html/search/functions_8.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_8.js b/doxygen/html/search/functions_8.js deleted file mode 100644 index f138bce..0000000 --- a/doxygen/html/search/functions_8.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['imm_5fsize_371',['imm_size',['../namespacevm_1_1handler.html#a073cb14b6691023771ad8eada2452138',1,'vm::handler']]], - ['init_372',['init',['../classvm_1_1ctx__t.html#a7f24e3ed32d1cca86c296dd8dae4b6d2',1,'vm::ctx_t']]], - ['inverse_5ftransforms_373',['inverse_transforms',['../namespacevm_1_1transform.html#a362be5277a6670ab1e2715673f759ae7',1,'vm::transform::inverse_transforms(transform::map_t &transforms, transform::map_t &inverse)'],['../namespacevm_1_1transform.html#aaaaa068fcec7c9d5f627dd2d32db0c9a',1,'vm::transform::inverse_transforms(std::vector< zydis_decoded_instr_t > &instrs) -> bool']]], - ['is_5fjmp_374',['is_jmp',['../namespacevm_1_1util.html#a3bb957b17b2bd94bb66c94b2407799c8',1,'vm::util']]] -]; diff --git a/doxygen/html/search/functions_9.html b/doxygen/html/search/functions_9.html deleted file mode 100644 index 9a8e429..0000000 --- a/doxygen/html/search/functions_9.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_9.js b/doxygen/html/search/functions_9.js deleted file mode 100644 index 0d3de06..0000000 --- a/doxygen/html/search/functions_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['make_5fvirtual_5fregister_375',['make_virtual_register',['../namespacevm_1_1lifters.html#acb5a26d705669f85de67543eb131738b',1,'vm::lifters']]] -]; diff --git a/doxygen/html/search/functions_a.html b/doxygen/html/search/functions_a.html deleted file mode 100644 index 5ecc152..0000000 --- a/doxygen/html/search/functions_a.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_a.js b/doxygen/html/search/functions_a.js deleted file mode 100644 index c0b0f92..0000000 --- a/doxygen/html/search/functions_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['print_376',['print',['../namespacevm_1_1util.html#abcfe75a7d22f907a6187579373679204',1,'vm::util::print(zydis_routine_t &routine)'],['../namespacevm_1_1util.html#a9e29bef639bd3c9f94669b0acdc8f2b0',1,'vm::util::print(const zydis_decoded_instr_t &instr)']]] -]; diff --git a/doxygen/html/search/functions_b.html b/doxygen/html/search/functions_b.html deleted file mode 100644 index e301fed..0000000 --- a/doxygen/html/search/functions_b.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_b.js b/doxygen/html/search/functions_b.js deleted file mode 100644 index 01c3344..0000000 --- a/doxygen/html/search/functions_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['to64_377',['to64',['../namespacevm_1_1util_1_1reg.html#a00b8eb62aa844682cceca117eca5b945',1,'vm::util::reg']]] -]; diff --git a/doxygen/html/search/functions_c.html b/doxygen/html/search/functions_c.html deleted file mode 100644 index c4f3268..0000000 --- a/doxygen/html/search/functions_c.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/functions_c.js b/doxygen/html/search/functions_c.js deleted file mode 100644 index 65e3bdb..0000000 --- a/doxygen/html/search/functions_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['valid_378',['valid',['../namespacevm_1_1transform.html#aa14dcd108c7800a9763255873e474988',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/mag_sel.svg b/doxygen/html/search/mag_sel.svg deleted file mode 100644 index 03626f6..0000000 --- a/doxygen/html/search/mag_sel.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/doxygen/html/search/namespaces_0.html b/doxygen/html/search/namespaces_0.html deleted file mode 100644 index 21db2c3..0000000 --- a/doxygen/html/search/namespaces_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/namespaces_0.js b/doxygen/html/search/namespaces_0.js deleted file mode 100644 index 4addb17..0000000 --- a/doxygen/html/search/namespaces_0.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['calc_5fjmp_294',['calc_jmp',['../namespacevm_1_1calc__jmp.html',1,'vm']]], - ['handler_295',['handler',['../namespacevm_1_1handler.html',1,'vm']]], - ['instrs_296',['instrs',['../namespacevm_1_1instrs.html',1,'vm']]], - ['lifters_297',['lifters',['../namespacevm_1_1lifters.html',1,'vm']]], - ['profile_298',['profile',['../namespacevm_1_1handler_1_1profile.html',1,'vm::handler']]], - ['reg_299',['reg',['../namespacevm_1_1util_1_1reg.html',1,'vm::util']]], - ['table_300',['table',['../namespacevm_1_1handler_1_1table.html',1,'vm::handler']]], - ['transform_301',['transform',['../namespacevm_1_1transform.html',1,'vm']]], - ['util_302',['util',['../namespacevm_1_1util.html',1,'vm']]], - ['v1_303',['v1',['../namespacevmp2_1_1v1.html',1,'vmp2']]], - ['v2_304',['v2',['../namespacevmp2_1_1v2.html',1,'vmp2']]], - ['v3_305',['v3',['../namespacevmp2_1_1v3.html',1,'vmp2']]], - ['vm_306',['vm',['../namespacevm.html',1,'']]], - ['vmp2_307',['vmp2',['../namespacevmp2.html',1,'']]] -]; diff --git a/doxygen/html/search/nomatches.html b/doxygen/html/search/nomatches.html deleted file mode 100644 index 2b9360b..0000000 --- a/doxygen/html/search/nomatches.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - -
    -
    No Matches
    -
    - - diff --git a/doxygen/html/search/pages_0.html b/doxygen/html/search/pages_0.html deleted file mode 100644 index 8517b48..0000000 --- a/doxygen/html/search/pages_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/pages_0.js b/doxygen/html/search/pages_0.js deleted file mode 100644 index ba7426e..0000000 --- a/doxygen/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['readme_579',['README',['../md__r_e_a_d_m_e.html',1,'']]] -]; diff --git a/doxygen/html/search/search.css b/doxygen/html/search/search.css deleted file mode 100644 index 9074198..0000000 --- a/doxygen/html/search/search.css +++ /dev/null @@ -1,257 +0,0 @@ -/*---------------- Search Box */ - -#MSearchBox { - white-space : nowrap; - background: white; - border-radius: 0.65em; - box-shadow: inset 0.5px 0.5px 3px 0px #555; - z-index: 102; -} - -#MSearchBox .left { - display: inline-block; - vertical-align: middle; - height: 1.4em; -} - -#MSearchSelect { - display: inline-block; - vertical-align: middle; - height: 1.4em; - padding: 0 0 0 0.3em; - margin: 0; -} - -#MSearchField { - display: inline-block; - vertical-align: middle; - width: 7.5em; - height: 1.1em; - margin: 0 0.15em; - padding: 0; - line-height: 1em; - border:none; - color: #909090; - outline: none; - font-family: Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; - border-radius: 0px; - background: none; -} - - -#MSearchBox .right { - display: inline-block; - vertical-align: middle; - width: 1.4em; - height: 1.4em; -} - -#MSearchClose { - display: none; - font-size: inherit; - background : none; - border: none; - margin: 0; - padding: 0; - outline: none; - -} - -#MSearchCloseImg { - height: 1.4em; - padding: 0.3em; - margin: 0; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -#main-menu > li:last-child { - /* This
  • object is the parent of the search bar */ - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-right: 1em; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; - font-family: Arial, Verdana, sans-serif; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; - font-family: Arial, Verdana, sans-serif; -} - -.SRResult { - display: none; -} - -div.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/doxygen/html/search/search.js b/doxygen/html/search/search.js deleted file mode 100644 index fb226f7..0000000 --- a/doxygen/html/search/search.js +++ /dev/null @@ -1,816 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches' + this.extension; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline-block'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W diff --git a/doxygen/html/search/search_r.png b/doxygen/html/search/search_r.png deleted file mode 100644 index 1af5d21ee13e070d7600f1c4657fde843b953a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD diff --git a/doxygen/html/search/searchdata.js b/doxygen/html/search/searchdata.js deleted file mode 100644 index 07292be..0000000 --- a/doxygen/html/search/searchdata.js +++ /dev/null @@ -1,42 +0,0 @@ -var indexSectionsWithContent = -{ - 0: "_abcdefghijlmnopqrstuvwz", - 1: "cefhjpvz", - 2: "v", - 3: "acdjlmnprstvw", - 4: "_acdefghimptv", - 5: "_abcdehijlmnopqrstuvw", - 6: "lmtuz", - 7: "ejmtv", - 8: "abcdfgijlmnprsuvwz", - 9: "nv" -}; - -var indexSectionNames = -{ - 0: "all", - 1: "classes", - 2: "namespaces", - 3: "files", - 4: "functions", - 5: "variables", - 6: "typedefs", - 7: "enums", - 8: "enumvalues", - 9: "defines" -}; - -var indexSectionLabels = -{ - 0: "All", - 1: "Classes", - 2: "Namespaces", - 3: "Files", - 4: "Functions", - 5: "Variables", - 6: "Typedefs", - 7: "Enumerations", - 8: "Enumerator", - 9: "Macros" -}; - diff --git a/doxygen/html/search/typedefs_0.html b/doxygen/html/search/typedefs_0.html deleted file mode 100644 index a4684c4..0000000 --- a/doxygen/html/search/typedefs_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/typedefs_0.js b/doxygen/html/search/typedefs_0.js deleted file mode 100644 index dfd0444..0000000 --- a/doxygen/html/search/typedefs_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['lifter_5fcallback_5ft_499',['lifter_callback_t',['../namespacevm_1_1lifters.html#ad6d45fc87d11eea76019f1159069eb6d',1,'vm::lifters']]], - ['lifter_5ft_500',['lifter_t',['../namespacevm_1_1lifters.html#ae0e3f407f89e62897a46763b3de93fa9',1,'vm::lifters']]] -]; diff --git a/doxygen/html/search/typedefs_1.html b/doxygen/html/search/typedefs_1.html deleted file mode 100644 index 46cf01e..0000000 --- a/doxygen/html/search/typedefs_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/typedefs_1.js b/doxygen/html/search/typedefs_1.js deleted file mode 100644 index aeab2f5..0000000 --- a/doxygen/html/search/typedefs_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['map_5ft_501',['map_t',['../namespacevm_1_1transform.html#af3bd71c380a50beece9341287b7cc025',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/typedefs_2.html b/doxygen/html/search/typedefs_2.html deleted file mode 100644 index 6835ee6..0000000 --- a/doxygen/html/search/typedefs_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/typedefs_2.js b/doxygen/html/search/typedefs_2.js deleted file mode 100644 index c8f5d48..0000000 --- a/doxygen/html/search/typedefs_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['transform_5ft_502',['transform_t',['../namespacevm_1_1transform.html#a67d5906292cf0f9aa61364e0846fa1e6',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/typedefs_3.html b/doxygen/html/search/typedefs_3.html deleted file mode 100644 index 0170047..0000000 --- a/doxygen/html/search/typedefs_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/typedefs_3.js b/doxygen/html/search/typedefs_3.js deleted file mode 100644 index bef6f7e..0000000 --- a/doxygen/html/search/typedefs_3.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['u128_503',['u128',['../vmutils_8hpp.html#a7aa2d9a3b9a80fc61ad2ccf99ebb95f8',1,'vmutils.hpp']]], - ['u16_504',['u16',['../vmutils_8hpp.html#a78c47e7d1e6386136297f10fa86b5f99',1,'vmutils.hpp']]], - ['u32_505',['u32',['../vmutils_8hpp.html#a5b58b50033aff6031759d9708b5156f2',1,'vmutils.hpp']]], - ['u64_506',['u64',['../vmutils_8hpp.html#a4870a1025a59df53c952b95ac2c85bf6',1,'vmutils.hpp']]], - ['u8_507',['u8',['../vmutils_8hpp.html#ad24825e11b71d87e40f5c0e88dd980a0',1,'vmutils.hpp']]] -]; diff --git a/doxygen/html/search/typedefs_4.html b/doxygen/html/search/typedefs_4.html deleted file mode 100644 index 81466a5..0000000 --- a/doxygen/html/search/typedefs_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/typedefs_4.js b/doxygen/html/search/typedefs_4.js deleted file mode 100644 index cdaf684..0000000 --- a/doxygen/html/search/typedefs_4.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['zydis_5fcallback_5ft_508',['zydis_callback_t',['../namespacevm_1_1handler.html#a1016539777a69d79479f5fdf066440be',1,'vm::handler']]], - ['zydis_5fdecoded_5finstr_5ft_509',['zydis_decoded_instr_t',['../vmutils_8hpp.html#ad180fbf8cef52662febedec0f54b6188',1,'vmutils.hpp']]], - ['zydis_5fmnemonic_5ft_510',['zydis_mnemonic_t',['../vmutils_8hpp.html#a910e81858860c70b9744949887567148',1,'vmutils.hpp']]], - ['zydis_5fregister_5ft_511',['zydis_register_t',['../vmutils_8hpp.html#ab8cac5db83e0d71d373779cccbf2d782',1,'vmutils.hpp']]], - ['zydis_5froutine_5ft_512',['zydis_routine_t',['../vmutils_8hpp.html#a5fdde6e9d3e6c6eca28ecadf2e837d3c',1,'vmutils.hpp']]] -]; diff --git a/doxygen/html/search/variables_0.html b/doxygen/html/search/variables_0.html deleted file mode 100644 index 1e477c0..0000000 --- a/doxygen/html/search/variables_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_0.js b/doxygen/html/search/variables_0.js deleted file mode 100644 index 55f536e..0000000 --- a/doxygen/html/search/variables_0.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['_5fadd_379',['_add',['../namespacevm_1_1transform.html#a281896b8949d10bf13fe43c6467766ef',1,'vm::transform']]], - ['_5fbswap_380',['_bswap',['../namespacevm_1_1transform.html#a688d8184e8ff721cbe284891a79649be',1,'vm::transform']]], - ['_5fdec_381',['_dec',['../namespacevm_1_1transform.html#a15aa399b06335fdc06b738f5053eec27',1,'vm::transform']]], - ['_5finc_382',['_inc',['../namespacevm_1_1transform.html#a127fda1c7440c539496a2265a089ed25',1,'vm::transform']]], - ['_5fneg_383',['_neg',['../namespacevm_1_1transform.html#a734672243d8d96890e13da03edb148ba',1,'vm::transform']]], - ['_5fnot_384',['_not',['../namespacevm_1_1transform.html#aef95e6402789d702d4a0dceb09c58fdf',1,'vm::transform']]], - ['_5frol_385',['_rol',['../namespacevm_1_1transform.html#a95949473ea57a6a4b310b3701ddbc646',1,'vm::transform']]], - ['_5fror_386',['_ror',['../namespacevm_1_1transform.html#ab2a83f6cb174fe5a090d38f4b426865a',1,'vm::transform']]], - ['_5fsub_387',['_sub',['../namespacevm_1_1transform.html#a91ad3d31de52b5178cbf433259b887d9',1,'vm::transform']]], - ['_5fxor_388',['_xor',['../namespacevm_1_1transform.html#a4ee7a00ae0c62ad5db5455d16ac64491',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/variables_1.html b/doxygen/html/search/variables_1.html deleted file mode 100644 index ea73d9a..0000000 --- a/doxygen/html/search/variables_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_1.js b/doxygen/html/search/variables_1.js deleted file mode 100644 index 0437b2c..0000000 --- a/doxygen/html/search/variables_1.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['adddw_389',['adddw',['../namespacevm_1_1lifters.html#a7332fe92bc5b62d3a1eadc3be1650286',1,'vm::lifters::adddw()'],['../namespacevm_1_1handler_1_1profile.html#a5bf6399e884a3e41d3cb953f00d62c13',1,'vm::handler::profile::adddw()']]], - ['addq_390',['addq',['../namespacevm_1_1lifters.html#a0491abd30c8c9f167a5573fedc83326c',1,'vm::lifters::addq()'],['../namespacevm_1_1handler_1_1profile.html#a6fec819ec586b0f38fd4dc9489a2faf8',1,'vm::handler::profile::addq()']]], - ['addr_391',['addr',['../structzydis__instr__t.html#ac180f5e918619afc94f594c91f0ec389',1,'zydis_instr_t']]], - ['address_392',['address',['../structvm_1_1handler_1_1handler__t.html#afa8853308fc1039e4a2940594c3e443e',1,'vm::handler::handler_t']]], - ['addw_393',['addw',['../namespacevm_1_1lifters.html#a15434e7a31a2d0839b9fc423879576b9',1,'vm::lifters::addw()'],['../namespacevm_1_1handler_1_1profile.html#ac6638f78fcb7d781db4476b11bd3c139',1,'vm::handler::profile::addw()']]], - ['advancement_394',['advancement',['../structvmp2_1_1v1_1_1file__header.html#a1a95d42495b9ed9d96538a50c4d17347',1,'vmp2::v1::file_header::advancement()'],['../structvmp2_1_1v2_1_1file__header.html#a8c4bd608935f89aeeacf8a24c46e12a7',1,'vmp2::v2::file_header::advancement()']]], - ['all_395',['all',['../namespacevm_1_1lifters.html#a74eecbae2fe9125108fed0a717c4d1fd',1,'vm::lifters::all()'],['../namespacevm_1_1handler_1_1profile.html#a39376b2fb191d8ff1af7ef0128f715ed',1,'vm::handler::profile::all()']]] -]; diff --git a/doxygen/html/search/variables_10.html b/doxygen/html/search/variables_10.html deleted file mode 100644 index dc9920b..0000000 --- a/doxygen/html/search/variables_10.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_10.js b/doxygen/html/search/variables_10.js deleted file mode 100644 index 5f47127..0000000 --- a/doxygen/html/search/variables_10.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['s_471',['s',['../structvm_1_1instrs_1_1virt__instr__t.html#a3feeff8ff61091838dd488625d7b25a2',1,'vm::instrs::virt_instr_t']]], - ['shldw_472',['shldw',['../namespacevm_1_1handler_1_1profile.html#a94b3e7b23ca523249a1b4149f2b221a9',1,'vm::handler::profile']]], - ['shlq_473',['shlq',['../namespacevm_1_1handler_1_1profile.html#a8be3b9aa44bba9c01a0544356f4a35ad',1,'vm::handler::profile']]], - ['shrq_474',['shrq',['../namespacevm_1_1lifters.html#af33473ca92a8e1ab2e1a965b7520110d',1,'vm::lifters::shrq()'],['../namespacevm_1_1handler_1_1profile.html#ab32d8a91ff2c9e28a0e5062338d9ef14',1,'vm::handler::profile::shrq()']]], - ['shrw_475',['shrw',['../namespacevm_1_1lifters.html#a129e17bac76f26029ea048d5f459fd8e',1,'vm::lifters::shrw()'],['../namespacevm_1_1handler_1_1profile.html#a53a3ad22aa1a2f0e83eeda486f447cfc',1,'vm::handler::profile::shrw()']]], - ['signature_476',['signature',['../structvm_1_1handler_1_1profile__t.html#a27b22dbeada71cf631918847d7be84ba',1,'vm::handler::profile_t']]], - ['sregdw_477',['sregdw',['../namespacevm_1_1lifters.html#a1ed6bccf37fd06d306357cc231dc85d8',1,'vm::lifters::sregdw()'],['../namespacevm_1_1handler_1_1profile.html#a4918ca8880971ab57dde31168d0c52ff',1,'vm::handler::profile::sregdw()']]], - ['sregq_478',['sregq',['../namespacevm_1_1lifters.html#ad71cc0003e40f40512d4f755bf128f75',1,'vm::lifters::sregq()'],['../namespacevm_1_1handler_1_1profile.html#a6c5922a24f03ad5104fad36b59cdb664',1,'vm::handler::profile::sregq()']]], - ['sregw_479',['sregw',['../namespacevm_1_1lifters.html#aab4b15f694be1f476b6336cc0b4cbf83',1,'vm::lifters::sregw()'],['../namespacevm_1_1handler_1_1profile.html#a4f55c3b0945cb86413d3c40fc08d6db7',1,'vm::handler::profile::sregw()']]] -]; diff --git a/doxygen/html/search/variables_11.html b/doxygen/html/search/variables_11.html deleted file mode 100644 index 704bcb1..0000000 --- a/doxygen/html/search/variables_11.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_11.js b/doxygen/html/search/variables_11.js deleted file mode 100644 index c2cb1b3..0000000 --- a/doxygen/html/search/variables_11.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['trace_5fdata_480',['trace_data',['../structvm_1_1instrs_1_1virt__instr__t.html#a5d51d8778458f649434e6c96c159a260',1,'vm::instrs::virt_instr_t']]], - ['transforms_481',['transforms',['../structvm_1_1handler_1_1handler__t.html#a47f9e94f5e156d9215e9ae585e928a92',1,'vm::handler::handler_t::transforms()'],['../namespacevm_1_1transform.html#ac5fcbe5497bc1e136caf781b61fbd8f1',1,'vm::transform::transforms()']]], - ['type_482',['type',['../structvm_1_1instrs_1_1jcc__data.html#a7a26a802234641a6a721c60055b6866c',1,'vm::instrs::jcc_data']]] -]; diff --git a/doxygen/html/search/variables_12.html b/doxygen/html/search/variables_12.html deleted file mode 100644 index a3a32eb..0000000 --- a/doxygen/html/search/variables_12.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_12.js b/doxygen/html/search/variables_12.js deleted file mode 100644 index 9c487cc..0000000 --- a/doxygen/html/search/variables_12.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['u_483',['u',['../structvm_1_1instrs_1_1virt__instr__t.html#a046c32e02a63f3fd94c34088f2d6fc4f',1,'vm::instrs::virt_instr_t']]] -]; diff --git a/doxygen/html/search/variables_13.html b/doxygen/html/search/variables_13.html deleted file mode 100644 index 7d05bd8..0000000 --- a/doxygen/html/search/variables_13.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_13.js b/doxygen/html/search/variables_13.js deleted file mode 100644 index 13b32d4..0000000 --- a/doxygen/html/search/variables_13.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['version_484',['version',['../structvmp2_1_1v1_1_1file__header.html#a6104dc2211338773a0d7770fb2557976',1,'vmp2::v1::file_header::version()'],['../structvmp2_1_1v2_1_1file__header.html#a051f78fa2f1d251a24ac7ab843c93885',1,'vmp2::v2::file_header::version()'],['../structvmp2_1_1v3_1_1file__header.html#ad5b0868596548490caca7609cbf7a040',1,'vmp2::v3::file_header::version()']]], - ['vinstr_485',['vinstr',['../structvmp2_1_1v3_1_1code__block__t.html#a53661b42cbaf7a61580db7816877c1a6',1,'vmp2::v3::code_block_t']]], - ['vinstr_5fcount_486',['vinstr_count',['../structvmp2_1_1v3_1_1code__block__t.html#ad2206d01c7fa4e3d767993cb4582ce37',1,'vmp2::v3::code_block_t']]], - ['vinstrs_487',['vinstrs',['../structvm_1_1instrs_1_1code__block__t.html#a5479652a78162e85f4d40b26bdffc15e',1,'vm::instrs::code_block_t']]], - ['vip_488',['vip',['../structvmp2_1_1v1_1_1entry__t.html#af9d863dc4165755e5b31549f30e7a58a',1,'vmp2::v1::entry_t::vip()'],['../structvmp2_1_1v2_1_1entry__t.html#af995fc5074e0c18fe987bacf73ce6773',1,'vmp2::v2::entry_t::vip()']]], - ['vip_5fbegin_489',['vip_begin',['../structvm_1_1instrs_1_1code__block__t.html#aaca2c6f30eee7a05c378c41c46cdfcb9',1,'vm::instrs::code_block_t::vip_begin()'],['../structvmp2_1_1v3_1_1code__block__t.html#a8acca6685fb25b092df96b2d7a7ed773',1,'vmp2::v3::code_block_t::vip_begin()']]], - ['vm_5fentry_490',['vm_entry',['../classvm_1_1ctx__t.html#a40f0524813578bcddf9ded1e74443793',1,'vm::ctx_t']]], - ['vm_5fentry_5frva_491',['vm_entry_rva',['../classvm_1_1ctx__t.html#a44b4eb5513ad87a12173e599591847c3',1,'vm::ctx_t::vm_entry_rva()'],['../structvmp2_1_1v2_1_1file__header.html#afdf98118a9049deafd613e9ef2dfc988',1,'vmp2::v2::file_header::vm_entry_rva()'],['../structvmp2_1_1v3_1_1file__header.html#aea15e18f812d2d3239f3e466e85c68c4',1,'vmp2::v3::file_header::vm_entry_rva()']]], - ['vm_5fhandlers_492',['vm_handlers',['../classvm_1_1ctx__t.html#a0fa31b5bd78861dbd2c5cf04af81aa4d',1,'vm::ctx_t']]], - ['vmexit_493',['vmexit',['../namespacevm_1_1lifters.html#a8d8d8c92bc0e93b2301aa101600f0f5e',1,'vm::lifters::vmexit()'],['../namespacevm_1_1handler_1_1profile.html#a6c388fd726713355c8c37cb9776c83c7',1,'vm::handler::profile::vmexit()']]], - ['vregs_494',['vregs',['../structvmp2_1_1v1_1_1entry__t.html#ade6ea682fa296e2c9cea58c1a3f2d373',1,'vmp2::v1::entry_t::vregs()'],['../structvmp2_1_1v2_1_1entry__t.html#afb8279d89fb28d2d306fb429841ee3eb',1,'vmp2::v2::entry_t::vregs()']]], - ['vsp_495',['vsp',['../structvmp2_1_1v1_1_1entry__t.html#a44ed5e932965dbc068230b94b533b4a6',1,'vmp2::v1::entry_t::vsp()'],['../structvmp2_1_1v2_1_1entry__t.html#a3eef4253b78238be9391999dcc6bcfd3',1,'vmp2::v2::entry_t::vsp()']]] -]; diff --git a/doxygen/html/search/variables_14.html b/doxygen/html/search/variables_14.html deleted file mode 100644 index ab9e0fa..0000000 --- a/doxygen/html/search/variables_14.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_14.js b/doxygen/html/search/variables_14.js deleted file mode 100644 index 03f214f..0000000 --- a/doxygen/html/search/variables_14.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['writeb_496',['writeb',['../namespacevm_1_1handler_1_1profile.html#a1192aea2b68e7e979971a8b683819749',1,'vm::handler::profile']]], - ['writedw_497',['writedw',['../namespacevm_1_1handler_1_1profile.html#a6a00ac48c8ce010f1d3d55573beb52aa',1,'vm::handler::profile']]], - ['writeq_498',['writeq',['../namespacevm_1_1handler_1_1profile.html#a64dd8aa864a3d3e6956cdb177947f739',1,'vm::handler::profile']]] -]; diff --git a/doxygen/html/search/variables_2.html b/doxygen/html/search/variables_2.html deleted file mode 100644 index 0580462..0000000 --- a/doxygen/html/search/variables_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_2.js b/doxygen/html/search/variables_2.js deleted file mode 100644 index 718e8f2..0000000 --- a/doxygen/html/search/variables_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['block_5faddr_396',['block_addr',['../structvm_1_1instrs_1_1jcc__data.html#ad0439fc4249349e333d31ebed7f0344f',1,'vm::instrs::jcc_data']]] -]; diff --git a/doxygen/html/search/variables_3.html b/doxygen/html/search/variables_3.html deleted file mode 100644 index 0d69e76..0000000 --- a/doxygen/html/search/variables_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_3.js b/doxygen/html/search/variables_3.js deleted file mode 100644 index 3a1f464..0000000 --- a/doxygen/html/search/variables_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['calc_5fjmp_397',['calc_jmp',['../classvm_1_1ctx__t.html#aed0dfa1748035f48bda0f59f76643d8d',1,'vm::ctx_t']]], - ['call_398',['call',['../namespacevm_1_1handler_1_1profile.html#a8f262e2cec2009b84e4b01c93a16d9bc',1,'vm::handler::profile']]], - ['code_5fblock_5fcount_399',['code_block_count',['../structvmp2_1_1v3_1_1file__header.html#a24a59e4770152a60ba08b7e838fec2d4',1,'vmp2::v3::file_header']]], - ['code_5fblock_5foffset_400',['code_block_offset',['../structvmp2_1_1v3_1_1file__header.html#a5114dc45569676f5d392832dfee2a46b',1,'vmp2::v3::file_header']]] -]; diff --git a/doxygen/html/search/variables_4.html b/doxygen/html/search/variables_4.html deleted file mode 100644 index a4b6506..0000000 --- a/doxygen/html/search/variables_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_4.js b/doxygen/html/search/variables_4.js deleted file mode 100644 index 6f328fe..0000000 --- a/doxygen/html/search/variables_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['decrypt_5fkey_401',['decrypt_key',['../structvmp2_1_1v1_1_1entry__t.html#afc01193413881c666404d9ae89e41032',1,'vmp2::v1::entry_t::decrypt_key()'],['../structvmp2_1_1v2_1_1entry__t.html#ad2ec680e1eb7beefeb8aad7f968e1401',1,'vmp2::v2::entry_t::decrypt_key()']]], - ['divq_402',['divq',['../namespacevm_1_1handler_1_1profile.html#af13cfd2b6021da3a4a6c49523d7ffb39',1,'vm::handler::profile']]] -]; diff --git a/doxygen/html/search/variables_5.html b/doxygen/html/search/variables_5.html deleted file mode 100644 index 7e345d1..0000000 --- a/doxygen/html/search/variables_5.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_5.js b/doxygen/html/search/variables_5.js deleted file mode 100644 index 4c47fe0..0000000 --- a/doxygen/html/search/variables_5.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['entry_5fcount_403',['entry_count',['../structvmp2_1_1v1_1_1file__header.html#ace410271f9fb3da72ee2aafcd16a23b8',1,'vmp2::v1::file_header::entry_count()'],['../structvmp2_1_1v2_1_1file__header.html#a2ac4c9cdbc65aa53a643a3c73d89be8f',1,'vmp2::v2::file_header::entry_count()']]], - ['entry_5foffset_404',['entry_offset',['../structvmp2_1_1v1_1_1file__header.html#a66dde50694bdccead01e50137a9bbd5d',1,'vmp2::v1::file_header::entry_offset()'],['../structvmp2_1_1v2_1_1file__header.html#a352666a046aaecff042304e326d2bf97',1,'vmp2::v2::file_header::entry_offset()']]], - ['epoch_5ftime_405',['epoch_time',['../structvmp2_1_1v1_1_1file__header.html#adcb827f599e85414725407ac46f031ee',1,'vmp2::v1::file_header::epoch_time()'],['../structvmp2_1_1v2_1_1file__header.html#a30e53a5b6383237a52bf39c9ad7e3af6',1,'vmp2::v2::file_header::epoch_time()'],['../structvmp2_1_1v3_1_1file__header.html#adab57c587431f54d55c160a5895d9dfb',1,'vmp2::v3::file_header::epoch_time()']]], - ['exec_5ftype_406',['exec_type',['../classvm_1_1ctx__t.html#a1451637395107d39f69b097a07ef9a0f',1,'vm::ctx_t']]], - ['extention_407',['extention',['../structvm_1_1handler_1_1profile__t.html#a2d419cb79f8947e0cbb2b391a067d639',1,'vm::handler::profile_t']]] -]; diff --git a/doxygen/html/search/variables_6.html b/doxygen/html/search/variables_6.html deleted file mode 100644 index 7d48e75..0000000 --- a/doxygen/html/search/variables_6.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_6.js b/doxygen/html/search/variables_6.js deleted file mode 100644 index eaf4f89..0000000 --- a/doxygen/html/search/variables_6.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['handler_5fidx_408',['handler_idx',['../structvmp2_1_1v1_1_1entry__t.html#a6eadb65583e755c34e5dfe94b1de9d58',1,'vmp2::v1::entry_t::handler_idx()'],['../structvmp2_1_1v2_1_1entry__t.html#a0790f4f0961fc3ec556727f0e9eff292',1,'vmp2::v2::entry_t::handler_idx()']]], - ['has_5fimm_409',['has_imm',['../structvm_1_1instrs_1_1virt__instr__t.html#ac91bab4ece39b8424e9ef617333948fd',1,'vm::instrs::virt_instr_t']]], - ['has_5fjcc_410',['has_jcc',['../structvm_1_1instrs_1_1jcc__data.html#affad18f3c23aeb243a00db2da0ea45e6',1,'vm::instrs::jcc_data']]] -]; diff --git a/doxygen/html/search/variables_7.html b/doxygen/html/search/variables_7.html deleted file mode 100644 index 5c26340..0000000 --- a/doxygen/html/search/variables_7.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_7.js b/doxygen/html/search/variables_7.js deleted file mode 100644 index 5cb009a..0000000 --- a/doxygen/html/search/variables_7.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['image_5fbase_411',['image_base',['../classvm_1_1ctx__t.html#a9cec1f42d21b006cba4ac370d5962869',1,'vm::ctx_t::image_base()'],['../structvmp2_1_1v2_1_1file__header.html#a834187075d20d68bc3c44df466927018',1,'vmp2::v2::file_header::image_base()'],['../structvmp2_1_1v3_1_1file__header.html#ab4930fa2c29a3020bafbbb1de5cfe400',1,'vmp2::v3::file_header::image_base()']]], - ['image_5fsize_412',['image_size',['../classvm_1_1ctx__t.html#a469ea113041b62e9a044db8e56fa78cb',1,'vm::ctx_t']]], - ['imm_413',['imm',['../structvm_1_1instrs_1_1virt__instr__t.html#a19d74c16a3d29041b59a8897d70a087c',1,'vm::instrs::virt_instr_t']]], - ['imm_5fsize_414',['imm_size',['../structvm_1_1handler_1_1handler__t.html#a7c5be45604678830c9f8b433c94ef830',1,'vm::handler::handler_t::imm_size()'],['../structvm_1_1instrs_1_1virt__instr__t.html#a13ae413a43eaecb9f258a0a4f75b5e57',1,'vm::instrs::virt_instr_t::imm_size()'],['../structvm_1_1handler_1_1profile__t.html#a0761c86417303eb402606a780ea90c30',1,'vm::handler::profile_t::imm_size()']]], - ['instr_415',['instr',['../structzydis__instr__t.html#a83f141fec54512c612709a4b3af10242',1,'zydis_instr_t']]], - ['instrs_416',['instrs',['../structvm_1_1handler_1_1handler__t.html#a6c080e14331c4092909c3b0f0c27367d',1,'vm::handler::handler_t']]], - ['inverse_417',['inverse',['../namespacevm_1_1transform.html#a694675c95aced2c9e406c26d0313ba9a',1,'vm::transform']]] -]; diff --git a/doxygen/html/search/variables_8.html b/doxygen/html/search/variables_8.html deleted file mode 100644 index dc9ec54..0000000 --- a/doxygen/html/search/variables_8.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_8.js b/doxygen/html/search/variables_8.js deleted file mode 100644 index 0d2ba81..0000000 --- a/doxygen/html/search/variables_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['jcc_418',['jcc',['../structvm_1_1instrs_1_1code__block__t.html#a8531e96fe56f6f936293a6094271c497',1,'vm::instrs::code_block_t::jcc()'],['../structvmp2_1_1v3_1_1code__block__t.html#a2671994201d68daf71d6bad7a666da16',1,'vmp2::v3::code_block_t::jcc()']]], - ['jmp_419',['jmp',['../namespacevm_1_1lifters.html#a5cebba7ce499bc0606117613599fa5d8',1,'vm::lifters::jmp()'],['../namespacevm_1_1handler_1_1profile.html#a677748b24e229ec7417fa89092928fae',1,'vm::handler::profile::jmp()']]] -]; diff --git a/doxygen/html/search/variables_9.html b/doxygen/html/search/variables_9.html deleted file mode 100644 index 7b01475..0000000 --- a/doxygen/html/search/variables_9.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_9.js b/doxygen/html/search/variables_9.js deleted file mode 100644 index 308f724..0000000 --- a/doxygen/html/search/variables_9.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['lconstbsxdw_420',['lconstbsxdw',['../namespacevm_1_1lifters.html#a72d98a11da4c9e39ec2b5b2afd22e70c',1,'vm::lifters::lconstbsxdw()'],['../namespacevm_1_1handler_1_1profile.html#a9564effe8ffeb39e275721e0061d2329',1,'vm::handler::profile::lconstbsxdw()']]], - ['lconstbsxq_421',['lconstbsxq',['../namespacevm_1_1lifters.html#a9c2ff30b47ff5f62aae07043f6e54c07',1,'vm::lifters::lconstbsxq()'],['../namespacevm_1_1handler_1_1profile.html#a3e8dd1515687cbf22241bb7b0ac9c20a',1,'vm::handler::profile::lconstbsxq()']]], - ['lconstbzxw_422',['lconstbzxw',['../namespacevm_1_1lifters.html#ae1b69c3029b02505fd5c3b888d9a2f53',1,'vm::lifters::lconstbzxw()'],['../namespacevm_1_1handler_1_1profile.html#a894ae9fb4ec1e6a1a2509e8180ecae09',1,'vm::handler::profile::lconstbzxw()']]], - ['lconstdw_423',['lconstdw',['../namespacevm_1_1lifters.html#a542f3b5caa1095dd8025c9fa33a54140',1,'vm::lifters::lconstdw()'],['../namespacevm_1_1handler_1_1profile.html#a372c4bf2fd4e6925a143d2fa4f7b1d3c',1,'vm::handler::profile::lconstdw()']]], - ['lconstdwsxq_424',['lconstdwsxq',['../namespacevm_1_1lifters.html#af9e2ac54515ca216d4eaa5afc84e2001',1,'vm::lifters::lconstdwsxq()'],['../namespacevm_1_1handler_1_1profile.html#aaeefadf94f965a133da38f0018c3a3fa',1,'vm::handler::profile::lconstdwsxq()']]], - ['lconstq_425',['lconstq',['../namespacevm_1_1lifters.html#a6024fb9a51be812a67b061962b4a9073',1,'vm::lifters::lconstq()'],['../namespacevm_1_1handler_1_1profile.html#a9bd4c8f24b989dd0b4d2939f80ce229a',1,'vm::handler::profile::lconstq()']]], - ['lconstw_426',['lconstw',['../namespacevm_1_1lifters.html#adf386a124868fdac0799765abc41318c',1,'vm::lifters::lconstw()'],['../namespacevm_1_1handler_1_1profile.html#a10a05027b8a8e7b743b4864887ae2726',1,'vm::handler::profile::lconstw()']]], - ['lconstwsxdw_427',['lconstwsxdw',['../namespacevm_1_1lifters.html#a0037d3980a52839a609d1af3401e93d3',1,'vm::lifters::lconstwsxdw()'],['../namespacevm_1_1handler_1_1profile.html#ae1b7c27b6a7e02e2ff12583429a50fc5',1,'vm::handler::profile::lconstwsxdw()']]], - ['lconstwsxq_428',['lconstwsxq',['../namespacevm_1_1lifters.html#a17c37df162f730e307de53489b5112da',1,'vm::lifters::lconstwsxq()'],['../namespacevm_1_1handler_1_1profile.html#a15f60c9f437f9051a35d2f75865b8a96',1,'vm::handler::profile::lconstwsxq()']]], - ['lregdw_429',['lregdw',['../namespacevm_1_1lifters.html#a44522dea5997a2c5d4f743bee1ea4084',1,'vm::lifters::lregdw()'],['../namespacevm_1_1handler_1_1profile.html#aa4ec0ea607d5a6f1288912ce4a888443',1,'vm::handler::profile::lregdw()']]], - ['lregq_430',['lregq',['../namespacevm_1_1lifters.html#a8f85b8d616456ffaf0699e34643aa5a9',1,'vm::lifters::lregq()'],['../namespacevm_1_1handler_1_1profile.html#a414cfdeee11134889ee43e27db751810',1,'vm::handler::profile::lregq()']]], - ['lrflags_431',['lrflags',['../namespacevm_1_1lifters.html#a34a345873c127b0bf9225051ce8453bf',1,'vm::lifters::lrflags()'],['../namespacevm_1_1handler_1_1profile.html#a5548b091697d700b516f23e807880d55',1,'vm::handler::profile::lrflags()']]], - ['lvsp_432',['lvsp',['../namespacevm_1_1lifters.html#ad481b2cb4df18abe8727e942bae7d00c',1,'vm::lifters::lvsp()'],['../namespacevm_1_1handler_1_1profile.html#a355ddd09a3e6f6978304c70d3a33aff7',1,'vm::handler::profile::lvsp()']]] -]; diff --git a/doxygen/html/search/variables_a.html b/doxygen/html/search/variables_a.html deleted file mode 100644 index 52a724d..0000000 --- a/doxygen/html/search/variables_a.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_a.js b/doxygen/html/search/variables_a.js deleted file mode 100644 index ca7e6c5..0000000 --- a/doxygen/html/search/variables_a.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['magic_433',['magic',['../structvmp2_1_1v1_1_1file__header.html#a022ada89136cc9192e849e26e7dfab0d',1,'vmp2::v1::file_header::magic()'],['../structvmp2_1_1v2_1_1file__header.html#adcf136a036f9f2af783f16bec94866c8',1,'vmp2::v2::file_header::magic()'],['../structvmp2_1_1v3_1_1file__header.html#a4d9c6ee3fbb00ded1d3f1952e70d9ab2',1,'vmp2::v3::file_header::magic()']]], - ['mnemonic_434',['mnemonic',['../structvm_1_1handler_1_1profile__t.html#a7383a473cfa87294b0f7345560c8742d',1,'vm::handler::profile_t']]], - ['mnemonic_5ft_435',['mnemonic_t',['../structvm_1_1instrs_1_1virt__instr__t.html#ac0bd0e3880a6c8f202fd18202f6fcd03',1,'vm::instrs::virt_instr_t']]], - ['module_5fbase_436',['module_base',['../classvm_1_1ctx__t.html#a41019acb80ba763e3154c4417b133b5a',1,'vm::ctx_t::module_base()'],['../structvmp2_1_1v1_1_1file__header.html#a0a8fea55e5a66c8f3a47677ce3f69b59',1,'vmp2::v1::file_header::module_base()'],['../structvmp2_1_1v2_1_1file__header.html#a7ebc024810907c119fb47c851c99e82e',1,'vmp2::v2::file_header::module_base()'],['../structvmp2_1_1v3_1_1file__header.html#aa3ff84434ca579d5ac5730e991eade61',1,'vmp2::v3::file_header::module_base()']]], - ['module_5foffset_437',['module_offset',['../structvmp2_1_1v2_1_1file__header.html#a10378288c8899bea07daf5256aa3baaa',1,'vmp2::v2::file_header::module_offset()'],['../structvmp2_1_1v3_1_1file__header.html#a6106a4ebc9e2f7ba730e3aa4106cf787',1,'vmp2::v3::file_header::module_offset()']]], - ['module_5fsize_438',['module_size',['../structvmp2_1_1v2_1_1file__header.html#acfb0589f755fc8702fade3663e4a206d',1,'vmp2::v2::file_header::module_size()'],['../structvmp2_1_1v3_1_1file__header.html#aa73a51bb4a303d12227420d353bd2db2',1,'vmp2::v3::file_header::module_size()']]], - ['mulq_439',['mulq',['../namespacevm_1_1handler_1_1profile.html#a570412f201d1738c4ac5ecac2dc90a2d',1,'vm::handler::profile']]] -]; diff --git a/doxygen/html/search/variables_b.html b/doxygen/html/search/variables_b.html deleted file mode 100644 index f376b27..0000000 --- a/doxygen/html/search/variables_b.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_b.js b/doxygen/html/search/variables_b.js deleted file mode 100644 index 36aa910..0000000 --- a/doxygen/html/search/variables_b.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['name_440',['name',['../structvm_1_1handler_1_1profile__t.html#a9cabcfd822b118e7cb73b978d13c2847',1,'vm::handler::profile_t']]], - ['nanddw_441',['nanddw',['../namespacevm_1_1lifters.html#a9cf0e6ca49b7789e313686478c3590bb',1,'vm::lifters::nanddw()'],['../namespacevm_1_1handler_1_1profile.html#a57bdbf79f0a2209d3599a6684b337d41',1,'vm::handler::profile::nanddw()']]], - ['nandq_442',['nandq',['../namespacevm_1_1lifters.html#a9693c38a1eb8ff1d4849e93929e3debf',1,'vm::lifters::nandq()'],['../namespacevm_1_1handler_1_1profile.html#a44a09dbad0ad33f4e9a3e03547befee1',1,'vm::handler::profile::nandq()']]], - ['nandw_443',['nandw',['../namespacevm_1_1lifters.html#ac3ae8152bf358b6ab2e705624de1b7c3',1,'vm::lifters::nandw()'],['../namespacevm_1_1handler_1_1profile.html#a9c947e851b1e0829f15fb5fccb77c016',1,'vm::handler::profile::nandw()']]], - ['next_5fblock_5foffset_444',['next_block_offset',['../structvmp2_1_1v3_1_1code__block__t.html#a7fb06d95ee032b63f2d33e382eafa619',1,'vmp2::v3::code_block_t']]] -]; diff --git a/doxygen/html/search/variables_c.html b/doxygen/html/search/variables_c.html deleted file mode 100644 index 6019eba..0000000 --- a/doxygen/html/search/variables_c.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_c.js b/doxygen/html/search/variables_c.js deleted file mode 100644 index 56981d3..0000000 --- a/doxygen/html/search/variables_c.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['opcode_445',['opcode',['../structvm_1_1instrs_1_1virt__instr__t.html#ae9ccb599603fb3a6286be7b53221f379',1,'vm::instrs::virt_instr_t']]], - ['operand_446',['operand',['../structvm_1_1instrs_1_1virt__instr__t.html#aa5f9792167cb0ff7f0d906e73f14ed09',1,'vm::instrs::virt_instr_t']]] -]; diff --git a/doxygen/html/search/variables_d.html b/doxygen/html/search/variables_d.html deleted file mode 100644 index f61ae75..0000000 --- a/doxygen/html/search/variables_d.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_d.js b/doxygen/html/search/variables_d.js deleted file mode 100644 index 2c59df3..0000000 --- a/doxygen/html/search/variables_d.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['profile_447',['profile',['../structvm_1_1handler_1_1handler__t.html#adba165c7493524bf21b2b1aafc15c6be',1,'vm::handler::handler_t']]], - ['pushvsp_448',['pushvsp',['../namespacevm_1_1lifters.html#aedbb6765771fc1b8dcea94891bf23684',1,'vm::lifters::pushvsp()'],['../namespacevm_1_1handler_1_1profile.html#a3d827f69b569476e699a96c16b0334f6',1,'vm::handler::profile::pushvsp()']]] -]; diff --git a/doxygen/html/search/variables_e.html b/doxygen/html/search/variables_e.html deleted file mode 100644 index 7bfd372..0000000 --- a/doxygen/html/search/variables_e.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_e.js b/doxygen/html/search/variables_e.js deleted file mode 100644 index 2ec70e0..0000000 --- a/doxygen/html/search/variables_e.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['qword_449',['qword',['../structvmp2_1_1v1_1_1entry__t.html#a2bcd067629686dbe25c5f029fd6a90b2',1,'vmp2::v1::entry_t::qword()'],['../structvmp2_1_1v2_1_1entry__t.html#adf0282edfe2729f777de01181573817a',1,'vmp2::v2::entry_t::qword()']]] -]; diff --git a/doxygen/html/search/variables_f.html b/doxygen/html/search/variables_f.html deleted file mode 100644 index d97920d..0000000 --- a/doxygen/html/search/variables_f.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/doxygen/html/search/variables_f.js b/doxygen/html/search/variables_f.js deleted file mode 100644 index 85fe68a..0000000 --- a/doxygen/html/search/variables_f.js +++ /dev/null @@ -1,24 +0,0 @@ -var searchData= -[ - ['r10_450',['r10',['../structvmp2_1_1v1_1_1entry__t.html#a8d1765833c99a7f2d08717851eebab82',1,'vmp2::v1::entry_t::r10()'],['../structvmp2_1_1v2_1_1entry__t.html#a48c7745b16af9fa47fddaea8478618b1',1,'vmp2::v2::entry_t::r10()']]], - ['r11_451',['r11',['../structvmp2_1_1v1_1_1entry__t.html#a2b6490513a27218e981395caf46c6a36',1,'vmp2::v1::entry_t::r11()'],['../structvmp2_1_1v2_1_1entry__t.html#aa1a5db4120d667a1c87b8e5cebffd6bc',1,'vmp2::v2::entry_t::r11()']]], - ['r12_452',['r12',['../structvmp2_1_1v1_1_1entry__t.html#ac070dd8a3b266aca6d384092d44c45db',1,'vmp2::v1::entry_t::r12()'],['../structvmp2_1_1v2_1_1entry__t.html#ad54f902a6c9356b34fa32bb57afecde4',1,'vmp2::v2::entry_t::r12()']]], - ['r13_453',['r13',['../structvmp2_1_1v1_1_1entry__t.html#ac892c7b25abf33b68cd23218088c19a2',1,'vmp2::v1::entry_t::r13()'],['../structvmp2_1_1v2_1_1entry__t.html#ad63c471813aaffa87b51f44f4e778e27',1,'vmp2::v2::entry_t::r13()']]], - ['r14_454',['r14',['../structvmp2_1_1v1_1_1entry__t.html#a73f9533987a51cd2ed85dac181cb8e36',1,'vmp2::v1::entry_t::r14()'],['../structvmp2_1_1v2_1_1entry__t.html#a5eca8495531c6b7c230397121c448aa5',1,'vmp2::v2::entry_t::r14()']]], - ['r15_455',['r15',['../structvmp2_1_1v1_1_1entry__t.html#abb759c2488fa9a384ab5b424e84a225b',1,'vmp2::v1::entry_t::r15()'],['../structvmp2_1_1v2_1_1entry__t.html#ad7e5388fa85783e2f628562073945a3e',1,'vmp2::v2::entry_t::r15()']]], - ['r8_456',['r8',['../structvmp2_1_1v1_1_1entry__t.html#a439476f676acc77b1f75abd0ce6f1dc9',1,'vmp2::v1::entry_t::r8()'],['../structvmp2_1_1v2_1_1entry__t.html#a75ab4ecd1d412e886e785202ad208a80',1,'vmp2::v2::entry_t::r8()']]], - ['r9_457',['r9',['../structvmp2_1_1v1_1_1entry__t.html#a82183b6e1580ebc77cf8e60e8d197688',1,'vmp2::v1::entry_t::r9()'],['../structvmp2_1_1v2_1_1entry__t.html#a1c22268aa724bdbe1b2c7e08ca6f91bf',1,'vmp2::v2::entry_t::r9()']]], - ['raw_458',['raw',['../structvmp2_1_1v1_1_1entry__t.html#a33eb058b38f364b0dc70bc51ccce665f',1,'vmp2::v1::entry_t::raw()'],['../structvmp2_1_1v1_1_1entry__t.html#a3cb51b6b59b26726d126ab223f4bea89',1,'vmp2::v1::entry_t::raw()'],['../structvmp2_1_1v2_1_1entry__t.html#a30d79c65c6656f2da0b7ef0305861d18',1,'vmp2::v2::entry_t::raw()'],['../structvmp2_1_1v2_1_1entry__t.html#ad10b50bd2342eacc4cf3c2df45f4923d',1,'vmp2::v2::entry_t::raw()'],['../structzydis__instr__t.html#a63731d9c4bc131dd63253a671f494926',1,'zydis_instr_t::raw()']]], - ['rax_459',['rax',['../structvmp2_1_1v1_1_1entry__t.html#aece27444f4d7739a65e105c99bb80405',1,'vmp2::v1::entry_t::rax()'],['../structvmp2_1_1v2_1_1entry__t.html#a5bcddf6039712e77b1e929c5e23d7102',1,'vmp2::v2::entry_t::rax()']]], - ['rbp_460',['rbp',['../structvmp2_1_1v1_1_1entry__t.html#a897b61a9d552321649e2125f0309087f',1,'vmp2::v1::entry_t::rbp()'],['../structvmp2_1_1v2_1_1entry__t.html#adaa7ac7e16b4c5334f710276e5424bb2',1,'vmp2::v2::entry_t::rbp()']]], - ['rbx_461',['rbx',['../structvmp2_1_1v1_1_1entry__t.html#ad1209ca45ba032f5b153243755ca4715',1,'vmp2::v1::entry_t::rbx()'],['../structvmp2_1_1v2_1_1entry__t.html#adb2f787630408583f8d788b1e0ffbc26',1,'vmp2::v2::entry_t::rbx()']]], - ['rcx_462',['rcx',['../structvmp2_1_1v1_1_1entry__t.html#ad5a8918cb544c45077f2d8226d23e6e8',1,'vmp2::v1::entry_t::rcx()'],['../structvmp2_1_1v2_1_1entry__t.html#af0fe75c5c42bd2d3639661db73195c21',1,'vmp2::v2::entry_t::rcx()']]], - ['rdi_463',['rdi',['../structvmp2_1_1v1_1_1entry__t.html#a1629840800a9af9adb8fdd63b596bc4c',1,'vmp2::v1::entry_t::rdi()'],['../structvmp2_1_1v2_1_1entry__t.html#ab22621550901e08d7d541faa940332a9',1,'vmp2::v2::entry_t::rdi()']]], - ['rdx_464',['rdx',['../structvmp2_1_1v1_1_1entry__t.html#a4e80774ff8364a9237dd99702a8b7d9b',1,'vmp2::v1::entry_t::rdx()'],['../structvmp2_1_1v2_1_1entry__t.html#a6216b34ae98199196363d268ebd917c5',1,'vmp2::v2::entry_t::rdx()']]], - ['readdw_465',['readdw',['../namespacevm_1_1lifters.html#a1e05b6d05c703d4ea79ed6dca1466708',1,'vm::lifters::readdw()'],['../namespacevm_1_1handler_1_1profile.html#a7dcb388eb57317a1fb30a882c1f659de',1,'vm::handler::profile::readdw()']]], - ['readq_466',['readq',['../namespacevm_1_1lifters.html#a4dd33a06403bf5e6cc5b0f833e88508a',1,'vm::lifters::readq()'],['../namespacevm_1_1handler_1_1profile.html#a6969c269658e6069415fc19924a8eff1',1,'vm::handler::profile::readq()']]], - ['readw_467',['readw',['../namespacevm_1_1lifters.html#a5b37dec0f1b7182f3aefbfe6a102096b',1,'vm::lifters']]], - ['regs_468',['regs',['../structvmp2_1_1v2_1_1entry__t.html#a5f0c8c53f295f3c500e6e1700260567d',1,'vmp2::v2::entry_t::regs()'],['../structvmp2_1_1v1_1_1entry__t.html#ac0c039b3a555ca4b2716caf8c9d65dd7',1,'vmp2::v1::entry_t::regs()']]], - ['rflags_469',['rflags',['../structvmp2_1_1v1_1_1entry__t.html#ac01afa0dffbd2377d722232a8db98bff',1,'vmp2::v1::entry_t::rflags()'],['../structvmp2_1_1v2_1_1entry__t.html#a7231c47303e74cba3f4be781b23365fe',1,'vmp2::v2::entry_t::rflags()']]], - ['rsi_470',['rsi',['../structvmp2_1_1v1_1_1entry__t.html#ab4699f11425e593d9745c3ce533481f4',1,'vmp2::v1::entry_t::rsi()'],['../structvmp2_1_1v2_1_1entry__t.html#a2449e4175d235152aa3d47cc0cd3fa54',1,'vmp2::v2::entry_t::rsi()']]] -]; diff --git a/doxygen/html/shl_8cpp.html b/doxygen/html/shl_8cpp.html deleted file mode 100644 index 921883c..0000000 --- a/doxygen/html/shl_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/shl.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    shl.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/splitbar.png b/doxygen/html/splitbar.png deleted file mode 100644 index fe895f2c58179b471a22d8320b39a4bd7312ec8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T diff --git a/doxygen/html/structvm_1_1handler_1_1handler__t-members.html b/doxygen/html/structvm_1_1handler_1_1handler__t-members.html deleted file mode 100644 index b5677c2..0000000 --- a/doxygen/html/structvm_1_1handler_1_1handler__t-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vm::handler::handler_t Member List
    -
    - - - - - diff --git a/doxygen/html/structvm_1_1handler_1_1handler__t.html b/doxygen/html/structvm_1_1handler_1_1handler__t.html deleted file mode 100644 index 1f3d797..0000000 --- a/doxygen/html/structvm_1_1handler_1_1handler__t.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - -VMProfiler: vm::handler::handler_t Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::handler::handler_t Struct Reference
    -
    -
    - -

    handler_t contains all the information for a vm handler such as its immidate value size (zero if there is no imm), the transformations applied to the imm to decrypt it (if any), a pointer to the profile (nullptr if there is none), and other meta data... - More...

    - -

    #include <vmhandlers.hpp>

    - - - - - - - - - - - - - - - - - -

    -Public Attributes

    u8 imm_size
     imm size in bits, zero if no imm... More...
     
    vm::transform::map_t transforms
     transformations to decrypt imm... More...
     
    vm::handler::profile_tprofile
     pointer to the profile, nullptr if none... More...
     
    zydis_routine_t instrs
     native instructions of the vm handler... (calc_jmp/check_vsp is removed from this)... More...
     
    std::uintptr_t address
     linear virtual address to the vm handler... More...
     
    -

    Detailed Description

    -

    handler_t contains all the information for a vm handler such as its immidate value size (zero if there is no imm), the transformations applied to the imm to decrypt it (if any), a pointer to the profile (nullptr if there is none), and other meta data...

    -

    Member Data Documentation

    - -

    ◆ address

    - -
    -
    - - - - -
    std::uintptr_t vm::handler::handler_t::address
    -
    - -

    linear virtual address to the vm handler...

    - -
    -
    - -

    ◆ imm_size

    - -
    -
    - - - - -
    u8 vm::handler::handler_t::imm_size
    -
    - -

    imm size in bits, zero if no imm...

    - -
    -
    - -

    ◆ instrs

    - -
    -
    - - - - -
    zydis_routine_t vm::handler::handler_t::instrs
    -
    - -

    native instructions of the vm handler... (calc_jmp/check_vsp is removed from this)...

    - -
    -
    - -

    ◆ profile

    - -
    -
    - - - - -
    vm::handler::profile_t* vm::handler::handler_t::profile
    -
    - -

    pointer to the profile, nullptr if none...

    - -
    -
    - -

    ◆ transforms

    - -
    -
    - - - - -
    vm::transform::map_t vm::handler::handler_t::transforms
    -
    - -

    transformations to decrypt imm...

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/doxygen/html/structvm_1_1handler_1_1profile__t-members.html b/doxygen/html/structvm_1_1handler_1_1profile__t-members.html deleted file mode 100644 index 3492a50..0000000 --- a/doxygen/html/structvm_1_1handler_1_1profile__t-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vm::handler::profile_t Member List
    -
    - - - - - diff --git a/doxygen/html/structvm_1_1handler_1_1profile__t.html b/doxygen/html/structvm_1_1handler_1_1profile__t.html deleted file mode 100644 index df38820..0000000 --- a/doxygen/html/structvm_1_1handler_1_1profile__t.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - -VMProfiler: vm::handler::profile_t Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::handler::profile_t Struct Reference
    -
    -
    - -

    pre defined vm handler profile containing all compiled time known information about a vm handler... - More...

    - -

    #include <vmprofiles.hpp>

    - - - - - - - - - - - - - - - - - -

    -Public Attributes

    const char * name
     name of the vm handler, such as JMP or LCONST... More...
     
    mnemonic_t mnemonic
     the mnemonic of the vm handler... so you dont need to compare strings... More...
     
    u8 imm_size
     size, in bits, of the operand (imm)... if there is none then this will be zero... More...
     
    std::vector< zydis_callback_tsignature
     a vector of signatures used to compare native instructions against zydis aided signatures... More...
     
    extention_t extention
     how sign extention of operands are handled... More...
     
    -

    Detailed Description

    -

    pre defined vm handler profile containing all compiled time known information about a vm handler...

    -

    Member Data Documentation

    - -

    ◆ extention

    - -
    -
    - - - - -
    extention_t vm::handler::profile_t::extention
    -
    - -

    how sign extention of operands are handled...

    - -
    -
    - -

    ◆ imm_size

    - -
    -
    - - - - -
    u8 vm::handler::profile_t::imm_size
    -
    - -

    size, in bits, of the operand (imm)... if there is none then this will be zero...

    - -
    -
    - -

    ◆ mnemonic

    - -
    -
    - - - - -
    mnemonic_t vm::handler::profile_t::mnemonic
    -
    - -

    the mnemonic of the vm handler... so you dont need to compare strings...

    - -
    -
    - -

    ◆ name

    - -
    -
    - - - - -
    const char* vm::handler::profile_t::name
    -
    - -

    name of the vm handler, such as JMP or LCONST...

    - -
    -
    - -

    ◆ signature

    - -
    -
    - - - - -
    std::vector< zydis_callback_t > vm::handler::profile_t::signature
    -
    - -

    a vector of signatures used to compare native instructions against zydis aided signatures...

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/doxygen/html/structvm_1_1instrs_1_1code__block__t-members.html b/doxygen/html/structvm_1_1instrs_1_1code__block__t-members.html deleted file mode 100644 index 6f2140f..0000000 --- a/doxygen/html/structvm_1_1instrs_1_1code__block__t-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vm::instrs::code_block_t Member List
    -
    -
    - -

    This is the complete list of members for vm::instrs::code_block_t, including all inherited members.

    - - - - -
    jccvm::instrs::code_block_t
    vinstrsvm::instrs::code_block_t
    vip_beginvm::instrs::code_block_t
    - - - - diff --git a/doxygen/html/structvm_1_1instrs_1_1code__block__t.html b/doxygen/html/structvm_1_1instrs_1_1code__block__t.html deleted file mode 100644 index 760db7f..0000000 --- a/doxygen/html/structvm_1_1instrs_1_1code__block__t.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -VMProfiler: vm::instrs::code_block_t Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::instrs::code_block_t Struct Reference
    -
    -
    - -

    #include <vmp2.hpp>

    - - - - - - - - -

    -Public Attributes

    std::uintptr_t vip_begin
     
    jcc_data jcc
     
    std::vector< virt_instr_tvinstrs
     
    -

    Member Data Documentation

    - -

    ◆ jcc

    - -
    -
    - - - - -
    jcc_data vm::instrs::code_block_t::jcc
    -
    - -
    -
    - -

    ◆ vinstrs

    - -
    -
    - - - - -
    std::vector< virt_instr_t > vm::instrs::code_block_t::vinstrs
    -
    - -
    -
    - -

    ◆ vip_begin

    - -
    -
    - - - - -
    std::uintptr_t vm::instrs::code_block_t::vip_begin
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp
    • -
    -
    - - - - diff --git a/doxygen/html/structvm_1_1instrs_1_1jcc__data-members.html b/doxygen/html/structvm_1_1instrs_1_1jcc__data-members.html deleted file mode 100644 index 360da05..0000000 --- a/doxygen/html/structvm_1_1instrs_1_1jcc__data-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vm::instrs::jcc_data Member List
    -
    -
    - -

    This is the complete list of members for vm::instrs::jcc_data, including all inherited members.

    - - - - -
    block_addrvm::instrs::jcc_data
    has_jccvm::instrs::jcc_data
    typevm::instrs::jcc_data
    - - - - diff --git a/doxygen/html/structvm_1_1instrs_1_1jcc__data.html b/doxygen/html/structvm_1_1instrs_1_1jcc__data.html deleted file mode 100644 index 6aaf55d..0000000 --- a/doxygen/html/structvm_1_1instrs_1_1jcc__data.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -VMProfiler: vm::instrs::jcc_data Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::instrs::jcc_data Struct Reference
    -
    -
    - -

    #include <vmp2.hpp>

    - - - - - - - - -

    -Public Attributes

    bool has_jcc
     
    jcc_type type
     
    std::uintptr_t block_addr [2]
     
    -

    Member Data Documentation

    - -

    ◆ block_addr

    - -
    -
    - - - - -
    std::uintptr_t vm::instrs::jcc_data::block_addr[2]
    -
    - -
    -
    - -

    ◆ has_jcc

    - -
    -
    - - - - -
    bool vm::instrs::jcc_data::has_jcc
    -
    - -
    -
    - -

    ◆ type

    - -
    -
    - - - - -
    jcc_type vm::instrs::jcc_data::type
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp
    • -
    -
    - - - - diff --git a/doxygen/html/structvm_1_1instrs_1_1virt__instr__t-members.html b/doxygen/html/structvm_1_1instrs_1_1virt__instr__t-members.html deleted file mode 100644 index be86afb..0000000 --- a/doxygen/html/structvm_1_1instrs_1_1virt__instr__t-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vm::instrs::virt_instr_t Member List
    -
    - - - - - diff --git a/doxygen/html/structvm_1_1instrs_1_1virt__instr__t.html b/doxygen/html/structvm_1_1instrs_1_1virt__instr__t.html deleted file mode 100644 index 5cdfc01..0000000 --- a/doxygen/html/structvm_1_1instrs_1_1virt__instr__t.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - -VMProfiler: vm::instrs::virt_instr_t Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vm::instrs::virt_instr_t Struct Reference
    -
    -
    - -

    #include <vmp2.hpp>

    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    vm::handler::mnemonic_t mnemonic_t
     
    std::uint8_t opcode
     
    vmp2::v2::entry_t trace_data
     
    struct {
       bool   has_imm
     
       struct {
          std::uint8_t   imm_size
     
          union {
             std::int64_t   s
     
             std::uint64_t   u
     
          } 
     
       }   imm
     
    operand
     
    -

    Member Data Documentation

    - -

    ◆ has_imm

    - -
    -
    - - - - -
    bool vm::instrs::virt_instr_t::has_imm
    -
    - -
    -
    - -

    ◆ 

    - -
    -
    - - - - -
    struct { ... } vm::instrs::virt_instr_t::imm
    -
    - -
    -
    - -

    ◆ imm_size

    - -
    -
    - - - - -
    std::uint8_t vm::instrs::virt_instr_t::imm_size
    -
    - -
    -
    - -

    ◆ mnemonic_t

    - -
    -
    - - - - -
    vm::handler::mnemonic_t vm::instrs::virt_instr_t::mnemonic_t
    -
    - -
    -
    - -

    ◆ opcode

    - -
    -
    - - - - -
    std::uint8_t vm::instrs::virt_instr_t::opcode
    -
    - -
    -
    - -

    ◆ 

    - -
    -
    - - - - -
    struct { ... } vm::instrs::virt_instr_t::operand
    -
    - -
    -
    - -

    ◆ s

    - -
    -
    - - - - -
    std::int64_t vm::instrs::virt_instr_t::s
    -
    - -
    -
    - -

    ◆ trace_data

    - -
    -
    - - - - -
    vmp2::v2::entry_t vm::instrs::virt_instr_t::trace_data
    -
    - -
    -
    - -

    ◆ u

    - -
    -
    - - - - -
    std::uint64_t vm::instrs::virt_instr_t::u
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp
    • -
    -
    - - - - diff --git a/doxygen/html/structvmp2_1_1v1_1_1entry__t-members.html b/doxygen/html/structvmp2_1_1v1_1_1entry__t-members.html deleted file mode 100644 index b3dc1be..0000000 --- a/doxygen/html/structvmp2_1_1v1_1_1entry__t-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmp2::v1::entry_t Member List
    -
    - - - - - diff --git a/doxygen/html/structvmp2_1_1v1_1_1entry__t.html b/doxygen/html/structvmp2_1_1v1_1_1entry__t.html deleted file mode 100644 index 0f685df..0000000 --- a/doxygen/html/structvmp2_1_1v1_1_1entry__t.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - - - - -VMProfiler: vmp2::v1::entry_t Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmp2::v1::entry_t Struct Reference
    -
    -
    - -

    #include <vmp2.hpp>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    u8 handler_idx
     
    u64 decrypt_key
     
    u64 vip
     
    union {
       struct {
          u64   r15
     
          u64   r14
     
          u64   r13
     
          u64   r12
     
          u64   r11
     
          u64   r10
     
          u64   r9
     
          u64   r8
     
          u64   rbp
     
          u64   rdi
     
          u64   rsi
     
          u64   rdx
     
          u64   rcx
     
          u64   rbx
     
          u64   rax
     
          u64   rflags
     
       } 
     
       u64   raw [16]
     
    regs
     
    union {
       u64   qword [0x28]
     
       u8   raw [0x140]
     
    vregs
     
    union {
       u64   qword [0x20]
     
       u8   raw [0x100]
     
    vsp
     
    -

    Member Data Documentation

    - -

    ◆ decrypt_key

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::decrypt_key
    -
    - -
    -
    - -

    ◆ handler_idx

    - -
    -
    - - - - -
    u8 vmp2::v1::entry_t::handler_idx
    -
    - -
    -
    - -

    ◆ qword

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::qword[0x20]
    -
    - -
    -
    - -

    ◆ r10

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::r10
    -
    - -
    -
    - -

    ◆ r11

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::r11
    -
    - -
    -
    - -

    ◆ r12

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::r12
    -
    - -
    -
    - -

    ◆ r13

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::r13
    -
    - -
    -
    - -

    ◆ r14

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::r14
    -
    - -
    -
    - -

    ◆ r15

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::r15
    -
    - -
    -
    - -

    ◆ r8

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::r8
    -
    - -
    -
    - -

    ◆ r9

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::r9
    -
    - -
    -
    - -

    ◆ raw [1/2]

    - -
    -
    - - - - -
    u8 vmp2::v1::entry_t::raw[0x100]
    -
    - -
    -
    - -

    ◆ raw [2/2]

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::raw[16]
    -
    - -
    -
    - -

    ◆ rax

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::rax
    -
    - -
    -
    - -

    ◆ rbp

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::rbp
    -
    - -
    -
    - -

    ◆ rbx

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::rbx
    -
    - -
    -
    - -

    ◆ rcx

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::rcx
    -
    - -
    -
    - -

    ◆ rdi

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::rdi
    -
    - -
    -
    - -

    ◆ rdx

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::rdx
    -
    - -
    -
    - -

    ◆ 

    - -
    -
    - - - - -
    union { ... } vmp2::v1::entry_t::regs
    -
    - -
    -
    - -

    ◆ rflags

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::rflags
    -
    - -
    -
    - -

    ◆ rsi

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::rsi
    -
    - -
    -
    - -

    ◆ vip

    - -
    -
    - - - - -
    u64 vmp2::v1::entry_t::vip
    -
    - -
    -
    - -

    ◆ 

    - -
    -
    - - - - -
    union { ... } vmp2::v1::entry_t::vregs
    -
    - -
    -
    - -

    ◆ 

    - -
    -
    - - - - -
    union { ... } vmp2::v1::entry_t::vsp
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp
    • -
    -
    - - - - diff --git a/doxygen/html/structvmp2_1_1v1_1_1file__header-members.html b/doxygen/html/structvmp2_1_1v1_1_1file__header-members.html deleted file mode 100644 index d66083c..0000000 --- a/doxygen/html/structvmp2_1_1v1_1_1file__header-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmp2::v1::file_header Member List
    -
    - - - - - diff --git a/doxygen/html/structvmp2_1_1v1_1_1file__header.html b/doxygen/html/structvmp2_1_1v1_1_1file__header.html deleted file mode 100644 index b2eb2f7..0000000 --- a/doxygen/html/structvmp2_1_1v1_1_1file__header.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - -VMProfiler: vmp2::v1::file_header Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmp2::v1::file_header Struct Reference
    -
    -
    - -

    #include <vmp2.hpp>

    - - - - - - - - - - - - - - - - -

    -Public Attributes

    u32 magic
     
    u64 epoch_time
     
    u64 module_base
     
    exec_type_t advancement
     
    version_t version
     
    u32 entry_count
     
    u32 entry_offset
     
    -

    Member Data Documentation

    - -

    ◆ advancement

    - -
    -
    - - - - -
    exec_type_t vmp2::v1::file_header::advancement
    -
    - -
    -
    - -

    ◆ entry_count

    - -
    -
    - - - - -
    u32 vmp2::v1::file_header::entry_count
    -
    - -
    -
    - -

    ◆ entry_offset

    - -
    -
    - - - - -
    u32 vmp2::v1::file_header::entry_offset
    -
    - -
    -
    - -

    ◆ epoch_time

    - -
    -
    - - - - -
    u64 vmp2::v1::file_header::epoch_time
    -
    - -
    -
    - -

    ◆ magic

    - -
    -
    - - - - -
    u32 vmp2::v1::file_header::magic
    -
    - -
    -
    - -

    ◆ module_base

    - -
    -
    - - - - -
    u64 vmp2::v1::file_header::module_base
    -
    - -
    -
    - -

    ◆ version

    - -
    -
    - - - - -
    version_t vmp2::v1::file_header::version
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp
    • -
    -
    - - - - diff --git a/doxygen/html/structvmp2_1_1v2_1_1entry__t-members.html b/doxygen/html/structvmp2_1_1v2_1_1entry__t-members.html deleted file mode 100644 index 66205ab..0000000 --- a/doxygen/html/structvmp2_1_1v2_1_1entry__t-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmp2::v2::entry_t Member List
    -
    - - - - - diff --git a/doxygen/html/structvmp2_1_1v2_1_1entry__t.html b/doxygen/html/structvmp2_1_1v2_1_1entry__t.html deleted file mode 100644 index 35ff7fe..0000000 --- a/doxygen/html/structvmp2_1_1v2_1_1entry__t.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - - - - -VMProfiler: vmp2::v2::entry_t Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmp2::v2::entry_t Struct Reference
    -
    -
    - -

    #include <vmp2.hpp>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    u8 handler_idx
     
    u64 decrypt_key
     
    u64 vip
     
    union {
       struct {
          u64   r15
     
          u64   r14
     
          u64   r13
     
          u64   r12
     
          u64   r11
     
          u64   r10
     
          u64   r9
     
          u64   r8
     
          u64   rbp
     
          u64   rdi
     
          u64   rsi
     
          u64   rdx
     
          u64   rcx
     
          u64   rbx
     
          u64   rax
     
          u64   rflags
     
       } 
     
       u64   raw [16]
     
    regs
     
    union {
       u64   qword [0x28]
     
       u8   raw [0x140]
     
    vregs
     
    union {
       u64   qword [0x20]
     
       u8   raw [0x100]
     
    vsp
     
    -

    Member Data Documentation

    - -

    ◆ decrypt_key

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::decrypt_key
    -
    - -
    -
    - -

    ◆ handler_idx

    - -
    -
    - - - - -
    u8 vmp2::v2::entry_t::handler_idx
    -
    - -
    -
    - -

    ◆ qword

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::qword[0x20]
    -
    - -
    -
    - -

    ◆ r10

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::r10
    -
    - -
    -
    - -

    ◆ r11

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::r11
    -
    - -
    -
    - -

    ◆ r12

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::r12
    -
    - -
    -
    - -

    ◆ r13

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::r13
    -
    - -
    -
    - -

    ◆ r14

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::r14
    -
    - -
    -
    - -

    ◆ r15

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::r15
    -
    - -
    -
    - -

    ◆ r8

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::r8
    -
    - -
    -
    - -

    ◆ r9

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::r9
    -
    - -
    -
    - -

    ◆ raw [1/2]

    - -
    -
    - - - - -
    u8 vmp2::v2::entry_t::raw[0x100]
    -
    - -
    -
    - -

    ◆ raw [2/2]

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::raw[16]
    -
    - -
    -
    - -

    ◆ rax

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::rax
    -
    - -
    -
    - -

    ◆ rbp

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::rbp
    -
    - -
    -
    - -

    ◆ rbx

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::rbx
    -
    - -
    -
    - -

    ◆ rcx

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::rcx
    -
    - -
    -
    - -

    ◆ rdi

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::rdi
    -
    - -
    -
    - -

    ◆ rdx

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::rdx
    -
    - -
    -
    - -

    ◆ 

    - -
    -
    - - - - -
    union { ... } vmp2::v2::entry_t::regs
    -
    - -
    -
    - -

    ◆ rflags

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::rflags
    -
    - -
    -
    - -

    ◆ rsi

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::rsi
    -
    - -
    -
    - -

    ◆ vip

    - -
    -
    - - - - -
    u64 vmp2::v2::entry_t::vip
    -
    - -
    -
    - -

    ◆ 

    - -
    -
    - - - - -
    union { ... } vmp2::v2::entry_t::vregs
    -
    - -
    -
    - -

    ◆ 

    - -
    -
    - - - - -
    union { ... } vmp2::v2::entry_t::vsp
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp
    • -
    -
    - - - - diff --git a/doxygen/html/structvmp2_1_1v2_1_1file__header-members.html b/doxygen/html/structvmp2_1_1v2_1_1file__header-members.html deleted file mode 100644 index 6052a67..0000000 --- a/doxygen/html/structvmp2_1_1v2_1_1file__header-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmp2::v2::file_header Member List
    -
    - - - - - diff --git a/doxygen/html/structvmp2_1_1v2_1_1file__header.html b/doxygen/html/structvmp2_1_1v2_1_1file__header.html deleted file mode 100644 index 323c239..0000000 --- a/doxygen/html/structvmp2_1_1v2_1_1file__header.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - - - - -VMProfiler: vmp2::v2::file_header Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmp2::v2::file_header Struct Reference
    -
    -
    - -

    #include <vmp2.hpp>

    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    u32 magic
     
    u64 epoch_time
     
    version_t version
     
    u64 module_base
     
    u64 image_base
     
    u64 vm_entry_rva
     
    exec_type_t advancement
     
    u32 module_offset
     
    u32 module_size
     
    u32 entry_count
     
    u32 entry_offset
     
    -

    Member Data Documentation

    - -

    ◆ advancement

    - -
    -
    - - - - -
    exec_type_t vmp2::v2::file_header::advancement
    -
    - -
    -
    - -

    ◆ entry_count

    - -
    -
    - - - - -
    u32 vmp2::v2::file_header::entry_count
    -
    - -
    -
    - -

    ◆ entry_offset

    - -
    -
    - - - - -
    u32 vmp2::v2::file_header::entry_offset
    -
    - -
    -
    - -

    ◆ epoch_time

    - -
    -
    - - - - -
    u64 vmp2::v2::file_header::epoch_time
    -
    - -
    -
    - -

    ◆ image_base

    - -
    -
    - - - - -
    u64 vmp2::v2::file_header::image_base
    -
    - -
    -
    - -

    ◆ magic

    - -
    -
    - - - - -
    u32 vmp2::v2::file_header::magic
    -
    - -
    -
    - -

    ◆ module_base

    - -
    -
    - - - - -
    u64 vmp2::v2::file_header::module_base
    -
    - -
    -
    - -

    ◆ module_offset

    - -
    -
    - - - - -
    u32 vmp2::v2::file_header::module_offset
    -
    - -
    -
    - -

    ◆ module_size

    - -
    -
    - - - - -
    u32 vmp2::v2::file_header::module_size
    -
    - -
    -
    - -

    ◆ version

    - -
    -
    - - - - -
    version_t vmp2::v2::file_header::version
    -
    - -
    -
    - -

    ◆ vm_entry_rva

    - -
    -
    - - - - -
    u64 vmp2::v2::file_header::vm_entry_rva
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp
    • -
    -
    - - - - diff --git a/doxygen/html/structvmp2_1_1v3_1_1code__block__t-members.html b/doxygen/html/structvmp2_1_1v3_1_1code__block__t-members.html deleted file mode 100644 index 78d0c97..0000000 --- a/doxygen/html/structvmp2_1_1v3_1_1code__block__t-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmp2::v3::code_block_t Member List
    -
    - - - - - diff --git a/doxygen/html/structvmp2_1_1v3_1_1code__block__t.html b/doxygen/html/structvmp2_1_1v3_1_1code__block__t.html deleted file mode 100644 index 160a9c0..0000000 --- a/doxygen/html/structvmp2_1_1v3_1_1code__block__t.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - -VMProfiler: vmp2::v3::code_block_t Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmp2::v3::code_block_t Struct Reference
    -
    -
    - -

    #include <vmp2.hpp>

    - - - - - - - - - - - - -

    -Public Attributes

    std::uintptr_t vip_begin
     
    std::uintptr_t next_block_offset
     
    vm::instrs::jcc_data jcc
     
    std::uint32_t vinstr_count
     
    vm::instrs::virt_instr_t vinstr []
     
    -

    Member Data Documentation

    - -

    ◆ jcc

    - -
    -
    - - - - -
    vm::instrs::jcc_data vmp2::v3::code_block_t::jcc
    -
    - -
    -
    - -

    ◆ next_block_offset

    - -
    -
    - - - - -
    std::uintptr_t vmp2::v3::code_block_t::next_block_offset
    -
    - -
    -
    - -

    ◆ vinstr

    - -
    -
    - - - - -
    vm::instrs::virt_instr_t vmp2::v3::code_block_t::vinstr[]
    -
    - -
    -
    - -

    ◆ vinstr_count

    - -
    -
    - - - - -
    std::uint32_t vmp2::v3::code_block_t::vinstr_count
    -
    - -
    -
    - -

    ◆ vip_begin

    - -
    -
    - - - - -
    std::uintptr_t vmp2::v3::code_block_t::vip_begin
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp
    • -
    -
    - - - - diff --git a/doxygen/html/structvmp2_1_1v3_1_1file__header-members.html b/doxygen/html/structvmp2_1_1v3_1_1file__header-members.html deleted file mode 100644 index 2dda0b8..0000000 --- a/doxygen/html/structvmp2_1_1v3_1_1file__header-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmp2::v3::file_header Member List
    -
    - - - - - diff --git a/doxygen/html/structvmp2_1_1v3_1_1file__header.html b/doxygen/html/structvmp2_1_1v3_1_1file__header.html deleted file mode 100644 index bea9f56..0000000 --- a/doxygen/html/structvmp2_1_1v3_1_1file__header.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - -VMProfiler: vmp2::v3::file_header Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmp2::v3::file_header Struct Reference
    -
    -
    - -

    #include <vmp2.hpp>

    - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    u32 magic
     
    u64 epoch_time
     
    version_t version
     
    u64 module_base
     
    u64 image_base
     
    u64 vm_entry_rva
     
    u32 module_offset
     
    u32 module_size
     
    u32 code_block_offset
     
    u32 code_block_count
     
    -

    Member Data Documentation

    - -

    ◆ code_block_count

    - -
    -
    - - - - -
    u32 vmp2::v3::file_header::code_block_count
    -
    - -
    -
    - -

    ◆ code_block_offset

    - -
    -
    - - - - -
    u32 vmp2::v3::file_header::code_block_offset
    -
    - -
    -
    - -

    ◆ epoch_time

    - -
    -
    - - - - -
    u64 vmp2::v3::file_header::epoch_time
    -
    - -
    -
    - -

    ◆ image_base

    - -
    -
    - - - - -
    u64 vmp2::v3::file_header::image_base
    -
    - -
    -
    - -

    ◆ magic

    - -
    -
    - - - - -
    u32 vmp2::v3::file_header::magic
    -
    - -
    -
    - -

    ◆ module_base

    - -
    -
    - - - - -
    u64 vmp2::v3::file_header::module_base
    -
    - -
    -
    - -

    ◆ module_offset

    - -
    -
    - - - - -
    u32 vmp2::v3::file_header::module_offset
    -
    - -
    -
    - -

    ◆ module_size

    - -
    -
    - - - - -
    u32 vmp2::v3::file_header::module_size
    -
    - -
    -
    - -

    ◆ version

    - -
    -
    - - - - -
    version_t vmp2::v3::file_header::version
    -
    - -
    -
    - -

    ◆ vm_entry_rva

    - -
    -
    - - - - -
    u64 vmp2::v3::file_header::vm_entry_rva
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp
    • -
    -
    - - - - diff --git a/doxygen/html/structzydis__instr__t-members.html b/doxygen/html/structzydis__instr__t-members.html deleted file mode 100644 index b058f88..0000000 --- a/doxygen/html/structzydis__instr__t-members.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -VMProfiler: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    zydis_instr_t Member List
    -
    -
    - -

    This is the complete list of members for zydis_instr_t, including all inherited members.

    - - - - -
    addrzydis_instr_t
    instrzydis_instr_t
    rawzydis_instr_t
    - - - - diff --git a/doxygen/html/structzydis__instr__t.html b/doxygen/html/structzydis__instr__t.html deleted file mode 100644 index e844c29..0000000 --- a/doxygen/html/structzydis__instr__t.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -VMProfiler: zydis_instr_t Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    zydis_instr_t Struct Reference
    -
    -
    - -

    #include <vmutils.hpp>

    - - - - - - - - -

    -Public Attributes

    zydis_decoded_instr_t instr
     
    std::vector< u8raw
     
    std::uintptr_t addr
     
    -

    Member Data Documentation

    - -

    ◆ addr

    - -
    -
    - - - - -
    std::uintptr_t zydis_instr_t::addr
    -
    - -
    -
    - -

    ◆ instr

    - -
    -
    - - - - -
    zydis_decoded_instr_t zydis_instr_t::instr
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    std::vector< u8 > zydis_instr_t::raw
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • D:/vmprofiler-qt/dependencies/vmprofiler/include/vmutils.hpp
    • -
    -
    - - - - diff --git a/doxygen/html/sync_off.png b/doxygen/html/sync_off.png deleted file mode 100644 index 3b443fc62892114406e3d399421b2a881b897acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* diff --git a/doxygen/html/sync_on.png b/doxygen/html/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 diff --git a/doxygen/html/tab_a.png b/doxygen/html/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 diff --git a/doxygen/html/tab_b.png b/doxygen/html/tab_b.png deleted file mode 100644 index e2b4a8638cb3496a016eaed9e16ffc12846dea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ diff --git a/doxygen/html/tabs.css b/doxygen/html/tabs.css deleted file mode 100644 index 85a0cd5..0000000 --- a/doxygen/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/doxygen/html/transform_8hpp.html b/doxygen/html/transform_8hpp.html deleted file mode 100644 index 520c473..0000000 --- a/doxygen/html/transform_8hpp.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/transform.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    transform.hpp File Reference
    -
    -
    -
    #include <Zydis/Zydis.h>
    -#include <functional>
    -#include <map>
    -#include <stdexcept>
    -#include <vmutils.hpp>
    -
    -

    Go to the source code of this file.

    - - - - - - -

    -Namespaces

     vm
     
     vm::transform
     
    - - - - - - - - -

    -Typedefs

    template<typename T >
    using vm::transform::transform_t = std::function< T(T, T) >
     transform function, such as ADD, SUB, BSWAP... etc... More...
     
    using vm::transform::map_t = std::map< transform::type, zydis_decoded_instr_t >
     map of transform type to zydis decoded instruction of the transform... More...
     
    - - - - -

    -Enumerations

    enum class  vm::transform::type {
    -  vm::transform::generic0 -, vm::transform::rolling_key -, vm::transform::generic1 -, vm::transform::generic2 -,
    -  vm::transform::generic3 -, vm::transform::update_key -
    - }
     type of transformation... More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    template<class T >
    vm::transform::__ROL__ (T value, int count)
     rotate left template function take from IDA SDK... More...
     
    u8 vm::transform::__ROL1__ (u8 value, int count)
     rotate left a one byte value... More...
     
    u16 vm::transform::__ROL2__ (u16 value, int count)
     rotate left a two byte value... More...
     
    u32 vm::transform::__ROL4__ (u32 value, int count)
     rotate left a four byte value... More...
     
    u64 vm::transform::__ROL8__ (u64 value, int count)
     rotate left an eight byte value... More...
     
    u8 vm::transform::__ROR1__ (u8 value, int count)
     rotate right a one byte value... More...
     
    u16 vm::transform::__ROR2__ (u16 value, int count)
     rotate right a two byte value... More...
     
    u32 vm::transform::__ROR4__ (u32 value, int count)
     rotate right a four byte value... More...
     
    u64 vm::transform::__ROR8__ (u64 value, int count)
     rotate right an eight byte value... More...
     
    bool vm::transform::valid (zydis_mnemonic_t op)
     determines if the given mnemonic is a valid transformation... More...
     
    void vm::transform::inverse_transforms (transform::map_t &transforms, transform::map_t &inverse)
     inverse operand decryption transformations... More...
     
    auto vm::transform::inverse_transforms (std::vector< zydis_decoded_instr_t > &instrs) -> bool
     inverse transformations given a vector of them... More...
     
    auto vm::transform::apply (std::uint8_t bitsize, ZydisMnemonic op, std::uint64_t a, std::uint64_t b) -> std::uint64_t
     
    bool vm::transform::has_imm (const zydis_decoded_instr_t *instr)
     determines if a given decoded instruction has a second operand that is an immediate value... More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    template<class T >
    const auto vm::transform::_bswap
     
    template<class T >
    const auto vm::transform::_add = []( T a, T b ) -> T { return a + b; }
     
    template<class T >
    const auto vm::transform::_xor = []( T a, T b ) -> T { return a ^ b; }
     
    template<class T >
    const auto vm::transform::_sub = []( T a, T b ) -> T { return a - b; }
     
    template<class T >
    const auto vm::transform::_neg = []( T a, T b ) -> T { return a * -1; }
     
    template<class T >
    const auto vm::transform::_not = []( T a, T b ) -> T { return ~a; }
     
    template<class T >
    const auto vm::transform::_ror
     
    template<class T >
    const auto vm::transform::_rol
     
    template<class T >
    const auto vm::transform::_inc = []( T a, T b ) -> T { return a + 1; }
     
    template<class T >
    const auto vm::transform::_dec = []( T a, T b ) -> T { return a - 1; }
     
    template<class T >
    std::map< zydis_mnemonic_t, transform_t< T > > vm::transform::transforms
     
    std::map< zydis_mnemonic_t, zydis_mnemonic_tvm::transform::inverse
     
    -
    - - - - diff --git a/doxygen/html/transform_8hpp_source.html b/doxygen/html/transform_8hpp_source.html deleted file mode 100644 index 194dba0..0000000 --- a/doxygen/html/transform_8hpp_source.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/transform.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    transform.hpp
    -
    -
    -Go to the documentation of this file.
    1 #pragma once
    -
    2 #include <Zydis/Zydis.h>
    -
    3 #include <functional>
    -
    4 #include <map>
    -
    5 #include <stdexcept>
    -
    6 #include <vmutils.hpp>
    -
    7 
    -
    8 namespace vm::transform
    -
    9 {
    -
    17  template < class T > inline T __ROL__( T value, int count )
    -
    18  {
    -
    19  const unsigned int nbits = sizeof( T ) * 8;
    -
    20 
    -
    21  if ( count > 0 )
    -
    22  {
    -
    23  count %= nbits;
    -
    24  T high = value >> ( nbits - count );
    -
    25  if ( T( -1 ) < 0 ) // signed value
    -
    26  high &= ~( ( T( -1 ) << count ) );
    -
    27  value <<= count;
    -
    28  value |= high;
    -
    29  }
    -
    30  else
    -
    31  {
    -
    32  count = -count % nbits;
    -
    33  T low = value << ( nbits - count );
    -
    34  value >>= count;
    -
    35  value |= low;
    -
    36  }
    -
    37  return value;
    -
    38  }
    -
    39 
    -
    46  inline u8 __ROL1__( u8 value, int count )
    -
    47  {
    -
    48  return __ROL__( ( u8 )value, count );
    -
    49  }
    -
    50 
    -
    57  inline u16 __ROL2__( u16 value, int count )
    -
    58  {
    -
    59  return __ROL__( ( u16 )value, count );
    -
    60  }
    -
    61 
    -
    68  inline u32 __ROL4__( u32 value, int count )
    -
    69  {
    -
    70  return __ROL__( ( u32 )value, count );
    -
    71  }
    -
    72 
    -
    79  inline u64 __ROL8__( u64 value, int count )
    -
    80  {
    -
    81  return __ROL__( ( u64 )value, count );
    -
    82  }
    -
    83 
    -
    90  inline u8 __ROR1__( u8 value, int count )
    -
    91  {
    -
    92  return __ROL__( ( u8 )value, -count );
    -
    93  }
    -
    94 
    -
    101  inline u16 __ROR2__( u16 value, int count )
    -
    102  {
    -
    103  return __ROL__( ( u16 )value, -count );
    -
    104  }
    -
    105 
    -
    112  inline u32 __ROR4__( u32 value, int count )
    -
    113  {
    -
    114  return __ROL__( ( u32 )value, -count );
    -
    115  }
    -
    116 
    -
    123  inline u64 __ROR8__( u64 value, int count )
    -
    124  {
    -
    125  return __ROL__( ( u64 )value, -count );
    -
    126  }
    -
    127 
    -
    132  template < typename T > using transform_t = std::function< T( T, T ) >;
    -
    133 
    -
    137  enum class type
    -
    138  {
    -
    139  generic0,
    -
    140  rolling_key,
    -
    141  generic1,
    -
    142  generic2,
    -
    143  generic3,
    -
    144  update_key
    -
    145  };
    -
    146 
    -
    150  using map_t = std::map< transform::type, zydis_decoded_instr_t >;
    -
    151 
    -
    152  template < class T >
    -
    153  inline const auto _bswap = []( T a, T b ) -> T {
    -
    154  if constexpr ( std::is_same_v< T, std::uint64_t > )
    -
    155  return _byteswap_uint64( a );
    -
    156  if constexpr ( std::is_same_v< T, std::uint32_t > )
    -
    157  return _byteswap_ulong( a );
    -
    158  if constexpr ( std::is_same_v< T, std::uint16_t > )
    -
    159  return _byteswap_ushort( a );
    -
    160 
    -
    161  throw std::invalid_argument( "invalid type size..." );
    -
    162  };
    -
    163 
    -
    164  template < class T > inline const auto _add = []( T a, T b ) -> T { return a + b; };
    -
    165 
    -
    166  template < class T > inline const auto _xor = []( T a, T b ) -> T { return a ^ b; };
    -
    167 
    -
    168  template < class T > inline const auto _sub = []( T a, T b ) -> T { return a - b; };
    -
    169 
    -
    170  template < class T > inline const auto _neg = []( T a, T b ) -> T { return a * -1; };
    -
    171 
    -
    172  template < class T > inline const auto _not = []( T a, T b ) -> T { return ~a; };
    -
    173 
    -
    174  template < class T >
    -
    175  inline const auto _ror = []( T a, T b ) -> T {
    -
    176  if constexpr ( std::is_same_v< T, std::uint64_t > )
    -
    177  return __ROR8__( a, b );
    -
    178  if constexpr ( std::is_same_v< T, std::uint32_t > )
    -
    179  return __ROR4__( a, b );
    -
    180  if constexpr ( std::is_same_v< T, std::uint16_t > )
    -
    181  return __ROR2__( a, b );
    -
    182  if constexpr ( std::is_same_v< T, std::uint8_t > )
    -
    183  return __ROR1__( a, b );
    -
    184 
    -
    185  throw std::invalid_argument( "invalid type size..." );
    -
    186  };
    -
    187 
    -
    188  template < class T >
    -
    189  inline const auto _rol = []( T a, T b ) -> T {
    -
    190  if constexpr ( std::is_same_v< T, std::uint64_t > )
    -
    191  return __ROL8__( a, b );
    -
    192  if constexpr ( std::is_same_v< T, std::uint32_t > )
    -
    193  return __ROL4__( a, b );
    -
    194  if constexpr ( std::is_same_v< T, std::uint16_t > )
    -
    195  return __ROL2__( a, b );
    -
    196  if constexpr ( std::is_same_v< T, std::uint8_t > )
    -
    197  return __ROL1__( a, b );
    -
    198 
    -
    199  throw std::invalid_argument( "invalid type size..." );
    -
    200  };
    -
    201 
    -
    202  template < class T > inline const auto _inc = []( T a, T b ) -> T { return a + 1; };
    -
    203 
    -
    204  template < class T > inline const auto _dec = []( T a, T b ) -> T { return a - 1; };
    -
    205 
    -
    206  template < class T >
    -
    207  inline std::map< zydis_mnemonic_t, transform_t< T > > transforms = {
    -
    208  { ZYDIS_MNEMONIC_ADD, _add< T > }, { ZYDIS_MNEMONIC_XOR, _xor< T > }, { ZYDIS_MNEMONIC_BSWAP, _bswap< T > },
    -
    209  { ZYDIS_MNEMONIC_SUB, _sub< T > }, { ZYDIS_MNEMONIC_NEG, _neg< T > }, { ZYDIS_MNEMONIC_NOT, _not< T > },
    -
    210  { ZYDIS_MNEMONIC_ROR, _ror< T > }, { ZYDIS_MNEMONIC_ROL, _rol< T > }, { ZYDIS_MNEMONIC_INC, _inc< T > },
    -
    211  { ZYDIS_MNEMONIC_DEC, _dec< T > } };
    -
    212 
    -
    213  inline std::map< zydis_mnemonic_t, zydis_mnemonic_t > inverse = {
    -
    214  { ZYDIS_MNEMONIC_ADD, ZYDIS_MNEMONIC_SUB }, { ZYDIS_MNEMONIC_XOR, ZYDIS_MNEMONIC_XOR },
    -
    215  { ZYDIS_MNEMONIC_BSWAP, ZYDIS_MNEMONIC_BSWAP }, { ZYDIS_MNEMONIC_SUB, ZYDIS_MNEMONIC_ADD },
    -
    216  { ZYDIS_MNEMONIC_NEG, ZYDIS_MNEMONIC_NEG }, { ZYDIS_MNEMONIC_NOT, ZYDIS_MNEMONIC_NOT },
    -
    217  { ZYDIS_MNEMONIC_ROR, ZYDIS_MNEMONIC_ROL }, { ZYDIS_MNEMONIC_ROL, ZYDIS_MNEMONIC_ROR },
    -
    218  { ZYDIS_MNEMONIC_INC, ZYDIS_MNEMONIC_DEC }, { ZYDIS_MNEMONIC_DEC, ZYDIS_MNEMONIC_INC } };
    -
    219 
    -
    225  inline bool valid( zydis_mnemonic_t op )
    -
    226  {
    -
    227  return transforms< std::uint64_t >.find( op ) != transforms< std::uint64_t >.end();
    -
    228  }
    -
    229 
    - -
    236  {
    - -
    238  inverse[ transform::type::generic0 ].mnemonic =
    - -
    240 
    - - - -
    244 
    - -
    246  inverse[ transform::type::generic1 ].mnemonic =
    - -
    248 
    - -
    250  inverse[ transform::type::generic2 ].mnemonic =
    - -
    252 
    - -
    254  inverse[ transform::type::generic3 ].mnemonic =
    - -
    256 
    - - - -
    260  }
    -
    261 
    -
    267  inline auto inverse_transforms( std::vector< zydis_decoded_instr_t > &instrs ) -> bool
    -
    268  {
    -
    269  for ( auto idx = 0u; idx < instrs.size(); idx++ )
    -
    270  if ( !( instrs[ idx ].mnemonic = inverse[ instrs[ idx ].mnemonic ] ) )
    -
    271  return false;
    -
    272 
    -
    273  std::reverse( instrs.begin(), instrs.end() );
    -
    274  return true;
    -
    275  }
    -
    276 
    -
    277  // max size of a and b is 64 bits, a and b is then converted to
    -
    278  // the number of bits in bitsize, the transformation is applied,
    -
    279  // finally the result is converted back to 64bits... zero extended...
    -
    280  inline auto apply( std::uint8_t bitsize, ZydisMnemonic op, std::uint64_t a, std::uint64_t b ) -> std::uint64_t
    -
    281  {
    -
    282  switch ( bitsize )
    -
    283  {
    -
    284  case 8:
    -
    285  return transforms< std::uint8_t >[ op ]( a, b );
    -
    286  case 16:
    -
    287  return transforms< std::uint16_t >[ op ]( a, b );
    -
    288  case 32:
    -
    289  return transforms< std::uint32_t >[ op ]( a, b );
    -
    290  case 64:
    -
    291  return transforms< std::uint64_t >[ op ]( a, b );
    -
    292  default:
    -
    293  throw std::invalid_argument( "invalid bit size..." );
    -
    294  }
    -
    295  }
    -
    296 
    -
    302  inline bool has_imm( const zydis_decoded_instr_t *instr )
    -
    303  {
    -
    304  return instr->operand_count > 1 && ( instr->operands[ 1 ].type == ZYDIS_OPERAND_TYPE_IMMEDIATE );
    -
    305  }
    -
    306 } // namespace vm::transform
    -
    Definition: transform.hpp:9
    -
    const auto _inc
    Definition: transform.hpp:202
    -
    const auto _dec
    Definition: transform.hpp:204
    -
    u8 __ROR1__(u8 value, int count)
    rotate right a one byte value...
    Definition: transform.hpp:90
    -
    const auto _add
    Definition: transform.hpp:164
    -
    u8 __ROL1__(u8 value, int count)
    rotate left a one byte value...
    Definition: transform.hpp:46
    -
    void inverse_transforms(transform::map_t &transforms, transform::map_t &inverse)
    inverse operand decryption transformations...
    Definition: transform.hpp:235
    -
    const auto _xor
    Definition: transform.hpp:166
    -
    auto apply(std::uint8_t bitsize, ZydisMnemonic op, std::uint64_t a, std::uint64_t b) -> std::uint64_t
    Definition: transform.hpp:280
    -
    u32 __ROL4__(u32 value, int count)
    rotate left a four byte value...
    Definition: transform.hpp:68
    -
    std::function< T(T, T) > transform_t
    transform function, such as ADD, SUB, BSWAP... etc...
    Definition: transform.hpp:132
    -
    const auto _bswap
    Definition: transform.hpp:153
    -
    std::map< zydis_mnemonic_t, zydis_mnemonic_t > inverse
    Definition: transform.hpp:213
    -
    const auto _neg
    Definition: transform.hpp:170
    -
    u32 __ROR4__(u32 value, int count)
    rotate right a four byte value...
    Definition: transform.hpp:112
    -
    u64 __ROR8__(u64 value, int count)
    rotate right an eight byte value...
    Definition: transform.hpp:123
    -
    const auto _sub
    Definition: transform.hpp:168
    -
    T __ROL__(T value, int count)
    rotate left template function take from IDA SDK...
    Definition: transform.hpp:17
    -
    const auto _rol
    Definition: transform.hpp:189
    -
    bool has_imm(const zydis_decoded_instr_t *instr)
    determines if a given decoded instruction has a second operand that is an immediate value....
    Definition: transform.hpp:302
    -
    bool valid(zydis_mnemonic_t op)
    determines if the given mnemonic is a valid transformation...
    Definition: transform.hpp:225
    -
    type
    type of transformation...
    Definition: transform.hpp:138
    - - - - - - -
    const auto _ror
    Definition: transform.hpp:175
    -
    std::map< zydis_mnemonic_t, transform_t< T > > transforms
    Definition: transform.hpp:207
    -
    u64 __ROL8__(u64 value, int count)
    rotate left an eight byte value...
    Definition: transform.hpp:79
    -
    u16 __ROR2__(u16 value, int count)
    rotate right a two byte value...
    Definition: transform.hpp:101
    -
    const auto _not
    Definition: transform.hpp:172
    -
    std::map< transform::type, zydis_decoded_instr_t > map_t
    map of transform type to zydis decoded instruction of the transform...
    Definition: transform.hpp:150
    -
    u16 __ROL2__(u16 value, int count)
    rotate left a two byte value...
    Definition: transform.hpp:57
    - -
    unsigned long long u64
    Definition: vmutils.hpp:15
    -
    unsigned int u32
    Definition: vmutils.hpp:14
    -
    unsigned short u16
    Definition: vmutils.hpp:13
    -
    ZydisMnemonic zydis_mnemonic_t
    Definition: vmutils.hpp:20
    -
    ZydisDecodedInstruction zydis_decoded_instr_t
    Definition: vmutils.hpp:18
    -
    unsigned char u8
    Definition: vmutils.hpp:12
    -
    - - - - diff --git a/doxygen/html/vmctx_8cpp.html b/doxygen/html/vmctx_8cpp.html deleted file mode 100644 index 4bc4110..0000000 --- a/doxygen/html/vmctx_8cpp.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmctx.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmctx.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - -

    -Namespaces

     vm
     
    -
    - - - - diff --git a/doxygen/html/vmctx_8hpp.html b/doxygen/html/vmctx_8hpp.html deleted file mode 100644 index 9de5bf1..0000000 --- a/doxygen/html/vmctx_8hpp.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmctx.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmctx.hpp File Reference
    -
    -
    -
    #include <transform.hpp>
    -#include <vmhandlers.hpp>
    -#include <vmp2.hpp>
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Classes

    class  vm::ctx_t
     vm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information... creating a vm::ctx_t object can make it easier to pass around information pertaining to a given vm entry... More...
     
    - - - -

    -Namespaces

     vm
     
    -
    - - - - diff --git a/doxygen/html/vmctx_8hpp_source.html b/doxygen/html/vmctx_8hpp_source.html deleted file mode 100644 index ecb43fd..0000000 --- a/doxygen/html/vmctx_8hpp_source.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmctx.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmctx.hpp
    -
    -
    -Go to the documentation of this file.
    1 #pragma once
    -
    2 #include <transform.hpp>
    -
    3 #include <vmhandlers.hpp>
    -
    4 #include <vmp2.hpp>
    -
    5 
    -
    6 namespace vm
    -
    7 {
    -
    12  class ctx_t
    -
    13  {
    -
    14  public:
    -
    25  explicit ctx_t( std::uintptr_t module_base, std::uintptr_t image_base, std::uintptr_t image_size,
    -
    26  std::uintptr_t vm_entry_rva );
    -
    27 
    -
    32  bool init();
    -
    33 
    -
    34  const std::uintptr_t module_base, image_base, vm_entry_rva, image_size;
    -
    35 
    - - -
    41 
    -
    45  std::vector< vm::handler::handler_t > vm_handlers;
    -
    46  };
    -
    47 } // namespace vm
    -
    vm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information....
    Definition: vmctx.hpp:13
    -
    std::vector< vm::handler::handler_t > vm_handlers
    all the vm handlers for the given vm entry...
    Definition: vmctx.hpp:45
    -
    vmp2::exec_type_t exec_type
    the order in which VIP advances...
    Definition: vmctx.hpp:39
    -
    zydis_routine_t vm_entry
    Definition: vmctx.hpp:40
    -
    const std::uintptr_t module_base
    Definition: vmctx.hpp:34
    -
    const std::uintptr_t vm_entry_rva
    Definition: vmctx.hpp:34
    -
    const std::uintptr_t image_size
    Definition: vmctx.hpp:34
    -
    bool init()
    init all per-vm entry data such as vm_entry, calc_jmp, and vm handlers...
    Definition: vmctx.cpp:11
    -
    const std::uintptr_t image_base
    Definition: vmctx.hpp:34
    -
    ctx_t(std::uintptr_t module_base, std::uintptr_t image_base, std::uintptr_t image_size, std::uintptr_t vm_entry_rva)
    default constructor for vm::ctx_t... all information for a given vm entry must be provided....
    Definition: vmctx.cpp:5
    -
    zydis_routine_t calc_jmp
    Definition: vmctx.hpp:40
    -
    Definition: calc_jmp.hpp:6
    -
    exec_type_t
    Definition: vmp2.hpp:9
    - - - -
    std::vector< zydis_instr_t > zydis_routine_t
    Definition: vmutils.hpp:29
    -
    - - - - diff --git a/doxygen/html/vmhandler_8cpp.html b/doxygen/html/vmhandler_8cpp.html deleted file mode 100644 index 5ddfcc9..0000000 --- a/doxygen/html/vmhandler_8cpp.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmhandler.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmhandler.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::table
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    bool vm::handler::get (zydis_routine_t &vm_entry, zydis_routine_t &vm_handler, std::uintptr_t handler_addr)
     gets a vm handler, puts all of the native instructions inside of the vm_handler param... More...
     
    bool vm::handler::get_all (std::uintptr_t module_base, std::uintptr_t image_base, zydis_routine_t &vm_entry, std::uintptr_t *vm_handler_table, std::vector< vm::handler::handler_t > &vm_handlers)
     
    bool vm::handler::has_imm (const zydis_routine_t &vm_handler)
     given a vm handler returns true if the vm handler decrypts an operand... More...
     
    std::optional< std::uint8_t > vm::handler::imm_size (const zydis_routine_t &vm_handler)
     gets the imm size of a vm handler... More...
     
    bool vm::handler::get_operand_transforms (zydis_routine_t &vm_handler, transform::map_t &transforms)
     get operand decryption instructions given a vm handler... More...
     
    vm::handler::profile_tvm::handler::get_profile (handler_t &vm_handler)
     get a vm handler profile given a handler_t... More...
     
    vm::handler::profile_tvm::handler::get_profile (vm::handler::mnemonic_t mnemonic)
     get a vm handler profile given the mnemonic of the vm handler... More...
     
    std::uintptr_t * vm::handler::table::get (const zydis_routine_t &vm_entry)
     get the linear virtual address of the vm handler table give a deobfuscated, flattened, vm entry... More...
     
    bool vm::handler::table::get_transform (const zydis_routine_t &vm_entry, zydis_decoded_instr_t *transform_instr)
     get the single native instruction used to decrypt vm handler entries... More...
     
    std::uint64_t vm::handler::table::encrypt (zydis_decoded_instr_t &transform_instr, std::uint64_t val)
     encrypt a linear virtual address given the transformation that is used to decrypt the vm handler table entry... this function will apply the inverse of the transformation so you dont need to get the inverse yourself... More...
     
    std::uint64_t vm::handler::table::decrypt (zydis_decoded_instr_t &transform_instr, std::uint64_t val)
     decrypts a vm handler table entry... More...
     
    -
    - - - - diff --git a/doxygen/html/vmhandlers_8hpp.html b/doxygen/html/vmhandlers_8hpp.html deleted file mode 100644 index ad7fc97..0000000 --- a/doxygen/html/vmhandlers_8hpp.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmhandlers.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmhandlers.hpp File Reference
    -
    -
    -
    #include <transform.hpp>
    -#include <vmprofiles.hpp>
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Classes

    struct  vm::handler::handler_t
     handler_t contains all the information for a vm handler such as its immidate value size (zero if there is no imm), the transformations applied to the imm to decrypt it (if any), a pointer to the profile (nullptr if there is none), and other meta data... More...
     
    - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::table
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    bool vm::handler::has_imm (const zydis_routine_t &vm_handler)
     given a vm handler returns true if the vm handler decrypts an operand... More...
     
    std::optional< std::uint8_t > vm::handler::imm_size (const zydis_routine_t &vm_handler)
     gets the imm size of a vm handler... More...
     
    bool vm::handler::get (zydis_routine_t &vm_entry, zydis_routine_t &vm_handler, std::uintptr_t handler_addr)
     gets a vm handler, puts all of the native instructions inside of the vm_handler param... More...
     
    bool vm::handler::get_all (std::uintptr_t module_base, std::uintptr_t image_base, zydis_routine_t &vm_entry, std::uintptr_t *vm_handler_table, std::vector< handler_t > &vm_handlers)
     get all 256 vm handlers... More...
     
    bool vm::handler::get_operand_transforms (zydis_routine_t &vm_handler, transform::map_t &transforms)
     get operand decryption instructions given a vm handler... More...
     
    vm::handler::profile_tvm::handler::get_profile (handler_t &vm_handler)
     get a vm handler profile given a handler_t... More...
     
    vm::handler::profile_tvm::handler::get_profile (vm::handler::mnemonic_t mnemonic)
     get a vm handler profile given the mnemonic of the vm handler... More...
     
    std::uintptr_t * vm::handler::table::get (const zydis_routine_t &vm_entry)
     get the linear virtual address of the vm handler table give a deobfuscated, flattened, vm entry... More...
     
    bool vm::handler::table::get_transform (const zydis_routine_t &vm_entry, zydis_decoded_instr_t *transform_instr)
     get the single native instruction used to decrypt vm handler entries... More...
     
    std::uint64_t vm::handler::table::encrypt (zydis_decoded_instr_t &transform_instr, std::uint64_t val)
     encrypt a linear virtual address given the transformation that is used to decrypt the vm handler table entry... this function will apply the inverse of the transformation so you dont need to get the inverse yourself... More...
     
    std::uint64_t vm::handler::table::decrypt (zydis_decoded_instr_t &transform_instr, std::uint64_t val)
     decrypts a vm handler table entry... More...
     
    -
    - - - - diff --git a/doxygen/html/vmhandlers_8hpp_source.html b/doxygen/html/vmhandlers_8hpp_source.html deleted file mode 100644 index 7d303b5..0000000 --- a/doxygen/html/vmhandlers_8hpp_source.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmhandlers.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmhandlers.hpp
    -
    -
    -Go to the documentation of this file.
    1 #pragma once
    -
    2 #include <transform.hpp>
    -
    3 #include <vmprofiles.hpp>
    -
    4 
    -
    5 namespace vm::handler
    -
    6 {
    -
    12  struct handler_t
    -
    13  {
    - -
    18 
    - -
    23 
    - -
    28 
    - -
    33 
    -
    37  std::uintptr_t address;
    -
    38  };
    -
    39 
    -
    45  bool has_imm( const zydis_routine_t &vm_handler );
    -
    46 
    -
    52  std::optional< std::uint8_t > imm_size( const zydis_routine_t &vm_handler );
    -
    53 
    -
    62  bool get( zydis_routine_t &vm_entry, zydis_routine_t &vm_handler, std::uintptr_t handler_addr );
    -
    63 
    -
    74  bool get_all( std::uintptr_t module_base, std::uintptr_t image_base, zydis_routine_t &vm_entry,
    -
    75  std::uintptr_t *vm_handler_table, std::vector< handler_t > &vm_handlers );
    -
    76 
    - -
    85 
    - -
    92 
    - -
    99 
    -
    100  namespace table
    -
    101  {
    -
    107  std::uintptr_t *get( const zydis_routine_t &vm_entry );
    -
    108 
    -
    115  bool get_transform( const zydis_routine_t &vm_entry, zydis_decoded_instr_t *transform_instr );
    -
    116 
    -
    125  std::uint64_t encrypt( zydis_decoded_instr_t &transform_instr, std::uint64_t val );
    -
    126 
    -
    133  std::uint64_t decrypt( zydis_decoded_instr_t &transform_instr, std::uint64_t val );
    -
    134  } // namespace table
    -
    135 } // namespace vm::handler
    -
    bool get_transform(const zydis_routine_t &vm_entry, zydis_decoded_instr_t *transform_instr)
    get the single native instruction used to decrypt vm handler entries...
    Definition: vmhandler.cpp:237
    -
    std::uintptr_t * get(const zydis_routine_t &vm_entry)
    get the linear virtual address of the vm handler table give a deobfuscated, flattened,...
    Definition: vmhandler.cpp:216
    -
    std::uint64_t encrypt(zydis_decoded_instr_t &transform_instr, std::uint64_t val)
    encrypt a linear virtual address given the transformation that is used to decrypt the vm handler tabl...
    Definition: vmhandler.cpp:276
    -
    std::uint64_t decrypt(zydis_decoded_instr_t &transform_instr, std::uint64_t val)
    decrypts a vm handler table entry...
    Definition: vmhandler.cpp:289
    -
    contains all information pertaining to vm handler identification...
    Definition: vmhandlers.hpp:6
    -
    std::optional< std::uint8_t > imm_size(const zydis_routine_t &vm_handler)
    gets the imm size of a vm handler...
    Definition: vmhandler.cpp:108
    -
    mnemonic_t
    vm handler mnemonic... so you dont need to compare strings!
    Definition: vmprofiles.hpp:13
    -
    bool get(zydis_routine_t &vm_entry, zydis_routine_t &vm_handler, std::uintptr_t handler_addr)
    gets a vm handler, puts all of the native instructions inside of the vm_handler param....
    Definition: vmhandler.cpp:5
    -
    bool has_imm(const zydis_routine_t &vm_handler)
    given a vm handler returns true if the vm handler decrypts an operand...
    Definition: vmhandler.cpp:102
    -
    vm::handler::profile_t * get_profile(handler_t &vm_handler)
    get a vm handler profile given a handler_t...
    Definition: vmhandler.cpp:177
    -
    bool get_operand_transforms(zydis_routine_t &vm_handler, transform::map_t &transforms)
    get operand decryption instructions given a vm handler...
    Definition: vmhandler.cpp:117
    -
    bool get_all(std::uintptr_t module_base, std::uintptr_t image_base, zydis_routine_t &vm_entry, std::uintptr_t *vm_handler_table, std::vector< handler_t > &vm_handlers)
    get all 256 vm handlers...
    -
    std::map< zydis_mnemonic_t, transform_t< T > > transforms
    Definition: transform.hpp:207
    -
    std::map< transform::type, zydis_decoded_instr_t > map_t
    map of transform type to zydis decoded instruction of the transform...
    Definition: transform.hpp:150
    -
    handler_t contains all the information for a vm handler such as its immidate value size (zero if ther...
    Definition: vmhandlers.hpp:13
    -
    vm::transform::map_t transforms
    transformations to decrypt imm...
    Definition: vmhandlers.hpp:22
    -
    zydis_routine_t instrs
    native instructions of the vm handler... (calc_jmp/check_vsp is removed from this)....
    Definition: vmhandlers.hpp:32
    -
    u8 imm_size
    imm size in bits, zero if no imm...
    Definition: vmhandlers.hpp:17
    -
    vm::handler::profile_t * profile
    pointer to the profile, nullptr if none...
    Definition: vmhandlers.hpp:27
    -
    std::uintptr_t address
    linear virtual address to the vm handler...
    Definition: vmhandlers.hpp:37
    -
    pre defined vm handler profile containing all compiled time known information about a vm handler....
    Definition: vmprofiles.hpp:84
    - - -
    std::vector< zydis_instr_t > zydis_routine_t
    Definition: vmutils.hpp:29
    -
    ZydisDecodedInstruction zydis_decoded_instr_t
    Definition: vmutils.hpp:18
    -
    unsigned char u8
    Definition: vmutils.hpp:12
    -
    - - - - diff --git a/doxygen/html/vminstrs_8cpp.html b/doxygen/html/vminstrs_8cpp.html deleted file mode 100644 index 8db4762..0000000 --- a/doxygen/html/vminstrs_8cpp.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vminstrs.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vminstrs.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - -

    -Namespaces

     vm
     
     vm::instrs
     contains all functions related to virtual instructions...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    std::pair< std::uint64_t, std::uint64_t > vm::instrs::decrypt_operand (transform::map_t &transforms, std::uint64_t operand, std::uint64_t rolling_key)
     decrypt virtual instruction operand given the decryption transformations... you can read about these transformations https://back.engineering/17/05/2021/#operand-decryption More...
     
    std::pair< std::uint64_t, std::uint64_t > vm::instrs::encrypt_operand (transform::map_t &transforms, std::uint64_t operand, std::uint64_t rolling_key)
     encrypt a virtual instructions operand given the transformations to decrypt the operand... the transformations are inversed by this functions so you dont need to worry about doing that. More...
     
    bool vm::instrs::get_rva_decrypt (const zydis_routine_t &vm_entry, std::vector< zydis_decoded_instr_t > &transform_instrs)
     gets the native instructions that are used to decrypt the relative virtual address to virtual instructions located on the stack at RSP+0xA0... you can learn about this https://back.engineering/17/05/2021/#vm_entry More...
     
    std::optional< std::uint64_t > vm::instrs::get_imm (vm::ctx_t &ctx, std::uint8_t imm_size, std::uintptr_t vip)
     gets the encrypted second operand (imm) given vip and vm::ctx_t... More...
     
    std::optional< virt_instr_t > vm::instrs::get (vm::ctx_t &ctx, vmp2::v2::entry_t &entry)
     get virt_instr_t filled in with data given a vmp2 trace entry and vm context... More...
     
    std::optional< jcc_data > vm::instrs::get_jcc_data (vm::ctx_t &ctx, code_block_t &code_block)
     get jcc data out of a code block... this function will loop over the code block and look for the last LCONSTDW in the virtual instructions. More...
     
    std::uintptr_t vm::instrs::code_block_addr (const vm::ctx_t &ctx, const vmp2::v2::entry_t &entry)
     the top of the stack will contain the lower 32bits of the RVA to the virtual instructions that will be jumping too... the RVA is image based (not module based, but optional header image based)... this means the value ontop of the stack could be "40007fd8" with image base being 0x140000000... as you can see the 0x100000000 is missing... the below statement deals with this... More...
     
    std::uintptr_t vm::instrs::code_block_addr (const vm::ctx_t &ctx, const std::uint32_t lower_32bits)
     same routine as above except lower_32bits is passed directly and not extracted from the stack... More...
     
    -
    - - - - diff --git a/doxygen/html/vminstrs_8hpp.html b/doxygen/html/vminstrs_8hpp.html deleted file mode 100644 index 0733084..0000000 --- a/doxygen/html/vminstrs_8hpp.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vminstrs.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vminstrs.hpp File Reference
    -
    -
    -
    #include <transform.hpp>
    -#include <vmctx.hpp>
    -#include <vmhandlers.hpp>
    -#include <vmp2.hpp>
    -
    -

    Go to the source code of this file.

    - - - - - - - -

    -Namespaces

     vm
     
     vm::instrs
     contains all functions related to virtual instructions...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    bool vm::instrs::get_rva_decrypt (const zydis_routine_t &vm_entry, std::vector< zydis_decoded_instr_t > &transform_instrs)
     gets the native instructions that are used to decrypt the relative virtual address to virtual instructions located on the stack at RSP+0xA0... you can learn about this https://back.engineering/17/05/2021/#vm_entry More...
     
    std::pair< std::uint64_t, std::uint64_t > vm::instrs::decrypt_operand (transform::map_t &transforms, std::uint64_t operand, std::uint64_t rolling_key)
     decrypt virtual instruction operand given the decryption transformations... you can read about these transformations https://back.engineering/17/05/2021/#operand-decryption More...
     
    std::pair< std::uint64_t, std::uint64_t > vm::instrs::encrypt_operand (transform::map_t &transforms, std::uint64_t operand, std::uint64_t rolling_key)
     encrypt a virtual instructions operand given the transformations to decrypt the operand... the transformations are inversed by this functions so you dont need to worry about doing that. More...
     
    std::optional< virt_instr_t > vm::instrs::get (vm::ctx_t &ctx, vmp2::v2::entry_t &entry)
     get virt_instr_t filled in with data given a vmp2 trace entry and vm context... More...
     
    std::optional< std::uint64_t > vm::instrs::get_imm (vm::ctx_t &ctx, std::uint8_t imm_size, std::uintptr_t vip)
     gets the encrypted second operand (imm) given vip and vm::ctx_t... More...
     
    std::optional< jcc_data > vm::instrs::get_jcc_data (vm::ctx_t &ctx, code_block_t &code_block)
     get jcc data out of a code block... this function will loop over the code block and look for the last LCONSTDW in the virtual instructions. More...
     
    std::uintptr_t vm::instrs::code_block_addr (const vm::ctx_t &ctx, const vmp2::v2::entry_t &entry)
     the top of the stack will contain the lower 32bits of the RVA to the virtual instructions that will be jumping too... the RVA is image based (not module based, but optional header image based)... this means the value ontop of the stack could be "40007fd8" with image base being 0x140000000... as you can see the 0x100000000 is missing... the below statement deals with this... More...
     
    std::uintptr_t vm::instrs::code_block_addr (const vm::ctx_t &ctx, const std::uint32_t lower_32bits)
     same routine as above except lower_32bits is passed directly and not extracted from the stack... More...
     
    -
    - - - - diff --git a/doxygen/html/vminstrs_8hpp_source.html b/doxygen/html/vminstrs_8hpp_source.html deleted file mode 100644 index 35ea5f9..0000000 --- a/doxygen/html/vminstrs_8hpp_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vminstrs.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vminstrs.hpp
    -
    -
    -Go to the documentation of this file.
    1 #pragma once
    -
    2 #include <transform.hpp>
    -
    3 #include <vmctx.hpp>
    -
    4 #include <vmhandlers.hpp>
    -
    5 #include <vmp2.hpp>
    -
    6 
    -
    10 namespace vm::instrs
    -
    11 {
    -
    19  bool get_rva_decrypt( const zydis_routine_t &vm_entry, std::vector< zydis_decoded_instr_t > &transform_instrs );
    -
    20 
    -
    30  std::pair< std::uint64_t, std::uint64_t > decrypt_operand( transform::map_t &transforms, std::uint64_t operand,
    -
    31  std::uint64_t rolling_key );
    -
    32 
    -
    42  std::pair< std::uint64_t, std::uint64_t > encrypt_operand( transform::map_t &transforms, std::uint64_t operand,
    -
    43  std::uint64_t rolling_key );
    -
    44 
    -
    51  std::optional< virt_instr_t > get( vm::ctx_t &ctx, vmp2::v2::entry_t &entry );
    -
    52 
    -
    60  std::optional< std::uint64_t > get_imm( vm::ctx_t &ctx, std::uint8_t imm_size, std::uintptr_t vip );
    -
    61 
    -
    73  std::optional< jcc_data > get_jcc_data( vm::ctx_t &ctx, code_block_t &code_block );
    -
    74 
    -
    84  std::uintptr_t code_block_addr( const vm::ctx_t &ctx, const vmp2::v2::entry_t &entry );
    -
    85 
    -
    92  std::uintptr_t code_block_addr( const vm::ctx_t &ctx, const std::uint32_t lower_32bits );
    -
    93 } // namespace vm::instrs
    -
    vm::ctx_t class is used to auto generate vm_entry, calc_jmp, and other per-vm entry information....
    Definition: vmctx.hpp:13
    -
    std::optional< std::uint8_t > imm_size(const zydis_routine_t &vm_handler)
    gets the imm size of a vm handler...
    Definition: vmhandler.cpp:108
    -
    contains all functions related to virtual instructions...
    Definition: vminstrs.hpp:11
    -
    std::optional< jcc_data > get_jcc_data(vm::ctx_t &ctx, code_block_t &code_block)
    get jcc data out of a code block... this function will loop over the code block and look for the last...
    Definition: vminstrs.cpp:200
    -
    std::pair< std::uint64_t, std::uint64_t > encrypt_operand(transform::map_t &transforms, std::uint64_t operand, std::uint64_t rolling_key)
    encrypt a virtual instructions operand given the transformations to decrypt the operand....
    Definition: vminstrs.cpp:64
    -
    std::optional< std::uint64_t > get_imm(vm::ctx_t &ctx, std::uint8_t imm_size, std::uintptr_t vip)
    gets the encrypted second operand (imm) given vip and vm::ctx_t...
    Definition: vminstrs.cpp:160
    -
    std::uintptr_t code_block_addr(const vm::ctx_t &ctx, const vmp2::v2::entry_t &entry)
    the top of the stack will contain the lower 32bits of the RVA to the virtual instructions that will b...
    Definition: vminstrs.cpp:263
    -
    std::pair< std::uint64_t, std::uint64_t > decrypt_operand(transform::map_t &transforms, std::uint64_t operand, std::uint64_t rolling_key)
    decrypt virtual instruction operand given the decryption transformations... you can read about these ...
    Definition: vminstrs.cpp:5
    -
    std::optional< virt_instr_t > get(vm::ctx_t &ctx, vmp2::v2::entry_t &entry)
    get virt_instr_t filled in with data given a vmp2 trace entry and vm context...
    Definition: vminstrs.cpp:173
    -
    bool get_rva_decrypt(const zydis_routine_t &vm_entry, std::vector< zydis_decoded_instr_t > &transform_instrs)
    gets the native instructions that are used to decrypt the relative virtual address to virtual instruc...
    Definition: vminstrs.cpp:126
    -
    std::map< zydis_mnemonic_t, transform_t< T > > transforms
    Definition: transform.hpp:207
    -
    std::map< transform::type, zydis_decoded_instr_t > map_t
    map of transform type to zydis decoded instruction of the transform...
    Definition: transform.hpp:150
    -
    Definition: vmp2.hpp:187
    -
    Definition: vmp2.hpp:101
    - - - - -
    std::vector< zydis_instr_t > zydis_routine_t
    Definition: vmutils.hpp:29
    -
    - - - - diff --git a/doxygen/html/vmlifters_2add_8cpp.html b/doxygen/html/vmlifters_2add_8cpp.html deleted file mode 100644 index 1dc6bb9..0000000 --- a/doxygen/html/vmlifters_2add_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/add.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    add.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2jmp_8cpp.html b/doxygen/html/vmlifters_2jmp_8cpp.html deleted file mode 100644 index 6a08015..0000000 --- a/doxygen/html/vmlifters_2jmp_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/jmp.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    jmp.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2lconst_8cpp.html b/doxygen/html/vmlifters_2lconst_8cpp.html deleted file mode 100644 index 5c7ba25..0000000 --- a/doxygen/html/vmlifters_2lconst_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/lconst.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    lconst.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2lflags_8cpp.html b/doxygen/html/vmlifters_2lflags_8cpp.html deleted file mode 100644 index 08c9722..0000000 --- a/doxygen/html/vmlifters_2lflags_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/lflags.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    lflags.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2lreg_8cpp.html b/doxygen/html/vmlifters_2lreg_8cpp.html deleted file mode 100644 index b119d9d..0000000 --- a/doxygen/html/vmlifters_2lreg_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/lreg.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    lreg.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2lvsp_8cpp.html b/doxygen/html/vmlifters_2lvsp_8cpp.html deleted file mode 100644 index 24a924d..0000000 --- a/doxygen/html/vmlifters_2lvsp_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/lvsp.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    lvsp.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2nand_8cpp.html b/doxygen/html/vmlifters_2nand_8cpp.html deleted file mode 100644 index 59fc715..0000000 --- a/doxygen/html/vmlifters_2nand_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/nand.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nand.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2pushvsp_8cpp.html b/doxygen/html/vmlifters_2pushvsp_8cpp.html deleted file mode 100644 index bc5cd5c..0000000 --- a/doxygen/html/vmlifters_2pushvsp_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/pushvsp.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    pushvsp.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2read_8cpp.html b/doxygen/html/vmlifters_2read_8cpp.html deleted file mode 100644 index e288b34..0000000 --- a/doxygen/html/vmlifters_2read_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/read.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    read.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2shr_8cpp.html b/doxygen/html/vmlifters_2shr_8cpp.html deleted file mode 100644 index d80761c..0000000 --- a/doxygen/html/vmlifters_2shr_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/shr.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    shr.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2sreg_8cpp.html b/doxygen/html/vmlifters_2sreg_8cpp.html deleted file mode 100644 index bff5bfa..0000000 --- a/doxygen/html/vmlifters_2sreg_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/sreg.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    sreg.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_2vmexit_8cpp.html b/doxygen/html/vmlifters_2vmexit_8cpp.html deleted file mode 100644 index e777cd2..0000000 --- a/doxygen/html/vmlifters_2vmexit_8cpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmlifters/vmexit.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmexit.cpp File Reference
    -
    -
    -
    #include <vmlifters.hpp>
    -
    - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_8hpp.html b/doxygen/html/vmlifters_8hpp.html deleted file mode 100644 index a8e0d8d..0000000 --- a/doxygen/html/vmlifters_8hpp.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmlifters.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmlifters.hpp File Reference
    -
    -
    -
    #include <vmp2.hpp>
    -#include <vmprofiles.hpp>
    -#include <vtil/vtil>
    -
    -

    Go to the source code of this file.

    - - - - - - -

    -Namespaces

     vm
     
     vm::lifters
     
    - - - - - -

    -Typedefs

    using vm::lifters::lifter_callback_t = std::function< void(vtil::basic_block *, vm::instrs::virt_instr_t *, vmp2::v3::code_block_t *) >
     
    using vm::lifters::lifter_t = std::pair< vm::handler::mnemonic_t, lifter_callback_t >
     
    - - - -

    -Functions

    constexpr vtil::register_desc vm::lifters::make_virtual_register (uint8_t context_offset, uint8_t size)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    vm::lifters::lifter_t vm::lifters::lregq
     
    vm::lifters::lifter_t vm::lifters::lregdw
     
    vm::lifters::lifter_t vm::lifters::addq
     
    vm::lifters::lifter_t vm::lifters::adddw
     
    vm::lifters::lifter_t vm::lifters::addw
     
    vm::lifters::lifter_t vm::lifters::sregq
     
    vm::lifters::lifter_t vm::lifters::sregdw
     
    vm::lifters::lifter_t vm::lifters::sregw
     
    vm::lifters::lifter_t vm::lifters::lconstq
     
    vm::lifters::lifter_t vm::lifters::lconstdw
     
    vm::lifters::lifter_t vm::lifters::lconstw
     
    vm::lifters::lifter_t vm::lifters::lconstbzxw
     
    vm::lifters::lifter_t vm::lifters::lconstbsxdw
     
    vm::lifters::lifter_t vm::lifters::lconstbsxq
     
    vm::lifters::lifter_t vm::lifters::lconstdwsxq
     
    vm::lifters::lifter_t vm::lifters::lconstwsxq
     
    vm::lifters::lifter_t vm::lifters::lconstwsxdw
     
    vm::lifters::lifter_t vm::lifters::nandq
     
    vm::lifters::lifter_t vm::lifters::nanddw
     
    vm::lifters::lifter_t vm::lifters::nandw
     
    vm::lifters::lifter_t vm::lifters::readq
     
    vm::lifters::lifter_t vm::lifters::readdw
     
    vm::lifters::lifter_t vm::lifters::readw
     
    vm::lifters::lifter_t vm::lifters::shrq
     
    vm::lifters::lifter_t vm::lifters::shrw
     
    vm::lifters::lifter_t vm::lifters::jmp
     
    vm::lifters::lifter_t vm::lifters::vmexit
     
    vm::lifters::lifter_t vm::lifters::pushvsp
     
    vm::lifters::lifter_t vm::lifters::lrflags
     
    vm::lifters::lifter_t vm::lifters::lvsp
     
    std::vector< vm::lifters::lifter_t * > vm::lifters::all
     
    -
    - - - - diff --git a/doxygen/html/vmlifters_8hpp_source.html b/doxygen/html/vmlifters_8hpp_source.html deleted file mode 100644 index 99903d2..0000000 --- a/doxygen/html/vmlifters_8hpp_source.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmlifters.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmlifters.hpp
    -
    -
    -Go to the documentation of this file.
    1 #include <vmp2.hpp>
    -
    2 #include <vmprofiles.hpp>
    -
    3 #include <vtil/vtil>
    -
    4 
    -
    5 namespace vm::lifters
    -
    6 {
    -
    7  using lifter_callback_t = std::function< void( vtil::basic_block *, vm::instrs::virt_instr_t *, vmp2::v3::code_block_t* ) >;
    -
    8  using lifter_t = std::pair< vm::handler::mnemonic_t, lifter_callback_t >;
    -
    9 
    -
    10  // taken from
    -
    11  // https://github.com/can1357/NoVmp/blob/6c23c9a335f70e8d5ed6299668fd802f2314c896/NoVmp/vmprotect/il2vtil.cpp#L66
    -
    12  inline constexpr vtil::register_desc make_virtual_register( uint8_t context_offset, uint8_t size )
    -
    13  {
    -
    14  fassert( ( ( context_offset & 7 ) + size ) <= 8 && size );
    -
    15 
    -
    16  return { vtil::register_virtual, ( size_t )context_offset / 8, size * 8, ( context_offset % 8 ) * 8 };
    -
    17  }
    -
    18 
    - - - - - - - - -
    27 
    - - - - - -
    33 
    -
    34  inline std::vector< vm::lifters::lifter_t * > all = {
    -
    35  // lreg lifters...
    -
    36  &lregq, &lregdw,
    -
    37 
    -
    38  // add lifters...
    -
    39  &addq, &adddw, &addw,
    -
    40 
    -
    41  // sreg lifters...
    -
    42  &sregq, &sregdw, &sregw,
    -
    43 
    -
    44  // lconst lifters...
    - -
    46 
    -
    47  // nand lifters...
    -
    48  &nandq, &nanddw, &nandw,
    -
    49 
    -
    50  // read lifters....
    -
    51  &readq, &readdw, &readw,
    -
    52 
    -
    53  // shr lifters...
    -
    54  &shrq, &shrw,
    -
    55 
    -
    56  // pushvsp lifter...
    -
    57  &pushvsp,
    -
    58 
    -
    59  // jmp lifter...
    -
    60  &jmp,
    -
    61 
    -
    62  // lflags lifter...
    -
    63  &lrflags,
    -
    64 
    -
    65  // lvsp lifter...
    -
    66  &lvsp,
    -
    67 
    -
    68  // vmexit lifter...
    -
    69  &vmexit };
    -
    70 } // namespace vm::lifters
    -
    Definition: vmlifters.hpp:6
    -
    vm::lifters::lifter_t lconstwsxdw
    Definition: vmlifters.hpp:23
    -
    vm::lifters::lifter_t addq
    Definition: add.cpp:5
    -
    vm::lifters::lifter_t shrw
    Definition: vmlifters.hpp:26
    -
    vm::lifters::lifter_t addw
    Definition: vmlifters.hpp:20
    -
    vm::lifters::lifter_t lconstwsxq
    Definition: vmlifters.hpp:23
    -
    vm::lifters::lifter_t readdw
    Definition: vmlifters.hpp:25
    -
    vm::lifters::lifter_t sregdw
    Definition: vmlifters.hpp:21
    -
    vm::lifters::lifter_t lrflags
    Definition: lflags.cpp:5
    -
    vm::lifters::lifter_t lregdw
    Definition: vmlifters.hpp:19
    -
    vm::lifters::lifter_t readq
    Definition: read.cpp:5
    -
    vm::lifters::lifter_t lconstdw
    Definition: vmlifters.hpp:22
    -
    vm::lifters::lifter_t readw
    Definition: vmlifters.hpp:25
    -
    vm::lifters::lifter_t jmp
    Definition: jmp.cpp:5
    -
    vm::lifters::lifter_t lconstq
    Definition: lconst.cpp:5
    -
    vm::lifters::lifter_t lconstbsxdw
    Definition: vmlifters.hpp:22
    -
    vm::lifters::lifter_t adddw
    Definition: vmlifters.hpp:20
    -
    std::vector< vm::lifters::lifter_t * > all
    Definition: vmlifters.hpp:34
    -
    vm::lifters::lifter_t vmexit
    Definition: vmexit.cpp:5
    -
    vm::lifters::lifter_t lregq
    Definition: lreg.cpp:5
    -
    vm::lifters::lifter_t nandq
    Definition: nand.cpp:5
    -
    vm::lifters::lifter_t lconstbsxq
    Definition: vmlifters.hpp:22
    -
    vm::lifters::lifter_t nanddw
    Definition: vmlifters.hpp:24
    -
    vm::lifters::lifter_t sregw
    Definition: vmlifters.hpp:21
    -
    vm::lifters::lifter_t nandw
    Definition: vmlifters.hpp:24
    -
    constexpr vtil::register_desc make_virtual_register(uint8_t context_offset, uint8_t size)
    Definition: vmlifters.hpp:12
    -
    vm::lifters::lifter_t lvsp
    Definition: lvsp.cpp:5
    -
    std::function< void(vtil::basic_block *, vm::instrs::virt_instr_t *, vmp2::v3::code_block_t *) > lifter_callback_t
    Definition: vmlifters.hpp:7
    -
    vm::lifters::lifter_t sregq
    Definition: sreg.cpp:5
    -
    vm::lifters::lifter_t lconstw
    Definition: vmlifters.hpp:22
    -
    std::pair< vm::handler::mnemonic_t, lifter_callback_t > lifter_t
    Definition: vmlifters.hpp:8
    -
    vm::lifters::lifter_t lconstbzxw
    Definition: vmlifters.hpp:22
    -
    vm::lifters::lifter_t pushvsp
    Definition: pushvsp.cpp:5
    -
    vm::lifters::lifter_t shrq
    Definition: shr.cpp:5
    -
    vm::lifters::lifter_t lconstdwsxq
    Definition: vmlifters.hpp:22
    -
    Definition: vmp2.hpp:150
    -
    Definition: vmp2.hpp:217
    - - -
    - - - - diff --git a/doxygen/html/vmp2_8hpp.html b/doxygen/html/vmp2_8hpp.html deleted file mode 100644 index 46acd1a..0000000 --- a/doxygen/html/vmp2_8hpp.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmp2.hpp File Reference
    -
    -
    -
    #include <transform.hpp>
    -#include <vmhandlers.hpp>
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - -

    -Classes

    struct  vmp2::v1::file_header
     
    struct  vmp2::v1::entry_t
     
    struct  vmp2::v2::file_header
     
    struct  vmp2::v2::entry_t
     
    struct  vm::instrs::virt_instr_t
     
    struct  vm::instrs::jcc_data
     
    struct  vm::instrs::code_block_t
     
    struct  vmp2::v3::file_header
     
    struct  vmp2::v3::code_block_t
     
    - - - - - - - - - - - - - - -

    -Namespaces

     vmp2
     
     vmp2::v1
     
     vmp2::v2
     
     vm
     
     vm::instrs
     contains all functions related to virtual instructions...
     
     vmp2::v3
     
    - - - -

    -Macros

    #define VMP_MAGIC   '2PMV'
     
    - - - - - - - -

    -Enumerations

    enum class  vmp2::exec_type_t { vmp2::forward -, vmp2::backward - }
     
    enum class  vmp2::version_t { vmp2::invalid -, vmp2::v1 = 0x101 -, vmp2::v2 = 0x102 -, vmp2::v3 = 0x103 - }
     
    enum class  vm::instrs::jcc_type { vm::instrs::none -, vm::instrs::branching -, vm::instrs::absolute - }
     
    -

    Macro Definition Documentation

    - -

    ◆ VMP_MAGIC

    - -
    -
    - - - - -
    #define VMP_MAGIC   '2PMV'
    -
    - -
    -
    -
    - - - - diff --git a/doxygen/html/vmp2_8hpp_source.html b/doxygen/html/vmp2_8hpp_source.html deleted file mode 100644 index 8414b4d..0000000 --- a/doxygen/html/vmp2_8hpp_source.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmp2.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmp2.hpp
    -
    -
    -Go to the documentation of this file.
    1 #pragma once
    -
    2 #include <transform.hpp>
    -
    3 #include <vmhandlers.hpp>
    -
    4 #define VMP_MAGIC '2PMV'
    -
    5 
    -
    6 namespace vmp2
    -
    7 {
    -
    8  enum class exec_type_t
    -
    9  {
    -
    10  forward,
    -
    11  backward
    -
    12  };
    -
    13 
    -
    14  enum class version_t
    -
    15  {
    -
    16  invalid,
    -
    17  v1 = 0x101,
    -
    18  v2 = 0x102,
    -
    19  v3 = 0x103
    -
    20  };
    -
    21 
    -
    22  namespace v1
    -
    23  {
    -
    24  struct file_header
    -
    25  {
    -
    26  u32 magic; // VMP2
    - - - - -
    31 
    - - -
    34  };
    -
    35 
    -
    36  struct entry_t
    -
    37  {
    - - - -
    41 
    -
    42  union
    -
    43  {
    -
    44  struct
    -
    45  {
    - - - - - - - - - - - - - - - - -
    62  };
    -
    63  u64 raw[ 16 ];
    -
    64  } regs;
    -
    65 
    -
    66  union
    -
    67  {
    -
    68  u64 qword[ 0x28 ];
    -
    69  u8 raw[ 0x140 ];
    -
    70  } vregs;
    -
    71 
    -
    72  union
    -
    73  {
    -
    74  u64 qword[ 0x20 ];
    -
    75  u8 raw[ 0x100 ];
    -
    76  } vsp;
    -
    77  };
    -
    78  } // namespace v1
    -
    79 
    -
    80  namespace v2
    -
    81  {
    -
    82  struct file_header
    -
    83  {
    -
    84  u32 magic; // VMP2
    - - -
    87 
    - - - - -
    92 
    - - -
    95 
    - - -
    98  };
    -
    99 
    -
    100  struct entry_t
    -
    101  {
    - - - -
    105 
    -
    106  union
    -
    107  {
    -
    108  struct
    -
    109  {
    - - - - - - - - - - - - - - - - -
    126  };
    -
    127  u64 raw[ 16 ];
    -
    128  } regs;
    -
    129 
    -
    130  union
    -
    131  {
    -
    132  u64 qword[ 0x28 ];
    -
    133  u8 raw[ 0x140 ];
    -
    134  } vregs;
    -
    135 
    -
    136  union
    -
    137  {
    -
    138  u64 qword[ 0x20 ];
    -
    139  u8 raw[ 0x100 ];
    -
    140  } vsp;
    -
    141  };
    -
    142  } // namespace v2
    -
    143 } // namespace vmp2
    -
    144 
    -
    145 namespace vm
    -
    146 {
    -
    147  namespace instrs
    -
    148  {
    - -
    150  {
    - -
    152  std::uint8_t opcode; // aka vm handler idx...
    -
    153 
    -
    154  // can be used to look at values on the stack...
    - -
    156 
    -
    157  struct
    -
    158  {
    -
    159  bool has_imm;
    -
    160  struct
    -
    161  {
    -
    162  std::uint8_t imm_size; // size in bits...
    -
    163  union
    -
    164  {
    -
    165  std::int64_t s;
    -
    166  std::uint64_t u;
    -
    167  };
    -
    168  } imm;
    - -
    170  };
    -
    171 
    -
    172  enum class jcc_type
    -
    173  {
    -
    174  none,
    -
    175  branching,
    -
    176  absolute
    -
    177  };
    -
    178 
    -
    179  struct jcc_data
    -
    180  {
    -
    181  bool has_jcc;
    - -
    183  std::uintptr_t block_addr[ 2 ];
    -
    184  };
    -
    185 
    - -
    187  {
    -
    188  std::uintptr_t vip_begin;
    - -
    190  std::vector< virt_instr_t > vinstrs;
    -
    191  };
    -
    192  } // namespace instrs
    -
    193 } // namespace vm
    -
    194 
    -
    195 namespace vmp2
    -
    196 {
    -
    197  namespace v3
    -
    198  {
    -
    199  struct file_header
    -
    200  {
    -
    201  u32 magic; // VMP2
    - - -
    204 
    - - - -
    208 
    - - -
    211 
    - - -
    214  };
    -
    215 
    - -
    217  {
    -
    218  std::uintptr_t vip_begin;
    -
    219  std::uintptr_t next_block_offset;
    - -
    221 
    -
    222  // serialized from std::vector<virt_instr_t>...
    -
    223  std::uint32_t vinstr_count;
    - -
    225  };
    -
    226  } // namespace v3
    -
    227 } // namespace vmp2
    -
    mnemonic_t
    vm handler mnemonic... so you dont need to compare strings!
    Definition: vmprofiles.hpp:13
    -
    jcc_type
    Definition: vmp2.hpp:173
    - - - -
    Definition: calc_jmp.hpp:6
    -
    Definition: vmp2.hpp:7
    -
    version_t
    Definition: vmp2.hpp:15
    - - - - -
    exec_type_t
    Definition: vmp2.hpp:9
    - - -
    Definition: vmp2.hpp:187
    -
    std::vector< virt_instr_t > vinstrs
    Definition: vmp2.hpp:190
    -
    jcc_data jcc
    Definition: vmp2.hpp:189
    -
    std::uintptr_t vip_begin
    Definition: vmp2.hpp:188
    -
    Definition: vmp2.hpp:180
    -
    jcc_type type
    Definition: vmp2.hpp:182
    -
    std::uintptr_t block_addr[2]
    Definition: vmp2.hpp:183
    -
    bool has_jcc
    Definition: vmp2.hpp:181
    -
    Definition: vmp2.hpp:150
    -
    std::uint64_t u
    Definition: vmp2.hpp:166
    -
    std::uint8_t imm_size
    Definition: vmp2.hpp:162
    -
    struct vm::instrs::virt_instr_t::@10::@11 imm
    -
    std::int64_t s
    Definition: vmp2.hpp:165
    -
    vmp2::v2::entry_t trace_data
    Definition: vmp2.hpp:155
    -
    struct vm::instrs::virt_instr_t::@10 operand
    -
    vm::handler::mnemonic_t mnemonic_t
    Definition: vmp2.hpp:151
    -
    bool has_imm
    Definition: vmp2.hpp:159
    -
    std::uint8_t opcode
    Definition: vmp2.hpp:152
    -
    Definition: vmp2.hpp:37
    -
    u64 rdi
    Definition: vmp2.hpp:55
    -
    u64 r11
    Definition: vmp2.hpp:50
    -
    u64 qword[0x28]
    Definition: vmp2.hpp:68
    -
    u64 raw[16]
    Definition: vmp2.hpp:63
    -
    u64 r8
    Definition: vmp2.hpp:53
    -
    union vmp2::v1::entry_t::@2 vsp
    -
    u64 rdx
    Definition: vmp2.hpp:57
    -
    u8 handler_idx
    Definition: vmp2.hpp:38
    -
    u64 r14
    Definition: vmp2.hpp:47
    -
    u64 r9
    Definition: vmp2.hpp:52
    -
    u64 rbp
    Definition: vmp2.hpp:54
    -
    u64 r10
    Definition: vmp2.hpp:51
    -
    u64 rsi
    Definition: vmp2.hpp:56
    -
    u64 r15
    Definition: vmp2.hpp:46
    -
    u64 rflags
    Definition: vmp2.hpp:61
    -
    u64 r12
    Definition: vmp2.hpp:49
    -
    union vmp2::v1::entry_t::@0 regs
    -
    u64 r13
    Definition: vmp2.hpp:48
    -
    u64 rbx
    Definition: vmp2.hpp:59
    -
    u64 rcx
    Definition: vmp2.hpp:58
    -
    union vmp2::v1::entry_t::@1 vregs
    -
    u64 rax
    Definition: vmp2.hpp:60
    -
    u64 vip
    Definition: vmp2.hpp:40
    -
    u64 decrypt_key
    Definition: vmp2.hpp:39
    -
    Definition: vmp2.hpp:25
    -
    u32 magic
    Definition: vmp2.hpp:26
    -
    u64 module_base
    Definition: vmp2.hpp:28
    -
    exec_type_t advancement
    Definition: vmp2.hpp:29
    -
    version_t version
    Definition: vmp2.hpp:30
    -
    u32 entry_offset
    Definition: vmp2.hpp:33
    -
    u32 entry_count
    Definition: vmp2.hpp:32
    -
    u64 epoch_time
    Definition: vmp2.hpp:27
    -
    Definition: vmp2.hpp:101
    -
    u8 handler_idx
    Definition: vmp2.hpp:102
    -
    u64 r9
    Definition: vmp2.hpp:116
    -
    u64 rsi
    Definition: vmp2.hpp:120
    -
    u64 raw[16]
    Definition: vmp2.hpp:127
    -
    union vmp2::v2::entry_t::@7 vsp
    -
    u64 r10
    Definition: vmp2.hpp:115
    -
    u64 rax
    Definition: vmp2.hpp:124
    -
    u64 r14
    Definition: vmp2.hpp:111
    -
    union vmp2::v2::entry_t::@5 regs
    -
    u64 rdx
    Definition: vmp2.hpp:121
    -
    u64 rflags
    Definition: vmp2.hpp:125
    -
    u64 r8
    Definition: vmp2.hpp:117
    -
    u64 r11
    Definition: vmp2.hpp:114
    -
    u64 rdi
    Definition: vmp2.hpp:119
    -
    u64 decrypt_key
    Definition: vmp2.hpp:103
    -
    u64 r12
    Definition: vmp2.hpp:113
    -
    u64 r13
    Definition: vmp2.hpp:112
    -
    u64 r15
    Definition: vmp2.hpp:110
    -
    u64 rbp
    Definition: vmp2.hpp:118
    -
    u64 rbx
    Definition: vmp2.hpp:123
    -
    u64 qword[0x28]
    Definition: vmp2.hpp:132
    -
    u64 rcx
    Definition: vmp2.hpp:122
    -
    u64 vip
    Definition: vmp2.hpp:104
    -
    union vmp2::v2::entry_t::@6 vregs
    -
    Definition: vmp2.hpp:83
    -
    version_t version
    Definition: vmp2.hpp:86
    -
    u32 module_offset
    Definition: vmp2.hpp:93
    -
    u32 entry_count
    Definition: vmp2.hpp:96
    -
    u64 epoch_time
    Definition: vmp2.hpp:85
    -
    u32 entry_offset
    Definition: vmp2.hpp:97
    -
    u64 module_base
    Definition: vmp2.hpp:88
    -
    u64 image_base
    Definition: vmp2.hpp:89
    -
    exec_type_t advancement
    Definition: vmp2.hpp:91
    -
    u32 module_size
    Definition: vmp2.hpp:94
    -
    u32 magic
    Definition: vmp2.hpp:84
    -
    u64 vm_entry_rva
    Definition: vmp2.hpp:90
    -
    Definition: vmp2.hpp:217
    -
    vm::instrs::jcc_data jcc
    Definition: vmp2.hpp:220
    -
    vm::instrs::virt_instr_t vinstr[]
    Definition: vmp2.hpp:224
    -
    std::uintptr_t next_block_offset
    Definition: vmp2.hpp:219
    -
    std::uintptr_t vip_begin
    Definition: vmp2.hpp:218
    -
    std::uint32_t vinstr_count
    Definition: vmp2.hpp:223
    -
    Definition: vmp2.hpp:200
    -
    u32 code_block_count
    Definition: vmp2.hpp:213
    -
    u32 magic
    Definition: vmp2.hpp:201
    -
    u32 code_block_offset
    Definition: vmp2.hpp:212
    -
    u32 module_offset
    Definition: vmp2.hpp:209
    -
    u64 module_base
    Definition: vmp2.hpp:205
    -
    u32 module_size
    Definition: vmp2.hpp:210
    -
    u64 image_base
    Definition: vmp2.hpp:206
    -
    version_t version
    Definition: vmp2.hpp:203
    -
    u64 epoch_time
    Definition: vmp2.hpp:202
    -
    u64 vm_entry_rva
    Definition: vmp2.hpp:207
    - - -
    unsigned long long u64
    Definition: vmutils.hpp:15
    -
    unsigned int u32
    Definition: vmutils.hpp:14
    -
    unsigned char u8
    Definition: vmutils.hpp:12
    -
    - - - - diff --git a/doxygen/html/vmprofiler_8hpp.html b/doxygen/html/vmprofiler_8hpp.html deleted file mode 100644 index b10053b..0000000 --- a/doxygen/html/vmprofiler_8hpp.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmprofiler.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmprofiler.hpp File Reference
    -
    -
    -
    #include <transform.hpp>
    -#include <vmhandlers.hpp>
    -#include <vmp2.hpp>
    -#include <vmprofiles.hpp>
    -#include <vminstrs.hpp>
    -#include <vmctx.hpp>
    -#include <vmutils.hpp>
    -#include <calc_jmp.hpp>
    -#include <vmlifters.hpp>
    -
    -

    Go to the source code of this file.

    -
    - - - - diff --git a/doxygen/html/vmprofiler_8hpp_source.html b/doxygen/html/vmprofiler_8hpp_source.html deleted file mode 100644 index 3c0e490..0000000 --- a/doxygen/html/vmprofiler_8hpp_source.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmprofiler.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmprofiler.hpp
    -
    -
    -Go to the documentation of this file.
    1 #pragma once
    -
    2 #include <transform.hpp>
    -
    3 #include <vmhandlers.hpp>
    -
    4 #include <vmp2.hpp>
    -
    5 #include <vmprofiles.hpp>
    -
    6 #include <vminstrs.hpp>
    -
    7 #include <vmctx.hpp>
    -
    8 #include <vmutils.hpp>
    -
    9 #include <calc_jmp.hpp>
    -
    10 #include <vmlifters.hpp>
    - - - - - - - - - -
    - - - - diff --git a/doxygen/html/vmprofiles_2add_8cpp.html b/doxygen/html/vmprofiles_2add_8cpp.html deleted file mode 100644 index 8d589c5..0000000 --- a/doxygen/html/vmprofiles_2add_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/add.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    add.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2jmp_8cpp.html b/doxygen/html/vmprofiles_2jmp_8cpp.html deleted file mode 100644 index e690a91..0000000 --- a/doxygen/html/vmprofiles_2jmp_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/jmp.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    jmp.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2lconst_8cpp.html b/doxygen/html/vmprofiles_2lconst_8cpp.html deleted file mode 100644 index 0a5c453..0000000 --- a/doxygen/html/vmprofiles_2lconst_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/lconst.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    lconst.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2lflags_8cpp.html b/doxygen/html/vmprofiles_2lflags_8cpp.html deleted file mode 100644 index 6241d6e..0000000 --- a/doxygen/html/vmprofiles_2lflags_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/lflags.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    lflags.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2lreg_8cpp.html b/doxygen/html/vmprofiles_2lreg_8cpp.html deleted file mode 100644 index cdeeffe..0000000 --- a/doxygen/html/vmprofiles_2lreg_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/lreg.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    lreg.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2lvsp_8cpp.html b/doxygen/html/vmprofiles_2lvsp_8cpp.html deleted file mode 100644 index 06955e8..0000000 --- a/doxygen/html/vmprofiles_2lvsp_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/lvsp.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    lvsp.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2nand_8cpp.html b/doxygen/html/vmprofiles_2nand_8cpp.html deleted file mode 100644 index 1250c70..0000000 --- a/doxygen/html/vmprofiles_2nand_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/nand.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nand.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2pushvsp_8cpp.html b/doxygen/html/vmprofiles_2pushvsp_8cpp.html deleted file mode 100644 index a375fe7..0000000 --- a/doxygen/html/vmprofiles_2pushvsp_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/pushvsp.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    pushvsp.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2read_8cpp.html b/doxygen/html/vmprofiles_2read_8cpp.html deleted file mode 100644 index b77ee13..0000000 --- a/doxygen/html/vmprofiles_2read_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/read.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    read.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2shr_8cpp.html b/doxygen/html/vmprofiles_2shr_8cpp.html deleted file mode 100644 index 16bdadb..0000000 --- a/doxygen/html/vmprofiles_2shr_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/shr.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    shr.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2sreg_8cpp.html b/doxygen/html/vmprofiles_2sreg_8cpp.html deleted file mode 100644 index 93b7e6e..0000000 --- a/doxygen/html/vmprofiles_2sreg_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/sreg.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    sreg.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_2vmexit_8cpp.html b/doxygen/html/vmprofiles_2vmexit_8cpp.html deleted file mode 100644 index 5272865..0000000 --- a/doxygen/html/vmprofiles_2vmexit_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/vmexit.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmexit.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_8hpp.html b/doxygen/html/vmprofiles_8hpp.html deleted file mode 100644 index 179d87b..0000000 --- a/doxygen/html/vmprofiles_8hpp.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmprofiles.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmprofiles.hpp File Reference
    -
    -
    -
    #include <transform.hpp>
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Classes

    struct  vm::handler::profile_t
     pre defined vm handler profile containing all compiled time known information about a vm handler... More...
     
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    - - - - -

    -Typedefs

    using vm::handler::zydis_callback_t = std::function< bool(const zydis_decoded_instr_t &instr) >
     zydis callback lambda used to pattern match native instructions... More...
     
    - - - - - - - -

    -Enumerations

    enum  vm::handler::mnemonic_t {
    -  vm::handler::INVALID -, vm::handler::LRFLAGS -, vm::handler::PUSHVSP -, vm::handler::MULQ -,
    -  vm::handler::DIVQ -, vm::handler::CALL -, vm::handler::JMP -, vm::handler::VMEXIT -,
    -  vm::handler::LVSP -, vm::handler::SREGQ -, vm::handler::SREGDW -, vm::handler::SREGW -,
    -  vm::handler::LREGQ -, vm::handler::LREGDW -, vm::handler::LCONSTQ -, vm::handler::LCONSTBZXW -,
    -  vm::handler::LCONSTBSXQ -, vm::handler::LCONSTBSXDW -, vm::handler::LCONSTDWSXQ -, vm::handler::LCONSTWSXQ -,
    -  vm::handler::LCONSTWSXDW -, vm::handler::LCONSTDW -, vm::handler::LCONSTW -, vm::handler::READQ -,
    -  vm::handler::READDW -, vm::handler::READW -, vm::handler::WRITEQ -, vm::handler::WRITEDW -,
    -  vm::handler::WRITEW -, vm::handler::WRITEB -, vm::handler::ADDQ -, vm::handler::ADDDW -,
    -  vm::handler::ADDW -, vm::handler::SHLQ -, vm::handler::SHLDW -, vm::handler::SHRQ -,
    -  vm::handler::SHRW -, vm::handler::NANDQ -, vm::handler::NANDDW -, vm::handler::NANDW -
    - }
     vm handler mnemonic... so you dont need to compare strings! More...
     
    enum  vm::handler::extention_t { vm::handler::none -, vm::handler::sign_extend -, vm::handler::zero_extend - }
     how sign extention is handled... More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    vm::handler::profile_t vm::handler::profile::sregq
     
    vm::handler::profile_t vm::handler::profile::sregdw
     
    vm::handler::profile_t vm::handler::profile::sregw
     
    vm::handler::profile_t vm::handler::profile::lregq
     
    vm::handler::profile_t vm::handler::profile::lregdw
     
    vm::handler::profile_t vm::handler::profile::lconstq
     mov rax, [rsi] xor rax, rbx ; transformation bswap rax ; transformation lea rsi, [rsi+8] ; advance VIP… rol rax, 0Ch ; transformation inc rax ; transformation xor rbx, rax ; transformation (update rolling decrypt key) sub rbp, 8 mov [rbp+0], rax More...
     
    vm::handler::profile_t vm::handler::profile::lconstdw
     mov eax, [rsi-0x04] bswap eax add eax, ebx dec eax neg eax xor eax, 0x2FFD187C push rbx add [rsp], eax pop rbx sub rbp, 0x04 mov [rbp], eax add rsi, 0xFFFFFFFFFFFFFFFC More...
     
    vm::handler::profile_t vm::handler::profile::lconstw
     
    vm::handler::profile_t vm::handler::profile::lconstbzxw
     
    vm::handler::profile_t vm::handler::profile::lconstbsxdw
     
    vm::handler::profile_t vm::handler::profile::lconstbsxq
     
    vm::handler::profile_t vm::handler::profile::lconstdwsxq
     
    vm::handler::profile_t vm::handler::profile::lconstwsxq
     
    vm::handler::profile_t vm::handler::profile::lconstwsxdw
     
    vm::handler::profile_t vm::handler::profile::addq
     mov rax, [rbp+0] add [rbp+8], rax pushfq pop qword ptr [rbp+0] More...
     
    vm::handler::profile_t vm::handler::profile::adddw
     mov ax, [rbp] sub rbp, 0x06 add [rbp+0x08], ax pushfq pop [rbp] More...
     
    vm::handler::profile_t vm::handler::profile::addw
     
    vm::handler::profile_t vm::handler::profile::shlq
     
    vm::handler::profile_t vm::handler::profile::shldw
     
    vm::handler::profile_t vm::handler::profile::nandq
     
    vm::handler::profile_t vm::handler::profile::nanddw
     
    vm::handler::profile_t vm::handler::profile::nandw
     
    vm::handler::profile_t vm::handler::profile::writeq
     
    vm::handler::profile_t vm::handler::profile::writedw
     
    vm::handler::profile_t vm::handler::profile::writeb
     
    vm::handler::profile_t vm::handler::profile::readq
     
    vm::handler::profile_t vm::handler::profile::readdw
     
    vm::handler::profile_t vm::handler::profile::shrq
     
    vm::handler::profile_t vm::handler::profile::shrw
     
    vm::handler::profile_t vm::handler::profile::lrflags
     
    vm::handler::profile_t vm::handler::profile::call
     mov rdx, [rbp] add rbp, 0x08 call rdx More...
     
    vm::handler::profile_t vm::handler::profile::pushvsp
     
    vm::handler::profile_t vm::handler::profile::mulq
     
    vm::handler::profile_t vm::handler::profile::divq
     mov rdx, [rbp] mov rax, [rbp+0x08] div [rbp+0x10] mov [rbp+0x08], rdx mov [rbp+0x10], rax pushfq pop [rbp] More...
     
    vm::handler::profile_t vm::handler::profile::jmp
     mov esi, [rbp] add rbp, 0x08 lea r12, [0x0000000000048F29] mov rax, 0x00 ; image base bytes above 32bits... add rsi, rax mov rbx, rsi ; update decrypt key add rsi, [rbp] ; add module base address More...
     
    vm::handler::profile_t vm::handler::profile::lvsp
     mov rbp [rbp+0] More...
     
    vm::handler::profile_t vm::handler::profile::vmexit
     
    std::vector< vm::handler::profile_t * > vm::handler::profile::all
     a vector of pointers to all defined vm handler profiles... More...
     
    -
    - - - - diff --git a/doxygen/html/vmprofiles_8hpp_source.html b/doxygen/html/vmprofiles_8hpp_source.html deleted file mode 100644 index 99b7ee8..0000000 --- a/doxygen/html/vmprofiles_8hpp_source.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmprofiles.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmprofiles.hpp
    -
    -
    -Go to the documentation of this file.
    1 #pragma once
    -
    2 #include <transform.hpp>
    -
    3 
    -
    7 namespace vm::handler
    -
    8 {
    - -
    13  {
    - - - - - - -
    20  JMP,
    - - -
    23 
    - - - -
    27 
    - - -
    30 
    - - - - - - - - - -
    40 
    - - - -
    44 
    - - - - -
    49 
    - - - -
    53 
    - - -
    56 
    - - -
    59 
    - - -
    62  NANDW
    -
    63  };
    -
    64 
    -
    68  using zydis_callback_t = std::function< bool( const zydis_decoded_instr_t &instr ) >;
    -
    69 
    - -
    74  {
    - - - -
    78  };
    -
    79 
    -
    83  struct profile_t
    -
    84  {
    -
    88  const char *name;
    -
    89 
    - -
    94 
    - -
    99 
    -
    103  std::vector< zydis_callback_t > signature;
    -
    104 
    - -
    109  };
    -
    110 
    -
    114  namespace profile
    -
    115  {
    - - - -
    119 
    - - -
    122 
    - -
    135 
    - - -
    152 
    - - - - - - -
    159 
    - -
    167 
    - - -
    177 
    - - -
    180 
    - - - -
    184 
    - - - -
    188 
    - - -
    191 
    - - -
    194 
    - -
    196 
    - - - -
    205 
    - -
    216 
    - -
    227 
    - - -
    233 
    -
    237  inline std::vector< vm::handler::profile_t * > all = {
    - - -
    240  &addw, &lvsp,
    -
    241 
    -
    242  &shlq, &shldw, &writeq, &writedw, &writeb, &nandq, &nanddw, &nandw,
    -
    243 
    -
    244  &shrq, &shrw, &readq, &readdw, &mulq, &pushvsp, &divq, &jmp,
    -
    245  &lrflags, &vmexit, &call };
    -
    246  } // namespace profile
    -
    247 } // namespace vm::handler
    -
    vm::handler::profile_t lconstw
    Definition: lconst.cpp:50
    -
    vm::handler::profile_t writeb
    Definition: write.cpp:85
    -
    vm::handler::profile_t lconstwsxq
    Definition: lconst.cpp:171
    -
    vm::handler::profile_t lvsp
    mov rbp [rbp+0]
    Definition: lvsp.cpp:5
    -
    vm::handler::profile_t lconstdw
    mov eax, [rsi-0x04] bswap eax add eax, ebx dec eax neg eax xor eax, 0x2FFD187C push rbx add [rsp],...
    Definition: lconst.cpp:28
    -
    std::vector< vm::handler::profile_t * > all
    a vector of pointers to all defined vm handler profiles...
    Definition: vmprofiles.hpp:237
    -
    vm::handler::profile_t pushvsp
    Definition: pushvsp.cpp:5
    -
    vm::handler::profile_t lconstbsxq
    Definition: lconst.cpp:121
    -
    vm::handler::profile_t lregq
    Definition: lreg.cpp:5
    -
    vm::handler::profile_t nandq
    Definition: nand.cpp:5
    -
    vm::handler::profile_t sregdw
    Definition: sreg.cpp:38
    -
    vm::handler::profile_t sregw
    Definition: sreg.cpp:72
    -
    vm::handler::profile_t shrw
    Definition: shr.cpp:64
    -
    vm::handler::profile_t lrflags
    Definition: lflags.cpp:5
    -
    vm::handler::profile_t mulq
    Definition: mul.cpp:5
    -
    vm::handler::profile_t nanddw
    Definition: nand.cpp:68
    -
    vm::handler::profile_t adddw
    mov ax, [rbp] sub rbp, 0x06 add [rbp+0x08], ax pushfq pop [rbp]
    Definition: add.cpp:28
    -
    vm::handler::profile_t writeq
    Definition: write.cpp:5
    -
    vm::handler::profile_t jmp
    mov esi, [rbp] add rbp, 0x08 lea r12, [0x0000000000048F29] mov rax, 0x00 ; image base bytes above 32b...
    Definition: jmp.cpp:5
    -
    vm::handler::profile_t readq
    Definition: read.cpp:5
    -
    vm::handler::profile_t writedw
    Definition: write.cpp:45
    -
    vm::handler::profile_t vmexit
    Definition: vmexit.cpp:5
    -
    vm::handler::profile_t sregq
    Definition: sreg.cpp:5
    -
    vm::handler::profile_t addq
    mov rax, [rbp+0] add [rbp+8], rax pushfq pop qword ptr [rbp+0]
    Definition: add.cpp:5
    -
    vm::handler::profile_t readdw
    Definition: read.cpp:27
    -
    vm::handler::profile_t lconstbzxw
    Definition: lconst.cpp:72
    -
    vm::handler::profile_t shlq
    Definition: shl.cpp:5
    -
    vm::handler::profile_t call
    mov rdx, [rbp] add rbp, 0x08 call rdx
    Definition: call.cpp:5
    -
    vm::handler::profile_t shldw
    Definition: shl.cpp:64
    -
    vm::handler::profile_t lconstbsxdw
    Definition: lconst.cpp:95
    -
    vm::handler::profile_t lconstq
    mov rax, [rsi] xor rax, rbx ; transformation bswap rax ; transformation lea rsi, [rsi+8] ; advance VI...
    Definition: lconst.cpp:5
    -
    vm::handler::profile_t nandw
    Definition: nand.cpp:115
    -
    vm::handler::profile_t lregdw
    Definition: lreg.cpp:39
    -
    vm::handler::profile_t lconstdwsxq
    Definition: lconst.cpp:147
    -
    vm::handler::profile_t shrq
    Definition: shr.cpp:5
    -
    vm::handler::profile_t addw
    Definition: add.cpp:51
    -
    vm::handler::profile_t lconstwsxdw
    Definition: lconst.cpp:197
    -
    vm::handler::profile_t divq
    mov rdx, [rbp] mov rax, [rbp+0x08] div [rbp+0x10] mov [rbp+0x08], rdx mov [rbp+0x10],...
    Definition: div.cpp:5
    -
    contains all information pertaining to vm handler identification...
    Definition: vmhandlers.hpp:6
    -
    std::function< bool(const zydis_decoded_instr_t &instr) > zydis_callback_t
    zydis callback lambda used to pattern match native instructions...
    Definition: vmprofiles.hpp:68
    -
    mnemonic_t
    vm handler mnemonic... so you dont need to compare strings!
    Definition: vmprofiles.hpp:13
    -
    @ LCONSTWSXDW
    Definition: vmprofiles.hpp:37
    -
    @ ADDQ
    Definition: vmprofiles.hpp:50
    -
    @ CALL
    Definition: vmprofiles.hpp:19
    -
    @ READW
    Definition: vmprofiles.hpp:43
    -
    @ LCONSTDW
    Definition: vmprofiles.hpp:38
    -
    @ WRITEQ
    Definition: vmprofiles.hpp:45
    -
    @ NANDQ
    Definition: vmprofiles.hpp:60
    -
    @ DIVQ
    Definition: vmprofiles.hpp:18
    -
    @ READDW
    Definition: vmprofiles.hpp:42
    -
    @ LREGQ
    Definition: vmprofiles.hpp:28
    -
    @ SREGQ
    Definition: vmprofiles.hpp:24
    -
    @ MULQ
    Definition: vmprofiles.hpp:17
    -
    @ ADDW
    Definition: vmprofiles.hpp:52
    -
    @ LCONSTQ
    Definition: vmprofiles.hpp:31
    -
    @ SREGW
    Definition: vmprofiles.hpp:26
    -
    @ INVALID
    Definition: vmprofiles.hpp:14
    -
    @ LVSP
    Definition: vmprofiles.hpp:22
    -
    @ LRFLAGS
    Definition: vmprofiles.hpp:15
    -
    @ WRITEB
    Definition: vmprofiles.hpp:48
    -
    @ LCONSTDWSXQ
    Definition: vmprofiles.hpp:35
    -
    @ LCONSTBZXW
    Definition: vmprofiles.hpp:32
    -
    @ PUSHVSP
    Definition: vmprofiles.hpp:16
    -
    @ SHRW
    Definition: vmprofiles.hpp:58
    -
    @ SHLDW
    Definition: vmprofiles.hpp:55
    -
    @ ADDDW
    Definition: vmprofiles.hpp:51
    -
    @ LREGDW
    Definition: vmprofiles.hpp:29
    -
    @ SHRQ
    Definition: vmprofiles.hpp:57
    -
    @ SREGDW
    Definition: vmprofiles.hpp:25
    -
    @ VMEXIT
    Definition: vmprofiles.hpp:21
    -
    @ LCONSTBSXDW
    Definition: vmprofiles.hpp:34
    -
    @ LCONSTW
    Definition: vmprofiles.hpp:39
    -
    @ JMP
    Definition: vmprofiles.hpp:20
    -
    @ LCONSTWSXQ
    Definition: vmprofiles.hpp:36
    -
    @ WRITEW
    Definition: vmprofiles.hpp:47
    -
    @ NANDDW
    Definition: vmprofiles.hpp:61
    -
    @ SHLQ
    Definition: vmprofiles.hpp:54
    -
    @ NANDW
    Definition: vmprofiles.hpp:62
    -
    @ LCONSTBSXQ
    Definition: vmprofiles.hpp:33
    -
    @ READQ
    Definition: vmprofiles.hpp:41
    -
    @ WRITEDW
    Definition: vmprofiles.hpp:46
    -
    extention_t
    how sign extention is handled...
    Definition: vmprofiles.hpp:74
    -
    @ zero_extend
    Definition: vmprofiles.hpp:77
    -
    @ none
    Definition: vmprofiles.hpp:75
    -
    @ sign_extend
    Definition: vmprofiles.hpp:76
    -
    pre defined vm handler profile containing all compiled time known information about a vm handler....
    Definition: vmprofiles.hpp:84
    -
    u8 imm_size
    size, in bits, of the operand (imm)... if there is none then this will be zero...
    Definition: vmprofiles.hpp:98
    -
    std::vector< zydis_callback_t > signature
    a vector of signatures used to compare native instructions against zydis aided signatures....
    Definition: vmprofiles.hpp:103
    -
    extention_t extention
    how sign extention of operands are handled...
    Definition: vmprofiles.hpp:108
    -
    mnemonic_t mnemonic
    the mnemonic of the vm handler... so you dont need to compare strings...
    Definition: vmprofiles.hpp:93
    -
    const char * name
    name of the vm handler, such as JMP or LCONST...
    Definition: vmprofiles.hpp:88
    - -
    ZydisDecodedInstruction zydis_decoded_instr_t
    Definition: vmutils.hpp:18
    -
    unsigned char u8
    Definition: vmutils.hpp:12
    -
    - - - - diff --git a/doxygen/html/vmutils_8cpp.html b/doxygen/html/vmutils_8cpp.html deleted file mode 100644 index a9d35be..0000000 --- a/doxygen/html/vmutils_8cpp.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmutils.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmutils.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::util
     utils used by the other cpp files... misc things that get used a lot...
     
     vm::util::reg
     utils pertaining to native registers...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    zydis_register_t vm::util::reg::to64 (zydis_register_t reg)
     converts say... AL to RAX... More...
     
    bool vm::util::reg::compare (zydis_register_t a, zydis_register_t b)
     compares to registers with each other... calls to64 and compares... More...
     
    bool vm::util::get_fetch_operand (const zydis_routine_t &routine, zydis_instr_t &fetch_instr)
     get the instruction that fetches an operand out of VIP... More...
     
    std::optional< zydis_routine_t::iterator > vm::util::get_fetch_operand (zydis_routine_t &routine)
     gets the instruction that fetches an operand out of VIP and returns an iterator to it... More...
     
    void vm::util::print (const zydis_decoded_instr_t &instr)
     prints a single disassembly view of an instruction... More...
     
    void vm::util::print (zydis_routine_t &routine)
     prints a disassembly view of a routine... More...
     
    bool vm::util::is_jmp (const zydis_decoded_instr_t &instr)
     determines if a given decoded native instruction is a JCC... More...
     
    bool vm::util::flatten (zydis_routine_t &routine, std::uintptr_t routine_addr, bool keep_jmps=false)
     flatten native instruction stream, takes every JCC (follows the branch)... More...
     
    void vm::util::deobfuscate (zydis_routine_t &routine)
     deadstore deobfuscation of a flattened routine... More...
     
    -
    - - - - diff --git a/doxygen/html/vmutils_8hpp.html b/doxygen/html/vmutils_8hpp.html deleted file mode 100644 index 7ac583a..0000000 --- a/doxygen/html/vmutils_8hpp.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmutils.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    vmutils.hpp File Reference
    -
    -
    -
    #include <Zydis/Utils.h>
    -#include <Zydis/Zydis.h>
    -#include <optional>
    -#include <vector>
    -#include <xmmintrin.h>
    -#include <Windows.h>
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    struct  zydis_instr_t
     
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::util
     utils used by the other cpp files... misc things that get used a lot...
     
     vm::util::reg
     utils pertaining to native registers...
     
    - - - -

    -Macros

    #define NOMINMAX
     
    - - - - - - - - - - - - - - - - - - - -

    -Typedefs

    using u8 = unsigned char
     
    using u16 = unsigned short
     
    using u32 = unsigned int
     
    using u64 = unsigned long long
     
    using u128 = __m128
     
    using zydis_decoded_instr_t = ZydisDecodedInstruction
     
    using zydis_register_t = ZydisRegister
     
    using zydis_mnemonic_t = ZydisMnemonic
     
    using zydis_routine_t = std::vector< zydis_instr_t >
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    zydis_register_t vm::util::reg::to64 (zydis_register_t reg)
     converts say... AL to RAX... More...
     
    bool vm::util::reg::compare (zydis_register_t a, zydis_register_t b)
     compares to registers with each other... calls to64 and compares... More...
     
    bool vm::util::get_fetch_operand (const zydis_routine_t &routine, zydis_instr_t &fetch_instr)
     get the instruction that fetches an operand out of VIP... More...
     
    std::optional< zydis_routine_t::iterator > vm::util::get_fetch_operand (zydis_routine_t &routine)
     gets the instruction that fetches an operand out of VIP and returns an iterator to it... More...
     
    void vm::util::print (zydis_routine_t &routine)
     prints a disassembly view of a routine... More...
     
    void vm::util::print (const zydis_decoded_instr_t &instr)
     prints a single disassembly view of an instruction... More...
     
    bool vm::util::is_jmp (const zydis_decoded_instr_t &instr)
     determines if a given decoded native instruction is a JCC... More...
     
    bool vm::util::flatten (zydis_routine_t &routine, std::uintptr_t routine_addr, bool keep_jmps=false)
     flatten native instruction stream, takes every JCC (follows the branch)... More...
     
    void vm::util::deobfuscate (zydis_routine_t &routine)
     deadstore deobfuscation of a flattened routine... More...
     
    -

    Macro Definition Documentation

    - -

    ◆ NOMINMAX

    - -
    -
    - - - - -
    #define NOMINMAX
    -
    - -
    -
    -

    Typedef Documentation

    - -

    ◆ u128

    - -
    -
    - - - - -
    using u128 = __m128
    -
    - -
    -
    - -

    ◆ u16

    - -
    -
    - - - - -
    using u16 = unsigned short
    -
    - -
    -
    - -

    ◆ u32

    - -
    -
    - - - - -
    using u32 = unsigned int
    -
    - -
    -
    - -

    ◆ u64

    - -
    -
    - - - - -
    using u64 = unsigned long long
    -
    - -
    -
    - -

    ◆ u8

    - -
    -
    - - - - -
    using u8 = unsigned char
    -
    - -
    -
    - -

    ◆ zydis_decoded_instr_t

    - -
    -
    - - - - -
    using zydis_decoded_instr_t = ZydisDecodedInstruction
    -
    - -
    -
    - -

    ◆ zydis_mnemonic_t

    - -
    -
    - - - - -
    using zydis_mnemonic_t = ZydisMnemonic
    -
    - -
    -
    - -

    ◆ zydis_register_t

    - -
    -
    - - - - -
    using zydis_register_t = ZydisRegister
    -
    - -
    -
    - -

    ◆ zydis_routine_t

    - -
    -
    - - - - -
    using zydis_routine_t = std::vector< zydis_instr_t >
    -
    - -
    -
    -
    - - - - diff --git a/doxygen/html/vmutils_8hpp_source.html b/doxygen/html/vmutils_8hpp_source.html deleted file mode 100644 index b0dcab1..0000000 --- a/doxygen/html/vmutils_8hpp_source.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/include/vmutils.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    vmutils.hpp
    -
    -
    -Go to the documentation of this file.
    1 #pragma once
    -
    2 #include <Zydis/Utils.h>
    -
    3 #include <Zydis/Zydis.h>
    -
    4 
    -
    5 #include <optional>
    -
    6 #include <vector>
    -
    7 #include <xmmintrin.h>
    -
    8 
    -
    9 #define NOMINMAX
    -
    10 #include <Windows.h>
    -
    11 
    -
    12 using u8 = unsigned char;
    -
    13 using u16 = unsigned short;
    -
    14 using u32 = unsigned int;
    -
    15 using u64 = unsigned long long;
    -
    16 using u128 = __m128;
    -
    17 
    -
    18 using zydis_decoded_instr_t = ZydisDecodedInstruction;
    -
    19 using zydis_register_t = ZydisRegister;
    -
    20 using zydis_mnemonic_t = ZydisMnemonic;
    -
    21 
    - -
    23 {
    - -
    25  std::vector< u8 > raw;
    -
    26  std::uintptr_t addr;
    -
    27 };
    -
    28 
    -
    29 using zydis_routine_t = std::vector< zydis_instr_t >;
    -
    30 
    -
    34 namespace vm::util
    -
    35 {
    -
    39  namespace reg
    -
    40  {
    - -
    47 
    - -
    55  } // namespace reg
    -
    56 
    -
    63  bool get_fetch_operand( const zydis_routine_t &routine, zydis_instr_t &fetch_instr );
    -
    64 
    -
    70  std::optional< zydis_routine_t::iterator > get_fetch_operand( zydis_routine_t &routine );
    -
    71 
    -
    76  void print( zydis_routine_t &routine );
    -
    77 
    -
    82  void print( const zydis_decoded_instr_t &instr );
    -
    83 
    -
    89  bool is_jmp( const zydis_decoded_instr_t &instr );
    -
    90 
    -
    98  bool flatten( zydis_routine_t &routine, std::uintptr_t routine_addr, bool keep_jmps = false );
    -
    99 
    -
    104  void deobfuscate( zydis_routine_t &routine );
    -
    105 } // namespace vm::util
    -
    zydis_register_t to64(zydis_register_t reg)
    converts say... AL to RAX...
    Definition: vmutils.cpp:7
    -
    bool compare(zydis_register_t a, zydis_register_t b)
    compares to registers with each other... calls to64 and compares...
    Definition: vmutils.cpp:12
    -
    utils used by the other cpp files... misc things that get used a lot...
    Definition: vmutils.hpp:35
    -
    bool is_jmp(const zydis_decoded_instr_t &instr)
    determines if a given decoded native instruction is a JCC...
    Definition: vmutils.cpp:82
    -
    bool get_fetch_operand(const zydis_routine_t &routine, zydis_instr_t &fetch_instr)
    get the instruction that fetches an operand out of VIP...
    Definition: vmutils.cpp:18
    -
    bool flatten(zydis_routine_t &routine, std::uintptr_t routine_addr, bool keep_jmps=false)
    flatten native instruction stream, takes every JCC (follows the branch)...
    Definition: vmutils.cpp:115
    -
    void print(zydis_routine_t &routine)
    prints a disassembly view of a routine...
    Definition: vmutils.cpp:69
    -
    void deobfuscate(zydis_routine_t &routine)
    deadstore deobfuscation of a flattened routine...
    Definition: vmutils.cpp:161
    -
    Definition: vmutils.hpp:23
    -
    std::vector< u8 > raw
    Definition: vmutils.hpp:25
    -
    zydis_decoded_instr_t instr
    Definition: vmutils.hpp:24
    -
    std::uintptr_t addr
    Definition: vmutils.hpp:26
    -
    unsigned long long u64
    Definition: vmutils.hpp:15
    -
    unsigned int u32
    Definition: vmutils.hpp:14
    -
    std::vector< zydis_instr_t > zydis_routine_t
    Definition: vmutils.hpp:29
    -
    unsigned short u16
    Definition: vmutils.hpp:13
    -
    __m128 u128
    Definition: vmutils.hpp:16
    -
    ZydisMnemonic zydis_mnemonic_t
    Definition: vmutils.hpp:20
    -
    ZydisRegister zydis_register_t
    Definition: vmutils.hpp:19
    -
    ZydisDecodedInstruction zydis_decoded_instr_t
    Definition: vmutils.hpp:18
    -
    unsigned char u8
    Definition: vmutils.hpp:12
    -
    - - - - diff --git a/doxygen/html/write_8cpp.html b/doxygen/html/write_8cpp.html deleted file mode 100644 index f86bec4..0000000 --- a/doxygen/html/write_8cpp.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -VMProfiler: D:/vmprofiler-qt/dependencies/vmprofiler/src/vmprofiles/write.cpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    VMProfiler -  v1.8 -
    -
    vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    write.cpp File Reference
    -
    -
    -
    #include <vmprofiler.hpp>
    -
    - - - - - - - - - -

    -Namespaces

     vm
     
     vm::handler
     contains all information pertaining to vm handler identification...
     
     vm::handler::profile
     contains all profiles defined, as well as a vector of all of the defined profiles...
     
    -
    - - - -