From 215030f626ee7b2c5e9b9b6c61d4e4457f2f5472 Mon Sep 17 00:00:00 2001 From: Jack Back Date: Mon, 15 Jan 2024 12:14:55 +0100 Subject: [PATCH] init --- .gitignore | 150 + .gitmodules | 37 + LICENSE | 674 ++ README.md | 38 + deps/GSL | 1 + deps/WinToast | 1 + deps/asmjit | 1 + deps/discord-rpc | 1 + deps/extra/udis86/libudis86/itab.c | 5946 +++++++++++++++++ deps/extra/udis86/libudis86/itab.h | 939 +++ deps/gsc-tool | 1 + deps/libtomcrypt | 1 + deps/libtommath | 1 + deps/minhook | 1 + deps/premake/asmjit.lua | 34 + deps/premake/discord-rpc.lua | 39 + deps/premake/gsc-tool.lua | 62 + deps/premake/gsl.lua | 19 + deps/premake/libtomcrypt.lua | 64 + deps/premake/libtommath.lua | 52 + deps/premake/minhook.lua | 31 + deps/premake/minizip.lua | 43 + deps/premake/protobuf.lua | 60 + deps/premake/rapidjson.lua | 23 + deps/premake/udis86.lua | 37 + deps/premake/wintoast.lua | 32 + deps/premake/zlib.lua | 39 + deps/protobuf | 1 + deps/rapidjson | 1 + deps/udis86 | 1 + deps/zlib | 1 + premake5.lua | 362 + src/client/component/arxan.cpp | 163 + src/client/component/auth.cpp | 229 + src/client/component/auth.hpp | 6 + src/client/component/binding.cpp | 138 + src/client/component/bots.cpp | 197 + src/client/component/branding.cpp | 69 + src/client/component/bullet.cpp | 44 + src/client/component/colors.cpp | 183 + src/client/component/command.cpp | 677 ++ src/client/component/command.hpp | 50 + src/client/component/console.cpp | 260 + src/client/component/console.hpp | 35 + src/client/component/dedicated.cpp | 326 + src/client/component/dedicated.hpp | 6 + src/client/component/dedicated_info.cpp | 64 + src/client/component/demonware.cpp | 448 ++ src/client/component/discord.cpp | 167 + src/client/component/dvar_cheats.cpp | 189 + src/client/component/dvars.cpp | 387 ++ src/client/component/dvars.hpp | 27 + src/client/component/fastfiles.cpp | 178 + src/client/component/fastfiles.hpp | 10 + src/client/component/filesystem.cpp | 272 + src/client/component/filesystem.hpp | 30 + src/client/component/fps.cpp | 186 + src/client/component/fps.hpp | 6 + src/client/component/game_console.cpp | 780 +++ src/client/component/game_console.hpp | 12 + src/client/component/game_log.cpp | 116 + src/client/component/game_log.hpp | 6 + src/client/component/game_module.cpp | 118 + src/client/component/game_module.hpp | 9 + src/client/component/gameplay.cpp | 206 + src/client/component/gsc/script_error.cpp | 339 + src/client/component/gsc/script_error.hpp | 6 + src/client/component/gsc/script_extension.cpp | 288 + src/client/component/gsc/script_extension.hpp | 12 + src/client/component/gsc/script_loading.cpp | 396 ++ src/client/component/gsc/script_loading.hpp | 9 + src/client/component/input.cpp | 59 + src/client/component/localized_strings.cpp | 52 + src/client/component/localized_strings.hpp | 6 + src/client/component/logger.cpp | 172 + src/client/component/lui.cpp | 60 + src/client/component/map_rotation.cpp | 306 + src/client/component/map_rotation.hpp | 34 + src/client/component/network.cpp | 287 + src/client/component/network.hpp | 47 + src/client/component/notifies.cpp | 208 + src/client/component/notifies.hpp | 15 + src/client/component/party.cpp | 638 ++ src/client/component/party.hpp | 19 + src/client/component/patches.cpp | 322 + src/client/component/ranked.cpp | 46 + src/client/component/rcon.cpp | 213 + src/client/component/rcon.hpp | 6 + src/client/component/redirect.cpp | 83 + src/client/component/renderer.cpp | 82 + src/client/component/resources.cpp | 70 + src/client/component/scheduler.cpp | 197 + src/client/component/scheduler.hpp | 33 + src/client/component/scripting.cpp | 193 + src/client/component/scripting.hpp | 16 + src/client/component/security.cpp | 77 + src/client/component/server_list.cpp | 433 ++ src/client/component/server_list.hpp | 10 + src/client/component/slowmotion.cpp | 53 + src/client/component/splash.cpp | 141 + src/client/component/stats.cpp | 128 + src/client/component/steam_proxy.cpp | 208 + src/client/component/survival.cpp | 46 + src/client/component/system_check.cpp | 100 + src/client/component/system_check.hpp | 6 + src/client/component/thread_names.cpp | 60 + src/client/component/ui_scripting.cpp | 363 + src/client/component/ui_scripting.hpp | 47 + src/client/component/virtuallobby.cpp | 97 + src/client/game/demonware/bit_buffer.cpp | 182 + src/client/game/demonware/bit_buffer.hpp | 40 + src/client/game/demonware/byte_buffer.cpp | 308 + src/client/game/demonware/byte_buffer.hpp | 69 + src/client/game/demonware/data_types.hpp | 144 + src/client/game/demonware/keys.cpp | 130 + src/client/game/demonware/keys.hpp | 12 + src/client/game/demonware/reply.cpp | 87 + src/client/game/demonware/reply.hpp | 164 + src/client/game/demonware/server_registry.hpp | 60 + .../game/demonware/servers/auth3_server.cpp | 167 + .../game/demonware/servers/auth3_server.hpp | 16 + .../game/demonware/servers/base_server.cpp | 22 + .../game/demonware/servers/base_server.hpp | 30 + .../game/demonware/servers/lobby_server.cpp | 176 + .../game/demonware/servers/lobby_server.hpp | 33 + .../game/demonware/servers/service_server.hpp | 27 + .../game/demonware/servers/stun_server.cpp | 62 + .../game/demonware/servers/stun_server.hpp | 18 + .../game/demonware/servers/tcp_server.cpp | 84 + .../game/demonware/servers/tcp_server.hpp | 27 + .../game/demonware/servers/udp_server.cpp | 103 + .../game/demonware/servers/udp_server.hpp | 62 + .../demonware/servers/umbrella_server.cpp | 11 + .../demonware/servers/umbrella_server.hpp | 14 + src/client/game/demonware/service.hpp | 89 + src/client/game/demonware/services.hpp | 34 + .../game/demonware/services/bdAnticheat.cpp | 25 + .../game/demonware/services/bdAnticheat.hpp | 14 + .../demonware/services/bdContentStreaming.cpp | 25 + .../demonware/services/bdContentStreaming.hpp | 14 + .../game/demonware/services/bdCounters.cpp | 25 + .../game/demonware/services/bdCounters.hpp | 14 + src/client/game/demonware/services/bdDML.cpp | 28 + src/client/game/demonware/services/bdDML.hpp | 13 + .../game/demonware/services/bdEventLog.cpp | 17 + .../game/demonware/services/bdEventLog.hpp | 13 + .../game/demonware/services/bdFacebook.cpp | 41 + .../game/demonware/services/bdFacebook.hpp | 16 + .../game/demonware/services/bdGroups.cpp | 25 + .../game/demonware/services/bdGroups.hpp | 14 + .../game/demonware/services/bdMarketing.cpp | 25 + .../game/demonware/services/bdMarketing.hpp | 14 + .../demonware/services/bdMarketingComms.cpp | 17 + .../demonware/services/bdMarketingComms.hpp | 13 + .../demonware/services/bdMatchMaking2.cpp | 49 + .../demonware/services/bdMatchMaking2.hpp | 17 + .../game/demonware/services/bdPresence.cpp | 25 + .../game/demonware/services/bdPresence.hpp | 14 + .../game/demonware/services/bdProfiles.cpp | 17 + .../game/demonware/services/bdProfiles.hpp | 13 + .../demonware/services/bdRichPresence.cpp | 25 + .../demonware/services/bdRichPresence.hpp | 14 + .../game/demonware/services/bdStats.cpp | 49 + .../game/demonware/services/bdStats.hpp | 17 + .../game/demonware/services/bdStorage.cpp | 211 + .../game/demonware/services/bdStorage.hpp | 27 + .../demonware/services/bdTitleUtilities.cpp | 20 + .../demonware/services/bdTitleUtilities.hpp | 13 + .../game/demonware/services/bdUNK63.cpp | 17 + .../game/demonware/services/bdUNK63.hpp | 13 + .../game/demonware/services/bdUNK80.cpp | 57 + .../game/demonware/services/bdUNK80.hpp | 18 + src/client/game/dvars.cpp | 150 + src/client/game/dvars.hpp | 44 + src/client/game/game.cpp | 130 + src/client/game/game.hpp | 73 + src/client/game/scripting/functions.cpp | 90 + src/client/game/scripting/functions.hpp | 14 + src/client/game/structs.hpp | 1942 ++++++ src/client/game/symbols.hpp | 310 + src/client/game/ui_scripting/execution.cpp | 172 + src/client/game/ui_scripting/execution.hpp | 23 + src/client/game/ui_scripting/script_value.cpp | 448 ++ src/client/game/ui_scripting/script_value.hpp | 256 + src/client/game/ui_scripting/types.cpp | 354 + src/client/game/ui_scripting/types.hpp | 140 + .../launcher/html/doc_host_ui_handler.cpp | 115 + .../launcher/html/doc_host_ui_handler.hpp | 47 + src/client/launcher/html/html_argument.cpp | 48 + src/client/launcher/html/html_argument.hpp | 20 + src/client/launcher/html/html_dispatch.cpp | 61 + src/client/launcher/html/html_dispatch.hpp | 24 + src/client/launcher/html/html_frame.cpp | 319 + src/client/launcher/html/html_frame.hpp | 67 + src/client/launcher/html/html_window.cpp | 29 + src/client/launcher/html/html_window.hpp | 15 + src/client/launcher/html/ole_client_site.cpp | 77 + src/client/launcher/html/ole_client_site.hpp | 24 + .../launcher/html/ole_in_place_frame.cpp | 82 + .../launcher/html/ole_in_place_frame.hpp | 30 + .../launcher/html/ole_in_place_site.cpp | 105 + .../launcher/html/ole_in_place_site.hpp | 32 + src/client/launcher/launcher.cpp | 66 + src/client/launcher/launcher.hpp | 32 + src/client/launcher/window.cpp | 208 + src/client/launcher/window.hpp | 44 + src/client/loader/component_interface.hpp | 35 + src/client/loader/component_loader.cpp | 127 + src/client/loader/component_loader.hpp | 61 + src/client/loader/loader.cpp | 213 + src/client/loader/loader.hpp | 21 + src/client/loader/seh.cpp | 151 + src/client/loader/seh.hpp | 38 + src/client/loader/tls.cpp | 33 + src/client/loader/tls.hpp | 6 + src/client/main.cpp | 296 + src/client/proto/auth.proto | 10 + src/client/resource.hpp | 22 + src/client/resource.rc | 140 + .../resources/dw/entitlement_config.info | 228 + src/client/resources/dw/ffotd-1.22.1.ff | Bin 0 -> 21272 bytes src/client/resources/dw/lootConfig_tu22.csv | 1050 +++ src/client/resources/dw/mm.cfg | 1 + src/client/resources/dw/motd-english.txt | 1 + src/client/resources/dw/playlists_tu22.aggr | Bin 0 -> 32928 bytes src/client/resources/dw/social_tu22.cfg | 171 + .../resources/dw/winStoreConfig_tu22.csv | 206 + src/client/resources/icon.ico | Bin 0 -> 202092 bytes src/client/resources/icon.png | Bin 0 -> 149189 bytes src/client/resources/logo.bmp | Bin 0 -> 109976 bytes src/client/resources/main.html | 572 ++ src/client/resources/splash.bmp | Bin 0 -> 1105976 bytes src/client/std_include.cpp | 32 + src/client/std_include.hpp | 99 + src/client/steam/interface.cpp | 98 + src/client/steam/interface.hpp | 85 + src/client/steam/interfaces/apps.cpp | 104 + src/client/steam/interfaces/apps.hpp | 32 + src/client/steam/interfaces/friends.cpp | 313 + src/client/steam/interfaces/friends.hpp | 76 + src/client/steam/interfaces/game_server.cpp | 204 + src/client/steam/interfaces/game_server.hpp | 57 + src/client/steam/interfaces/matchmaking.cpp | 230 + src/client/steam/interfaces/matchmaking.hpp | 79 + src/client/steam/interfaces/networking.cpp | 121 + src/client/steam/interfaces/networking.hpp | 39 + .../steam/interfaces/remote_storage.cpp | 283 + .../steam/interfaces/remote_storage.hpp | 78 + src/client/steam/interfaces/user.cpp | 164 + src/client/steam/interfaces/user.hpp | 55 + src/client/steam/interfaces/user_stats.cpp | 231 + src/client/steam/interfaces/user_stats.hpp | 65 + src/client/steam/interfaces/utils.cpp | 118 + src/client/steam/interfaces/utils.hpp | 37 + src/client/steam/steam.cpp | 238 + src/client/steam/steam.hpp | 121 + src/common/utils/binary_resource.cpp | 75 + src/common/utils/binary_resource.hpp | 20 + src/common/utils/compression.cpp | 169 + src/common/utils/compression.hpp | 28 + src/common/utils/concurrency.hpp | 46 + src/common/utils/cryptography.cpp | 640 ++ src/common/utils/cryptography.hpp | 118 + src/common/utils/flags.cpp | 47 + src/common/utils/flags.hpp | 8 + src/common/utils/hook.cpp | 310 + src/common/utils/hook.hpp | 205 + src/common/utils/http.cpp | 48 + src/common/utils/http.hpp | 11 + src/common/utils/info_string.cpp | 65 + src/common/utils/info_string.hpp | 24 + src/common/utils/io.cpp | 125 + src/common/utils/io.hpp | 21 + src/common/utils/memory.cpp | 162 + src/common/utils/memory.hpp | 75 + src/common/utils/nt.cpp | 276 + src/common/utils/nt.hpp | 120 + src/common/utils/signature.cpp | 212 + src/common/utils/signature.hpp | 73 + src/common/utils/smbios.cpp | 94 + src/common/utils/smbios.hpp | 8 + src/common/utils/string.cpp | 179 + src/common/utils/string.hpp | 98 + src/common/utils/thread.cpp | 128 + src/common/utils/thread.hpp | 25 + src/common/utils/toast.cpp | 109 + src/common/utils/toast.hpp | 19 + src/runner/debugger.cpp | 95 + src/runner/debugger.hpp | 15 + src/runner/resource.rc | 100 + src/runner/runner.cpp | 26 + src/tlsdll/dllmain.cpp | 7 + src/tlsdll/resource.rc | 100 + tools/protoc.exe | Bin 0 -> 3909120 bytes 294 files changed, 39223 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 LICENSE create mode 100644 README.md create mode 160000 deps/GSL create mode 160000 deps/WinToast create mode 160000 deps/asmjit create mode 160000 deps/discord-rpc create mode 100644 deps/extra/udis86/libudis86/itab.c create mode 100644 deps/extra/udis86/libudis86/itab.h create mode 160000 deps/gsc-tool create mode 160000 deps/libtomcrypt create mode 160000 deps/libtommath create mode 160000 deps/minhook create mode 100644 deps/premake/asmjit.lua create mode 100644 deps/premake/discord-rpc.lua create mode 100644 deps/premake/gsc-tool.lua create mode 100644 deps/premake/gsl.lua create mode 100644 deps/premake/libtomcrypt.lua create mode 100644 deps/premake/libtommath.lua create mode 100644 deps/premake/minhook.lua create mode 100644 deps/premake/minizip.lua create mode 100644 deps/premake/protobuf.lua create mode 100644 deps/premake/rapidjson.lua create mode 100644 deps/premake/udis86.lua create mode 100644 deps/premake/wintoast.lua create mode 100644 deps/premake/zlib.lua create mode 160000 deps/protobuf create mode 160000 deps/rapidjson create mode 160000 deps/udis86 create mode 160000 deps/zlib create mode 100644 premake5.lua create mode 100644 src/client/component/arxan.cpp create mode 100644 src/client/component/auth.cpp create mode 100644 src/client/component/auth.hpp create mode 100644 src/client/component/binding.cpp create mode 100644 src/client/component/bots.cpp create mode 100644 src/client/component/branding.cpp create mode 100644 src/client/component/bullet.cpp create mode 100644 src/client/component/colors.cpp create mode 100644 src/client/component/command.cpp create mode 100644 src/client/component/command.hpp create mode 100644 src/client/component/console.cpp create mode 100644 src/client/component/console.hpp create mode 100644 src/client/component/dedicated.cpp create mode 100644 src/client/component/dedicated.hpp create mode 100644 src/client/component/dedicated_info.cpp create mode 100644 src/client/component/demonware.cpp create mode 100644 src/client/component/discord.cpp create mode 100644 src/client/component/dvar_cheats.cpp create mode 100644 src/client/component/dvars.cpp create mode 100644 src/client/component/dvars.hpp create mode 100644 src/client/component/fastfiles.cpp create mode 100644 src/client/component/fastfiles.hpp create mode 100644 src/client/component/filesystem.cpp create mode 100644 src/client/component/filesystem.hpp create mode 100644 src/client/component/fps.cpp create mode 100644 src/client/component/fps.hpp create mode 100644 src/client/component/game_console.cpp create mode 100644 src/client/component/game_console.hpp create mode 100644 src/client/component/game_log.cpp create mode 100644 src/client/component/game_log.hpp create mode 100644 src/client/component/game_module.cpp create mode 100644 src/client/component/game_module.hpp create mode 100644 src/client/component/gameplay.cpp create mode 100644 src/client/component/gsc/script_error.cpp create mode 100644 src/client/component/gsc/script_error.hpp create mode 100644 src/client/component/gsc/script_extension.cpp create mode 100644 src/client/component/gsc/script_extension.hpp create mode 100644 src/client/component/gsc/script_loading.cpp create mode 100644 src/client/component/gsc/script_loading.hpp create mode 100644 src/client/component/input.cpp create mode 100644 src/client/component/localized_strings.cpp create mode 100644 src/client/component/localized_strings.hpp create mode 100644 src/client/component/logger.cpp create mode 100644 src/client/component/lui.cpp create mode 100644 src/client/component/map_rotation.cpp create mode 100644 src/client/component/map_rotation.hpp create mode 100644 src/client/component/network.cpp create mode 100644 src/client/component/network.hpp create mode 100644 src/client/component/notifies.cpp create mode 100644 src/client/component/notifies.hpp create mode 100644 src/client/component/party.cpp create mode 100644 src/client/component/party.hpp create mode 100644 src/client/component/patches.cpp create mode 100644 src/client/component/ranked.cpp create mode 100644 src/client/component/rcon.cpp create mode 100644 src/client/component/rcon.hpp create mode 100644 src/client/component/redirect.cpp create mode 100644 src/client/component/renderer.cpp create mode 100644 src/client/component/resources.cpp create mode 100644 src/client/component/scheduler.cpp create mode 100644 src/client/component/scheduler.hpp create mode 100644 src/client/component/scripting.cpp create mode 100644 src/client/component/scripting.hpp create mode 100644 src/client/component/security.cpp create mode 100644 src/client/component/server_list.cpp create mode 100644 src/client/component/server_list.hpp create mode 100644 src/client/component/slowmotion.cpp create mode 100644 src/client/component/splash.cpp create mode 100644 src/client/component/stats.cpp create mode 100644 src/client/component/steam_proxy.cpp create mode 100644 src/client/component/survival.cpp create mode 100644 src/client/component/system_check.cpp create mode 100644 src/client/component/system_check.hpp create mode 100644 src/client/component/thread_names.cpp create mode 100644 src/client/component/ui_scripting.cpp create mode 100644 src/client/component/ui_scripting.hpp create mode 100644 src/client/component/virtuallobby.cpp create mode 100644 src/client/game/demonware/bit_buffer.cpp create mode 100644 src/client/game/demonware/bit_buffer.hpp create mode 100644 src/client/game/demonware/byte_buffer.cpp create mode 100644 src/client/game/demonware/byte_buffer.hpp create mode 100644 src/client/game/demonware/data_types.hpp create mode 100644 src/client/game/demonware/keys.cpp create mode 100644 src/client/game/demonware/keys.hpp create mode 100644 src/client/game/demonware/reply.cpp create mode 100644 src/client/game/demonware/reply.hpp create mode 100644 src/client/game/demonware/server_registry.hpp create mode 100644 src/client/game/demonware/servers/auth3_server.cpp create mode 100644 src/client/game/demonware/servers/auth3_server.hpp create mode 100644 src/client/game/demonware/servers/base_server.cpp create mode 100644 src/client/game/demonware/servers/base_server.hpp create mode 100644 src/client/game/demonware/servers/lobby_server.cpp create mode 100644 src/client/game/demonware/servers/lobby_server.hpp create mode 100644 src/client/game/demonware/servers/service_server.hpp create mode 100644 src/client/game/demonware/servers/stun_server.cpp create mode 100644 src/client/game/demonware/servers/stun_server.hpp create mode 100644 src/client/game/demonware/servers/tcp_server.cpp create mode 100644 src/client/game/demonware/servers/tcp_server.hpp create mode 100644 src/client/game/demonware/servers/udp_server.cpp create mode 100644 src/client/game/demonware/servers/udp_server.hpp create mode 100644 src/client/game/demonware/servers/umbrella_server.cpp create mode 100644 src/client/game/demonware/servers/umbrella_server.hpp create mode 100644 src/client/game/demonware/service.hpp create mode 100644 src/client/game/demonware/services.hpp create mode 100644 src/client/game/demonware/services/bdAnticheat.cpp create mode 100644 src/client/game/demonware/services/bdAnticheat.hpp create mode 100644 src/client/game/demonware/services/bdContentStreaming.cpp create mode 100644 src/client/game/demonware/services/bdContentStreaming.hpp create mode 100644 src/client/game/demonware/services/bdCounters.cpp create mode 100644 src/client/game/demonware/services/bdCounters.hpp create mode 100644 src/client/game/demonware/services/bdDML.cpp create mode 100644 src/client/game/demonware/services/bdDML.hpp create mode 100644 src/client/game/demonware/services/bdEventLog.cpp create mode 100644 src/client/game/demonware/services/bdEventLog.hpp create mode 100644 src/client/game/demonware/services/bdFacebook.cpp create mode 100644 src/client/game/demonware/services/bdFacebook.hpp create mode 100644 src/client/game/demonware/services/bdGroups.cpp create mode 100644 src/client/game/demonware/services/bdGroups.hpp create mode 100644 src/client/game/demonware/services/bdMarketing.cpp create mode 100644 src/client/game/demonware/services/bdMarketing.hpp create mode 100644 src/client/game/demonware/services/bdMarketingComms.cpp create mode 100644 src/client/game/demonware/services/bdMarketingComms.hpp create mode 100644 src/client/game/demonware/services/bdMatchMaking2.cpp create mode 100644 src/client/game/demonware/services/bdMatchMaking2.hpp create mode 100644 src/client/game/demonware/services/bdPresence.cpp create mode 100644 src/client/game/demonware/services/bdPresence.hpp create mode 100644 src/client/game/demonware/services/bdProfiles.cpp create mode 100644 src/client/game/demonware/services/bdProfiles.hpp create mode 100644 src/client/game/demonware/services/bdRichPresence.cpp create mode 100644 src/client/game/demonware/services/bdRichPresence.hpp create mode 100644 src/client/game/demonware/services/bdStats.cpp create mode 100644 src/client/game/demonware/services/bdStats.hpp create mode 100644 src/client/game/demonware/services/bdStorage.cpp create mode 100644 src/client/game/demonware/services/bdStorage.hpp create mode 100644 src/client/game/demonware/services/bdTitleUtilities.cpp create mode 100644 src/client/game/demonware/services/bdTitleUtilities.hpp create mode 100644 src/client/game/demonware/services/bdUNK63.cpp create mode 100644 src/client/game/demonware/services/bdUNK63.hpp create mode 100644 src/client/game/demonware/services/bdUNK80.cpp create mode 100644 src/client/game/demonware/services/bdUNK80.hpp create mode 100644 src/client/game/dvars.cpp create mode 100644 src/client/game/dvars.hpp create mode 100644 src/client/game/game.cpp create mode 100644 src/client/game/game.hpp create mode 100644 src/client/game/scripting/functions.cpp create mode 100644 src/client/game/scripting/functions.hpp create mode 100644 src/client/game/structs.hpp create mode 100644 src/client/game/symbols.hpp create mode 100644 src/client/game/ui_scripting/execution.cpp create mode 100644 src/client/game/ui_scripting/execution.hpp create mode 100644 src/client/game/ui_scripting/script_value.cpp create mode 100644 src/client/game/ui_scripting/script_value.hpp create mode 100644 src/client/game/ui_scripting/types.cpp create mode 100644 src/client/game/ui_scripting/types.hpp create mode 100644 src/client/launcher/html/doc_host_ui_handler.cpp create mode 100644 src/client/launcher/html/doc_host_ui_handler.hpp create mode 100644 src/client/launcher/html/html_argument.cpp create mode 100644 src/client/launcher/html/html_argument.hpp create mode 100644 src/client/launcher/html/html_dispatch.cpp create mode 100644 src/client/launcher/html/html_dispatch.hpp create mode 100644 src/client/launcher/html/html_frame.cpp create mode 100644 src/client/launcher/html/html_frame.hpp create mode 100644 src/client/launcher/html/html_window.cpp create mode 100644 src/client/launcher/html/html_window.hpp create mode 100644 src/client/launcher/html/ole_client_site.cpp create mode 100644 src/client/launcher/html/ole_client_site.hpp create mode 100644 src/client/launcher/html/ole_in_place_frame.cpp create mode 100644 src/client/launcher/html/ole_in_place_frame.hpp create mode 100644 src/client/launcher/html/ole_in_place_site.cpp create mode 100644 src/client/launcher/html/ole_in_place_site.hpp create mode 100644 src/client/launcher/launcher.cpp create mode 100644 src/client/launcher/launcher.hpp create mode 100644 src/client/launcher/window.cpp create mode 100644 src/client/launcher/window.hpp create mode 100644 src/client/loader/component_interface.hpp create mode 100644 src/client/loader/component_loader.cpp create mode 100644 src/client/loader/component_loader.hpp create mode 100644 src/client/loader/loader.cpp create mode 100644 src/client/loader/loader.hpp create mode 100644 src/client/loader/seh.cpp create mode 100644 src/client/loader/seh.hpp create mode 100644 src/client/loader/tls.cpp create mode 100644 src/client/loader/tls.hpp create mode 100644 src/client/main.cpp create mode 100644 src/client/proto/auth.proto create mode 100644 src/client/resource.hpp create mode 100644 src/client/resource.rc create mode 100644 src/client/resources/dw/entitlement_config.info create mode 100644 src/client/resources/dw/ffotd-1.22.1.ff create mode 100644 src/client/resources/dw/lootConfig_tu22.csv create mode 100644 src/client/resources/dw/mm.cfg create mode 100644 src/client/resources/dw/motd-english.txt create mode 100644 src/client/resources/dw/playlists_tu22.aggr create mode 100644 src/client/resources/dw/social_tu22.cfg create mode 100644 src/client/resources/dw/winStoreConfig_tu22.csv create mode 100644 src/client/resources/icon.ico create mode 100644 src/client/resources/icon.png create mode 100644 src/client/resources/logo.bmp create mode 100644 src/client/resources/main.html create mode 100644 src/client/resources/splash.bmp create mode 100644 src/client/std_include.cpp create mode 100644 src/client/std_include.hpp create mode 100644 src/client/steam/interface.cpp create mode 100644 src/client/steam/interface.hpp create mode 100644 src/client/steam/interfaces/apps.cpp create mode 100644 src/client/steam/interfaces/apps.hpp create mode 100644 src/client/steam/interfaces/friends.cpp create mode 100644 src/client/steam/interfaces/friends.hpp create mode 100644 src/client/steam/interfaces/game_server.cpp create mode 100644 src/client/steam/interfaces/game_server.hpp create mode 100644 src/client/steam/interfaces/matchmaking.cpp create mode 100644 src/client/steam/interfaces/matchmaking.hpp create mode 100644 src/client/steam/interfaces/networking.cpp create mode 100644 src/client/steam/interfaces/networking.hpp create mode 100644 src/client/steam/interfaces/remote_storage.cpp create mode 100644 src/client/steam/interfaces/remote_storage.hpp create mode 100644 src/client/steam/interfaces/user.cpp create mode 100644 src/client/steam/interfaces/user.hpp create mode 100644 src/client/steam/interfaces/user_stats.cpp create mode 100644 src/client/steam/interfaces/user_stats.hpp create mode 100644 src/client/steam/interfaces/utils.cpp create mode 100644 src/client/steam/interfaces/utils.hpp create mode 100644 src/client/steam/steam.cpp create mode 100644 src/client/steam/steam.hpp create mode 100644 src/common/utils/binary_resource.cpp create mode 100644 src/common/utils/binary_resource.hpp create mode 100644 src/common/utils/compression.cpp create mode 100644 src/common/utils/compression.hpp create mode 100644 src/common/utils/concurrency.hpp create mode 100644 src/common/utils/cryptography.cpp create mode 100644 src/common/utils/cryptography.hpp create mode 100644 src/common/utils/flags.cpp create mode 100644 src/common/utils/flags.hpp create mode 100644 src/common/utils/hook.cpp create mode 100644 src/common/utils/hook.hpp create mode 100644 src/common/utils/http.cpp create mode 100644 src/common/utils/http.hpp create mode 100644 src/common/utils/info_string.cpp create mode 100644 src/common/utils/info_string.hpp create mode 100644 src/common/utils/io.cpp create mode 100644 src/common/utils/io.hpp create mode 100644 src/common/utils/memory.cpp create mode 100644 src/common/utils/memory.hpp create mode 100644 src/common/utils/nt.cpp create mode 100644 src/common/utils/nt.hpp create mode 100644 src/common/utils/signature.cpp create mode 100644 src/common/utils/signature.hpp create mode 100644 src/common/utils/smbios.cpp create mode 100644 src/common/utils/smbios.hpp create mode 100644 src/common/utils/string.cpp create mode 100644 src/common/utils/string.hpp create mode 100644 src/common/utils/thread.cpp create mode 100644 src/common/utils/thread.hpp create mode 100644 src/common/utils/toast.cpp create mode 100644 src/common/utils/toast.hpp create mode 100644 src/runner/debugger.cpp create mode 100644 src/runner/debugger.hpp create mode 100644 src/runner/resource.rc create mode 100644 src/runner/runner.cpp create mode 100644 src/tlsdll/dllmain.cpp create mode 100644 src/tlsdll/resource.rc create mode 100644 tools/protoc.exe diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..130a33a --- /dev/null +++ b/.gitignore @@ -0,0 +1,150 @@ +### Windows + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Shortcuts +*.lnk + +### OSX + +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear on external disk +.Spotlight-V100 +.Trashes + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Visual Studio + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +build + +# Visual Studio 2015 cache/options directory +.vs/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +### IDA +*.id0 +*.id1 +*.id2 +*.nam +*.til + +### Custom user files +# User scripts +user*.bat + +# Premake binary +#premake5.exe \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..adeb262 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,37 @@ +[submodule "deps/asmjit"] + path = deps/asmjit + url = https://github.com/asmjit/asmjit.git +[submodule "deps/discord-rpc"] + path = deps/discord-rpc + url = https://git.alterware.dev/AlterWare/discord-rpc.git +[submodule "deps/gsc-tool"] + path = deps/gsc-tool + url = https://github.com/xensik/gsc-tool.git +[submodule "deps/GSL"] + path = deps/GSL + url = https://github.com/microsoft/GSL.git +[submodule "deps/libtomcrypt"] + path = deps/libtomcrypt + url = https://github.com/libtom/libtomcrypt.git +[submodule "deps/libtommath"] + path = deps/libtommath + url = https://github.com/libtom/libtommath.git +[submodule "deps/minhook"] + path = deps/minhook + url = https://github.com/TsudaKageyu/minhook.git +[submodule "deps/protobuf"] + path = deps/protobuf + url = https://github.com/protocolbuffers/protobuf.git + branch = 3.20.x +[submodule "deps/rapidjson"] + path = deps/rapidjson + url = https://github.com/Tencent/rapidjson.git +[submodule "deps/udis86"] + path = deps/udis86 + url = https://github.com/vmt/udis86.git +[submodule "deps/WinToast"] + path = deps/WinToast + url = https://github.com/mohabouje/WinToast.git +[submodule "deps/zlib"] + path = deps/zlib + url = https://github.com/madler/zlib.git diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e72bfdd --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f1e7d86 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# S1: Client + +This is a client modification for S1! +**NOTE**: You must legally own Call of Duty®: Advanced Warfare® to run this mod. Cracked/Pirated versions of the game are **NOT** supported. + +## Build +- Install [Visual Studio 2022][vs-link] and enable `Desktop development with C++` +- Install [Premake5][premake5-link] and add it to your system PATH +- Clone this repository using [Git][git-link] +- Update the submodules using ``git submodule update --init --recursive`` +- Run Premake with this options ``premake5 vs2022`` (Visual Studio 2022). No other build systems are supported. +- Build via solution file in `build\s1-mod.sln`. + +Only x64 is supported. Do not attempt to build for Windows ARM 64. + +### Premake arguments + +| Argument | Description | +|:----------------------------|:-----------------------------------------------| +| `--copy-to=PATH` | Optional, copy the EXE to a custom folder after build, define the path here if wanted. | +| `--dev-build` | Enable development builds of the client. | + +Contributions are welcome! Please follow the guidelines below: + +- Sign [AlterWare CLA][cla-link] and send a pull request or email your patch at patches@alterware.dev +- Make sure that PRs have only one commit, and deal with one issue only + +## Disclaimer + +This software has been created purely for the purposes of +academic research. It is not intended to be used to attack +other systems. Project maintainers are not responsible or +liable for misuse of the software. Use responsibly. + +[premake5-link]: https://premake.github.io +[git-link]: https://git-scm.com +[vs-link]: https://visualstudio.microsoft.com/vs +[cla-link]: https://alterware.dev/cla diff --git a/deps/GSL b/deps/GSL new file mode 160000 index 0000000..e64c97f --- /dev/null +++ b/deps/GSL @@ -0,0 +1 @@ +Subproject commit e64c97fc2cfc11992098bb38eda932de275e3f4d diff --git a/deps/WinToast b/deps/WinToast new file mode 160000 index 0000000..821c481 --- /dev/null +++ b/deps/WinToast @@ -0,0 +1 @@ +Subproject commit 821c4818ade1aa4da56ac753285c159ce26fd597 diff --git a/deps/asmjit b/deps/asmjit new file mode 160000 index 0000000..118ae6c --- /dev/null +++ b/deps/asmjit @@ -0,0 +1 @@ +Subproject commit 118ae6ced160f68dd142a0d758aa7efb4356196a diff --git a/deps/discord-rpc b/deps/discord-rpc new file mode 160000 index 0000000..963aa9f --- /dev/null +++ b/deps/discord-rpc @@ -0,0 +1 @@ +Subproject commit 963aa9f3e5ce81a4682c6ca3d136cddda614db33 diff --git a/deps/extra/udis86/libudis86/itab.c b/deps/extra/udis86/libudis86/itab.c new file mode 100644 index 0000000..953f3e5 --- /dev/null +++ b/deps/extra/udis86/libudis86/itab.c @@ -0,0 +1,5946 @@ +/* itab.c -- generated by udis86:scripts/ud_itab.py, do no edit */ +#include "decode.h" + +#define GROUP(n) (0x8000 | (n)) +#define INVALID 0 + + +const uint16_t ud_itab__0[] = { + /* 0 */ 15, 16, 17, 18, + /* 4 */ 19, 20, GROUP(1), GROUP(2), + /* 8 */ 964, 965, 966, 967, + /* c */ 968, 969, GROUP(3), GROUP(4), + /* 10 */ 5, 6, 7, 8, + /* 14 */ 9, 10, GROUP(284), GROUP(285), + /* 18 */ 1336, 1337, 1338, 1339, + /* 1c */ 1340, 1341, GROUP(286), GROUP(287), + /* 20 */ 49, 50, 51, 52, + /* 24 */ 53, 54, INVALID, GROUP(288), + /* 28 */ 1407, 1408, 1409, 1410, + /* 2c */ 1411, 1412, INVALID, GROUP(289), + /* 30 */ 1487, 1488, 1489, 1490, + /* 34 */ 1491, 1492, INVALID, GROUP(290), + /* 38 */ 100, 101, 102, 103, + /* 3c */ 104, 105, INVALID, GROUP(291), + /* 40 */ 699, 700, 701, 702, + /* 44 */ 703, 704, 705, 706, + /* 48 */ 175, 176, 177, 178, + /* 4c */ 179, 180, 181, 182, + /* 50 */ 1246, 1247, 1248, 1249, + /* 54 */ 1250, 1251, 1252, 1253, + /* 58 */ 1101, 1102, 1103, 1104, + /* 5c */ 1105, 1106, 1107, 1108, + /* 60 */ GROUP(292), GROUP(295), GROUP(298), GROUP(299), + /* 64 */ INVALID, INVALID, INVALID, INVALID, + /* 68 */ 1254, 697, 1256, 698, + /* 6c */ 709, GROUP(300), 982, GROUP(301), + /* 70 */ 726, 728, 730, 732, + /* 74 */ 734, 736, 738, 740, + /* 78 */ 742, 744, 746, 748, + /* 7c */ 750, 752, 754, 756, + /* 80 */ GROUP(302), GROUP(303), GROUP(304), GROUP(313), + /* 84 */ 1433, 1434, 1475, 1476, + /* 88 */ 828, 829, 830, 831, + /* 8c */ 832, 770, 833, GROUP(314), + /* 90 */ 1477, 1478, 1479, 1480, + /* 94 */ 1481, 1482, 1483, 1484, + /* 98 */ GROUP(315), GROUP(316), GROUP(317), 1470, + /* 9c */ GROUP(318), GROUP(322), 1310, 766, + /* a0 */ 834, 835, 836, 837, + /* a4 */ 922, GROUP(326), 114, GROUP(327), + /* a8 */ 1435, 1436, 1402, GROUP(328), + /* ac */ 790, GROUP(329), 1346, GROUP(330), + /* b0 */ 838, 839, 840, 841, + /* b4 */ 842, 843, 844, 845, + /* b8 */ 846, 847, 848, 849, + /* bc */ 850, 851, 852, 853, + /* c0 */ GROUP(331), GROUP(332), 1301, 1302, + /* c4 */ GROUP(333), GROUP(403), GROUP(405), GROUP(406), + /* c8 */ 200, 776, 1303, 1304, + /* cc */ 713, 714, GROUP(407), GROUP(408), + /* d0 */ GROUP(409), GROUP(410), GROUP(411), GROUP(412), + /* d4 */ GROUP(413), GROUP(414), GROUP(415), 1486, + /* d8 */ GROUP(416), GROUP(419), GROUP(422), GROUP(425), + /* dc */ GROUP(428), GROUP(431), GROUP(434), GROUP(437), + /* e0 */ 794, 795, 796, GROUP(440), + /* e4 */ 690, 691, 978, 979, + /* e8 */ 72, 763, GROUP(441), 765, + /* ec */ 692, 693, 980, 981, + /* f0 */ 789, 712, 1299, 1300, + /* f4 */ 687, 83, GROUP(442), GROUP(443), + /* f8 */ 77, 1395, 81, 1398, + /* fc */ 78, 1396, GROUP(444), GROUP(445), +}; + +static const uint16_t ud_itab__1[] = { + /* 0 */ 1240, INVALID, +}; + +static const uint16_t ud_itab__2[] = { + /* 0 */ 1096, INVALID, +}; + +static const uint16_t ud_itab__3[] = { + /* 0 */ 1241, INVALID, +}; + +static const uint16_t ud_itab__4[] = { + /* 0 */ GROUP(5), GROUP(6), 767, 797, + /* 4 */ INVALID, 1426, 82, 1431, + /* 8 */ 716, 1471, INVALID, 1444, + /* c */ INVALID, GROUP(27), 430, GROUP(28), + /* 10 */ GROUP(29), GROUP(30), GROUP(31), GROUP(34), + /* 14 */ GROUP(35), GROUP(36), GROUP(37), GROUP(40), + /* 18 */ GROUP(41), 955, 956, 957, + /* 1c */ 958, 959, 960, 961, + /* 20 */ 854, 855, 856, 857, + /* 24 */ INVALID, INVALID, INVALID, INVALID, + /* 28 */ GROUP(42), GROUP(43), GROUP(44), GROUP(45), + /* 2c */ GROUP(46), GROUP(47), GROUP(48), GROUP(49), + /* 30 */ 1472, 1297, 1295, 1296, + /* 34 */ GROUP(50), GROUP(52), INVALID, 1514, + /* 38 */ GROUP(54), INVALID, GROUP(116), INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, + /* 40 */ 84, 85, 86, 87, + /* 44 */ 88, 89, 90, 91, + /* 48 */ 92, 93, 94, 95, + /* 4c */ 96, 97, 98, 99, + /* 50 */ GROUP(143), GROUP(144), GROUP(145), GROUP(146), + /* 54 */ GROUP(147), GROUP(148), GROUP(149), GROUP(150), + /* 58 */ GROUP(151), GROUP(152), GROUP(153), GROUP(154), + /* 5c */ GROUP(155), GROUP(156), GROUP(157), GROUP(158), + /* 60 */ GROUP(159), GROUP(160), GROUP(161), GROUP(162), + /* 64 */ GROUP(163), GROUP(164), GROUP(165), GROUP(166), + /* 68 */ GROUP(167), GROUP(168), GROUP(169), GROUP(170), + /* 6c */ GROUP(171), GROUP(172), GROUP(173), GROUP(176), + /* 70 */ GROUP(177), GROUP(178), GROUP(182), GROUP(186), + /* 74 */ GROUP(191), GROUP(192), GROUP(193), 199, + /* 78 */ GROUP(194), GROUP(195), INVALID, INVALID, + /* 7c */ GROUP(196), GROUP(197), GROUP(198), GROUP(201), + /* 80 */ 727, 729, 731, 733, + /* 84 */ 735, 737, 739, 741, + /* 88 */ 743, 745, 747, 749, + /* 8c */ 751, 753, 755, 757, + /* 90 */ 1350, 1351, 1352, 1353, + /* 94 */ 1354, 1355, 1356, 1357, + /* 98 */ 1358, 1359, 1360, 1361, + /* 9c */ 1362, 1363, 1364, 1365, + /* a0 */ 1245, 1100, 131, 1670, + /* a4 */ 1375, 1376, GROUP(202), GROUP(207), + /* a8 */ 1244, 1099, 1305, 1675, + /* ac */ 1377, 1378, GROUP(215), 694, + /* b0 */ 122, 123, 775, 1673, + /* b4 */ 772, 773, 940, 941, + /* b8 */ GROUP(221), INVALID, GROUP(222), 1671, + /* bc */ 1659, 1660, 930, 931, + /* c0 */ 1473, 1474, GROUP(223), 904, + /* c4 */ GROUP(224), GROUP(225), GROUP(226), GROUP(227), + /* c8 */ 1661, 1662, 1663, 1664, + /* cc */ 1665, 1666, 1667, 1668, + /* d0 */ GROUP(236), GROUP(237), GROUP(238), GROUP(239), + /* d4 */ GROUP(240), GROUP(241), GROUP(242), GROUP(243), + /* d8 */ GROUP(244), GROUP(245), GROUP(246), GROUP(247), + /* dc */ GROUP(248), GROUP(249), GROUP(250), GROUP(251), + /* e0 */ GROUP(252), GROUP(253), GROUP(254), GROUP(255), + /* e4 */ GROUP(256), GROUP(257), GROUP(258), GROUP(259), + /* e8 */ GROUP(260), GROUP(261), GROUP(262), GROUP(263), + /* ec */ GROUP(264), GROUP(265), GROUP(266), GROUP(267), + /* f0 */ GROUP(268), GROUP(269), GROUP(270), GROUP(271), + /* f4 */ GROUP(272), GROUP(273), GROUP(274), GROUP(275), + /* f8 */ GROUP(277), GROUP(278), GROUP(279), GROUP(280), + /* fc */ GROUP(281), GROUP(282), GROUP(283), INVALID, +}; + +static const uint16_t ud_itab__5[] = { + /* 0 */ 1384, 1406, 786, 798, + /* 4 */ 1453, 1454, INVALID, INVALID, +}; + +static const uint16_t ud_itab__6[] = { + /* 0 */ GROUP(7), GROUP(8), +}; + +static const uint16_t ud_itab__7[] = { + /* 0 */ 1374, 1383, 785, 774, + /* 4 */ 1385, INVALID, 787, 719, +}; + +static const uint16_t ud_itab__8[] = { + /* 0 */ GROUP(9), GROUP(14), GROUP(15), GROUP(16), + /* 4 */ 1386, INVALID, 788, GROUP(25), +}; + +static const uint16_t ud_itab__9[] = { + /* 0 */ INVALID, GROUP(10), GROUP(11), GROUP(12), + /* 4 */ GROUP(13), INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__10[] = { + /* 0 */ INVALID, 1455, INVALID, +}; + +static const uint16_t ud_itab__11[] = { + /* 0 */ INVALID, 1461, INVALID, +}; + +static const uint16_t ud_itab__12[] = { + /* 0 */ INVALID, 1462, INVALID, +}; + +static const uint16_t ud_itab__13[] = { + /* 0 */ INVALID, 1463, INVALID, +}; + +static const uint16_t ud_itab__14[] = { + /* 0 */ 824, 952, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__15[] = { + /* 0 */ 1485, 1508, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__16[] = { + /* 0 */ GROUP(17), GROUP(18), GROUP(19), GROUP(20), + /* 4 */ GROUP(21), GROUP(22), GROUP(23), GROUP(24), +}; + +static const uint16_t ud_itab__17[] = { + /* 0 */ 1466, INVALID, INVALID, +}; + +static const uint16_t ud_itab__18[] = { + /* 0 */ 1467, INVALID, INVALID, +}; + +static const uint16_t ud_itab__19[] = { + /* 0 */ 1468, INVALID, INVALID, +}; + +static const uint16_t ud_itab__20[] = { + /* 0 */ 1469, INVALID, INVALID, +}; + +static const uint16_t ud_itab__21[] = { + /* 0 */ 1397, INVALID, INVALID, +}; + +static const uint16_t ud_itab__22[] = { + /* 0 */ 80, INVALID, INVALID, +}; + +static const uint16_t ud_itab__23[] = { + /* 0 */ 1399, INVALID, INVALID, +}; + +static const uint16_t ud_itab__24[] = { + /* 0 */ 720, INVALID, INVALID, +}; + +static const uint16_t ud_itab__25[] = { + /* 0 */ 1425, GROUP(26), INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__26[] = { + /* 0 */ 1298, INVALID, INVALID, +}; + +static const uint16_t ud_itab__27[] = { + /* 0 */ 1119, 1120, 1121, 1122, + /* 4 */ 1123, 1124, 1125, 1126, +}; + +static const uint16_t ud_itab__28[] = { + /* 0 */ INVALID, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, + /* 8 */ INVALID, INVALID, INVALID, INVALID, + /* c */ 1216, 1217, INVALID, INVALID, + /* 10 */ INVALID, INVALID, INVALID, INVALID, + /* 14 */ INVALID, INVALID, INVALID, INVALID, + /* 18 */ INVALID, INVALID, INVALID, INVALID, + /* 1c */ 1218, 1219, INVALID, INVALID, + /* 20 */ INVALID, INVALID, INVALID, INVALID, + /* 24 */ INVALID, INVALID, INVALID, INVALID, + /* 28 */ INVALID, INVALID, INVALID, INVALID, + /* 2c */ INVALID, INVALID, INVALID, INVALID, + /* 30 */ INVALID, INVALID, INVALID, INVALID, + /* 34 */ INVALID, INVALID, INVALID, INVALID, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, + /* 40 */ INVALID, INVALID, INVALID, INVALID, + /* 44 */ INVALID, INVALID, INVALID, INVALID, + /* 48 */ INVALID, INVALID, INVALID, INVALID, + /* 4c */ INVALID, INVALID, INVALID, INVALID, + /* 50 */ INVALID, INVALID, INVALID, INVALID, + /* 54 */ INVALID, INVALID, INVALID, INVALID, + /* 58 */ INVALID, INVALID, INVALID, INVALID, + /* 5c */ INVALID, INVALID, INVALID, INVALID, + /* 60 */ INVALID, INVALID, INVALID, INVALID, + /* 64 */ INVALID, INVALID, INVALID, INVALID, + /* 68 */ INVALID, INVALID, INVALID, INVALID, + /* 6c */ INVALID, INVALID, INVALID, INVALID, + /* 70 */ INVALID, INVALID, INVALID, INVALID, + /* 74 */ INVALID, INVALID, INVALID, INVALID, + /* 78 */ INVALID, INVALID, INVALID, INVALID, + /* 7c */ INVALID, INVALID, INVALID, INVALID, + /* 80 */ INVALID, INVALID, INVALID, INVALID, + /* 84 */ INVALID, INVALID, INVALID, INVALID, + /* 88 */ INVALID, INVALID, 1220, INVALID, + /* 8c */ INVALID, INVALID, 1221, INVALID, + /* 90 */ 1222, INVALID, INVALID, INVALID, + /* 94 */ 1223, INVALID, 1224, 1225, + /* 98 */ INVALID, INVALID, 1226, INVALID, + /* 9c */ INVALID, INVALID, 1227, INVALID, + /* a0 */ 1228, INVALID, INVALID, INVALID, + /* a4 */ 1229, INVALID, 1230, 1231, + /* a8 */ INVALID, INVALID, 1232, INVALID, + /* ac */ INVALID, INVALID, 1233, INVALID, + /* b0 */ 1234, INVALID, INVALID, INVALID, + /* b4 */ 1235, INVALID, 1236, 1237, + /* b8 */ INVALID, INVALID, INVALID, 1238, + /* bc */ INVALID, INVALID, INVALID, 1239, + /* c0 */ INVALID, INVALID, INVALID, INVALID, + /* c4 */ INVALID, INVALID, INVALID, INVALID, + /* c8 */ INVALID, INVALID, INVALID, INVALID, + /* cc */ INVALID, INVALID, INVALID, INVALID, + /* d0 */ INVALID, INVALID, INVALID, INVALID, + /* d4 */ INVALID, INVALID, INVALID, INVALID, + /* d8 */ INVALID, INVALID, INVALID, INVALID, + /* dc */ INVALID, INVALID, INVALID, INVALID, + /* e0 */ INVALID, INVALID, INVALID, INVALID, + /* e4 */ INVALID, INVALID, INVALID, INVALID, + /* e8 */ INVALID, INVALID, INVALID, INVALID, + /* ec */ INVALID, INVALID, INVALID, INVALID, + /* f0 */ INVALID, INVALID, INVALID, INVALID, + /* f4 */ INVALID, INVALID, INVALID, INVALID, + /* f8 */ INVALID, INVALID, INVALID, INVALID, + /* fc */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__29[] = { + /* 0 */ 936, 925, 928, 932, +}; + +static const uint16_t ud_itab__30[] = { + /* 0 */ 938, 926, 929, 934, +}; + +static const uint16_t ud_itab__31[] = { + /* 0 */ GROUP(32), GROUP(33), +}; + +static const uint16_t ud_itab__32[] = { + /* 0 */ 892, 1563, 1571, 888, +}; + +static const uint16_t ud_itab__33[] = { + /* 0 */ 896, 1561, 1569, INVALID, +}; + +static const uint16_t ud_itab__34[] = { + /* 0 */ 894, INVALID, INVALID, 890, +}; + +static const uint16_t ud_itab__35[] = { + /* 0 */ 1449, INVALID, INVALID, 1451, +}; + +static const uint16_t ud_itab__36[] = { + /* 0 */ 1447, INVALID, INVALID, 1445, +}; + +static const uint16_t ud_itab__37[] = { + /* 0 */ GROUP(38), GROUP(39), +}; + +static const uint16_t ud_itab__38[] = { + /* 0 */ 882, INVALID, 1567, 878, +}; + +static const uint16_t ud_itab__39[] = { + /* 0 */ 886, INVALID, 1565, INVALID, +}; + +static const uint16_t ud_itab__40[] = { + /* 0 */ 884, INVALID, INVALID, 880, +}; + +static const uint16_t ud_itab__41[] = { + /* 0 */ 1127, 1128, 1129, 1130, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__42[] = { + /* 0 */ 862, INVALID, INVALID, 858, +}; + +static const uint16_t ud_itab__43[] = { + /* 0 */ 864, INVALID, INVALID, 860, +}; + +static const uint16_t ud_itab__44[] = { + /* 0 */ 141, 152, 154, 142, +}; + +static const uint16_t ud_itab__45[] = { + /* 0 */ 907, INVALID, INVALID, 905, +}; + +static const uint16_t ud_itab__46[] = { + /* 0 */ 165, 166, 168, 162, +}; + +static const uint16_t ud_itab__47[] = { + /* 0 */ 147, 148, 158, 138, +}; + +static const uint16_t ud_itab__48[] = { + /* 0 */ 1442, INVALID, INVALID, 1440, +}; + +static const uint16_t ud_itab__49[] = { + /* 0 */ 129, INVALID, INVALID, 127, +}; + +static const uint16_t ud_itab__50[] = { + /* 0 */ 1427, GROUP(51), +}; + +static const uint16_t ud_itab__51[] = { + /* 0 */ INVALID, 1428, INVALID, +}; + +static const uint16_t ud_itab__52[] = { + /* 0 */ 1429, GROUP(53), +}; + +static const uint16_t ud_itab__53[] = { + /* 0 */ INVALID, 1430, INVALID, +}; + +static const uint16_t ud_itab__54[] = { + /* 0 */ GROUP(67), GROUP(68), GROUP(63), GROUP(64), + /* 4 */ GROUP(65), GROUP(66), GROUP(86), GROUP(90), + /* 8 */ GROUP(69), GROUP(70), GROUP(71), GROUP(72), + /* c */ INVALID, INVALID, INVALID, INVALID, + /* 10 */ GROUP(73), INVALID, INVALID, INVALID, + /* 14 */ GROUP(75), GROUP(76), INVALID, GROUP(77), + /* 18 */ INVALID, INVALID, INVALID, INVALID, + /* 1c */ GROUP(78), GROUP(79), GROUP(80), INVALID, + /* 20 */ GROUP(81), GROUP(82), GROUP(83), GROUP(84), + /* 24 */ GROUP(85), GROUP(108), INVALID, INVALID, + /* 28 */ GROUP(87), GROUP(88), GROUP(89), GROUP(74), + /* 2c */ INVALID, INVALID, INVALID, INVALID, + /* 30 */ GROUP(91), GROUP(92), GROUP(93), GROUP(94), + /* 34 */ GROUP(95), GROUP(96), INVALID, GROUP(97), + /* 38 */ GROUP(98), GROUP(99), GROUP(100), GROUP(101), + /* 3c */ GROUP(102), GROUP(103), GROUP(104), GROUP(105), + /* 40 */ GROUP(106), GROUP(107), INVALID, INVALID, + /* 44 */ INVALID, INVALID, INVALID, INVALID, + /* 48 */ INVALID, INVALID, INVALID, INVALID, + /* 4c */ INVALID, INVALID, INVALID, INVALID, + /* 50 */ INVALID, INVALID, INVALID, INVALID, + /* 54 */ INVALID, INVALID, INVALID, INVALID, + /* 58 */ INVALID, INVALID, INVALID, INVALID, + /* 5c */ INVALID, INVALID, INVALID, INVALID, + /* 60 */ INVALID, INVALID, INVALID, INVALID, + /* 64 */ INVALID, INVALID, INVALID, INVALID, + /* 68 */ INVALID, INVALID, INVALID, INVALID, + /* 6c */ INVALID, INVALID, INVALID, INVALID, + /* 70 */ INVALID, INVALID, INVALID, INVALID, + /* 74 */ INVALID, INVALID, INVALID, INVALID, + /* 78 */ INVALID, INVALID, INVALID, INVALID, + /* 7c */ INVALID, INVALID, INVALID, INVALID, + /* 80 */ GROUP(55), GROUP(59), INVALID, INVALID, + /* 84 */ INVALID, INVALID, INVALID, INVALID, + /* 88 */ INVALID, INVALID, INVALID, INVALID, + /* 8c */ INVALID, INVALID, INVALID, INVALID, + /* 90 */ INVALID, INVALID, INVALID, INVALID, + /* 94 */ INVALID, INVALID, INVALID, INVALID, + /* 98 */ INVALID, INVALID, INVALID, INVALID, + /* 9c */ INVALID, INVALID, INVALID, INVALID, + /* a0 */ INVALID, INVALID, INVALID, INVALID, + /* a4 */ INVALID, INVALID, INVALID, INVALID, + /* a8 */ INVALID, INVALID, INVALID, INVALID, + /* ac */ INVALID, INVALID, INVALID, INVALID, + /* b0 */ INVALID, INVALID, INVALID, INVALID, + /* b4 */ INVALID, INVALID, INVALID, INVALID, + /* b8 */ INVALID, INVALID, INVALID, INVALID, + /* bc */ INVALID, INVALID, INVALID, INVALID, + /* c0 */ INVALID, INVALID, INVALID, INVALID, + /* c4 */ INVALID, INVALID, INVALID, INVALID, + /* c8 */ INVALID, INVALID, INVALID, INVALID, + /* cc */ INVALID, INVALID, INVALID, INVALID, + /* d0 */ INVALID, INVALID, INVALID, INVALID, + /* d4 */ INVALID, INVALID, INVALID, INVALID, + /* d8 */ INVALID, INVALID, INVALID, GROUP(109), + /* dc */ GROUP(110), GROUP(111), GROUP(112), GROUP(113), + /* e0 */ INVALID, INVALID, INVALID, INVALID, + /* e4 */ INVALID, INVALID, INVALID, INVALID, + /* e8 */ INVALID, INVALID, INVALID, INVALID, + /* ec */ INVALID, INVALID, INVALID, INVALID, + /* f0 */ GROUP(114), GROUP(115), INVALID, INVALID, + /* f4 */ INVALID, INVALID, INVALID, INVALID, + /* f8 */ INVALID, INVALID, INVALID, INVALID, + /* fc */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__55[] = { + /* 0 */ INVALID, INVALID, INVALID, GROUP(56), +}; + +static const uint16_t ud_itab__56[] = { + /* 0 */ GROUP(57), GROUP(58), +}; + +static const uint16_t ud_itab__57[] = { + /* 0 */ INVALID, 717, INVALID, +}; + +static const uint16_t ud_itab__58[] = { + /* 0 */ INVALID, 718, INVALID, +}; + +static const uint16_t ud_itab__59[] = { + /* 0 */ INVALID, INVALID, INVALID, GROUP(60), +}; + +static const uint16_t ud_itab__60[] = { + /* 0 */ GROUP(61), GROUP(62), +}; + +static const uint16_t ud_itab__61[] = { + /* 0 */ INVALID, 721, INVALID, +}; + +static const uint16_t ud_itab__62[] = { + /* 0 */ INVALID, 722, INVALID, +}; + +static const uint16_t ud_itab__63[] = { + /* 0 */ 1588, INVALID, INVALID, 1589, +}; + +static const uint16_t ud_itab__64[] = { + /* 0 */ 1591, INVALID, INVALID, 1592, +}; + +static const uint16_t ud_itab__65[] = { + /* 0 */ 1594, INVALID, INVALID, 1595, +}; + +static const uint16_t ud_itab__66[] = { + /* 0 */ 1597, INVALID, INVALID, 1598, +}; + +static const uint16_t ud_itab__67[] = { + /* 0 */ 1582, INVALID, INVALID, 1583, +}; + +static const uint16_t ud_itab__68[] = { + /* 0 */ 1585, INVALID, INVALID, 1586, +}; + +static const uint16_t ud_itab__69[] = { + /* 0 */ 1606, INVALID, INVALID, 1607, +}; + +static const uint16_t ud_itab__70[] = { + /* 0 */ 1612, INVALID, INVALID, 1613, +}; + +static const uint16_t ud_itab__71[] = { + /* 0 */ 1609, INVALID, INVALID, 1610, +}; + +static const uint16_t ud_itab__72[] = { + /* 0 */ 1615, INVALID, INVALID, 1616, +}; + +static const uint16_t ud_itab__73[] = { + /* 0 */ INVALID, INVALID, INVALID, 1621, +}; + +static const uint16_t ud_itab__74[] = { + /* 0 */ INVALID, INVALID, INVALID, 1683, +}; + +static const uint16_t ud_itab__75[] = { + /* 0 */ INVALID, INVALID, INVALID, 1657, +}; + +static const uint16_t ud_itab__76[] = { + /* 0 */ INVALID, INVALID, INVALID, 1656, +}; + +static const uint16_t ud_itab__77[] = { + /* 0 */ INVALID, INVALID, INVALID, 1711, +}; + +static const uint16_t ud_itab__78[] = { + /* 0 */ 1573, INVALID, INVALID, 1574, +}; + +static const uint16_t ud_itab__79[] = { + /* 0 */ 1576, INVALID, INVALID, 1577, +}; + +static const uint16_t ud_itab__80[] = { + /* 0 */ 1579, INVALID, INVALID, 1580, +}; + +static const uint16_t ud_itab__81[] = { + /* 0 */ INVALID, INVALID, INVALID, 1685, +}; + +static const uint16_t ud_itab__82[] = { + /* 0 */ INVALID, INVALID, INVALID, 1687, +}; + +static const uint16_t ud_itab__83[] = { + /* 0 */ INVALID, INVALID, INVALID, 1689, +}; + +static const uint16_t ud_itab__84[] = { + /* 0 */ INVALID, INVALID, INVALID, 1691, +}; + +static const uint16_t ud_itab__85[] = { + /* 0 */ INVALID, INVALID, INVALID, 1693, +}; + +static const uint16_t ud_itab__86[] = { + /* 0 */ 1600, INVALID, INVALID, 1601, +}; + +static const uint16_t ud_itab__87[] = { + /* 0 */ INVALID, INVALID, INVALID, 1622, +}; + +static const uint16_t ud_itab__88[] = { + /* 0 */ INVALID, INVALID, INVALID, 1708, +}; + +static const uint16_t ud_itab__89[] = { + /* 0 */ INVALID, INVALID, INVALID, 1681, +}; + +static const uint16_t ud_itab__90[] = { + /* 0 */ 1603, INVALID, INVALID, 1604, +}; + +static const uint16_t ud_itab__91[] = { + /* 0 */ INVALID, INVALID, INVALID, 1696, +}; + +static const uint16_t ud_itab__92[] = { + /* 0 */ INVALID, INVALID, INVALID, 1698, +}; + +static const uint16_t ud_itab__93[] = { + /* 0 */ INVALID, INVALID, INVALID, 1700, +}; + +static const uint16_t ud_itab__94[] = { + /* 0 */ INVALID, INVALID, INVALID, 1702, +}; + +static const uint16_t ud_itab__95[] = { + /* 0 */ INVALID, INVALID, INVALID, 1704, +}; + +static const uint16_t ud_itab__96[] = { + /* 0 */ INVALID, INVALID, INVALID, 1706, +}; + +static const uint16_t ud_itab__97[] = { + /* 0 */ INVALID, INVALID, INVALID, 1717, +}; + +static const uint16_t ud_itab__98[] = { + /* 0 */ INVALID, INVALID, INVALID, 1624, +}; + +static const uint16_t ud_itab__99[] = { + /* 0 */ INVALID, INVALID, INVALID, 1626, +}; + +static const uint16_t ud_itab__100[] = { + /* 0 */ INVALID, INVALID, INVALID, 1628, +}; + +static const uint16_t ud_itab__101[] = { + /* 0 */ INVALID, INVALID, INVALID, 1630, +}; + +static const uint16_t ud_itab__102[] = { + /* 0 */ INVALID, INVALID, INVALID, 1632, +}; + +static const uint16_t ud_itab__103[] = { + /* 0 */ INVALID, INVALID, INVALID, 1634, +}; + +static const uint16_t ud_itab__104[] = { + /* 0 */ INVALID, INVALID, INVALID, 1638, +}; + +static const uint16_t ud_itab__105[] = { + /* 0 */ INVALID, INVALID, INVALID, 1636, +}; + +static const uint16_t ud_itab__106[] = { + /* 0 */ INVALID, INVALID, INVALID, 1640, +}; + +static const uint16_t ud_itab__107[] = { + /* 0 */ INVALID, INVALID, INVALID, 1642, +}; + +static const uint16_t ud_itab__108[] = { + /* 0 */ INVALID, INVALID, INVALID, 1695, +}; + +static const uint16_t ud_itab__109[] = { + /* 0 */ INVALID, INVALID, INVALID, 45, +}; + +static const uint16_t ud_itab__110[] = { + /* 0 */ INVALID, INVALID, INVALID, 41, +}; + +static const uint16_t ud_itab__111[] = { + /* 0 */ INVALID, INVALID, INVALID, 43, +}; + +static const uint16_t ud_itab__112[] = { + /* 0 */ INVALID, INVALID, INVALID, 37, +}; + +static const uint16_t ud_itab__113[] = { + /* 0 */ INVALID, INVALID, INVALID, 39, +}; + +static const uint16_t ud_itab__114[] = { + /* 0 */ 1723, 1725, INVALID, INVALID, +}; + +static const uint16_t ud_itab__115[] = { + /* 0 */ 1724, 1726, INVALID, INVALID, +}; + +static const uint16_t ud_itab__116[] = { + /* 0 */ INVALID, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, + /* 8 */ GROUP(117), GROUP(118), GROUP(119), GROUP(120), + /* c */ GROUP(121), GROUP(122), GROUP(123), GROUP(124), + /* 10 */ INVALID, INVALID, INVALID, INVALID, + /* 14 */ GROUP(125), GROUP(126), GROUP(127), GROUP(129), + /* 18 */ INVALID, INVALID, INVALID, INVALID, + /* 1c */ INVALID, INVALID, INVALID, INVALID, + /* 20 */ GROUP(130), GROUP(131), GROUP(132), INVALID, + /* 24 */ INVALID, INVALID, INVALID, INVALID, + /* 28 */ INVALID, INVALID, INVALID, INVALID, + /* 2c */ INVALID, INVALID, INVALID, INVALID, + /* 30 */ INVALID, INVALID, INVALID, INVALID, + /* 34 */ INVALID, INVALID, INVALID, INVALID, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, + /* 40 */ GROUP(134), GROUP(135), GROUP(136), INVALID, + /* 44 */ GROUP(137), INVALID, INVALID, INVALID, + /* 48 */ INVALID, INVALID, INVALID, INVALID, + /* 4c */ INVALID, INVALID, INVALID, INVALID, + /* 50 */ INVALID, INVALID, INVALID, INVALID, + /* 54 */ INVALID, INVALID, INVALID, INVALID, + /* 58 */ INVALID, INVALID, INVALID, INVALID, + /* 5c */ INVALID, INVALID, INVALID, INVALID, + /* 60 */ GROUP(139), GROUP(140), GROUP(141), GROUP(142), + /* 64 */ INVALID, INVALID, INVALID, INVALID, + /* 68 */ INVALID, INVALID, INVALID, INVALID, + /* 6c */ INVALID, INVALID, INVALID, INVALID, + /* 70 */ INVALID, INVALID, INVALID, INVALID, + /* 74 */ INVALID, INVALID, INVALID, INVALID, + /* 78 */ INVALID, INVALID, INVALID, INVALID, + /* 7c */ INVALID, INVALID, INVALID, INVALID, + /* 80 */ INVALID, INVALID, INVALID, INVALID, + /* 84 */ INVALID, INVALID, INVALID, INVALID, + /* 88 */ INVALID, INVALID, INVALID, INVALID, + /* 8c */ INVALID, INVALID, INVALID, INVALID, + /* 90 */ INVALID, INVALID, INVALID, INVALID, + /* 94 */ INVALID, INVALID, INVALID, INVALID, + /* 98 */ INVALID, INVALID, INVALID, INVALID, + /* 9c */ INVALID, INVALID, INVALID, INVALID, + /* a0 */ INVALID, INVALID, INVALID, INVALID, + /* a4 */ INVALID, INVALID, INVALID, INVALID, + /* a8 */ INVALID, INVALID, INVALID, INVALID, + /* ac */ INVALID, INVALID, INVALID, INVALID, + /* b0 */ INVALID, INVALID, INVALID, INVALID, + /* b4 */ INVALID, INVALID, INVALID, INVALID, + /* b8 */ INVALID, INVALID, INVALID, INVALID, + /* bc */ INVALID, INVALID, INVALID, INVALID, + /* c0 */ INVALID, INVALID, INVALID, INVALID, + /* c4 */ INVALID, INVALID, INVALID, INVALID, + /* c8 */ INVALID, INVALID, INVALID, INVALID, + /* cc */ INVALID, INVALID, INVALID, INVALID, + /* d0 */ INVALID, INVALID, INVALID, INVALID, + /* d4 */ INVALID, INVALID, INVALID, INVALID, + /* d8 */ INVALID, INVALID, INVALID, INVALID, + /* dc */ INVALID, INVALID, INVALID, GROUP(138), + /* e0 */ INVALID, INVALID, INVALID, INVALID, + /* e4 */ INVALID, INVALID, INVALID, INVALID, + /* e8 */ INVALID, INVALID, INVALID, INVALID, + /* ec */ INVALID, INVALID, INVALID, INVALID, + /* f0 */ INVALID, INVALID, INVALID, INVALID, + /* f4 */ INVALID, INVALID, INVALID, INVALID, + /* f8 */ INVALID, INVALID, INVALID, INVALID, + /* fc */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__117[] = { + /* 0 */ INVALID, INVALID, INVALID, 1644, +}; + +static const uint16_t ud_itab__118[] = { + /* 0 */ INVALID, INVALID, INVALID, 1646, +}; + +static const uint16_t ud_itab__119[] = { + /* 0 */ INVALID, INVALID, INVALID, 1648, +}; + +static const uint16_t ud_itab__120[] = { + /* 0 */ INVALID, INVALID, INVALID, 1650, +}; + +static const uint16_t ud_itab__121[] = { + /* 0 */ INVALID, INVALID, INVALID, 1654, +}; + +static const uint16_t ud_itab__122[] = { + /* 0 */ INVALID, INVALID, INVALID, 1652, +}; + +static const uint16_t ud_itab__123[] = { + /* 0 */ INVALID, INVALID, INVALID, 1677, +}; + +static const uint16_t ud_itab__124[] = { + /* 0 */ 1618, INVALID, INVALID, 1619, +}; + +static const uint16_t ud_itab__125[] = { + /* 0 */ INVALID, INVALID, INVALID, 1045, +}; + +static const uint16_t ud_itab__126[] = { + /* 0 */ INVALID, INVALID, INVALID, 1056, +}; + +static const uint16_t ud_itab__127[] = { + /* 0 */ INVALID, INVALID, INVALID, GROUP(128), +}; + +static const uint16_t ud_itab__128[] = { + /* 0 */ 1047, 1049, 1051, +}; + +static const uint16_t ud_itab__129[] = { + /* 0 */ INVALID, INVALID, INVALID, 201, +}; + +static const uint16_t ud_itab__130[] = { + /* 0 */ INVALID, INVALID, INVALID, 1058, +}; + +static const uint16_t ud_itab__131[] = { + /* 0 */ INVALID, INVALID, INVALID, 1557, +}; + +static const uint16_t ud_itab__132[] = { + /* 0 */ INVALID, INVALID, INVALID, GROUP(133), +}; + +static const uint16_t ud_itab__133[] = { + /* 0 */ 1062, 1063, 1064, +}; + +static const uint16_t ud_itab__134[] = { + /* 0 */ INVALID, INVALID, INVALID, 197, +}; + +static const uint16_t ud_itab__135[] = { + /* 0 */ INVALID, INVALID, INVALID, 195, +}; + +static const uint16_t ud_itab__136[] = { + /* 0 */ INVALID, INVALID, INVALID, 1679, +}; + +static const uint16_t ud_itab__137[] = { + /* 0 */ INVALID, INVALID, INVALID, 1512, +}; + +static const uint16_t ud_itab__138[] = { + /* 0 */ INVALID, INVALID, INVALID, 47, +}; + +static const uint16_t ud_itab__139[] = { + /* 0 */ INVALID, INVALID, INVALID, 1715, +}; + +static const uint16_t ud_itab__140[] = { + /* 0 */ INVALID, INVALID, INVALID, 1713, +}; + +static const uint16_t ud_itab__141[] = { + /* 0 */ INVALID, INVALID, INVALID, 1721, +}; + +static const uint16_t ud_itab__142[] = { + /* 0 */ INVALID, INVALID, INVALID, 1719, +}; + +static const uint16_t ud_itab__143[] = { + /* 0 */ 900, INVALID, INVALID, 898, +}; + +static const uint16_t ud_itab__144[] = { + /* 0 */ 1387, 1391, 1393, 1389, +}; + +static const uint16_t ud_itab__145[] = { + /* 0 */ 1306, INVALID, 1308, INVALID, +}; + +static const uint16_t ud_itab__146[] = { + /* 0 */ 1291, INVALID, 1293, INVALID, +}; + +static const uint16_t ud_itab__147[] = { + /* 0 */ 61, INVALID, INVALID, 59, +}; + +static const uint16_t ud_itab__148[] = { + /* 0 */ 65, INVALID, INVALID, 63, +}; + +static const uint16_t ud_itab__149[] = { + /* 0 */ 976, INVALID, INVALID, 974, +}; + +static const uint16_t ud_itab__150[] = { + /* 0 */ 1499, INVALID, INVALID, 1497, +}; + +static const uint16_t ud_itab__151[] = { + /* 0 */ 27, 29, 31, 25, +}; + +static const uint16_t ud_itab__152[] = { + /* 0 */ 946, 948, 950, 944, +}; + +static const uint16_t ud_itab__153[] = { + /* 0 */ 145, 150, 156, 139, +}; + +static const uint16_t ud_itab__154[] = { + /* 0 */ 134, INVALID, 163, 143, +}; + +static const uint16_t ud_itab__155[] = { + /* 0 */ 1419, 1421, 1423, 1417, +}; + +static const uint16_t ud_itab__156[] = { + /* 0 */ 818, 820, 822, 816, +}; + +static const uint16_t ud_itab__157[] = { + /* 0 */ 189, 191, 193, 187, +}; + +static const uint16_t ud_itab__158[] = { + /* 0 */ 802, 804, 806, 800, +}; + +static const uint16_t ud_itab__159[] = { + /* 0 */ 1209, INVALID, INVALID, 1207, +}; + +static const uint16_t ud_itab__160[] = { + /* 0 */ 1212, INVALID, INVALID, 1210, +}; + +static const uint16_t ud_itab__161[] = { + /* 0 */ 1215, INVALID, INVALID, 1213, +}; + +static const uint16_t ud_itab__162[] = { + /* 0 */ 987, INVALID, INVALID, 985, +}; + +static const uint16_t ud_itab__163[] = { + /* 0 */ 1038, INVALID, INVALID, 1036, +}; + +static const uint16_t ud_itab__164[] = { + /* 0 */ 1041, INVALID, INVALID, 1039, +}; + +static const uint16_t ud_itab__165[] = { + /* 0 */ 1044, INVALID, INVALID, 1042, +}; + +static const uint16_t ud_itab__166[] = { + /* 0 */ 993, INVALID, INVALID, 991, +}; + +static const uint16_t ud_itab__167[] = { + /* 0 */ 1200, INVALID, INVALID, 1198, +}; + +static const uint16_t ud_itab__168[] = { + /* 0 */ 1203, INVALID, INVALID, 1201, +}; + +static const uint16_t ud_itab__169[] = { + /* 0 */ 1206, INVALID, INVALID, 1204, +}; + +static const uint16_t ud_itab__170[] = { + /* 0 */ 990, INVALID, INVALID, 988, +}; + +static const uint16_t ud_itab__171[] = { + /* 0 */ INVALID, INVALID, INVALID, 1547, +}; + +static const uint16_t ud_itab__172[] = { + /* 0 */ INVALID, INVALID, INVALID, 1545, +}; + +static const uint16_t ud_itab__173[] = { + /* 0 */ GROUP(174), INVALID, INVALID, GROUP(175), +}; + +static const uint16_t ud_itab__174[] = { + /* 0 */ 866, 867, 910, +}; + +static const uint16_t ud_itab__175[] = { + /* 0 */ 868, 870, 911, +}; + +static const uint16_t ud_itab__176[] = { + /* 0 */ 920, INVALID, 1522, 1517, +}; + +static const uint16_t ud_itab__177[] = { + /* 0 */ 1134, 1537, 1535, 1539, +}; + +static const uint16_t ud_itab__178[] = { + /* 0 */ INVALID, INVALID, GROUP(179), INVALID, + /* 4 */ GROUP(180), INVALID, GROUP(181), INVALID, +}; + +static const uint16_t ud_itab__179[] = { + /* 0 */ 1159, INVALID, INVALID, 1163, +}; + +static const uint16_t ud_itab__180[] = { + /* 0 */ 1152, INVALID, INVALID, 1150, +}; + +static const uint16_t ud_itab__181[] = { + /* 0 */ 1138, INVALID, INVALID, 1137, +}; + +static const uint16_t ud_itab__182[] = { + /* 0 */ INVALID, INVALID, GROUP(183), INVALID, + /* 4 */ GROUP(184), INVALID, GROUP(185), INVALID, +}; + +static const uint16_t ud_itab__183[] = { + /* 0 */ 1165, INVALID, INVALID, 1169, +}; + +static const uint16_t ud_itab__184[] = { + /* 0 */ 1153, INVALID, INVALID, 1157, +}; + +static const uint16_t ud_itab__185[] = { + /* 0 */ 1142, INVALID, INVALID, 1141, +}; + +static const uint16_t ud_itab__186[] = { + /* 0 */ INVALID, INVALID, GROUP(187), GROUP(188), + /* 4 */ INVALID, INVALID, GROUP(189), GROUP(190), +}; + +static const uint16_t ud_itab__187[] = { + /* 0 */ 1171, INVALID, INVALID, 1175, +}; + +static const uint16_t ud_itab__188[] = { + /* 0 */ INVALID, INVALID, INVALID, 1543, +}; + +static const uint16_t ud_itab__189[] = { + /* 0 */ 1146, INVALID, INVALID, 1145, +}; + +static const uint16_t ud_itab__190[] = { + /* 0 */ INVALID, INVALID, INVALID, 1541, +}; + +static const uint16_t ud_itab__191[] = { + /* 0 */ 1027, INVALID, INVALID, 1028, +}; + +static const uint16_t ud_itab__192[] = { + /* 0 */ 1030, INVALID, INVALID, 1031, +}; + +static const uint16_t ud_itab__193[] = { + /* 0 */ 1033, INVALID, INVALID, 1034, +}; + +static const uint16_t ud_itab__194[] = { + /* 0 */ INVALID, 1464, INVALID, +}; + +static const uint16_t ud_itab__195[] = { + /* 0 */ INVALID, 1465, INVALID, +}; + +static const uint16_t ud_itab__196[] = { + /* 0 */ INVALID, 1551, INVALID, 1549, +}; + +static const uint16_t ud_itab__197[] = { + /* 0 */ INVALID, 1555, INVALID, 1553, +}; + +static const uint16_t ud_itab__198[] = { + /* 0 */ GROUP(199), INVALID, 916, GROUP(200), +}; + +static const uint16_t ud_itab__199[] = { + /* 0 */ 872, 873, 913, +}; + +static const uint16_t ud_itab__200[] = { + /* 0 */ 874, 876, 914, +}; + +static const uint16_t ud_itab__201[] = { + /* 0 */ 921, INVALID, 1524, 1515, +}; + +static const uint16_t ud_itab__202[] = { + /* 0 */ INVALID, GROUP(203), +}; + +static const uint16_t ud_itab__203[] = { + /* 0 */ GROUP(204), GROUP(205), GROUP(206), INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__204[] = { + /* 0 */ 825, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__205[] = { + /* 0 */ 1509, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__206[] = { + /* 0 */ 1510, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__207[] = { + /* 0 */ INVALID, GROUP(208), +}; + +static const uint16_t ud_itab__208[] = { + /* 0 */ GROUP(209), GROUP(210), GROUP(211), GROUP(212), + /* 4 */ GROUP(213), GROUP(214), INVALID, INVALID, +}; + +static const uint16_t ud_itab__209[] = { + /* 0 */ 1511, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__210[] = { + /* 0 */ 1501, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__211[] = { + /* 0 */ 1502, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__212[] = { + /* 0 */ 1503, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__213[] = { + /* 0 */ 1504, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__214[] = { + /* 0 */ 1505, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__215[] = { + /* 0 */ GROUP(216), GROUP(217), +}; + +static const uint16_t ud_itab__216[] = { + /* 0 */ 683, 682, 768, 1400, + /* 4 */ 1507, 1506, INVALID, 79, +}; + +static const uint16_t ud_itab__217[] = { + /* 0 */ INVALID, INVALID, INVALID, INVALID, + /* 4 */ INVALID, GROUP(218), GROUP(219), GROUP(220), +}; + +static const uint16_t ud_itab__218[] = { + /* 0 */ 777, 778, 779, 780, + /* 4 */ 781, 782, 783, 784, +}; + +static const uint16_t ud_itab__219[] = { + /* 0 */ 808, 809, 810, 811, + /* 4 */ 812, 813, 814, 815, +}; + +static const uint16_t ud_itab__220[] = { + /* 0 */ 1366, 1367, 1368, 1369, + /* 4 */ 1370, 1371, 1372, 1373, +}; + +static const uint16_t ud_itab__221[] = { + /* 0 */ INVALID, INVALID, 1710, INVALID, +}; + +static const uint16_t ud_itab__222[] = { + /* 0 */ INVALID, INVALID, INVALID, INVALID, + /* 4 */ 1669, 1676, 1674, 1672, +}; + +static const uint16_t ud_itab__223[] = { + /* 0 */ 112, 117, 120, 110, +}; + +static const uint16_t ud_itab__224[] = { + /* 0 */ 1059, INVALID, INVALID, 1060, +}; + +static const uint16_t ud_itab__225[] = { + /* 0 */ 1055, INVALID, INVALID, 1053, +}; + +static const uint16_t ud_itab__226[] = { + /* 0 */ 1381, INVALID, INVALID, 1379, +}; + +static const uint16_t ud_itab__227[] = { + /* 0 */ GROUP(228), GROUP(235), +}; + +static const uint16_t ud_itab__228[] = { + /* 0 */ INVALID, GROUP(229), INVALID, INVALID, + /* 4 */ INVALID, INVALID, GROUP(230), GROUP(234), +}; + +static const uint16_t ud_itab__229[] = { + /* 0 */ 124, 125, 126, +}; + +static const uint16_t ud_itab__230[] = { + /* 0 */ GROUP(231), INVALID, GROUP(232), GROUP(233), +}; + +static const uint16_t ud_itab__231[] = { + /* 0 */ INVALID, 1459, INVALID, +}; + +static const uint16_t ud_itab__232[] = { + /* 0 */ INVALID, 1458, INVALID, +}; + +static const uint16_t ud_itab__233[] = { + /* 0 */ INVALID, 1457, INVALID, +}; + +static const uint16_t ud_itab__234[] = { + /* 0 */ INVALID, 1460, INVALID, +}; + +static const uint16_t ud_itab__235[] = { + /* 0 */ INVALID, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, 1456, INVALID, +}; + +static const uint16_t ud_itab__236[] = { + /* 0 */ INVALID, 35, INVALID, 33, +}; + +static const uint16_t ud_itab__237[] = { + /* 0 */ 1160, INVALID, INVALID, 1161, +}; + +static const uint16_t ud_itab__238[] = { + /* 0 */ 1166, INVALID, INVALID, 1167, +}; + +static const uint16_t ud_itab__239[] = { + /* 0 */ 1172, INVALID, INVALID, 1173, +}; + +static const uint16_t ud_itab__240[] = { + /* 0 */ 1527, INVALID, INVALID, 1528, +}; + +static const uint16_t ud_itab__241[] = { + /* 0 */ 1093, INVALID, INVALID, 1094, +}; + +static const uint16_t ud_itab__242[] = { + /* 0 */ INVALID, 1521, 1526, 918, +}; + +static const uint16_t ud_itab__243[] = { + /* 0 */ 1086, INVALID, INVALID, 1084, +}; + +static const uint16_t ud_itab__244[] = { + /* 0 */ 1192, INVALID, INVALID, 1193, +}; + +static const uint16_t ud_itab__245[] = { + /* 0 */ 1195, INVALID, INVALID, 1196, +}; + +static const uint16_t ud_itab__246[] = { + /* 0 */ 1083, INVALID, INVALID, 1081, +}; + +static const uint16_t ud_itab__247[] = { + /* 0 */ 1017, INVALID, INVALID, 1015, +}; + +static const uint16_t ud_itab__248[] = { + /* 0 */ 1009, INVALID, INVALID, 1010, +}; + +static const uint16_t ud_itab__249[] = { + /* 0 */ 1012, INVALID, INVALID, 1013, +}; + +static const uint16_t ud_itab__250[] = { + /* 0 */ 1075, INVALID, INVALID, 1076, +}; + +static const uint16_t ud_itab__251[] = { + /* 0 */ 1020, INVALID, INVALID, 1018, +}; + +static const uint16_t ud_itab__252[] = { + /* 0 */ 1023, INVALID, INVALID, 1021, +}; + +static const uint16_t ud_itab__253[] = { + /* 0 */ 1147, INVALID, INVALID, 1148, +}; + +static const uint16_t ud_itab__254[] = { + /* 0 */ 1156, INVALID, INVALID, 1154, +}; + +static const uint16_t ud_itab__255[] = { + /* 0 */ 1026, INVALID, INVALID, 1024, +}; + +static const uint16_t ud_itab__256[] = { + /* 0 */ 1087, INVALID, INVALID, 1088, +}; + +static const uint16_t ud_itab__257[] = { + /* 0 */ 1092, INVALID, INVALID, 1090, +}; + +static const uint16_t ud_itab__258[] = { + /* 0 */ INVALID, 136, 132, 160, +}; + +static const uint16_t ud_itab__259[] = { + /* 0 */ 909, INVALID, INVALID, 902, +}; + +static const uint16_t ud_itab__260[] = { + /* 0 */ 1186, INVALID, INVALID, 1187, +}; + +static const uint16_t ud_itab__261[] = { + /* 0 */ 1189, INVALID, INVALID, 1190, +}; + +static const uint16_t ud_itab__262[] = { + /* 0 */ 1080, INVALID, INVALID, 1078, +}; + +static const uint16_t ud_itab__263[] = { + /* 0 */ 1118, INVALID, INVALID, 1116, +}; + +static const uint16_t ud_itab__264[] = { + /* 0 */ 1003, INVALID, INVALID, 1004, +}; + +static const uint16_t ud_itab__265[] = { + /* 0 */ 1006, INVALID, INVALID, 1007, +}; + +static const uint16_t ud_itab__266[] = { + /* 0 */ 1074, INVALID, INVALID, 1072, +}; + +static const uint16_t ud_itab__267[] = { + /* 0 */ 1266, INVALID, INVALID, 1264, +}; + +static const uint16_t ud_itab__268[] = { + /* 0 */ INVALID, 1559, INVALID, INVALID, +}; + +static const uint16_t ud_itab__269[] = { + /* 0 */ 1136, INVALID, INVALID, 1135, +}; + +static const uint16_t ud_itab__270[] = { + /* 0 */ 1140, INVALID, INVALID, 1139, +}; + +static const uint16_t ud_itab__271[] = { + /* 0 */ 1144, INVALID, INVALID, 1143, +}; + +static const uint16_t ud_itab__272[] = { + /* 0 */ 1533, INVALID, INVALID, 1534, +}; + +static const uint16_t ud_itab__273[] = { + /* 0 */ 1069, INVALID, INVALID, 1070, +}; + +static const uint16_t ud_itab__274[] = { + /* 0 */ 1133, INVALID, INVALID, 1131, +}; + +static const uint16_t ud_itab__275[] = { + /* 0 */ INVALID, GROUP(276), +}; + +static const uint16_t ud_itab__276[] = { + /* 0 */ 799, INVALID, INVALID, 1519, +}; + +static const uint16_t ud_itab__277[] = { + /* 0 */ 1179, INVALID, INVALID, 1177, +}; + +static const uint16_t ud_itab__278[] = { + /* 0 */ 1182, INVALID, INVALID, 1180, +}; + +static const uint16_t ud_itab__279[] = { + /* 0 */ 1183, INVALID, INVALID, 1184, +}; + +static const uint16_t ud_itab__280[] = { + /* 0 */ 1532, INVALID, INVALID, 1530, +}; + +static const uint16_t ud_itab__281[] = { + /* 0 */ 996, INVALID, INVALID, 994, +}; + +static const uint16_t ud_itab__282[] = { + /* 0 */ 997, INVALID, INVALID, 998, +}; + +static const uint16_t ud_itab__283[] = { + /* 0 */ 1000, INVALID, INVALID, 1001, +}; + +static const uint16_t ud_itab__284[] = { + /* 0 */ 1242, INVALID, +}; + +static const uint16_t ud_itab__285[] = { + /* 0 */ 1097, INVALID, +}; + +static const uint16_t ud_itab__286[] = { + /* 0 */ 1243, INVALID, +}; + +static const uint16_t ud_itab__287[] = { + /* 0 */ 1098, INVALID, +}; + +static const uint16_t ud_itab__288[] = { + /* 0 */ 173, INVALID, +}; + +static const uint16_t ud_itab__289[] = { + /* 0 */ 174, INVALID, +}; + +static const uint16_t ud_itab__290[] = { + /* 0 */ 1, INVALID, +}; + +static const uint16_t ud_itab__291[] = { + /* 0 */ 4, INVALID, +}; + +static const uint16_t ud_itab__292[] = { + /* 0 */ GROUP(293), GROUP(294), INVALID, +}; + +static const uint16_t ud_itab__293[] = { + /* 0 */ 1257, INVALID, +}; + +static const uint16_t ud_itab__294[] = { + /* 0 */ 1258, INVALID, +}; + +static const uint16_t ud_itab__295[] = { + /* 0 */ GROUP(296), GROUP(297), INVALID, +}; + +static const uint16_t ud_itab__296[] = { + /* 0 */ 1110, INVALID, +}; + +static const uint16_t ud_itab__297[] = { + /* 0 */ 1111, INVALID, +}; + +static const uint16_t ud_itab__298[] = { + /* 0 */ 1658, INVALID, +}; + +static const uint16_t ud_itab__299[] = { + /* 0 */ 67, 68, +}; + +static const uint16_t ud_itab__300[] = { + /* 0 */ 710, 711, INVALID, +}; + +static const uint16_t ud_itab__301[] = { + /* 0 */ 983, 984, INVALID, +}; + +static const uint16_t ud_itab__302[] = { + /* 0 */ 21, 970, 11, 1342, + /* 4 */ 55, 1413, 1493, 106, +}; + +static const uint16_t ud_itab__303[] = { + /* 0 */ 23, 971, 13, 1343, + /* 4 */ 57, 1414, 1494, 108, +}; + +static const uint16_t ud_itab__304[] = { + /* 0 */ GROUP(305), GROUP(306), GROUP(307), GROUP(308), + /* 4 */ GROUP(309), GROUP(310), GROUP(311), GROUP(312), +}; + +static const uint16_t ud_itab__305[] = { + /* 0 */ 22, INVALID, +}; + +static const uint16_t ud_itab__306[] = { + /* 0 */ 972, INVALID, +}; + +static const uint16_t ud_itab__307[] = { + /* 0 */ 12, INVALID, +}; + +static const uint16_t ud_itab__308[] = { + /* 0 */ 1344, INVALID, +}; + +static const uint16_t ud_itab__309[] = { + /* 0 */ 56, INVALID, +}; + +static const uint16_t ud_itab__310[] = { + /* 0 */ 1415, INVALID, +}; + +static const uint16_t ud_itab__311[] = { + /* 0 */ 1495, INVALID, +}; + +static const uint16_t ud_itab__312[] = { + /* 0 */ 107, INVALID, +}; + +static const uint16_t ud_itab__313[] = { + /* 0 */ 24, 973, 14, 1345, + /* 4 */ 58, 1416, 1496, 109, +}; + +static const uint16_t ud_itab__314[] = { + /* 0 */ 1109, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__315[] = { + /* 0 */ 74, 75, 76, +}; + +static const uint16_t ud_itab__316[] = { + /* 0 */ 170, 171, 172, +}; + +static const uint16_t ud_itab__317[] = { + /* 0 */ 73, INVALID, +}; + +static const uint16_t ud_itab__318[] = { + /* 0 */ GROUP(319), GROUP(320), GROUP(321), +}; + +static const uint16_t ud_itab__319[] = { + /* 0 */ 1259, 1260, +}; + +static const uint16_t ud_itab__320[] = { + /* 0 */ 1261, 1262, +}; + +static const uint16_t ud_itab__321[] = { + /* 0 */ INVALID, 1263, +}; + +static const uint16_t ud_itab__322[] = { + /* 0 */ GROUP(323), GROUP(324), GROUP(325), +}; + +static const uint16_t ud_itab__323[] = { + /* 0 */ 1112, INVALID, +}; + +static const uint16_t ud_itab__324[] = { + /* 0 */ 1113, 1114, +}; + +static const uint16_t ud_itab__325[] = { + /* 0 */ INVALID, 1115, +}; + +static const uint16_t ud_itab__326[] = { + /* 0 */ 923, 924, 927, +}; + +static const uint16_t ud_itab__327[] = { + /* 0 */ 115, 116, 119, +}; + +static const uint16_t ud_itab__328[] = { + /* 0 */ 1403, 1404, 1405, +}; + +static const uint16_t ud_itab__329[] = { + /* 0 */ 791, 792, 793, +}; + +static const uint16_t ud_itab__330[] = { + /* 0 */ 1347, 1348, 1349, +}; + +static const uint16_t ud_itab__331[] = { + /* 0 */ 1279, 1286, 1267, 1275, + /* 4 */ 1327, 1334, 1318, 1313, +}; + +static const uint16_t ud_itab__332[] = { + /* 0 */ 1284, 1287, 1268, 1274, + /* 4 */ 1323, 1330, 1319, 1315, +}; + +static const uint16_t ud_itab__333[] = { + /* 0 */ GROUP(334), GROUP(335), INVALID, INVALID, + /* 4 */ INVALID, GROUP(341), GROUP(357), GROUP(369), + /* 8 */ INVALID, GROUP(394), INVALID, INVALID, + /* c */ INVALID, GROUP(399), INVALID, INVALID, +}; + +static const uint16_t ud_itab__334[] = { + /* 0 */ 771, INVALID, +}; + +static const uint16_t ud_itab__335[] = { + /* 0 */ INVALID, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, + /* 8 */ INVALID, INVALID, INVALID, INVALID, + /* c */ INVALID, INVALID, INVALID, INVALID, + /* 10 */ 937, 939, GROUP(336), 895, + /* 14 */ 1450, 1448, GROUP(337), 885, + /* 18 */ INVALID, INVALID, INVALID, INVALID, + /* 1c */ INVALID, INVALID, INVALID, INVALID, + /* 20 */ INVALID, INVALID, INVALID, INVALID, + /* 24 */ INVALID, INVALID, INVALID, INVALID, + /* 28 */ 863, 865, INVALID, 908, + /* 2c */ INVALID, INVALID, 1443, 130, + /* 30 */ INVALID, INVALID, INVALID, INVALID, + /* 34 */ INVALID, INVALID, INVALID, INVALID, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, + /* 40 */ INVALID, INVALID, INVALID, INVALID, + /* 44 */ INVALID, INVALID, INVALID, INVALID, + /* 48 */ INVALID, INVALID, INVALID, INVALID, + /* 4c */ INVALID, INVALID, INVALID, INVALID, + /* 50 */ 901, 1388, 1307, 1292, + /* 54 */ 62, 66, 977, 1500, + /* 58 */ 28, 947, 146, 135, + /* 5c */ 1420, 819, 190, 803, + /* 60 */ INVALID, INVALID, INVALID, INVALID, + /* 64 */ INVALID, INVALID, INVALID, INVALID, + /* 68 */ INVALID, INVALID, INVALID, INVALID, + /* 6c */ INVALID, INVALID, INVALID, INVALID, + /* 70 */ INVALID, INVALID, INVALID, INVALID, + /* 74 */ INVALID, INVALID, INVALID, GROUP(340), + /* 78 */ INVALID, INVALID, INVALID, INVALID, + /* 7c */ INVALID, INVALID, INVALID, INVALID, + /* 80 */ INVALID, INVALID, INVALID, INVALID, + /* 84 */ INVALID, INVALID, INVALID, INVALID, + /* 88 */ INVALID, INVALID, INVALID, INVALID, + /* 8c */ INVALID, INVALID, INVALID, INVALID, + /* 90 */ INVALID, INVALID, INVALID, INVALID, + /* 94 */ INVALID, INVALID, INVALID, INVALID, + /* 98 */ INVALID, INVALID, INVALID, INVALID, + /* 9c */ INVALID, INVALID, INVALID, INVALID, + /* a0 */ INVALID, INVALID, INVALID, INVALID, + /* a4 */ INVALID, INVALID, INVALID, INVALID, + /* a8 */ INVALID, INVALID, INVALID, INVALID, + /* ac */ INVALID, INVALID, GROUP(338), INVALID, + /* b0 */ INVALID, INVALID, INVALID, INVALID, + /* b4 */ INVALID, INVALID, INVALID, INVALID, + /* b8 */ INVALID, INVALID, INVALID, INVALID, + /* bc */ INVALID, INVALID, INVALID, INVALID, + /* c0 */ INVALID, INVALID, 113, INVALID, + /* c4 */ INVALID, INVALID, 1382, INVALID, + /* c8 */ INVALID, INVALID, INVALID, INVALID, + /* cc */ INVALID, INVALID, INVALID, INVALID, + /* d0 */ INVALID, INVALID, INVALID, INVALID, + /* d4 */ INVALID, INVALID, INVALID, INVALID, + /* d8 */ INVALID, INVALID, INVALID, INVALID, + /* dc */ INVALID, INVALID, INVALID, INVALID, + /* e0 */ INVALID, INVALID, INVALID, INVALID, + /* e4 */ INVALID, INVALID, INVALID, INVALID, + /* e8 */ INVALID, INVALID, INVALID, INVALID, + /* ec */ INVALID, INVALID, INVALID, INVALID, + /* f0 */ INVALID, INVALID, INVALID, INVALID, + /* f4 */ INVALID, INVALID, INVALID, INVALID, + /* f8 */ INVALID, INVALID, INVALID, INVALID, + /* fc */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__336[] = { + /* 0 */ 893, 897, +}; + +static const uint16_t ud_itab__337[] = { + /* 0 */ 883, 887, +}; + +static const uint16_t ud_itab__338[] = { + /* 0 */ GROUP(339), INVALID, +}; + +static const uint16_t ud_itab__339[] = { + /* 0 */ INVALID, INVALID, INVALID, 1401, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__340[] = { + /* 0 */ 1742, 1743, +}; + +static const uint16_t ud_itab__341[] = { + /* 0 */ INVALID, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, + /* 8 */ INVALID, INVALID, INVALID, INVALID, + /* c */ INVALID, INVALID, INVALID, INVALID, + /* 10 */ 933, 935, GROUP(342), 891, + /* 14 */ 1452, 1446, GROUP(343), 881, + /* 18 */ INVALID, INVALID, INVALID, INVALID, + /* 1c */ INVALID, INVALID, INVALID, INVALID, + /* 20 */ INVALID, INVALID, INVALID, INVALID, + /* 24 */ INVALID, INVALID, INVALID, INVALID, + /* 28 */ 859, 861, INVALID, 906, + /* 2c */ INVALID, INVALID, 1441, 128, + /* 30 */ INVALID, INVALID, INVALID, INVALID, + /* 34 */ INVALID, INVALID, INVALID, INVALID, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, + /* 40 */ INVALID, INVALID, INVALID, INVALID, + /* 44 */ INVALID, INVALID, INVALID, INVALID, + /* 48 */ INVALID, INVALID, INVALID, INVALID, + /* 4c */ INVALID, INVALID, INVALID, INVALID, + /* 50 */ 899, 1390, INVALID, INVALID, + /* 54 */ 60, 64, 975, 1498, + /* 58 */ 26, 945, 140, 144, + /* 5c */ 1418, 817, 188, 801, + /* 60 */ 1208, 1211, 1214, 986, + /* 64 */ 1037, 1040, 1043, 992, + /* 68 */ 1199, 1202, 1205, 989, + /* 6c */ 1548, 1546, GROUP(344), 1518, + /* 70 */ 1540, GROUP(345), GROUP(347), GROUP(349), + /* 74 */ 1029, 1032, 1035, INVALID, + /* 78 */ INVALID, INVALID, INVALID, INVALID, + /* 7c */ 1550, 1554, GROUP(351), 1516, + /* 80 */ INVALID, INVALID, INVALID, INVALID, + /* 84 */ INVALID, INVALID, INVALID, INVALID, + /* 88 */ INVALID, INVALID, INVALID, INVALID, + /* 8c */ INVALID, INVALID, INVALID, INVALID, + /* 90 */ INVALID, INVALID, INVALID, INVALID, + /* 94 */ INVALID, INVALID, INVALID, INVALID, + /* 98 */ INVALID, INVALID, INVALID, INVALID, + /* 9c */ INVALID, INVALID, INVALID, INVALID, + /* a0 */ INVALID, INVALID, INVALID, INVALID, + /* a4 */ INVALID, INVALID, INVALID, INVALID, + /* a8 */ INVALID, INVALID, INVALID, INVALID, + /* ac */ INVALID, INVALID, INVALID, INVALID, + /* b0 */ INVALID, INVALID, INVALID, INVALID, + /* b4 */ INVALID, INVALID, INVALID, INVALID, + /* b8 */ INVALID, INVALID, INVALID, INVALID, + /* bc */ INVALID, INVALID, INVALID, INVALID, + /* c0 */ INVALID, INVALID, 111, INVALID, + /* c4 */ 1061, 1054, 1380, INVALID, + /* c8 */ INVALID, INVALID, INVALID, INVALID, + /* cc */ INVALID, INVALID, INVALID, INVALID, + /* d0 */ 34, 1162, 1168, 1174, + /* d4 */ 1529, 1095, 919, GROUP(352), + /* d8 */ 1194, 1197, 1082, 1016, + /* dc */ 1011, 1014, 1077, 1019, + /* e0 */ 1022, 1149, 1155, 1025, + /* e4 */ 1089, 1091, 161, 903, + /* e8 */ 1188, 1191, 1079, 1117, + /* ec */ 1005, 1008, 1073, 1265, + /* f0 */ INVALID, GROUP(353), GROUP(354), GROUP(355), + /* f4 */ INVALID, 1071, 1132, GROUP(356), + /* f8 */ 1178, 1181, 1185, 1531, + /* fc */ 995, 999, 1002, INVALID, +}; + +static const uint16_t ud_itab__342[] = { + /* 0 */ 889, INVALID, +}; + +static const uint16_t ud_itab__343[] = { + /* 0 */ 879, INVALID, +}; + +static const uint16_t ud_itab__344[] = { + /* 0 */ 869, 871, 912, +}; + +static const uint16_t ud_itab__345[] = { + /* 0 */ INVALID, INVALID, 1164, INVALID, + /* 4 */ 1151, INVALID, GROUP(346), INVALID, +}; + +static const uint16_t ud_itab__346[] = { + /* 0 */ 1756, INVALID, +}; + +static const uint16_t ud_itab__347[] = { + /* 0 */ INVALID, INVALID, 1170, INVALID, + /* 4 */ 1158, INVALID, GROUP(348), INVALID, +}; + +static const uint16_t ud_itab__348[] = { + /* 0 */ 1758, INVALID, +}; + +static const uint16_t ud_itab__349[] = { + /* 0 */ INVALID, INVALID, 1176, 1544, + /* 4 */ INVALID, INVALID, GROUP(350), 1542, +}; + +static const uint16_t ud_itab__350[] = { + /* 0 */ 1760, INVALID, +}; + +static const uint16_t ud_itab__351[] = { + /* 0 */ 875, 877, 915, +}; + +static const uint16_t ud_itab__352[] = { + /* 0 */ 1085, INVALID, +}; + +static const uint16_t ud_itab__353[] = { + /* 0 */ 1755, INVALID, +}; + +static const uint16_t ud_itab__354[] = { + /* 0 */ 1757, INVALID, +}; + +static const uint16_t ud_itab__355[] = { + /* 0 */ 1759, INVALID, +}; + +static const uint16_t ud_itab__356[] = { + /* 0 */ INVALID, 1520, +}; + +static const uint16_t ud_itab__357[] = { + /* 0 */ 1584, 1587, 1590, 1593, + /* 4 */ 1596, 1599, 1602, 1605, + /* 8 */ 1608, 1614, 1611, 1617, + /* c */ GROUP(358), GROUP(359), GROUP(360), GROUP(361), + /* 10 */ INVALID, INVALID, INVALID, INVALID, + /* 14 */ INVALID, INVALID, INVALID, 1712, + /* 18 */ GROUP(362), GROUP(363), INVALID, INVALID, + /* 1c */ 1575, 1578, 1581, INVALID, + /* 20 */ 1686, 1688, 1690, 1692, + /* 24 */ 1694, INVALID, INVALID, INVALID, + /* 28 */ 1623, 1709, 1682, 1684, + /* 2c */ GROUP(365), GROUP(366), GROUP(367), GROUP(368), + /* 30 */ 1697, 1699, 1701, 1703, + /* 34 */ 1705, 1707, INVALID, 1718, + /* 38 */ 1625, 1627, 1629, 1631, + /* 3c */ 1633, 1635, 1639, 1637, + /* 40 */ 1641, 1643, INVALID, INVALID, + /* 44 */ INVALID, INVALID, INVALID, INVALID, + /* 48 */ INVALID, INVALID, INVALID, INVALID, + /* 4c */ INVALID, INVALID, INVALID, INVALID, + /* 50 */ INVALID, INVALID, INVALID, INVALID, + /* 54 */ INVALID, INVALID, INVALID, INVALID, + /* 58 */ INVALID, INVALID, INVALID, INVALID, + /* 5c */ INVALID, INVALID, INVALID, INVALID, + /* 60 */ INVALID, INVALID, INVALID, INVALID, + /* 64 */ INVALID, INVALID, INVALID, INVALID, + /* 68 */ INVALID, INVALID, INVALID, INVALID, + /* 6c */ INVALID, INVALID, INVALID, INVALID, + /* 70 */ INVALID, INVALID, INVALID, INVALID, + /* 74 */ INVALID, INVALID, INVALID, INVALID, + /* 78 */ INVALID, INVALID, INVALID, INVALID, + /* 7c */ INVALID, INVALID, INVALID, INVALID, + /* 80 */ INVALID, INVALID, INVALID, INVALID, + /* 84 */ INVALID, INVALID, INVALID, INVALID, + /* 88 */ INVALID, INVALID, INVALID, INVALID, + /* 8c */ INVALID, INVALID, INVALID, INVALID, + /* 90 */ INVALID, INVALID, INVALID, INVALID, + /* 94 */ INVALID, INVALID, INVALID, INVALID, + /* 98 */ INVALID, INVALID, INVALID, INVALID, + /* 9c */ INVALID, INVALID, INVALID, INVALID, + /* a0 */ INVALID, INVALID, INVALID, INVALID, + /* a4 */ INVALID, INVALID, INVALID, INVALID, + /* a8 */ INVALID, INVALID, INVALID, INVALID, + /* ac */ INVALID, INVALID, INVALID, INVALID, + /* b0 */ INVALID, INVALID, INVALID, INVALID, + /* b4 */ INVALID, INVALID, INVALID, INVALID, + /* b8 */ INVALID, INVALID, INVALID, INVALID, + /* bc */ INVALID, INVALID, INVALID, INVALID, + /* c0 */ INVALID, INVALID, INVALID, INVALID, + /* c4 */ INVALID, INVALID, INVALID, INVALID, + /* c8 */ INVALID, INVALID, INVALID, INVALID, + /* cc */ INVALID, INVALID, INVALID, INVALID, + /* d0 */ INVALID, INVALID, INVALID, INVALID, + /* d4 */ INVALID, INVALID, INVALID, INVALID, + /* d8 */ INVALID, INVALID, INVALID, 46, + /* dc */ 42, 44, 38, 40, + /* e0 */ INVALID, INVALID, INVALID, INVALID, + /* e4 */ INVALID, INVALID, INVALID, INVALID, + /* e8 */ INVALID, INVALID, INVALID, INVALID, + /* ec */ INVALID, INVALID, INVALID, INVALID, + /* f0 */ INVALID, INVALID, INVALID, INVALID, + /* f4 */ INVALID, INVALID, INVALID, INVALID, + /* f8 */ INVALID, INVALID, INVALID, INVALID, + /* fc */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__358[] = { + /* 0 */ 1737, INVALID, +}; + +static const uint16_t ud_itab__359[] = { + /* 0 */ 1735, INVALID, +}; + +static const uint16_t ud_itab__360[] = { + /* 0 */ 1740, INVALID, +}; + +static const uint16_t ud_itab__361[] = { + /* 0 */ 1741, INVALID, +}; + +static const uint16_t ud_itab__362[] = { + /* 0 */ 1727, INVALID, +}; + +static const uint16_t ud_itab__363[] = { + /* 0 */ GROUP(364), INVALID, +}; + +static const uint16_t ud_itab__364[] = { + /* 0 */ INVALID, 1728, +}; + +static const uint16_t ud_itab__365[] = { + /* 0 */ 1731, INVALID, +}; + +static const uint16_t ud_itab__366[] = { + /* 0 */ 1733, INVALID, +}; + +static const uint16_t ud_itab__367[] = { + /* 0 */ 1732, INVALID, +}; + +static const uint16_t ud_itab__368[] = { + /* 0 */ 1734, INVALID, +}; + +static const uint16_t ud_itab__369[] = { + /* 0 */ INVALID, INVALID, INVALID, INVALID, + /* 4 */ GROUP(370), GROUP(371), GROUP(372), INVALID, + /* 8 */ 1645, 1647, 1649, 1651, + /* c */ 1655, 1653, 1678, 1620, + /* 10 */ INVALID, INVALID, INVALID, INVALID, + /* 14 */ GROUP(374), 1057, GROUP(375), 202, + /* 18 */ GROUP(379), GROUP(381), INVALID, INVALID, + /* 1c */ INVALID, INVALID, INVALID, INVALID, + /* 20 */ GROUP(383), 1558, GROUP(385), INVALID, + /* 24 */ INVALID, INVALID, INVALID, INVALID, + /* 28 */ INVALID, INVALID, INVALID, INVALID, + /* 2c */ INVALID, INVALID, INVALID, INVALID, + /* 30 */ INVALID, INVALID, INVALID, INVALID, + /* 34 */ INVALID, INVALID, INVALID, INVALID, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, + /* 40 */ 198, 196, 1680, INVALID, + /* 44 */ 1513, INVALID, INVALID, INVALID, + /* 48 */ INVALID, INVALID, GROUP(391), GROUP(392), + /* 4c */ GROUP(393), INVALID, INVALID, INVALID, + /* 50 */ INVALID, INVALID, INVALID, INVALID, + /* 54 */ INVALID, INVALID, INVALID, INVALID, + /* 58 */ INVALID, INVALID, INVALID, INVALID, + /* 5c */ INVALID, INVALID, INVALID, INVALID, + /* 60 */ 1716, 1714, 1722, 1720, + /* 64 */ INVALID, INVALID, INVALID, INVALID, + /* 68 */ INVALID, INVALID, INVALID, INVALID, + /* 6c */ INVALID, INVALID, INVALID, INVALID, + /* 70 */ INVALID, INVALID, INVALID, INVALID, + /* 74 */ INVALID, INVALID, INVALID, INVALID, + /* 78 */ INVALID, INVALID, INVALID, INVALID, + /* 7c */ INVALID, INVALID, INVALID, INVALID, + /* 80 */ INVALID, INVALID, INVALID, INVALID, + /* 84 */ INVALID, INVALID, INVALID, INVALID, + /* 88 */ INVALID, INVALID, INVALID, INVALID, + /* 8c */ INVALID, INVALID, INVALID, INVALID, + /* 90 */ INVALID, INVALID, INVALID, INVALID, + /* 94 */ INVALID, INVALID, INVALID, INVALID, + /* 98 */ INVALID, INVALID, INVALID, INVALID, + /* 9c */ INVALID, INVALID, INVALID, INVALID, + /* a0 */ INVALID, INVALID, INVALID, INVALID, + /* a4 */ INVALID, INVALID, INVALID, INVALID, + /* a8 */ INVALID, INVALID, INVALID, INVALID, + /* ac */ INVALID, INVALID, INVALID, INVALID, + /* b0 */ INVALID, INVALID, INVALID, INVALID, + /* b4 */ INVALID, INVALID, INVALID, INVALID, + /* b8 */ INVALID, INVALID, INVALID, INVALID, + /* bc */ INVALID, INVALID, INVALID, INVALID, + /* c0 */ INVALID, INVALID, INVALID, INVALID, + /* c4 */ INVALID, INVALID, INVALID, INVALID, + /* c8 */ INVALID, INVALID, INVALID, INVALID, + /* cc */ INVALID, INVALID, INVALID, INVALID, + /* d0 */ INVALID, INVALID, INVALID, INVALID, + /* d4 */ INVALID, INVALID, INVALID, INVALID, + /* d8 */ INVALID, INVALID, INVALID, INVALID, + /* dc */ INVALID, INVALID, INVALID, 48, + /* e0 */ INVALID, INVALID, INVALID, INVALID, + /* e4 */ INVALID, INVALID, INVALID, INVALID, + /* e8 */ INVALID, INVALID, INVALID, INVALID, + /* ec */ INVALID, INVALID, INVALID, INVALID, + /* f0 */ INVALID, INVALID, INVALID, INVALID, + /* f4 */ INVALID, INVALID, INVALID, INVALID, + /* f8 */ INVALID, INVALID, INVALID, INVALID, + /* fc */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__370[] = { + /* 0 */ 1738, INVALID, +}; + +static const uint16_t ud_itab__371[] = { + /* 0 */ 1736, INVALID, +}; + +static const uint16_t ud_itab__372[] = { + /* 0 */ GROUP(373), INVALID, +}; + +static const uint16_t ud_itab__373[] = { + /* 0 */ INVALID, 1739, +}; + +static const uint16_t ud_itab__374[] = { + /* 0 */ 1046, INVALID, +}; + +static const uint16_t ud_itab__375[] = { + /* 0 */ GROUP(376), GROUP(377), GROUP(378), +}; + +static const uint16_t ud_itab__376[] = { + /* 0 */ 1048, INVALID, +}; + +static const uint16_t ud_itab__377[] = { + /* 0 */ 1050, INVALID, +}; + +static const uint16_t ud_itab__378[] = { + /* 0 */ INVALID, 1052, +}; + +static const uint16_t ud_itab__379[] = { + /* 0 */ GROUP(380), INVALID, +}; + +static const uint16_t ud_itab__380[] = { + /* 0 */ INVALID, 1730, +}; + +static const uint16_t ud_itab__381[] = { + /* 0 */ GROUP(382), INVALID, +}; + +static const uint16_t ud_itab__382[] = { + /* 0 */ INVALID, 1729, +}; + +static const uint16_t ud_itab__383[] = { + /* 0 */ GROUP(384), INVALID, +}; + +static const uint16_t ud_itab__384[] = { + /* 0 */ 1065, INVALID, +}; + +static const uint16_t ud_itab__385[] = { + /* 0 */ GROUP(386), GROUP(388), +}; + +static const uint16_t ud_itab__386[] = { + /* 0 */ GROUP(387), INVALID, +}; + +static const uint16_t ud_itab__387[] = { + /* 0 */ 1066, INVALID, +}; + +static const uint16_t ud_itab__388[] = { + /* 0 */ GROUP(389), GROUP(390), +}; + +static const uint16_t ud_itab__389[] = { + /* 0 */ 1067, INVALID, +}; + +static const uint16_t ud_itab__390[] = { + /* 0 */ 1068, INVALID, +}; + +static const uint16_t ud_itab__391[] = { + /* 0 */ 1745, INVALID, +}; + +static const uint16_t ud_itab__392[] = { + /* 0 */ 1744, INVALID, +}; + +static const uint16_t ud_itab__393[] = { + /* 0 */ 1754, INVALID, +}; + +static const uint16_t ud_itab__394[] = { + /* 0 */ INVALID, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, + /* 8 */ INVALID, INVALID, INVALID, INVALID, + /* c */ INVALID, INVALID, INVALID, INVALID, + /* 10 */ GROUP(395), GROUP(396), GROUP(397), INVALID, + /* 14 */ INVALID, INVALID, GROUP(398), INVALID, + /* 18 */ INVALID, INVALID, INVALID, INVALID, + /* 1c */ INVALID, INVALID, INVALID, INVALID, + /* 20 */ INVALID, INVALID, INVALID, INVALID, + /* 24 */ INVALID, INVALID, INVALID, INVALID, + /* 28 */ INVALID, INVALID, 155, INVALID, + /* 2c */ 169, 159, INVALID, INVALID, + /* 30 */ INVALID, INVALID, INVALID, INVALID, + /* 34 */ INVALID, INVALID, INVALID, INVALID, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, + /* 40 */ INVALID, INVALID, INVALID, INVALID, + /* 44 */ INVALID, INVALID, INVALID, INVALID, + /* 48 */ INVALID, INVALID, INVALID, INVALID, + /* 4c */ INVALID, INVALID, INVALID, INVALID, + /* 50 */ INVALID, 1394, 1309, 1294, + /* 54 */ INVALID, INVALID, INVALID, INVALID, + /* 58 */ 32, 951, 157, 164, + /* 5c */ 1424, 823, 194, 807, + /* 60 */ INVALID, INVALID, INVALID, INVALID, + /* 64 */ INVALID, INVALID, INVALID, INVALID, + /* 68 */ INVALID, INVALID, INVALID, INVALID, + /* 6c */ INVALID, INVALID, INVALID, 1523, + /* 70 */ 1536, INVALID, INVALID, INVALID, + /* 74 */ INVALID, INVALID, INVALID, INVALID, + /* 78 */ INVALID, INVALID, INVALID, INVALID, + /* 7c */ INVALID, INVALID, 917, 1525, + /* 80 */ INVALID, INVALID, INVALID, INVALID, + /* 84 */ INVALID, INVALID, INVALID, INVALID, + /* 88 */ INVALID, INVALID, INVALID, INVALID, + /* 8c */ INVALID, INVALID, INVALID, INVALID, + /* 90 */ INVALID, INVALID, INVALID, INVALID, + /* 94 */ INVALID, INVALID, INVALID, INVALID, + /* 98 */ INVALID, INVALID, INVALID, INVALID, + /* 9c */ INVALID, INVALID, INVALID, INVALID, + /* a0 */ INVALID, INVALID, INVALID, INVALID, + /* a4 */ INVALID, INVALID, INVALID, INVALID, + /* a8 */ INVALID, INVALID, INVALID, INVALID, + /* ac */ INVALID, INVALID, INVALID, INVALID, + /* b0 */ INVALID, INVALID, INVALID, INVALID, + /* b4 */ INVALID, INVALID, INVALID, INVALID, + /* b8 */ INVALID, INVALID, INVALID, INVALID, + /* bc */ INVALID, INVALID, INVALID, INVALID, + /* c0 */ INVALID, INVALID, 121, INVALID, + /* c4 */ INVALID, INVALID, INVALID, INVALID, + /* c8 */ INVALID, INVALID, INVALID, INVALID, + /* cc */ INVALID, INVALID, INVALID, INVALID, + /* d0 */ INVALID, INVALID, INVALID, INVALID, + /* d4 */ INVALID, INVALID, INVALID, INVALID, + /* d8 */ INVALID, INVALID, INVALID, INVALID, + /* dc */ INVALID, INVALID, INVALID, INVALID, + /* e0 */ INVALID, INVALID, INVALID, INVALID, + /* e4 */ INVALID, INVALID, 133, INVALID, + /* e8 */ INVALID, INVALID, INVALID, INVALID, + /* ec */ INVALID, INVALID, INVALID, INVALID, + /* f0 */ INVALID, INVALID, INVALID, INVALID, + /* f4 */ INVALID, INVALID, INVALID, INVALID, + /* f8 */ INVALID, INVALID, INVALID, INVALID, + /* fc */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__395[] = { + /* 0 */ 1751, 1750, +}; + +static const uint16_t ud_itab__396[] = { + /* 0 */ 1753, 1752, +}; + +static const uint16_t ud_itab__397[] = { + /* 0 */ 1572, 1570, +}; + +static const uint16_t ud_itab__398[] = { + /* 0 */ 1568, 1566, +}; + +static const uint16_t ud_itab__399[] = { + /* 0 */ INVALID, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, + /* 8 */ INVALID, INVALID, INVALID, INVALID, + /* c */ INVALID, INVALID, INVALID, INVALID, + /* 10 */ GROUP(402), GROUP(400), GROUP(401), INVALID, + /* 14 */ INVALID, INVALID, INVALID, INVALID, + /* 18 */ INVALID, INVALID, INVALID, INVALID, + /* 1c */ INVALID, INVALID, INVALID, INVALID, + /* 20 */ INVALID, INVALID, INVALID, INVALID, + /* 24 */ INVALID, INVALID, INVALID, INVALID, + /* 28 */ INVALID, INVALID, 153, INVALID, + /* 2c */ 167, 149, INVALID, INVALID, + /* 30 */ INVALID, INVALID, INVALID, INVALID, + /* 34 */ INVALID, INVALID, INVALID, INVALID, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, + /* 40 */ INVALID, INVALID, INVALID, INVALID, + /* 44 */ INVALID, INVALID, INVALID, INVALID, + /* 48 */ INVALID, INVALID, INVALID, INVALID, + /* 4c */ INVALID, INVALID, INVALID, INVALID, + /* 50 */ INVALID, 1392, INVALID, INVALID, + /* 54 */ INVALID, INVALID, INVALID, INVALID, + /* 58 */ 30, 949, 151, INVALID, + /* 5c */ 1422, 821, 192, 805, + /* 60 */ INVALID, INVALID, INVALID, INVALID, + /* 64 */ INVALID, INVALID, INVALID, INVALID, + /* 68 */ INVALID, INVALID, INVALID, INVALID, + /* 6c */ INVALID, INVALID, INVALID, INVALID, + /* 70 */ 1538, INVALID, INVALID, INVALID, + /* 74 */ INVALID, INVALID, INVALID, INVALID, + /* 78 */ INVALID, INVALID, INVALID, INVALID, + /* 7c */ 1552, 1556, INVALID, INVALID, + /* 80 */ INVALID, INVALID, INVALID, INVALID, + /* 84 */ INVALID, INVALID, INVALID, INVALID, + /* 88 */ INVALID, INVALID, INVALID, INVALID, + /* 8c */ INVALID, INVALID, INVALID, INVALID, + /* 90 */ INVALID, INVALID, INVALID, INVALID, + /* 94 */ INVALID, INVALID, INVALID, INVALID, + /* 98 */ INVALID, INVALID, INVALID, INVALID, + /* 9c */ INVALID, INVALID, INVALID, INVALID, + /* a0 */ INVALID, INVALID, INVALID, INVALID, + /* a4 */ INVALID, INVALID, INVALID, INVALID, + /* a8 */ INVALID, INVALID, INVALID, INVALID, + /* ac */ INVALID, INVALID, INVALID, INVALID, + /* b0 */ INVALID, INVALID, INVALID, INVALID, + /* b4 */ INVALID, INVALID, INVALID, INVALID, + /* b8 */ INVALID, INVALID, INVALID, INVALID, + /* bc */ INVALID, INVALID, INVALID, INVALID, + /* c0 */ INVALID, INVALID, 118, INVALID, + /* c4 */ INVALID, INVALID, INVALID, INVALID, + /* c8 */ INVALID, INVALID, INVALID, INVALID, + /* cc */ INVALID, INVALID, INVALID, INVALID, + /* d0 */ 36, INVALID, INVALID, INVALID, + /* d4 */ INVALID, INVALID, INVALID, INVALID, + /* d8 */ INVALID, INVALID, INVALID, INVALID, + /* dc */ INVALID, INVALID, INVALID, INVALID, + /* e0 */ INVALID, INVALID, INVALID, INVALID, + /* e4 */ INVALID, INVALID, 137, INVALID, + /* e8 */ INVALID, INVALID, INVALID, INVALID, + /* ec */ INVALID, INVALID, INVALID, INVALID, + /* f0 */ 1560, INVALID, INVALID, INVALID, + /* f4 */ INVALID, INVALID, INVALID, INVALID, + /* f8 */ INVALID, INVALID, INVALID, INVALID, + /* fc */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__400[] = { + /* 0 */ 1749, 1748, +}; + +static const uint16_t ud_itab__401[] = { + /* 0 */ 1564, 1562, +}; + +static const uint16_t ud_itab__402[] = { + /* 0 */ 1747, 1746, +}; + +static const uint16_t ud_itab__403[] = { + /* 0 */ GROUP(404), GROUP(335), INVALID, INVALID, + /* 4 */ INVALID, GROUP(341), GROUP(357), GROUP(369), + /* 8 */ INVALID, GROUP(394), INVALID, INVALID, + /* c */ INVALID, GROUP(399), INVALID, INVALID, +}; + +static const uint16_t ud_itab__404[] = { + /* 0 */ 769, INVALID, +}; + +static const uint16_t ud_itab__405[] = { + /* 0 */ 826, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__406[] = { + /* 0 */ 827, INVALID, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__407[] = { + /* 0 */ 715, INVALID, +}; + +static const uint16_t ud_itab__408[] = { + /* 0 */ 723, 724, 725, +}; + +static const uint16_t ud_itab__409[] = { + /* 0 */ 1280, 1285, 1269, 1273, + /* 4 */ 1326, 1333, 1320, 1314, +}; + +static const uint16_t ud_itab__410[] = { + /* 0 */ 1281, 1288, 1272, 1276, + /* 4 */ 1325, 1332, 1329, 1312, +}; + +static const uint16_t ud_itab__411[] = { + /* 0 */ 1282, 1289, 1270, 1277, + /* 4 */ 1324, 1331, 1321, 1316, +}; + +static const uint16_t ud_itab__412[] = { + /* 0 */ 1283, 1290, 1271, 1278, + /* 4 */ 1328, 1335, 1322, 1317, +}; + +static const uint16_t ud_itab__413[] = { + /* 0 */ 3, INVALID, +}; + +static const uint16_t ud_itab__414[] = { + /* 0 */ 2, INVALID, +}; + +static const uint16_t ud_itab__415[] = { + /* 0 */ 1311, INVALID, +}; + +static const uint16_t ud_itab__416[] = { + /* 0 */ GROUP(417), GROUP(418), +}; + +static const uint16_t ud_itab__417[] = { + /* 0 */ 206, 503, 307, 357, + /* 4 */ 587, 630, 387, 413, +}; + +static const uint16_t ud_itab__418[] = { + /* 0 */ 215, 216, 217, 218, + /* 4 */ 219, 220, 221, 222, + /* 8 */ 504, 505, 506, 507, + /* c */ 508, 509, 510, 511, + /* 10 */ 309, 310, 311, 312, + /* 14 */ 313, 314, 315, 316, + /* 18 */ 359, 360, 361, 362, + /* 1c */ 363, 364, 365, 366, + /* 20 */ 589, 590, 591, 592, + /* 24 */ 593, 594, 595, 596, + /* 28 */ 614, 615, 616, 617, + /* 2c */ 618, 619, 620, 621, + /* 30 */ 388, 389, 390, 391, + /* 34 */ 392, 393, 394, 395, + /* 38 */ 414, 415, 416, 417, + /* 3c */ 418, 419, 420, 421, +}; + +static const uint16_t ud_itab__419[] = { + /* 0 */ GROUP(420), GROUP(421), +}; + +static const uint16_t ud_itab__420[] = { + /* 0 */ 476, INVALID, 573, 540, + /* 4 */ 493, 492, 584, 583, +}; + +static const uint16_t ud_itab__421[] = { + /* 0 */ 477, 478, 479, 480, + /* 4 */ 481, 482, 483, 484, + /* 8 */ 658, 659, 660, 661, + /* c */ 662, 663, 664, 665, + /* 10 */ 522, INVALID, INVALID, INVALID, + /* 14 */ INVALID, INVALID, INVALID, INVALID, + /* 18 */ 549, 550, 551, 552, + /* 1c */ 553, 554, 555, 556, + /* 20 */ 233, 204, INVALID, INVALID, + /* 24 */ 639, 657, INVALID, INVALID, + /* 28 */ 485, 486, 487, 488, + /* 2c */ 489, 490, 491, INVALID, + /* 30 */ 203, 685, 529, 526, + /* 34 */ 684, 528, 377, 454, + /* 38 */ 527, 686, 537, 536, + /* 3c */ 530, 534, 535, 376, +}; + +static const uint16_t ud_itab__422[] = { + /* 0 */ GROUP(423), GROUP(424), +}; + +static const uint16_t ud_itab__423[] = { + /* 0 */ 456, 520, 448, 450, + /* 4 */ 462, 464, 460, 458, +}; + +static const uint16_t ud_itab__424[] = { + /* 0 */ 235, 236, 237, 238, + /* 4 */ 239, 240, 241, 242, + /* 8 */ 243, 244, 245, 246, + /* c */ 247, 248, 249, 250, + /* 10 */ 251, 252, 253, 254, + /* 14 */ 255, 256, 257, 258, + /* 18 */ 259, 260, 261, 262, + /* 1c */ 263, 264, 265, 266, + /* 20 */ INVALID, INVALID, INVALID, INVALID, + /* 24 */ INVALID, INVALID, INVALID, INVALID, + /* 28 */ INVALID, 656, INVALID, INVALID, + /* 2c */ INVALID, INVALID, INVALID, INVALID, + /* 30 */ INVALID, INVALID, INVALID, INVALID, + /* 34 */ INVALID, INVALID, INVALID, INVALID, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__425[] = { + /* 0 */ GROUP(426), GROUP(427), +}; + +static const uint16_t ud_itab__426[] = { + /* 0 */ 453, 471, 467, 470, + /* 4 */ INVALID, 474, INVALID, 538, +}; + +static const uint16_t ud_itab__427[] = { + /* 0 */ 267, 268, 269, 270, + /* 4 */ 271, 272, 273, 274, + /* 8 */ 275, 276, 277, 278, + /* c */ 279, 280, 281, 282, + /* 10 */ 283, 284, 285, 286, + /* 14 */ 287, 288, 289, 290, + /* 18 */ 291, 292, 293, 294, + /* 1c */ 295, 296, 297, 298, + /* 20 */ 524, 523, 234, 455, + /* 24 */ 525, 532, INVALID, INVALID, + /* 28 */ 299, 300, 301, 302, + /* 2c */ 303, 304, 305, 306, + /* 30 */ 333, 334, 335, 336, + /* 34 */ 337, 338, 339, 340, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__428[] = { + /* 0 */ GROUP(429), GROUP(430), +}; + +static const uint16_t ud_itab__429[] = { + /* 0 */ 205, 494, 308, 358, + /* 4 */ 588, 613, 378, 404, +}; + +static const uint16_t ud_itab__430[] = { + /* 0 */ 207, 208, 209, 210, + /* 4 */ 211, 212, 213, 214, + /* 8 */ 495, 496, 497, 498, + /* c */ 499, 500, 501, 502, + /* 10 */ 317, 318, 319, 320, + /* 14 */ 321, 322, 323, 324, + /* 18 */ 325, 326, 327, 328, + /* 1c */ 329, 330, 331, 332, + /* 20 */ 622, 623, 624, 625, + /* 24 */ 626, 627, 628, 629, + /* 28 */ 597, 598, 599, 600, + /* 2c */ 601, 602, 603, 604, + /* 30 */ 405, 406, 407, 408, + /* 34 */ 409, 410, 411, 412, + /* 38 */ 379, 380, 381, 382, + /* 3c */ 383, 384, 385, 386, +}; + +static const uint16_t ud_itab__431[] = { + /* 0 */ GROUP(432), GROUP(433), +}; + +static const uint16_t ud_itab__432[] = { + /* 0 */ 475, 472, 574, 539, + /* 4 */ 531, INVALID, 533, 585, +}; + +static const uint16_t ud_itab__433[] = { + /* 0 */ 431, 432, 433, 434, + /* 4 */ 435, 436, 437, 438, + /* 8 */ 666, 667, 668, 669, + /* c */ 670, 671, 672, 673, + /* 10 */ 575, 576, 577, 578, + /* 14 */ 579, 580, 581, 582, + /* 18 */ 541, 542, 543, 544, + /* 1c */ 545, 546, 547, 548, + /* 20 */ 640, 641, 642, 643, + /* 24 */ 644, 645, 646, 647, + /* 28 */ 648, 649, 650, 651, + /* 2c */ 652, 653, 654, 655, + /* 30 */ INVALID, INVALID, INVALID, INVALID, + /* 34 */ INVALID, INVALID, INVALID, INVALID, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__434[] = { + /* 0 */ GROUP(435), GROUP(436), +}; + +static const uint16_t ud_itab__435[] = { + /* 0 */ 457, 521, 447, 449, + /* 4 */ 463, 465, 461, 459, +}; + +static const uint16_t ud_itab__436[] = { + /* 0 */ 223, 224, 225, 226, + /* 4 */ 227, 228, 229, 230, + /* 8 */ 512, 513, 514, 515, + /* c */ 516, 517, 518, 519, + /* 10 */ 367, 368, 369, 370, + /* 14 */ 371, 372, 373, 374, + /* 18 */ INVALID, 375, INVALID, INVALID, + /* 1c */ INVALID, INVALID, INVALID, INVALID, + /* 20 */ 631, 632, 633, 634, + /* 24 */ 635, 636, 637, 638, + /* 28 */ 605, 606, 607, 608, + /* 2c */ 609, 610, 611, 612, + /* 30 */ 422, 423, 424, 425, + /* 34 */ 426, 427, 428, 429, + /* 38 */ 396, 397, 398, 399, + /* 3c */ 400, 401, 402, 403, +}; + +static const uint16_t ud_itab__437[] = { + /* 0 */ GROUP(438), GROUP(439), +}; + +static const uint16_t ud_itab__438[] = { + /* 0 */ 451, 473, 466, 468, + /* 4 */ 231, 452, 232, 469, +}; + +static const uint16_t ud_itab__439[] = { + /* 0 */ 439, 440, 441, 442, + /* 4 */ 443, 444, 445, 446, + /* 8 */ 674, 675, 676, 677, + /* c */ 678, 679, 680, 681, + /* 10 */ 557, 558, 559, 560, + /* 14 */ 561, 562, 563, 564, + /* 18 */ 565, 566, 567, 568, + /* 1c */ 569, 570, 571, 572, + /* 20 */ 586, INVALID, INVALID, INVALID, + /* 24 */ INVALID, INVALID, INVALID, INVALID, + /* 28 */ 341, 342, 343, 344, + /* 2c */ 345, 346, 347, 348, + /* 30 */ 349, 350, 351, 352, + /* 34 */ 353, 354, 355, 356, + /* 38 */ INVALID, INVALID, INVALID, INVALID, + /* 3c */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__440[] = { + /* 0 */ 758, 759, 760, +}; + +static const uint16_t ud_itab__441[] = { + /* 0 */ 764, INVALID, +}; + +static const uint16_t ud_itab__442[] = { + /* 0 */ 1432, 1437, 962, 953, + /* 4 */ 942, 695, 186, 689, +}; + +static const uint16_t ud_itab__443[] = { + /* 0 */ 1438, 1439, 963, 954, + /* 4 */ 943, 696, 185, 688, +}; + +static const uint16_t ud_itab__444[] = { + /* 0 */ 708, 183, INVALID, INVALID, + /* 4 */ INVALID, INVALID, INVALID, INVALID, +}; + +static const uint16_t ud_itab__445[] = { + /* 0 */ 707, 184, GROUP(446), 71, + /* 4 */ 761, 762, 1255, INVALID, +}; + +static const uint16_t ud_itab__446[] = { + /* 0 */ 69, 70, +}; + + +struct ud_lookup_table_list_entry ud_lookup_table_list[] = { + /* 000 */ { ud_itab__0, UD_TAB__OPC_TABLE, "opctbl" }, + /* 001 */ { ud_itab__1, UD_TAB__OPC_MODE, "/m" }, + /* 002 */ { ud_itab__2, UD_TAB__OPC_MODE, "/m" }, + /* 003 */ { ud_itab__3, UD_TAB__OPC_MODE, "/m" }, + /* 004 */ { ud_itab__4, UD_TAB__OPC_TABLE, "opctbl" }, + /* 005 */ { ud_itab__5, UD_TAB__OPC_REG, "/reg" }, + /* 006 */ { ud_itab__6, UD_TAB__OPC_MOD, "/mod" }, + /* 007 */ { ud_itab__7, UD_TAB__OPC_REG, "/reg" }, + /* 008 */ { ud_itab__8, UD_TAB__OPC_REG, "/reg" }, + /* 009 */ { ud_itab__9, UD_TAB__OPC_RM, "/rm" }, + /* 010 */ { ud_itab__10, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 011 */ { ud_itab__11, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 012 */ { ud_itab__12, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 013 */ { ud_itab__13, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 014 */ { ud_itab__14, UD_TAB__OPC_RM, "/rm" }, + /* 015 */ { ud_itab__15, UD_TAB__OPC_RM, "/rm" }, + /* 016 */ { ud_itab__16, UD_TAB__OPC_RM, "/rm" }, + /* 017 */ { ud_itab__17, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 018 */ { ud_itab__18, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 019 */ { ud_itab__19, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 020 */ { ud_itab__20, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 021 */ { ud_itab__21, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 022 */ { ud_itab__22, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 023 */ { ud_itab__23, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 024 */ { ud_itab__24, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 025 */ { ud_itab__25, UD_TAB__OPC_RM, "/rm" }, + /* 026 */ { ud_itab__26, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 027 */ { ud_itab__27, UD_TAB__OPC_REG, "/reg" }, + /* 028 */ { ud_itab__28, UD_TAB__OPC_3DNOW, "/3dnow" }, + /* 029 */ { ud_itab__29, UD_TAB__OPC_SSE, "/sse" }, + /* 030 */ { ud_itab__30, UD_TAB__OPC_SSE, "/sse" }, + /* 031 */ { ud_itab__31, UD_TAB__OPC_MOD, "/mod" }, + /* 032 */ { ud_itab__32, UD_TAB__OPC_SSE, "/sse" }, + /* 033 */ { ud_itab__33, UD_TAB__OPC_SSE, "/sse" }, + /* 034 */ { ud_itab__34, UD_TAB__OPC_SSE, "/sse" }, + /* 035 */ { ud_itab__35, UD_TAB__OPC_SSE, "/sse" }, + /* 036 */ { ud_itab__36, UD_TAB__OPC_SSE, "/sse" }, + /* 037 */ { ud_itab__37, UD_TAB__OPC_MOD, "/mod" }, + /* 038 */ { ud_itab__38, UD_TAB__OPC_SSE, "/sse" }, + /* 039 */ { ud_itab__39, UD_TAB__OPC_SSE, "/sse" }, + /* 040 */ { ud_itab__40, UD_TAB__OPC_SSE, "/sse" }, + /* 041 */ { ud_itab__41, UD_TAB__OPC_REG, "/reg" }, + /* 042 */ { ud_itab__42, UD_TAB__OPC_SSE, "/sse" }, + /* 043 */ { ud_itab__43, UD_TAB__OPC_SSE, "/sse" }, + /* 044 */ { ud_itab__44, UD_TAB__OPC_SSE, "/sse" }, + /* 045 */ { ud_itab__45, UD_TAB__OPC_SSE, "/sse" }, + /* 046 */ { ud_itab__46, UD_TAB__OPC_SSE, "/sse" }, + /* 047 */ { ud_itab__47, UD_TAB__OPC_SSE, "/sse" }, + /* 048 */ { ud_itab__48, UD_TAB__OPC_SSE, "/sse" }, + /* 049 */ { ud_itab__49, UD_TAB__OPC_SSE, "/sse" }, + /* 050 */ { ud_itab__50, UD_TAB__OPC_MODE, "/m" }, + /* 051 */ { ud_itab__51, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 052 */ { ud_itab__52, UD_TAB__OPC_MODE, "/m" }, + /* 053 */ { ud_itab__53, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 054 */ { ud_itab__54, UD_TAB__OPC_TABLE, "opctbl" }, + /* 055 */ { ud_itab__55, UD_TAB__OPC_SSE, "/sse" }, + /* 056 */ { ud_itab__56, UD_TAB__OPC_MODE, "/m" }, + /* 057 */ { ud_itab__57, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 058 */ { ud_itab__58, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 059 */ { ud_itab__59, UD_TAB__OPC_SSE, "/sse" }, + /* 060 */ { ud_itab__60, UD_TAB__OPC_MODE, "/m" }, + /* 061 */ { ud_itab__61, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 062 */ { ud_itab__62, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 063 */ { ud_itab__63, UD_TAB__OPC_SSE, "/sse" }, + /* 064 */ { ud_itab__64, UD_TAB__OPC_SSE, "/sse" }, + /* 065 */ { ud_itab__65, UD_TAB__OPC_SSE, "/sse" }, + /* 066 */ { ud_itab__66, UD_TAB__OPC_SSE, "/sse" }, + /* 067 */ { ud_itab__67, UD_TAB__OPC_SSE, "/sse" }, + /* 068 */ { ud_itab__68, UD_TAB__OPC_SSE, "/sse" }, + /* 069 */ { ud_itab__69, UD_TAB__OPC_SSE, "/sse" }, + /* 070 */ { ud_itab__70, UD_TAB__OPC_SSE, "/sse" }, + /* 071 */ { ud_itab__71, UD_TAB__OPC_SSE, "/sse" }, + /* 072 */ { ud_itab__72, UD_TAB__OPC_SSE, "/sse" }, + /* 073 */ { ud_itab__73, UD_TAB__OPC_SSE, "/sse" }, + /* 074 */ { ud_itab__74, UD_TAB__OPC_SSE, "/sse" }, + /* 075 */ { ud_itab__75, UD_TAB__OPC_SSE, "/sse" }, + /* 076 */ { ud_itab__76, UD_TAB__OPC_SSE, "/sse" }, + /* 077 */ { ud_itab__77, UD_TAB__OPC_SSE, "/sse" }, + /* 078 */ { ud_itab__78, UD_TAB__OPC_SSE, "/sse" }, + /* 079 */ { ud_itab__79, UD_TAB__OPC_SSE, "/sse" }, + /* 080 */ { ud_itab__80, UD_TAB__OPC_SSE, "/sse" }, + /* 081 */ { ud_itab__81, UD_TAB__OPC_SSE, "/sse" }, + /* 082 */ { ud_itab__82, UD_TAB__OPC_SSE, "/sse" }, + /* 083 */ { ud_itab__83, UD_TAB__OPC_SSE, "/sse" }, + /* 084 */ { ud_itab__84, UD_TAB__OPC_SSE, "/sse" }, + /* 085 */ { ud_itab__85, UD_TAB__OPC_SSE, "/sse" }, + /* 086 */ { ud_itab__86, UD_TAB__OPC_SSE, "/sse" }, + /* 087 */ { ud_itab__87, UD_TAB__OPC_SSE, "/sse" }, + /* 088 */ { ud_itab__88, UD_TAB__OPC_SSE, "/sse" }, + /* 089 */ { ud_itab__89, UD_TAB__OPC_SSE, "/sse" }, + /* 090 */ { ud_itab__90, UD_TAB__OPC_SSE, "/sse" }, + /* 091 */ { ud_itab__91, UD_TAB__OPC_SSE, "/sse" }, + /* 092 */ { ud_itab__92, UD_TAB__OPC_SSE, "/sse" }, + /* 093 */ { ud_itab__93, UD_TAB__OPC_SSE, "/sse" }, + /* 094 */ { ud_itab__94, UD_TAB__OPC_SSE, "/sse" }, + /* 095 */ { ud_itab__95, UD_TAB__OPC_SSE, "/sse" }, + /* 096 */ { ud_itab__96, UD_TAB__OPC_SSE, "/sse" }, + /* 097 */ { ud_itab__97, UD_TAB__OPC_SSE, "/sse" }, + /* 098 */ { ud_itab__98, UD_TAB__OPC_SSE, "/sse" }, + /* 099 */ { ud_itab__99, UD_TAB__OPC_SSE, "/sse" }, + /* 100 */ { ud_itab__100, UD_TAB__OPC_SSE, "/sse" }, + /* 101 */ { ud_itab__101, UD_TAB__OPC_SSE, "/sse" }, + /* 102 */ { ud_itab__102, UD_TAB__OPC_SSE, "/sse" }, + /* 103 */ { ud_itab__103, UD_TAB__OPC_SSE, "/sse" }, + /* 104 */ { ud_itab__104, UD_TAB__OPC_SSE, "/sse" }, + /* 105 */ { ud_itab__105, UD_TAB__OPC_SSE, "/sse" }, + /* 106 */ { ud_itab__106, UD_TAB__OPC_SSE, "/sse" }, + /* 107 */ { ud_itab__107, UD_TAB__OPC_SSE, "/sse" }, + /* 108 */ { ud_itab__108, UD_TAB__OPC_SSE, "/sse" }, + /* 109 */ { ud_itab__109, UD_TAB__OPC_SSE, "/sse" }, + /* 110 */ { ud_itab__110, UD_TAB__OPC_SSE, "/sse" }, + /* 111 */ { ud_itab__111, UD_TAB__OPC_SSE, "/sse" }, + /* 112 */ { ud_itab__112, UD_TAB__OPC_SSE, "/sse" }, + /* 113 */ { ud_itab__113, UD_TAB__OPC_SSE, "/sse" }, + /* 114 */ { ud_itab__114, UD_TAB__OPC_SSE, "/sse" }, + /* 115 */ { ud_itab__115, UD_TAB__OPC_SSE, "/sse" }, + /* 116 */ { ud_itab__116, UD_TAB__OPC_TABLE, "opctbl" }, + /* 117 */ { ud_itab__117, UD_TAB__OPC_SSE, "/sse" }, + /* 118 */ { ud_itab__118, UD_TAB__OPC_SSE, "/sse" }, + /* 119 */ { ud_itab__119, UD_TAB__OPC_SSE, "/sse" }, + /* 120 */ { ud_itab__120, UD_TAB__OPC_SSE, "/sse" }, + /* 121 */ { ud_itab__121, UD_TAB__OPC_SSE, "/sse" }, + /* 122 */ { ud_itab__122, UD_TAB__OPC_SSE, "/sse" }, + /* 123 */ { ud_itab__123, UD_TAB__OPC_SSE, "/sse" }, + /* 124 */ { ud_itab__124, UD_TAB__OPC_SSE, "/sse" }, + /* 125 */ { ud_itab__125, UD_TAB__OPC_SSE, "/sse" }, + /* 126 */ { ud_itab__126, UD_TAB__OPC_SSE, "/sse" }, + /* 127 */ { ud_itab__127, UD_TAB__OPC_SSE, "/sse" }, + /* 128 */ { ud_itab__128, UD_TAB__OPC_OSIZE, "/o" }, + /* 129 */ { ud_itab__129, UD_TAB__OPC_SSE, "/sse" }, + /* 130 */ { ud_itab__130, UD_TAB__OPC_SSE, "/sse" }, + /* 131 */ { ud_itab__131, UD_TAB__OPC_SSE, "/sse" }, + /* 132 */ { ud_itab__132, UD_TAB__OPC_SSE, "/sse" }, + /* 133 */ { ud_itab__133, UD_TAB__OPC_OSIZE, "/o" }, + /* 134 */ { ud_itab__134, UD_TAB__OPC_SSE, "/sse" }, + /* 135 */ { ud_itab__135, UD_TAB__OPC_SSE, "/sse" }, + /* 136 */ { ud_itab__136, UD_TAB__OPC_SSE, "/sse" }, + /* 137 */ { ud_itab__137, UD_TAB__OPC_SSE, "/sse" }, + /* 138 */ { ud_itab__138, UD_TAB__OPC_SSE, "/sse" }, + /* 139 */ { ud_itab__139, UD_TAB__OPC_SSE, "/sse" }, + /* 140 */ { ud_itab__140, UD_TAB__OPC_SSE, "/sse" }, + /* 141 */ { ud_itab__141, UD_TAB__OPC_SSE, "/sse" }, + /* 142 */ { ud_itab__142, UD_TAB__OPC_SSE, "/sse" }, + /* 143 */ { ud_itab__143, UD_TAB__OPC_SSE, "/sse" }, + /* 144 */ { ud_itab__144, UD_TAB__OPC_SSE, "/sse" }, + /* 145 */ { ud_itab__145, UD_TAB__OPC_SSE, "/sse" }, + /* 146 */ { ud_itab__146, UD_TAB__OPC_SSE, "/sse" }, + /* 147 */ { ud_itab__147, UD_TAB__OPC_SSE, "/sse" }, + /* 148 */ { ud_itab__148, UD_TAB__OPC_SSE, "/sse" }, + /* 149 */ { ud_itab__149, UD_TAB__OPC_SSE, "/sse" }, + /* 150 */ { ud_itab__150, UD_TAB__OPC_SSE, "/sse" }, + /* 151 */ { ud_itab__151, UD_TAB__OPC_SSE, "/sse" }, + /* 152 */ { ud_itab__152, UD_TAB__OPC_SSE, "/sse" }, + /* 153 */ { ud_itab__153, UD_TAB__OPC_SSE, "/sse" }, + /* 154 */ { ud_itab__154, UD_TAB__OPC_SSE, "/sse" }, + /* 155 */ { ud_itab__155, UD_TAB__OPC_SSE, "/sse" }, + /* 156 */ { ud_itab__156, UD_TAB__OPC_SSE, "/sse" }, + /* 157 */ { ud_itab__157, UD_TAB__OPC_SSE, "/sse" }, + /* 158 */ { ud_itab__158, UD_TAB__OPC_SSE, "/sse" }, + /* 159 */ { ud_itab__159, UD_TAB__OPC_SSE, "/sse" }, + /* 160 */ { ud_itab__160, UD_TAB__OPC_SSE, "/sse" }, + /* 161 */ { ud_itab__161, UD_TAB__OPC_SSE, "/sse" }, + /* 162 */ { ud_itab__162, UD_TAB__OPC_SSE, "/sse" }, + /* 163 */ { ud_itab__163, UD_TAB__OPC_SSE, "/sse" }, + /* 164 */ { ud_itab__164, UD_TAB__OPC_SSE, "/sse" }, + /* 165 */ { ud_itab__165, UD_TAB__OPC_SSE, "/sse" }, + /* 166 */ { ud_itab__166, UD_TAB__OPC_SSE, "/sse" }, + /* 167 */ { ud_itab__167, UD_TAB__OPC_SSE, "/sse" }, + /* 168 */ { ud_itab__168, UD_TAB__OPC_SSE, "/sse" }, + /* 169 */ { ud_itab__169, UD_TAB__OPC_SSE, "/sse" }, + /* 170 */ { ud_itab__170, UD_TAB__OPC_SSE, "/sse" }, + /* 171 */ { ud_itab__171, UD_TAB__OPC_SSE, "/sse" }, + /* 172 */ { ud_itab__172, UD_TAB__OPC_SSE, "/sse" }, + /* 173 */ { ud_itab__173, UD_TAB__OPC_SSE, "/sse" }, + /* 174 */ { ud_itab__174, UD_TAB__OPC_OSIZE, "/o" }, + /* 175 */ { ud_itab__175, UD_TAB__OPC_OSIZE, "/o" }, + /* 176 */ { ud_itab__176, UD_TAB__OPC_SSE, "/sse" }, + /* 177 */ { ud_itab__177, UD_TAB__OPC_SSE, "/sse" }, + /* 178 */ { ud_itab__178, UD_TAB__OPC_REG, "/reg" }, + /* 179 */ { ud_itab__179, UD_TAB__OPC_SSE, "/sse" }, + /* 180 */ { ud_itab__180, UD_TAB__OPC_SSE, "/sse" }, + /* 181 */ { ud_itab__181, UD_TAB__OPC_SSE, "/sse" }, + /* 182 */ { ud_itab__182, UD_TAB__OPC_REG, "/reg" }, + /* 183 */ { ud_itab__183, UD_TAB__OPC_SSE, "/sse" }, + /* 184 */ { ud_itab__184, UD_TAB__OPC_SSE, "/sse" }, + /* 185 */ { ud_itab__185, UD_TAB__OPC_SSE, "/sse" }, + /* 186 */ { ud_itab__186, UD_TAB__OPC_REG, "/reg" }, + /* 187 */ { ud_itab__187, UD_TAB__OPC_SSE, "/sse" }, + /* 188 */ { ud_itab__188, UD_TAB__OPC_SSE, "/sse" }, + /* 189 */ { ud_itab__189, UD_TAB__OPC_SSE, "/sse" }, + /* 190 */ { ud_itab__190, UD_TAB__OPC_SSE, "/sse" }, + /* 191 */ { ud_itab__191, UD_TAB__OPC_SSE, "/sse" }, + /* 192 */ { ud_itab__192, UD_TAB__OPC_SSE, "/sse" }, + /* 193 */ { ud_itab__193, UD_TAB__OPC_SSE, "/sse" }, + /* 194 */ { ud_itab__194, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 195 */ { ud_itab__195, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 196 */ { ud_itab__196, UD_TAB__OPC_SSE, "/sse" }, + /* 197 */ { ud_itab__197, UD_TAB__OPC_SSE, "/sse" }, + /* 198 */ { ud_itab__198, UD_TAB__OPC_SSE, "/sse" }, + /* 199 */ { ud_itab__199, UD_TAB__OPC_OSIZE, "/o" }, + /* 200 */ { ud_itab__200, UD_TAB__OPC_OSIZE, "/o" }, + /* 201 */ { ud_itab__201, UD_TAB__OPC_SSE, "/sse" }, + /* 202 */ { ud_itab__202, UD_TAB__OPC_MOD, "/mod" }, + /* 203 */ { ud_itab__203, UD_TAB__OPC_REG, "/reg" }, + /* 204 */ { ud_itab__204, UD_TAB__OPC_RM, "/rm" }, + /* 205 */ { ud_itab__205, UD_TAB__OPC_RM, "/rm" }, + /* 206 */ { ud_itab__206, UD_TAB__OPC_RM, "/rm" }, + /* 207 */ { ud_itab__207, UD_TAB__OPC_MOD, "/mod" }, + /* 208 */ { ud_itab__208, UD_TAB__OPC_REG, "/reg" }, + /* 209 */ { ud_itab__209, UD_TAB__OPC_RM, "/rm" }, + /* 210 */ { ud_itab__210, UD_TAB__OPC_RM, "/rm" }, + /* 211 */ { ud_itab__211, UD_TAB__OPC_RM, "/rm" }, + /* 212 */ { ud_itab__212, UD_TAB__OPC_RM, "/rm" }, + /* 213 */ { ud_itab__213, UD_TAB__OPC_RM, "/rm" }, + /* 214 */ { ud_itab__214, UD_TAB__OPC_RM, "/rm" }, + /* 215 */ { ud_itab__215, UD_TAB__OPC_MOD, "/mod" }, + /* 216 */ { ud_itab__216, UD_TAB__OPC_REG, "/reg" }, + /* 217 */ { ud_itab__217, UD_TAB__OPC_REG, "/reg" }, + /* 218 */ { ud_itab__218, UD_TAB__OPC_RM, "/rm" }, + /* 219 */ { ud_itab__219, UD_TAB__OPC_RM, "/rm" }, + /* 220 */ { ud_itab__220, UD_TAB__OPC_RM, "/rm" }, + /* 221 */ { ud_itab__221, UD_TAB__OPC_SSE, "/sse" }, + /* 222 */ { ud_itab__222, UD_TAB__OPC_REG, "/reg" }, + /* 223 */ { ud_itab__223, UD_TAB__OPC_SSE, "/sse" }, + /* 224 */ { ud_itab__224, UD_TAB__OPC_SSE, "/sse" }, + /* 225 */ { ud_itab__225, UD_TAB__OPC_SSE, "/sse" }, + /* 226 */ { ud_itab__226, UD_TAB__OPC_SSE, "/sse" }, + /* 227 */ { ud_itab__227, UD_TAB__OPC_MOD, "/mod" }, + /* 228 */ { ud_itab__228, UD_TAB__OPC_REG, "/reg" }, + /* 229 */ { ud_itab__229, UD_TAB__OPC_OSIZE, "/o" }, + /* 230 */ { ud_itab__230, UD_TAB__OPC_SSE, "/sse" }, + /* 231 */ { ud_itab__231, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 232 */ { ud_itab__232, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 233 */ { ud_itab__233, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 234 */ { ud_itab__234, UD_TAB__OPC_VENDOR, "/vendor" }, + /* 235 */ { ud_itab__235, UD_TAB__OPC_REG, "/reg" }, + /* 236 */ { ud_itab__236, UD_TAB__OPC_SSE, "/sse" }, + /* 237 */ { ud_itab__237, UD_TAB__OPC_SSE, "/sse" }, + /* 238 */ { ud_itab__238, UD_TAB__OPC_SSE, "/sse" }, + /* 239 */ { ud_itab__239, UD_TAB__OPC_SSE, "/sse" }, + /* 240 */ { ud_itab__240, UD_TAB__OPC_SSE, "/sse" }, + /* 241 */ { ud_itab__241, UD_TAB__OPC_SSE, "/sse" }, + /* 242 */ { ud_itab__242, UD_TAB__OPC_SSE, "/sse" }, + /* 243 */ { ud_itab__243, UD_TAB__OPC_SSE, "/sse" }, + /* 244 */ { ud_itab__244, UD_TAB__OPC_SSE, "/sse" }, + /* 245 */ { ud_itab__245, UD_TAB__OPC_SSE, "/sse" }, + /* 246 */ { ud_itab__246, UD_TAB__OPC_SSE, "/sse" }, + /* 247 */ { ud_itab__247, UD_TAB__OPC_SSE, "/sse" }, + /* 248 */ { ud_itab__248, UD_TAB__OPC_SSE, "/sse" }, + /* 249 */ { ud_itab__249, UD_TAB__OPC_SSE, "/sse" }, + /* 250 */ { ud_itab__250, UD_TAB__OPC_SSE, "/sse" }, + /* 251 */ { ud_itab__251, UD_TAB__OPC_SSE, "/sse" }, + /* 252 */ { ud_itab__252, UD_TAB__OPC_SSE, "/sse" }, + /* 253 */ { ud_itab__253, UD_TAB__OPC_SSE, "/sse" }, + /* 254 */ { ud_itab__254, UD_TAB__OPC_SSE, "/sse" }, + /* 255 */ { ud_itab__255, UD_TAB__OPC_SSE, "/sse" }, + /* 256 */ { ud_itab__256, UD_TAB__OPC_SSE, "/sse" }, + /* 257 */ { ud_itab__257, UD_TAB__OPC_SSE, "/sse" }, + /* 258 */ { ud_itab__258, UD_TAB__OPC_SSE, "/sse" }, + /* 259 */ { ud_itab__259, UD_TAB__OPC_SSE, "/sse" }, + /* 260 */ { ud_itab__260, UD_TAB__OPC_SSE, "/sse" }, + /* 261 */ { ud_itab__261, UD_TAB__OPC_SSE, "/sse" }, + /* 262 */ { ud_itab__262, UD_TAB__OPC_SSE, "/sse" }, + /* 263 */ { ud_itab__263, UD_TAB__OPC_SSE, "/sse" }, + /* 264 */ { ud_itab__264, UD_TAB__OPC_SSE, "/sse" }, + /* 265 */ { ud_itab__265, UD_TAB__OPC_SSE, "/sse" }, + /* 266 */ { ud_itab__266, UD_TAB__OPC_SSE, "/sse" }, + /* 267 */ { ud_itab__267, UD_TAB__OPC_SSE, "/sse" }, + /* 268 */ { ud_itab__268, UD_TAB__OPC_SSE, "/sse" }, + /* 269 */ { ud_itab__269, UD_TAB__OPC_SSE, "/sse" }, + /* 270 */ { ud_itab__270, UD_TAB__OPC_SSE, "/sse" }, + /* 271 */ { ud_itab__271, UD_TAB__OPC_SSE, "/sse" }, + /* 272 */ { ud_itab__272, UD_TAB__OPC_SSE, "/sse" }, + /* 273 */ { ud_itab__273, UD_TAB__OPC_SSE, "/sse" }, + /* 274 */ { ud_itab__274, UD_TAB__OPC_SSE, "/sse" }, + /* 275 */ { ud_itab__275, UD_TAB__OPC_MOD, "/mod" }, + /* 276 */ { ud_itab__276, UD_TAB__OPC_SSE, "/sse" }, + /* 277 */ { ud_itab__277, UD_TAB__OPC_SSE, "/sse" }, + /* 278 */ { ud_itab__278, UD_TAB__OPC_SSE, "/sse" }, + /* 279 */ { ud_itab__279, UD_TAB__OPC_SSE, "/sse" }, + /* 280 */ { ud_itab__280, UD_TAB__OPC_SSE, "/sse" }, + /* 281 */ { ud_itab__281, UD_TAB__OPC_SSE, "/sse" }, + /* 282 */ { ud_itab__282, UD_TAB__OPC_SSE, "/sse" }, + /* 283 */ { ud_itab__283, UD_TAB__OPC_SSE, "/sse" }, + /* 284 */ { ud_itab__284, UD_TAB__OPC_MODE, "/m" }, + /* 285 */ { ud_itab__285, UD_TAB__OPC_MODE, "/m" }, + /* 286 */ { ud_itab__286, UD_TAB__OPC_MODE, "/m" }, + /* 287 */ { ud_itab__287, UD_TAB__OPC_MODE, "/m" }, + /* 288 */ { ud_itab__288, UD_TAB__OPC_MODE, "/m" }, + /* 289 */ { ud_itab__289, UD_TAB__OPC_MODE, "/m" }, + /* 290 */ { ud_itab__290, UD_TAB__OPC_MODE, "/m" }, + /* 291 */ { ud_itab__291, UD_TAB__OPC_MODE, "/m" }, + /* 292 */ { ud_itab__292, UD_TAB__OPC_OSIZE, "/o" }, + /* 293 */ { ud_itab__293, UD_TAB__OPC_MODE, "/m" }, + /* 294 */ { ud_itab__294, UD_TAB__OPC_MODE, "/m" }, + /* 295 */ { ud_itab__295, UD_TAB__OPC_OSIZE, "/o" }, + /* 296 */ { ud_itab__296, UD_TAB__OPC_MODE, "/m" }, + /* 297 */ { ud_itab__297, UD_TAB__OPC_MODE, "/m" }, + /* 298 */ { ud_itab__298, UD_TAB__OPC_MODE, "/m" }, + /* 299 */ { ud_itab__299, UD_TAB__OPC_MODE, "/m" }, + /* 300 */ { ud_itab__300, UD_TAB__OPC_OSIZE, "/o" }, + /* 301 */ { ud_itab__301, UD_TAB__OPC_OSIZE, "/o" }, + /* 302 */ { ud_itab__302, UD_TAB__OPC_REG, "/reg" }, + /* 303 */ { ud_itab__303, UD_TAB__OPC_REG, "/reg" }, + /* 304 */ { ud_itab__304, UD_TAB__OPC_REG, "/reg" }, + /* 305 */ { ud_itab__305, UD_TAB__OPC_MODE, "/m" }, + /* 306 */ { ud_itab__306, UD_TAB__OPC_MODE, "/m" }, + /* 307 */ { ud_itab__307, UD_TAB__OPC_MODE, "/m" }, + /* 308 */ { ud_itab__308, UD_TAB__OPC_MODE, "/m" }, + /* 309 */ { ud_itab__309, UD_TAB__OPC_MODE, "/m" }, + /* 310 */ { ud_itab__310, UD_TAB__OPC_MODE, "/m" }, + /* 311 */ { ud_itab__311, UD_TAB__OPC_MODE, "/m" }, + /* 312 */ { ud_itab__312, UD_TAB__OPC_MODE, "/m" }, + /* 313 */ { ud_itab__313, UD_TAB__OPC_REG, "/reg" }, + /* 314 */ { ud_itab__314, UD_TAB__OPC_REG, "/reg" }, + /* 315 */ { ud_itab__315, UD_TAB__OPC_OSIZE, "/o" }, + /* 316 */ { ud_itab__316, UD_TAB__OPC_OSIZE, "/o" }, + /* 317 */ { ud_itab__317, UD_TAB__OPC_MODE, "/m" }, + /* 318 */ { ud_itab__318, UD_TAB__OPC_OSIZE, "/o" }, + /* 319 */ { ud_itab__319, UD_TAB__OPC_MODE, "/m" }, + /* 320 */ { ud_itab__320, UD_TAB__OPC_MODE, "/m" }, + /* 321 */ { ud_itab__321, UD_TAB__OPC_MODE, "/m" }, + /* 322 */ { ud_itab__322, UD_TAB__OPC_OSIZE, "/o" }, + /* 323 */ { ud_itab__323, UD_TAB__OPC_MODE, "/m" }, + /* 324 */ { ud_itab__324, UD_TAB__OPC_MODE, "/m" }, + /* 325 */ { ud_itab__325, UD_TAB__OPC_MODE, "/m" }, + /* 326 */ { ud_itab__326, UD_TAB__OPC_OSIZE, "/o" }, + /* 327 */ { ud_itab__327, UD_TAB__OPC_OSIZE, "/o" }, + /* 328 */ { ud_itab__328, UD_TAB__OPC_OSIZE, "/o" }, + /* 329 */ { ud_itab__329, UD_TAB__OPC_OSIZE, "/o" }, + /* 330 */ { ud_itab__330, UD_TAB__OPC_OSIZE, "/o" }, + /* 331 */ { ud_itab__331, UD_TAB__OPC_REG, "/reg" }, + /* 332 */ { ud_itab__332, UD_TAB__OPC_REG, "/reg" }, + /* 333 */ { ud_itab__333, UD_TAB__OPC_VEX, "/vex" }, + /* 334 */ { ud_itab__334, UD_TAB__OPC_MODE, "/m" }, + /* 335 */ { ud_itab__335, UD_TAB__OPC_TABLE, "opctbl" }, + /* 336 */ { ud_itab__336, UD_TAB__OPC_MOD, "/mod" }, + /* 337 */ { ud_itab__337, UD_TAB__OPC_MOD, "/mod" }, + /* 338 */ { ud_itab__338, UD_TAB__OPC_MOD, "/mod" }, + /* 339 */ { ud_itab__339, UD_TAB__OPC_REG, "/reg" }, + /* 340 */ { ud_itab__340, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 341 */ { ud_itab__341, UD_TAB__OPC_TABLE, "opctbl" }, + /* 342 */ { ud_itab__342, UD_TAB__OPC_MOD, "/mod" }, + /* 343 */ { ud_itab__343, UD_TAB__OPC_MOD, "/mod" }, + /* 344 */ { ud_itab__344, UD_TAB__OPC_OSIZE, "/o" }, + /* 345 */ { ud_itab__345, UD_TAB__OPC_REG, "/reg" }, + /* 346 */ { ud_itab__346, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 347 */ { ud_itab__347, UD_TAB__OPC_REG, "/reg" }, + /* 348 */ { ud_itab__348, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 349 */ { ud_itab__349, UD_TAB__OPC_REG, "/reg" }, + /* 350 */ { ud_itab__350, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 351 */ { ud_itab__351, UD_TAB__OPC_OSIZE, "/o" }, + /* 352 */ { ud_itab__352, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 353 */ { ud_itab__353, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 354 */ { ud_itab__354, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 355 */ { ud_itab__355, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 356 */ { ud_itab__356, UD_TAB__OPC_MOD, "/mod" }, + /* 357 */ { ud_itab__357, UD_TAB__OPC_TABLE, "opctbl" }, + /* 358 */ { ud_itab__358, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 359 */ { ud_itab__359, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 360 */ { ud_itab__360, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 361 */ { ud_itab__361, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 362 */ { ud_itab__362, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 363 */ { ud_itab__363, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 364 */ { ud_itab__364, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 365 */ { ud_itab__365, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 366 */ { ud_itab__366, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 367 */ { ud_itab__367, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 368 */ { ud_itab__368, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 369 */ { ud_itab__369, UD_TAB__OPC_TABLE, "opctbl" }, + /* 370 */ { ud_itab__370, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 371 */ { ud_itab__371, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 372 */ { ud_itab__372, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 373 */ { ud_itab__373, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 374 */ { ud_itab__374, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 375 */ { ud_itab__375, UD_TAB__OPC_OSIZE, "/o" }, + /* 376 */ { ud_itab__376, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 377 */ { ud_itab__377, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 378 */ { ud_itab__378, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 379 */ { ud_itab__379, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 380 */ { ud_itab__380, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 381 */ { ud_itab__381, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 382 */ { ud_itab__382, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 383 */ { ud_itab__383, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 384 */ { ud_itab__384, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 385 */ { ud_itab__385, UD_TAB__OPC_MODE, "/m" }, + /* 386 */ { ud_itab__386, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 387 */ { ud_itab__387, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 388 */ { ud_itab__388, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 389 */ { ud_itab__389, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 390 */ { ud_itab__390, UD_TAB__OPC_VEX_L, "/vexl" }, + /* 391 */ { ud_itab__391, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 392 */ { ud_itab__392, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 393 */ { ud_itab__393, UD_TAB__OPC_VEX_W, "/vexw" }, + /* 394 */ { ud_itab__394, UD_TAB__OPC_TABLE, "opctbl" }, + /* 395 */ { ud_itab__395, UD_TAB__OPC_MOD, "/mod" }, + /* 396 */ { ud_itab__396, UD_TAB__OPC_MOD, "/mod" }, + /* 397 */ { ud_itab__397, UD_TAB__OPC_MOD, "/mod" }, + /* 398 */ { ud_itab__398, UD_TAB__OPC_MOD, "/mod" }, + /* 399 */ { ud_itab__399, UD_TAB__OPC_TABLE, "opctbl" }, + /* 400 */ { ud_itab__400, UD_TAB__OPC_MOD, "/mod" }, + /* 401 */ { ud_itab__401, UD_TAB__OPC_MOD, "/mod" }, + /* 402 */ { ud_itab__402, UD_TAB__OPC_MOD, "/mod" }, + /* 403 */ { ud_itab__403, UD_TAB__OPC_VEX, "/vex" }, + /* 404 */ { ud_itab__404, UD_TAB__OPC_MODE, "/m" }, + /* 405 */ { ud_itab__405, UD_TAB__OPC_REG, "/reg" }, + /* 406 */ { ud_itab__406, UD_TAB__OPC_REG, "/reg" }, + /* 407 */ { ud_itab__407, UD_TAB__OPC_MODE, "/m" }, + /* 408 */ { ud_itab__408, UD_TAB__OPC_OSIZE, "/o" }, + /* 409 */ { ud_itab__409, UD_TAB__OPC_REG, "/reg" }, + /* 410 */ { ud_itab__410, UD_TAB__OPC_REG, "/reg" }, + /* 411 */ { ud_itab__411, UD_TAB__OPC_REG, "/reg" }, + /* 412 */ { ud_itab__412, UD_TAB__OPC_REG, "/reg" }, + /* 413 */ { ud_itab__413, UD_TAB__OPC_MODE, "/m" }, + /* 414 */ { ud_itab__414, UD_TAB__OPC_MODE, "/m" }, + /* 415 */ { ud_itab__415, UD_TAB__OPC_MODE, "/m" }, + /* 416 */ { ud_itab__416, UD_TAB__OPC_MOD, "/mod" }, + /* 417 */ { ud_itab__417, UD_TAB__OPC_REG, "/reg" }, + /* 418 */ { ud_itab__418, UD_TAB__OPC_X87, "/x87" }, + /* 419 */ { ud_itab__419, UD_TAB__OPC_MOD, "/mod" }, + /* 420 */ { ud_itab__420, UD_TAB__OPC_REG, "/reg" }, + /* 421 */ { ud_itab__421, UD_TAB__OPC_X87, "/x87" }, + /* 422 */ { ud_itab__422, UD_TAB__OPC_MOD, "/mod" }, + /* 423 */ { ud_itab__423, UD_TAB__OPC_REG, "/reg" }, + /* 424 */ { ud_itab__424, UD_TAB__OPC_X87, "/x87" }, + /* 425 */ { ud_itab__425, UD_TAB__OPC_MOD, "/mod" }, + /* 426 */ { ud_itab__426, UD_TAB__OPC_REG, "/reg" }, + /* 427 */ { ud_itab__427, UD_TAB__OPC_X87, "/x87" }, + /* 428 */ { ud_itab__428, UD_TAB__OPC_MOD, "/mod" }, + /* 429 */ { ud_itab__429, UD_TAB__OPC_REG, "/reg" }, + /* 430 */ { ud_itab__430, UD_TAB__OPC_X87, "/x87" }, + /* 431 */ { ud_itab__431, UD_TAB__OPC_MOD, "/mod" }, + /* 432 */ { ud_itab__432, UD_TAB__OPC_REG, "/reg" }, + /* 433 */ { ud_itab__433, UD_TAB__OPC_X87, "/x87" }, + /* 434 */ { ud_itab__434, UD_TAB__OPC_MOD, "/mod" }, + /* 435 */ { ud_itab__435, UD_TAB__OPC_REG, "/reg" }, + /* 436 */ { ud_itab__436, UD_TAB__OPC_X87, "/x87" }, + /* 437 */ { ud_itab__437, UD_TAB__OPC_MOD, "/mod" }, + /* 438 */ { ud_itab__438, UD_TAB__OPC_REG, "/reg" }, + /* 439 */ { ud_itab__439, UD_TAB__OPC_X87, "/x87" }, + /* 440 */ { ud_itab__440, UD_TAB__OPC_ASIZE, "/a" }, + /* 441 */ { ud_itab__441, UD_TAB__OPC_MODE, "/m" }, + /* 442 */ { ud_itab__442, UD_TAB__OPC_REG, "/reg" }, + /* 443 */ { ud_itab__443, UD_TAB__OPC_REG, "/reg" }, + /* 444 */ { ud_itab__444, UD_TAB__OPC_REG, "/reg" }, + /* 445 */ { ud_itab__445, UD_TAB__OPC_REG, "/reg" }, + /* 446 */ { ud_itab__446, UD_TAB__OPC_MODE, "/m" }, +}; + +/* itab entry operand definitions (for readability) */ +#define O_AL { OP_AL, SZ_B } +#define O_AX { OP_AX, SZ_W } +#define O_Av { OP_A, SZ_V } +#define O_C { OP_C, SZ_NA } +#define O_CL { OP_CL, SZ_B } +#define O_CS { OP_CS, SZ_NA } +#define O_CX { OP_CX, SZ_W } +#define O_D { OP_D, SZ_NA } +#define O_DL { OP_DL, SZ_B } +#define O_DS { OP_DS, SZ_NA } +#define O_DX { OP_DX, SZ_W } +#define O_E { OP_E, SZ_NA } +#define O_ES { OP_ES, SZ_NA } +#define O_Eb { OP_E, SZ_B } +#define O_Ed { OP_E, SZ_D } +#define O_Eq { OP_E, SZ_Q } +#define O_Ev { OP_E, SZ_V } +#define O_Ew { OP_E, SZ_W } +#define O_Ey { OP_E, SZ_Y } +#define O_Ez { OP_E, SZ_Z } +#define O_FS { OP_FS, SZ_NA } +#define O_Fv { OP_F, SZ_V } +#define O_G { OP_G, SZ_NA } +#define O_GS { OP_GS, SZ_NA } +#define O_Gb { OP_G, SZ_B } +#define O_Gd { OP_G, SZ_D } +#define O_Gq { OP_G, SZ_Q } +#define O_Gv { OP_G, SZ_V } +#define O_Gw { OP_G, SZ_W } +#define O_Gy { OP_G, SZ_Y } +#define O_Gz { OP_G, SZ_Z } +#define O_H { OP_H, SZ_X } +#define O_Hqq { OP_H, SZ_QQ } +#define O_Hx { OP_H, SZ_X } +#define O_I1 { OP_I1, SZ_NA } +#define O_I3 { OP_I3, SZ_NA } +#define O_Ib { OP_I, SZ_B } +#define O_Iv { OP_I, SZ_V } +#define O_Iw { OP_I, SZ_W } +#define O_Iz { OP_I, SZ_Z } +#define O_Jb { OP_J, SZ_B } +#define O_Jv { OP_J, SZ_V } +#define O_Jz { OP_J, SZ_Z } +#define O_L { OP_L, SZ_O } +#define O_Lx { OP_L, SZ_X } +#define O_M { OP_M, SZ_NA } +#define O_Mb { OP_M, SZ_B } +#define O_MbRd { OP_MR, SZ_BD } +#define O_MbRv { OP_MR, SZ_BV } +#define O_Md { OP_M, SZ_D } +#define O_MdRy { OP_MR, SZ_DY } +#define O_MdU { OP_MU, SZ_DO } +#define O_Mdq { OP_M, SZ_DQ } +#define O_Mo { OP_M, SZ_O } +#define O_Mq { OP_M, SZ_Q } +#define O_MqU { OP_MU, SZ_QO } +#define O_Ms { OP_M, SZ_W } +#define O_Mt { OP_M, SZ_T } +#define O_Mv { OP_M, SZ_V } +#define O_Mw { OP_M, SZ_W } +#define O_MwRd { OP_MR, SZ_WD } +#define O_MwRv { OP_MR, SZ_WV } +#define O_MwRy { OP_MR, SZ_WY } +#define O_MwU { OP_MU, SZ_WO } +#define O_N { OP_N, SZ_Q } +#define O_NONE { OP_NONE, SZ_NA } +#define O_Ob { OP_O, SZ_B } +#define O_Ov { OP_O, SZ_V } +#define O_Ow { OP_O, SZ_W } +#define O_P { OP_P, SZ_Q } +#define O_Q { OP_Q, SZ_Q } +#define O_R { OP_R, SZ_RDQ } +#define O_R0b { OP_R0, SZ_B } +#define O_R0v { OP_R0, SZ_V } +#define O_R0w { OP_R0, SZ_W } +#define O_R0y { OP_R0, SZ_Y } +#define O_R0z { OP_R0, SZ_Z } +#define O_R1b { OP_R1, SZ_B } +#define O_R1v { OP_R1, SZ_V } +#define O_R1w { OP_R1, SZ_W } +#define O_R1y { OP_R1, SZ_Y } +#define O_R1z { OP_R1, SZ_Z } +#define O_R2b { OP_R2, SZ_B } +#define O_R2v { OP_R2, SZ_V } +#define O_R2w { OP_R2, SZ_W } +#define O_R2y { OP_R2, SZ_Y } +#define O_R2z { OP_R2, SZ_Z } +#define O_R3b { OP_R3, SZ_B } +#define O_R3v { OP_R3, SZ_V } +#define O_R3w { OP_R3, SZ_W } +#define O_R3y { OP_R3, SZ_Y } +#define O_R3z { OP_R3, SZ_Z } +#define O_R4b { OP_R4, SZ_B } +#define O_R4v { OP_R4, SZ_V } +#define O_R4w { OP_R4, SZ_W } +#define O_R4y { OP_R4, SZ_Y } +#define O_R4z { OP_R4, SZ_Z } +#define O_R5b { OP_R5, SZ_B } +#define O_R5v { OP_R5, SZ_V } +#define O_R5w { OP_R5, SZ_W } +#define O_R5y { OP_R5, SZ_Y } +#define O_R5z { OP_R5, SZ_Z } +#define O_R6b { OP_R6, SZ_B } +#define O_R6v { OP_R6, SZ_V } +#define O_R6w { OP_R6, SZ_W } +#define O_R6y { OP_R6, SZ_Y } +#define O_R6z { OP_R6, SZ_Z } +#define O_R7b { OP_R7, SZ_B } +#define O_R7v { OP_R7, SZ_V } +#define O_R7w { OP_R7, SZ_W } +#define O_R7y { OP_R7, SZ_Y } +#define O_R7z { OP_R7, SZ_Z } +#define O_S { OP_S, SZ_W } +#define O_SS { OP_SS, SZ_NA } +#define O_ST0 { OP_ST0, SZ_NA } +#define O_ST1 { OP_ST1, SZ_NA } +#define O_ST2 { OP_ST2, SZ_NA } +#define O_ST3 { OP_ST3, SZ_NA } +#define O_ST4 { OP_ST4, SZ_NA } +#define O_ST5 { OP_ST5, SZ_NA } +#define O_ST6 { OP_ST6, SZ_NA } +#define O_ST7 { OP_ST7, SZ_NA } +#define O_U { OP_U, SZ_O } +#define O_Ux { OP_U, SZ_X } +#define O_V { OP_V, SZ_DQ } +#define O_Vdq { OP_V, SZ_DQ } +#define O_Vqq { OP_V, SZ_QQ } +#define O_Vsd { OP_V, SZ_Q } +#define O_Vx { OP_V, SZ_X } +#define O_W { OP_W, SZ_DQ } +#define O_Wdq { OP_W, SZ_DQ } +#define O_Wqq { OP_W, SZ_QQ } +#define O_Wsd { OP_W, SZ_Q } +#define O_Wx { OP_W, SZ_X } +#define O_eAX { OP_eAX, SZ_Z } +#define O_eCX { OP_eCX, SZ_Z } +#define O_eDX { OP_eDX, SZ_Z } +#define O_rAX { OP_rAX, SZ_V } +#define O_rCX { OP_rCX, SZ_V } +#define O_rDX { OP_rDX, SZ_V } +#define O_sIb { OP_sI, SZ_B } +#define O_sIv { OP_sI, SZ_V } +#define O_sIz { OP_sI, SZ_Z } + +struct ud_itab_entry ud_itab[] = { + /* 0000 */ { UD_Iinvalid, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0001 */ { UD_Iaaa, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0002 */ { UD_Iaad, O_Ib, O_NONE, O_NONE, O_NONE, P_none }, + /* 0003 */ { UD_Iaam, O_Ib, O_NONE, O_NONE, O_NONE, P_none }, + /* 0004 */ { UD_Iaas, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0005 */ { UD_Iadc, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0006 */ { UD_Iadc, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0007 */ { UD_Iadc, O_Gb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0008 */ { UD_Iadc, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0009 */ { UD_Iadc, O_AL, O_Ib, O_NONE, O_NONE, P_none }, + /* 0010 */ { UD_Iadc, O_rAX, O_sIz, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0011 */ { UD_Iadc, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0012 */ { UD_Iadc, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, + /* 0013 */ { UD_Iadc, O_Ev, O_sIz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0014 */ { UD_Iadc, O_Ev, O_sIb, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0015 */ { UD_Iadd, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0016 */ { UD_Iadd, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0017 */ { UD_Iadd, O_Gb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0018 */ { UD_Iadd, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0019 */ { UD_Iadd, O_AL, O_Ib, O_NONE, O_NONE, P_none }, + /* 0020 */ { UD_Iadd, O_rAX, O_sIz, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0021 */ { UD_Iadd, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0022 */ { UD_Iadd, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, + /* 0023 */ { UD_Iadd, O_Ev, O_sIz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0024 */ { UD_Iadd, O_Ev, O_sIb, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0025 */ { UD_Iaddpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0026 */ { UD_Ivaddpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0027 */ { UD_Iaddps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0028 */ { UD_Ivaddps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0029 */ { UD_Iaddsd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0030 */ { UD_Ivaddsd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0031 */ { UD_Iaddss, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0032 */ { UD_Ivaddss, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0033 */ { UD_Iaddsubpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0034 */ { UD_Ivaddsubpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0035 */ { UD_Iaddsubps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0036 */ { UD_Ivaddsubps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0037 */ { UD_Iaesdec, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0038 */ { UD_Ivaesdec, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0039 */ { UD_Iaesdeclast, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0040 */ { UD_Ivaesdeclast, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0041 */ { UD_Iaesenc, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0042 */ { UD_Ivaesenc, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0043 */ { UD_Iaesenclast, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0044 */ { UD_Ivaesenclast, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0045 */ { UD_Iaesimc, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0046 */ { UD_Ivaesimc, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0047 */ { UD_Iaeskeygenassist, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0048 */ { UD_Ivaeskeygenassist, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0049 */ { UD_Iand, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0050 */ { UD_Iand, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0051 */ { UD_Iand, O_Gb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0052 */ { UD_Iand, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0053 */ { UD_Iand, O_AL, O_Ib, O_NONE, O_NONE, P_none }, + /* 0054 */ { UD_Iand, O_rAX, O_sIz, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0055 */ { UD_Iand, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0056 */ { UD_Iand, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, + /* 0057 */ { UD_Iand, O_Ev, O_sIz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0058 */ { UD_Iand, O_Ev, O_sIb, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0059 */ { UD_Iandpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0060 */ { UD_Ivandpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0061 */ { UD_Iandps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0062 */ { UD_Ivandps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0063 */ { UD_Iandnpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0064 */ { UD_Ivandnpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0065 */ { UD_Iandnps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0066 */ { UD_Ivandnps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0067 */ { UD_Iarpl, O_Ew, O_Gw, O_NONE, O_NONE, P_aso }, + /* 0068 */ { UD_Imovsxd, O_Gq, O_Ed, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexx|P_rexr|P_rexb }, + /* 0069 */ { UD_Icall, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0070 */ { UD_Icall, O_Eq, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, + /* 0071 */ { UD_Icall, O_Fv, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0072 */ { UD_Icall, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0073 */ { UD_Icall, O_Av, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0074 */ { UD_Icbw, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0075 */ { UD_Icwde, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0076 */ { UD_Icdqe, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0077 */ { UD_Iclc, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0078 */ { UD_Icld, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0079 */ { UD_Iclflush, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0080 */ { UD_Iclgi, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0081 */ { UD_Icli, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0082 */ { UD_Iclts, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0083 */ { UD_Icmc, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0084 */ { UD_Icmovo, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0085 */ { UD_Icmovno, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0086 */ { UD_Icmovb, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0087 */ { UD_Icmovae, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0088 */ { UD_Icmovz, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0089 */ { UD_Icmovnz, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0090 */ { UD_Icmovbe, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0091 */ { UD_Icmova, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0092 */ { UD_Icmovs, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0093 */ { UD_Icmovns, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0094 */ { UD_Icmovp, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0095 */ { UD_Icmovnp, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0096 */ { UD_Icmovl, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0097 */ { UD_Icmovge, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0098 */ { UD_Icmovle, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0099 */ { UD_Icmovg, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0100 */ { UD_Icmp, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0101 */ { UD_Icmp, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0102 */ { UD_Icmp, O_Gb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0103 */ { UD_Icmp, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0104 */ { UD_Icmp, O_AL, O_Ib, O_NONE, O_NONE, P_none }, + /* 0105 */ { UD_Icmp, O_rAX, O_sIz, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0106 */ { UD_Icmp, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0107 */ { UD_Icmp, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, + /* 0108 */ { UD_Icmp, O_Ev, O_sIz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0109 */ { UD_Icmp, O_Ev, O_sIb, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0110 */ { UD_Icmppd, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0111 */ { UD_Ivcmppd, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0112 */ { UD_Icmpps, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0113 */ { UD_Ivcmpps, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0114 */ { UD_Icmpsb, O_NONE, O_NONE, O_NONE, O_NONE, P_strz|P_seg }, + /* 0115 */ { UD_Icmpsw, O_NONE, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw|P_seg }, + /* 0116 */ { UD_Icmpsd, O_NONE, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw|P_seg }, + /* 0117 */ { UD_Icmpsd, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0118 */ { UD_Ivcmpsd, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0119 */ { UD_Icmpsq, O_NONE, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw|P_seg }, + /* 0120 */ { UD_Icmpss, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0121 */ { UD_Ivcmpss, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0122 */ { UD_Icmpxchg, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0123 */ { UD_Icmpxchg, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0124 */ { UD_Icmpxchg8b, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0125 */ { UD_Icmpxchg8b, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0126 */ { UD_Icmpxchg16b, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0127 */ { UD_Icomisd, O_Vsd, O_Wsd, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0128 */ { UD_Ivcomisd, O_Vsd, O_Wsd, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0129 */ { UD_Icomiss, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0130 */ { UD_Ivcomiss, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0131 */ { UD_Icpuid, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0132 */ { UD_Icvtdq2pd, O_V, O_Wdq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0133 */ { UD_Ivcvtdq2pd, O_Vx, O_Wdq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0134 */ { UD_Icvtdq2ps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0135 */ { UD_Ivcvtdq2ps, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0136 */ { UD_Icvtpd2dq, O_Vdq, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0137 */ { UD_Ivcvtpd2dq, O_Vdq, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0138 */ { UD_Icvtpd2pi, O_P, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0139 */ { UD_Icvtpd2ps, O_Vdq, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0140 */ { UD_Ivcvtpd2ps, O_Vdq, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0141 */ { UD_Icvtpi2ps, O_V, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0142 */ { UD_Icvtpi2pd, O_V, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0143 */ { UD_Icvtps2dq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0144 */ { UD_Ivcvtps2dq, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0145 */ { UD_Icvtps2pd, O_V, O_Wdq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0146 */ { UD_Ivcvtps2pd, O_Vx, O_Wdq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0147 */ { UD_Icvtps2pi, O_P, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0148 */ { UD_Icvtsd2si, O_Gy, O_MqU, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0149 */ { UD_Ivcvtsd2si, O_Gy, O_MqU, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0150 */ { UD_Icvtsd2ss, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0151 */ { UD_Ivcvtsd2ss, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0152 */ { UD_Icvtsi2sd, O_V, O_Ey, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0153 */ { UD_Ivcvtsi2sd, O_Vx, O_Hx, O_Ey, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0154 */ { UD_Icvtsi2ss, O_V, O_Ey, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0155 */ { UD_Ivcvtsi2ss, O_Vx, O_Hx, O_Ey, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0156 */ { UD_Icvtss2sd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0157 */ { UD_Ivcvtss2sd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0158 */ { UD_Icvtss2si, O_Gy, O_MdU, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0159 */ { UD_Ivcvtss2si, O_Gy, O_MdU, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0160 */ { UD_Icvttpd2dq, O_Vdq, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0161 */ { UD_Ivcvttpd2dq, O_Vdq, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0162 */ { UD_Icvttpd2pi, O_P, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0163 */ { UD_Icvttps2dq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0164 */ { UD_Ivcvttps2dq, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0165 */ { UD_Icvttps2pi, O_P, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0166 */ { UD_Icvttsd2si, O_Gy, O_MqU, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0167 */ { UD_Ivcvttsd2si, O_Gy, O_MqU, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0168 */ { UD_Icvttss2si, O_Gy, O_MdU, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0169 */ { UD_Ivcvttss2si, O_Gy, O_MdU, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0170 */ { UD_Icwd, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0171 */ { UD_Icdq, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0172 */ { UD_Icqo, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0173 */ { UD_Idaa, O_NONE, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 0174 */ { UD_Idas, O_NONE, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 0175 */ { UD_Idec, O_R0z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0176 */ { UD_Idec, O_R1z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0177 */ { UD_Idec, O_R2z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0178 */ { UD_Idec, O_R3z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0179 */ { UD_Idec, O_R4z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0180 */ { UD_Idec, O_R5z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0181 */ { UD_Idec, O_R6z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0182 */ { UD_Idec, O_R7z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0183 */ { UD_Idec, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0184 */ { UD_Idec, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0185 */ { UD_Idiv, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0186 */ { UD_Idiv, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0187 */ { UD_Idivpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0188 */ { UD_Ivdivpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0189 */ { UD_Idivps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0190 */ { UD_Ivdivps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0191 */ { UD_Idivsd, O_V, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0192 */ { UD_Ivdivsd, O_Vx, O_Hx, O_MqU, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0193 */ { UD_Idivss, O_V, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0194 */ { UD_Ivdivss, O_Vx, O_Hx, O_MdU, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0195 */ { UD_Idppd, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0196 */ { UD_Ivdppd, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0197 */ { UD_Idpps, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0198 */ { UD_Ivdpps, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0199 */ { UD_Iemms, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0200 */ { UD_Ienter, O_Iw, O_Ib, O_NONE, O_NONE, P_def64 }, + /* 0201 */ { UD_Iextractps, O_MdRy, O_V, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 0202 */ { UD_Ivextractps, O_MdRy, O_Vx, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 0203 */ { UD_If2xm1, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0204 */ { UD_Ifabs, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0205 */ { UD_Ifadd, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0206 */ { UD_Ifadd, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0207 */ { UD_Ifadd, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0208 */ { UD_Ifadd, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0209 */ { UD_Ifadd, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0210 */ { UD_Ifadd, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0211 */ { UD_Ifadd, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0212 */ { UD_Ifadd, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0213 */ { UD_Ifadd, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0214 */ { UD_Ifadd, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0215 */ { UD_Ifadd, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0216 */ { UD_Ifadd, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0217 */ { UD_Ifadd, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0218 */ { UD_Ifadd, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0219 */ { UD_Ifadd, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0220 */ { UD_Ifadd, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0221 */ { UD_Ifadd, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0222 */ { UD_Ifadd, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0223 */ { UD_Ifaddp, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0224 */ { UD_Ifaddp, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0225 */ { UD_Ifaddp, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0226 */ { UD_Ifaddp, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0227 */ { UD_Ifaddp, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0228 */ { UD_Ifaddp, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0229 */ { UD_Ifaddp, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0230 */ { UD_Ifaddp, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0231 */ { UD_Ifbld, O_Mt, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0232 */ { UD_Ifbstp, O_Mt, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0233 */ { UD_Ifchs, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0234 */ { UD_Ifclex, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0235 */ { UD_Ifcmovb, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0236 */ { UD_Ifcmovb, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0237 */ { UD_Ifcmovb, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0238 */ { UD_Ifcmovb, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0239 */ { UD_Ifcmovb, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0240 */ { UD_Ifcmovb, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0241 */ { UD_Ifcmovb, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0242 */ { UD_Ifcmovb, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0243 */ { UD_Ifcmove, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0244 */ { UD_Ifcmove, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0245 */ { UD_Ifcmove, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0246 */ { UD_Ifcmove, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0247 */ { UD_Ifcmove, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0248 */ { UD_Ifcmove, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0249 */ { UD_Ifcmove, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0250 */ { UD_Ifcmove, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0251 */ { UD_Ifcmovbe, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0252 */ { UD_Ifcmovbe, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0253 */ { UD_Ifcmovbe, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0254 */ { UD_Ifcmovbe, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0255 */ { UD_Ifcmovbe, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0256 */ { UD_Ifcmovbe, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0257 */ { UD_Ifcmovbe, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0258 */ { UD_Ifcmovbe, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0259 */ { UD_Ifcmovu, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0260 */ { UD_Ifcmovu, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0261 */ { UD_Ifcmovu, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0262 */ { UD_Ifcmovu, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0263 */ { UD_Ifcmovu, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0264 */ { UD_Ifcmovu, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0265 */ { UD_Ifcmovu, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0266 */ { UD_Ifcmovu, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0267 */ { UD_Ifcmovnb, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0268 */ { UD_Ifcmovnb, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0269 */ { UD_Ifcmovnb, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0270 */ { UD_Ifcmovnb, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0271 */ { UD_Ifcmovnb, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0272 */ { UD_Ifcmovnb, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0273 */ { UD_Ifcmovnb, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0274 */ { UD_Ifcmovnb, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0275 */ { UD_Ifcmovne, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0276 */ { UD_Ifcmovne, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0277 */ { UD_Ifcmovne, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0278 */ { UD_Ifcmovne, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0279 */ { UD_Ifcmovne, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0280 */ { UD_Ifcmovne, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0281 */ { UD_Ifcmovne, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0282 */ { UD_Ifcmovne, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0283 */ { UD_Ifcmovnbe, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0284 */ { UD_Ifcmovnbe, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0285 */ { UD_Ifcmovnbe, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0286 */ { UD_Ifcmovnbe, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0287 */ { UD_Ifcmovnbe, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0288 */ { UD_Ifcmovnbe, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0289 */ { UD_Ifcmovnbe, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0290 */ { UD_Ifcmovnbe, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0291 */ { UD_Ifcmovnu, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0292 */ { UD_Ifcmovnu, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0293 */ { UD_Ifcmovnu, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0294 */ { UD_Ifcmovnu, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0295 */ { UD_Ifcmovnu, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0296 */ { UD_Ifcmovnu, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0297 */ { UD_Ifcmovnu, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0298 */ { UD_Ifcmovnu, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0299 */ { UD_Ifucomi, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0300 */ { UD_Ifucomi, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0301 */ { UD_Ifucomi, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0302 */ { UD_Ifucomi, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0303 */ { UD_Ifucomi, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0304 */ { UD_Ifucomi, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0305 */ { UD_Ifucomi, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0306 */ { UD_Ifucomi, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0307 */ { UD_Ifcom, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0308 */ { UD_Ifcom, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0309 */ { UD_Ifcom, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0310 */ { UD_Ifcom, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0311 */ { UD_Ifcom, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0312 */ { UD_Ifcom, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0313 */ { UD_Ifcom, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0314 */ { UD_Ifcom, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0315 */ { UD_Ifcom, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0316 */ { UD_Ifcom, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0317 */ { UD_Ifcom2, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0318 */ { UD_Ifcom2, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0319 */ { UD_Ifcom2, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0320 */ { UD_Ifcom2, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0321 */ { UD_Ifcom2, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0322 */ { UD_Ifcom2, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0323 */ { UD_Ifcom2, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0324 */ { UD_Ifcom2, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0325 */ { UD_Ifcomp3, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0326 */ { UD_Ifcomp3, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0327 */ { UD_Ifcomp3, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0328 */ { UD_Ifcomp3, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0329 */ { UD_Ifcomp3, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0330 */ { UD_Ifcomp3, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0331 */ { UD_Ifcomp3, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0332 */ { UD_Ifcomp3, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0333 */ { UD_Ifcomi, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0334 */ { UD_Ifcomi, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0335 */ { UD_Ifcomi, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0336 */ { UD_Ifcomi, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0337 */ { UD_Ifcomi, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0338 */ { UD_Ifcomi, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0339 */ { UD_Ifcomi, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0340 */ { UD_Ifcomi, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0341 */ { UD_Ifucomip, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0342 */ { UD_Ifucomip, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0343 */ { UD_Ifucomip, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0344 */ { UD_Ifucomip, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0345 */ { UD_Ifucomip, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0346 */ { UD_Ifucomip, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0347 */ { UD_Ifucomip, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0348 */ { UD_Ifucomip, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0349 */ { UD_Ifcomip, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0350 */ { UD_Ifcomip, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0351 */ { UD_Ifcomip, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0352 */ { UD_Ifcomip, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0353 */ { UD_Ifcomip, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0354 */ { UD_Ifcomip, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0355 */ { UD_Ifcomip, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0356 */ { UD_Ifcomip, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0357 */ { UD_Ifcomp, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0358 */ { UD_Ifcomp, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0359 */ { UD_Ifcomp, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0360 */ { UD_Ifcomp, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0361 */ { UD_Ifcomp, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0362 */ { UD_Ifcomp, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0363 */ { UD_Ifcomp, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0364 */ { UD_Ifcomp, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0365 */ { UD_Ifcomp, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0366 */ { UD_Ifcomp, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0367 */ { UD_Ifcomp5, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0368 */ { UD_Ifcomp5, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0369 */ { UD_Ifcomp5, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0370 */ { UD_Ifcomp5, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0371 */ { UD_Ifcomp5, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0372 */ { UD_Ifcomp5, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0373 */ { UD_Ifcomp5, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0374 */ { UD_Ifcomp5, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0375 */ { UD_Ifcompp, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0376 */ { UD_Ifcos, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0377 */ { UD_Ifdecstp, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0378 */ { UD_Ifdiv, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0379 */ { UD_Ifdiv, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0380 */ { UD_Ifdiv, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0381 */ { UD_Ifdiv, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0382 */ { UD_Ifdiv, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0383 */ { UD_Ifdiv, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0384 */ { UD_Ifdiv, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0385 */ { UD_Ifdiv, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0386 */ { UD_Ifdiv, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0387 */ { UD_Ifdiv, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0388 */ { UD_Ifdiv, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0389 */ { UD_Ifdiv, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0390 */ { UD_Ifdiv, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0391 */ { UD_Ifdiv, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0392 */ { UD_Ifdiv, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0393 */ { UD_Ifdiv, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0394 */ { UD_Ifdiv, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0395 */ { UD_Ifdiv, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0396 */ { UD_Ifdivp, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0397 */ { UD_Ifdivp, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0398 */ { UD_Ifdivp, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0399 */ { UD_Ifdivp, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0400 */ { UD_Ifdivp, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0401 */ { UD_Ifdivp, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0402 */ { UD_Ifdivp, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0403 */ { UD_Ifdivp, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0404 */ { UD_Ifdivr, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0405 */ { UD_Ifdivr, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0406 */ { UD_Ifdivr, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0407 */ { UD_Ifdivr, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0408 */ { UD_Ifdivr, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0409 */ { UD_Ifdivr, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0410 */ { UD_Ifdivr, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0411 */ { UD_Ifdivr, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0412 */ { UD_Ifdivr, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0413 */ { UD_Ifdivr, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0414 */ { UD_Ifdivr, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0415 */ { UD_Ifdivr, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0416 */ { UD_Ifdivr, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0417 */ { UD_Ifdivr, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0418 */ { UD_Ifdivr, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0419 */ { UD_Ifdivr, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0420 */ { UD_Ifdivr, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0421 */ { UD_Ifdivr, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0422 */ { UD_Ifdivrp, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0423 */ { UD_Ifdivrp, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0424 */ { UD_Ifdivrp, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0425 */ { UD_Ifdivrp, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0426 */ { UD_Ifdivrp, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0427 */ { UD_Ifdivrp, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0428 */ { UD_Ifdivrp, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0429 */ { UD_Ifdivrp, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0430 */ { UD_Ifemms, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0431 */ { UD_Iffree, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0432 */ { UD_Iffree, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0433 */ { UD_Iffree, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0434 */ { UD_Iffree, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0435 */ { UD_Iffree, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0436 */ { UD_Iffree, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0437 */ { UD_Iffree, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0438 */ { UD_Iffree, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0439 */ { UD_Iffreep, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0440 */ { UD_Iffreep, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0441 */ { UD_Iffreep, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0442 */ { UD_Iffreep, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0443 */ { UD_Iffreep, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0444 */ { UD_Iffreep, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0445 */ { UD_Iffreep, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0446 */ { UD_Iffreep, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0447 */ { UD_Ificom, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0448 */ { UD_Ificom, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0449 */ { UD_Ificomp, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0450 */ { UD_Ificomp, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0451 */ { UD_Ifild, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0452 */ { UD_Ifild, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0453 */ { UD_Ifild, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0454 */ { UD_Ifincstp, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0455 */ { UD_Ifninit, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0456 */ { UD_Ifiadd, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0457 */ { UD_Ifiadd, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0458 */ { UD_Ifidivr, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0459 */ { UD_Ifidivr, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0460 */ { UD_Ifidiv, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0461 */ { UD_Ifidiv, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0462 */ { UD_Ifisub, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0463 */ { UD_Ifisub, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0464 */ { UD_Ifisubr, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0465 */ { UD_Ifisubr, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0466 */ { UD_Ifist, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0467 */ { UD_Ifist, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0468 */ { UD_Ifistp, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0469 */ { UD_Ifistp, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0470 */ { UD_Ifistp, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0471 */ { UD_Ifisttp, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0472 */ { UD_Ifisttp, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0473 */ { UD_Ifisttp, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0474 */ { UD_Ifld, O_Mt, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0475 */ { UD_Ifld, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0476 */ { UD_Ifld, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0477 */ { UD_Ifld, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0478 */ { UD_Ifld, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0479 */ { UD_Ifld, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0480 */ { UD_Ifld, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0481 */ { UD_Ifld, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0482 */ { UD_Ifld, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0483 */ { UD_Ifld, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0484 */ { UD_Ifld, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0485 */ { UD_Ifld1, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0486 */ { UD_Ifldl2t, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0487 */ { UD_Ifldl2e, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0488 */ { UD_Ifldpi, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0489 */ { UD_Ifldlg2, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0490 */ { UD_Ifldln2, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0491 */ { UD_Ifldz, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0492 */ { UD_Ifldcw, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0493 */ { UD_Ifldenv, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0494 */ { UD_Ifmul, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0495 */ { UD_Ifmul, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0496 */ { UD_Ifmul, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0497 */ { UD_Ifmul, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0498 */ { UD_Ifmul, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0499 */ { UD_Ifmul, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0500 */ { UD_Ifmul, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0501 */ { UD_Ifmul, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0502 */ { UD_Ifmul, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0503 */ { UD_Ifmul, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0504 */ { UD_Ifmul, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0505 */ { UD_Ifmul, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0506 */ { UD_Ifmul, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0507 */ { UD_Ifmul, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0508 */ { UD_Ifmul, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0509 */ { UD_Ifmul, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0510 */ { UD_Ifmul, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0511 */ { UD_Ifmul, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0512 */ { UD_Ifmulp, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0513 */ { UD_Ifmulp, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0514 */ { UD_Ifmulp, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0515 */ { UD_Ifmulp, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0516 */ { UD_Ifmulp, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0517 */ { UD_Ifmulp, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0518 */ { UD_Ifmulp, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0519 */ { UD_Ifmulp, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0520 */ { UD_Ifimul, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0521 */ { UD_Ifimul, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0522 */ { UD_Ifnop, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0523 */ { UD_Ifndisi, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0524 */ { UD_Ifneni, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0525 */ { UD_Ifnsetpm, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0526 */ { UD_Ifpatan, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0527 */ { UD_Ifprem, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0528 */ { UD_Ifprem1, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0529 */ { UD_Ifptan, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0530 */ { UD_Ifrndint, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0531 */ { UD_Ifrstor, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0532 */ { UD_Ifrstpm, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0533 */ { UD_Ifnsave, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0534 */ { UD_Ifscale, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0535 */ { UD_Ifsin, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0536 */ { UD_Ifsincos, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0537 */ { UD_Ifsqrt, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0538 */ { UD_Ifstp, O_Mt, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0539 */ { UD_Ifstp, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0540 */ { UD_Ifstp, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0541 */ { UD_Ifstp, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0542 */ { UD_Ifstp, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0543 */ { UD_Ifstp, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0544 */ { UD_Ifstp, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0545 */ { UD_Ifstp, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0546 */ { UD_Ifstp, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0547 */ { UD_Ifstp, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0548 */ { UD_Ifstp, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0549 */ { UD_Ifstp1, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0550 */ { UD_Ifstp1, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0551 */ { UD_Ifstp1, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0552 */ { UD_Ifstp1, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0553 */ { UD_Ifstp1, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0554 */ { UD_Ifstp1, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0555 */ { UD_Ifstp1, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0556 */ { UD_Ifstp1, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0557 */ { UD_Ifstp8, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0558 */ { UD_Ifstp8, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0559 */ { UD_Ifstp8, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0560 */ { UD_Ifstp8, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0561 */ { UD_Ifstp8, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0562 */ { UD_Ifstp8, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0563 */ { UD_Ifstp8, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0564 */ { UD_Ifstp8, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0565 */ { UD_Ifstp9, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0566 */ { UD_Ifstp9, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0567 */ { UD_Ifstp9, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0568 */ { UD_Ifstp9, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0569 */ { UD_Ifstp9, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0570 */ { UD_Ifstp9, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0571 */ { UD_Ifstp9, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0572 */ { UD_Ifstp9, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0573 */ { UD_Ifst, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0574 */ { UD_Ifst, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0575 */ { UD_Ifst, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0576 */ { UD_Ifst, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0577 */ { UD_Ifst, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0578 */ { UD_Ifst, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0579 */ { UD_Ifst, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0580 */ { UD_Ifst, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0581 */ { UD_Ifst, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0582 */ { UD_Ifst, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0583 */ { UD_Ifnstcw, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0584 */ { UD_Ifnstenv, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0585 */ { UD_Ifnstsw, O_Mw, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0586 */ { UD_Ifnstsw, O_AX, O_NONE, O_NONE, O_NONE, P_none }, + /* 0587 */ { UD_Ifsub, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0588 */ { UD_Ifsub, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0589 */ { UD_Ifsub, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0590 */ { UD_Ifsub, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0591 */ { UD_Ifsub, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0592 */ { UD_Ifsub, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0593 */ { UD_Ifsub, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0594 */ { UD_Ifsub, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0595 */ { UD_Ifsub, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0596 */ { UD_Ifsub, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0597 */ { UD_Ifsub, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0598 */ { UD_Ifsub, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0599 */ { UD_Ifsub, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0600 */ { UD_Ifsub, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0601 */ { UD_Ifsub, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0602 */ { UD_Ifsub, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0603 */ { UD_Ifsub, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0604 */ { UD_Ifsub, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0605 */ { UD_Ifsubp, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0606 */ { UD_Ifsubp, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0607 */ { UD_Ifsubp, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0608 */ { UD_Ifsubp, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0609 */ { UD_Ifsubp, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0610 */ { UD_Ifsubp, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0611 */ { UD_Ifsubp, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0612 */ { UD_Ifsubp, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0613 */ { UD_Ifsubr, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0614 */ { UD_Ifsubr, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0615 */ { UD_Ifsubr, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0616 */ { UD_Ifsubr, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0617 */ { UD_Ifsubr, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0618 */ { UD_Ifsubr, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0619 */ { UD_Ifsubr, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0620 */ { UD_Ifsubr, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0621 */ { UD_Ifsubr, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0622 */ { UD_Ifsubr, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0623 */ { UD_Ifsubr, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0624 */ { UD_Ifsubr, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0625 */ { UD_Ifsubr, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0626 */ { UD_Ifsubr, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0627 */ { UD_Ifsubr, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0628 */ { UD_Ifsubr, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0629 */ { UD_Ifsubr, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0630 */ { UD_Ifsubr, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0631 */ { UD_Ifsubrp, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0632 */ { UD_Ifsubrp, O_ST1, O_ST0, O_NONE, O_NONE, P_none }, + /* 0633 */ { UD_Ifsubrp, O_ST2, O_ST0, O_NONE, O_NONE, P_none }, + /* 0634 */ { UD_Ifsubrp, O_ST3, O_ST0, O_NONE, O_NONE, P_none }, + /* 0635 */ { UD_Ifsubrp, O_ST4, O_ST0, O_NONE, O_NONE, P_none }, + /* 0636 */ { UD_Ifsubrp, O_ST5, O_ST0, O_NONE, O_NONE, P_none }, + /* 0637 */ { UD_Ifsubrp, O_ST6, O_ST0, O_NONE, O_NONE, P_none }, + /* 0638 */ { UD_Ifsubrp, O_ST7, O_ST0, O_NONE, O_NONE, P_none }, + /* 0639 */ { UD_Iftst, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0640 */ { UD_Ifucom, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0641 */ { UD_Ifucom, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0642 */ { UD_Ifucom, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0643 */ { UD_Ifucom, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0644 */ { UD_Ifucom, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0645 */ { UD_Ifucom, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0646 */ { UD_Ifucom, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0647 */ { UD_Ifucom, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0648 */ { UD_Ifucomp, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0649 */ { UD_Ifucomp, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0650 */ { UD_Ifucomp, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0651 */ { UD_Ifucomp, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0652 */ { UD_Ifucomp, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0653 */ { UD_Ifucomp, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0654 */ { UD_Ifucomp, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0655 */ { UD_Ifucomp, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0656 */ { UD_Ifucompp, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0657 */ { UD_Ifxam, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0658 */ { UD_Ifxch, O_ST0, O_ST0, O_NONE, O_NONE, P_none }, + /* 0659 */ { UD_Ifxch, O_ST0, O_ST1, O_NONE, O_NONE, P_none }, + /* 0660 */ { UD_Ifxch, O_ST0, O_ST2, O_NONE, O_NONE, P_none }, + /* 0661 */ { UD_Ifxch, O_ST0, O_ST3, O_NONE, O_NONE, P_none }, + /* 0662 */ { UD_Ifxch, O_ST0, O_ST4, O_NONE, O_NONE, P_none }, + /* 0663 */ { UD_Ifxch, O_ST0, O_ST5, O_NONE, O_NONE, P_none }, + /* 0664 */ { UD_Ifxch, O_ST0, O_ST6, O_NONE, O_NONE, P_none }, + /* 0665 */ { UD_Ifxch, O_ST0, O_ST7, O_NONE, O_NONE, P_none }, + /* 0666 */ { UD_Ifxch4, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0667 */ { UD_Ifxch4, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0668 */ { UD_Ifxch4, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0669 */ { UD_Ifxch4, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0670 */ { UD_Ifxch4, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0671 */ { UD_Ifxch4, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0672 */ { UD_Ifxch4, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0673 */ { UD_Ifxch4, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0674 */ { UD_Ifxch7, O_ST0, O_NONE, O_NONE, O_NONE, P_none }, + /* 0675 */ { UD_Ifxch7, O_ST1, O_NONE, O_NONE, O_NONE, P_none }, + /* 0676 */ { UD_Ifxch7, O_ST2, O_NONE, O_NONE, O_NONE, P_none }, + /* 0677 */ { UD_Ifxch7, O_ST3, O_NONE, O_NONE, O_NONE, P_none }, + /* 0678 */ { UD_Ifxch7, O_ST4, O_NONE, O_NONE, O_NONE, P_none }, + /* 0679 */ { UD_Ifxch7, O_ST5, O_NONE, O_NONE, O_NONE, P_none }, + /* 0680 */ { UD_Ifxch7, O_ST6, O_NONE, O_NONE, O_NONE, P_none }, + /* 0681 */ { UD_Ifxch7, O_ST7, O_NONE, O_NONE, O_NONE, P_none }, + /* 0682 */ { UD_Ifxrstor, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0683 */ { UD_Ifxsave, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0684 */ { UD_Ifxtract, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0685 */ { UD_Ifyl2x, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0686 */ { UD_Ifyl2xp1, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0687 */ { UD_Ihlt, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0688 */ { UD_Iidiv, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0689 */ { UD_Iidiv, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0690 */ { UD_Iin, O_AL, O_Ib, O_NONE, O_NONE, P_none }, + /* 0691 */ { UD_Iin, O_eAX, O_Ib, O_NONE, O_NONE, P_oso }, + /* 0692 */ { UD_Iin, O_AL, O_DX, O_NONE, O_NONE, P_none }, + /* 0693 */ { UD_Iin, O_eAX, O_DX, O_NONE, O_NONE, P_oso }, + /* 0694 */ { UD_Iimul, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0695 */ { UD_Iimul, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0696 */ { UD_Iimul, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0697 */ { UD_Iimul, O_Gv, O_Ev, O_Iz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0698 */ { UD_Iimul, O_Gv, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0699 */ { UD_Iinc, O_R0z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0700 */ { UD_Iinc, O_R1z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0701 */ { UD_Iinc, O_R2z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0702 */ { UD_Iinc, O_R3z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0703 */ { UD_Iinc, O_R4z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0704 */ { UD_Iinc, O_R5z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0705 */ { UD_Iinc, O_R6z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0706 */ { UD_Iinc, O_R7z, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0707 */ { UD_Iinc, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0708 */ { UD_Iinc, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0709 */ { UD_Iinsb, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg }, + /* 0710 */ { UD_Iinsw, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg }, + /* 0711 */ { UD_Iinsd, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg }, + /* 0712 */ { UD_Iint1, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0713 */ { UD_Iint3, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0714 */ { UD_Iint, O_Ib, O_NONE, O_NONE, O_NONE, P_none }, + /* 0715 */ { UD_Iinto, O_NONE, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 0716 */ { UD_Iinvd, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0717 */ { UD_Iinvept, O_Gd, O_Mo, O_NONE, O_NONE, P_none }, + /* 0718 */ { UD_Iinvept, O_Gq, O_Mo, O_NONE, O_NONE, P_none }, + /* 0719 */ { UD_Iinvlpg, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0720 */ { UD_Iinvlpga, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0721 */ { UD_Iinvvpid, O_Gd, O_Mo, O_NONE, O_NONE, P_none }, + /* 0722 */ { UD_Iinvvpid, O_Gq, O_Mo, O_NONE, O_NONE, P_none }, + /* 0723 */ { UD_Iiretw, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0724 */ { UD_Iiretd, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0725 */ { UD_Iiretq, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0726 */ { UD_Ijo, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0727 */ { UD_Ijo, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0728 */ { UD_Ijno, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0729 */ { UD_Ijno, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0730 */ { UD_Ijb, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0731 */ { UD_Ijb, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0732 */ { UD_Ijae, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0733 */ { UD_Ijae, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0734 */ { UD_Ijz, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0735 */ { UD_Ijz, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0736 */ { UD_Ijnz, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0737 */ { UD_Ijnz, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0738 */ { UD_Ijbe, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0739 */ { UD_Ijbe, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0740 */ { UD_Ija, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0741 */ { UD_Ija, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0742 */ { UD_Ijs, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0743 */ { UD_Ijs, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0744 */ { UD_Ijns, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0745 */ { UD_Ijns, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0746 */ { UD_Ijp, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0747 */ { UD_Ijp, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0748 */ { UD_Ijnp, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0749 */ { UD_Ijnp, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0750 */ { UD_Ijl, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0751 */ { UD_Ijl, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0752 */ { UD_Ijge, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0753 */ { UD_Ijge, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0754 */ { UD_Ijle, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0755 */ { UD_Ijle, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0756 */ { UD_Ijg, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0757 */ { UD_Ijg, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0758 */ { UD_Ijcxz, O_Jb, O_NONE, O_NONE, O_NONE, P_aso }, + /* 0759 */ { UD_Ijecxz, O_Jb, O_NONE, O_NONE, O_NONE, P_aso }, + /* 0760 */ { UD_Ijrcxz, O_Jb, O_NONE, O_NONE, O_NONE, P_aso }, + /* 0761 */ { UD_Ijmp, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, + /* 0762 */ { UD_Ijmp, O_Fv, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0763 */ { UD_Ijmp, O_Jz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 0764 */ { UD_Ijmp, O_Av, O_NONE, O_NONE, O_NONE, P_oso }, + /* 0765 */ { UD_Ijmp, O_Jb, O_NONE, O_NONE, O_NONE, P_def64 }, + /* 0766 */ { UD_Ilahf, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0767 */ { UD_Ilar, O_Gv, O_Ew, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0768 */ { UD_Ildmxcsr, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0769 */ { UD_Ilds, O_Gv, O_M, O_NONE, O_NONE, P_aso|P_oso }, + /* 0770 */ { UD_Ilea, O_Gv, O_M, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0771 */ { UD_Iles, O_Gv, O_M, O_NONE, O_NONE, P_aso|P_oso }, + /* 0772 */ { UD_Ilfs, O_Gz, O_M, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0773 */ { UD_Ilgs, O_Gz, O_M, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0774 */ { UD_Ilidt, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0775 */ { UD_Ilss, O_Gv, O_M, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0776 */ { UD_Ileave, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0777 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0778 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0779 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0780 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0781 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0782 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0783 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0784 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0785 */ { UD_Ilgdt, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0786 */ { UD_Illdt, O_Ew, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0787 */ { UD_Ilmsw, O_Ew, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0788 */ { UD_Ilmsw, O_Ew, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0789 */ { UD_Ilock, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0790 */ { UD_Ilodsb, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg }, + /* 0791 */ { UD_Ilodsw, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, + /* 0792 */ { UD_Ilodsd, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, + /* 0793 */ { UD_Ilodsq, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, + /* 0794 */ { UD_Iloopne, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0795 */ { UD_Iloope, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0796 */ { UD_Iloop, O_Jb, O_NONE, O_NONE, O_NONE, P_none }, + /* 0797 */ { UD_Ilsl, O_Gv, O_Ew, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0798 */ { UD_Iltr, O_Ew, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0799 */ { UD_Imaskmovq, O_P, O_N, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0800 */ { UD_Imaxpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0801 */ { UD_Ivmaxpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0802 */ { UD_Imaxps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0803 */ { UD_Ivmaxps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0804 */ { UD_Imaxsd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0805 */ { UD_Ivmaxsd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0806 */ { UD_Imaxss, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0807 */ { UD_Ivmaxss, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0808 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0809 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0810 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0811 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0812 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0813 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0814 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0815 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0816 */ { UD_Iminpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0817 */ { UD_Ivminpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0818 */ { UD_Iminps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0819 */ { UD_Ivminps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0820 */ { UD_Iminsd, O_V, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0821 */ { UD_Ivminsd, O_Vx, O_Hx, O_MqU, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0822 */ { UD_Iminss, O_V, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0823 */ { UD_Ivminss, O_Vx, O_Hx, O_MdU, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0824 */ { UD_Imonitor, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0825 */ { UD_Imontmul, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0826 */ { UD_Imov, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0827 */ { UD_Imov, O_Ev, O_sIz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0828 */ { UD_Imov, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0829 */ { UD_Imov, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0830 */ { UD_Imov, O_Gb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0831 */ { UD_Imov, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0832 */ { UD_Imov, O_MwRv, O_S, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0833 */ { UD_Imov, O_S, O_MwRv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0834 */ { UD_Imov, O_AL, O_Ob, O_NONE, O_NONE, P_none }, + /* 0835 */ { UD_Imov, O_rAX, O_Ov, O_NONE, O_NONE, P_aso|P_oso|P_rexw }, + /* 0836 */ { UD_Imov, O_Ob, O_AL, O_NONE, O_NONE, P_none }, + /* 0837 */ { UD_Imov, O_Ov, O_rAX, O_NONE, O_NONE, P_aso|P_oso|P_rexw }, + /* 0838 */ { UD_Imov, O_R0b, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 0839 */ { UD_Imov, O_R1b, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 0840 */ { UD_Imov, O_R2b, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 0841 */ { UD_Imov, O_R3b, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 0842 */ { UD_Imov, O_R4b, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 0843 */ { UD_Imov, O_R5b, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 0844 */ { UD_Imov, O_R6b, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 0845 */ { UD_Imov, O_R7b, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 0846 */ { UD_Imov, O_R0v, O_Iv, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 0847 */ { UD_Imov, O_R1v, O_Iv, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 0848 */ { UD_Imov, O_R2v, O_Iv, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 0849 */ { UD_Imov, O_R3v, O_Iv, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 0850 */ { UD_Imov, O_R4v, O_Iv, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 0851 */ { UD_Imov, O_R5v, O_Iv, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 0852 */ { UD_Imov, O_R6v, O_Iv, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 0853 */ { UD_Imov, O_R7v, O_Iv, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 0854 */ { UD_Imov, O_R, O_C, O_NONE, O_NONE, P_rexr|P_rexw|P_rexb }, + /* 0855 */ { UD_Imov, O_R, O_D, O_NONE, O_NONE, P_rexr|P_rexw|P_rexb }, + /* 0856 */ { UD_Imov, O_C, O_R, O_NONE, O_NONE, P_rexr|P_rexw|P_rexb }, + /* 0857 */ { UD_Imov, O_D, O_R, O_NONE, O_NONE, P_rexr|P_rexw|P_rexb }, + /* 0858 */ { UD_Imovapd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0859 */ { UD_Ivmovapd, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0860 */ { UD_Imovapd, O_W, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0861 */ { UD_Ivmovapd, O_Wx, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0862 */ { UD_Imovaps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0863 */ { UD_Ivmovaps, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0864 */ { UD_Imovaps, O_W, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0865 */ { UD_Ivmovaps, O_Wx, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0866 */ { UD_Imovd, O_P, O_Ey, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0867 */ { UD_Imovd, O_P, O_Ey, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0868 */ { UD_Imovd, O_V, O_Ey, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0869 */ { UD_Ivmovd, O_Vx, O_Ey, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0870 */ { UD_Imovd, O_V, O_Ey, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0871 */ { UD_Ivmovd, O_Vx, O_Ey, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0872 */ { UD_Imovd, O_Ey, O_P, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0873 */ { UD_Imovd, O_Ey, O_P, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0874 */ { UD_Imovd, O_Ey, O_V, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0875 */ { UD_Ivmovd, O_Ey, O_Vx, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0876 */ { UD_Imovd, O_Ey, O_V, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0877 */ { UD_Ivmovd, O_Ey, O_Vx, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0878 */ { UD_Imovhpd, O_V, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0879 */ { UD_Ivmovhpd, O_Vx, O_Hx, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0880 */ { UD_Imovhpd, O_M, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0881 */ { UD_Ivmovhpd, O_M, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0882 */ { UD_Imovhps, O_V, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0883 */ { UD_Ivmovhps, O_Vx, O_Hx, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0884 */ { UD_Imovhps, O_M, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0885 */ { UD_Ivmovhps, O_M, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0886 */ { UD_Imovlhps, O_V, O_U, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0887 */ { UD_Ivmovlhps, O_Vx, O_Hx, O_Ux, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0888 */ { UD_Imovlpd, O_V, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0889 */ { UD_Ivmovlpd, O_Vx, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0890 */ { UD_Imovlpd, O_M, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0891 */ { UD_Ivmovlpd, O_M, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0892 */ { UD_Imovlps, O_V, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0893 */ { UD_Ivmovlps, O_Vx, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0894 */ { UD_Imovlps, O_M, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0895 */ { UD_Ivmovlps, O_M, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0896 */ { UD_Imovhlps, O_V, O_U, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0897 */ { UD_Ivmovhlps, O_Vx, O_Ux, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0898 */ { UD_Imovmskpd, O_Gd, O_U, O_NONE, O_NONE, P_oso|P_rexr|P_rexb }, + /* 0899 */ { UD_Ivmovmskpd, O_Gd, O_Ux, O_NONE, O_NONE, P_oso|P_rexr|P_rexb|P_vexl }, + /* 0900 */ { UD_Imovmskps, O_Gd, O_U, O_NONE, O_NONE, P_oso|P_rexr|P_rexb }, + /* 0901 */ { UD_Ivmovmskps, O_Gd, O_Ux, O_NONE, O_NONE, P_oso|P_rexr|P_rexb }, + /* 0902 */ { UD_Imovntdq, O_M, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0903 */ { UD_Ivmovntdq, O_M, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0904 */ { UD_Imovnti, O_M, O_Gy, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0905 */ { UD_Imovntpd, O_M, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0906 */ { UD_Ivmovntpd, O_M, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0907 */ { UD_Imovntps, O_M, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0908 */ { UD_Ivmovntps, O_M, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0909 */ { UD_Imovntq, O_M, O_P, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0910 */ { UD_Imovq, O_P, O_Eq, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0911 */ { UD_Imovq, O_V, O_Eq, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0912 */ { UD_Ivmovq, O_Vx, O_Eq, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0913 */ { UD_Imovq, O_Eq, O_P, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0914 */ { UD_Imovq, O_Eq, O_V, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0915 */ { UD_Ivmovq, O_Eq, O_Vx, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0916 */ { UD_Imovq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0917 */ { UD_Ivmovq, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0918 */ { UD_Imovq, O_W, O_V, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0919 */ { UD_Ivmovq, O_Wx, O_Vx, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0920 */ { UD_Imovq, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0921 */ { UD_Imovq, O_Q, O_P, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0922 */ { UD_Imovsb, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg }, + /* 0923 */ { UD_Imovsw, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, + /* 0924 */ { UD_Imovsd, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, + /* 0925 */ { UD_Imovsd, O_V, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0926 */ { UD_Imovsd, O_W, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0927 */ { UD_Imovsq, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, + /* 0928 */ { UD_Imovss, O_V, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0929 */ { UD_Imovss, O_W, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0930 */ { UD_Imovsx, O_Gv, O_Eb, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0931 */ { UD_Imovsx, O_Gy, O_Ew, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0932 */ { UD_Imovupd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0933 */ { UD_Ivmovupd, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0934 */ { UD_Imovupd, O_W, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0935 */ { UD_Ivmovupd, O_Wx, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0936 */ { UD_Imovups, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0937 */ { UD_Ivmovups, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0938 */ { UD_Imovups, O_W, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0939 */ { UD_Ivmovups, O_Wx, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0940 */ { UD_Imovzx, O_Gv, O_Eb, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0941 */ { UD_Imovzx, O_Gy, O_Ew, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0942 */ { UD_Imul, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0943 */ { UD_Imul, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0944 */ { UD_Imulpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0945 */ { UD_Ivmulpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0946 */ { UD_Imulps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0947 */ { UD_Ivmulps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0948 */ { UD_Imulsd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0949 */ { UD_Ivmulsd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0950 */ { UD_Imulss, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0951 */ { UD_Ivmulss, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0952 */ { UD_Imwait, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 0953 */ { UD_Ineg, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0954 */ { UD_Ineg, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0955 */ { UD_Inop, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0956 */ { UD_Inop, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0957 */ { UD_Inop, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0958 */ { UD_Inop, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0959 */ { UD_Inop, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0960 */ { UD_Inop, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0961 */ { UD_Inop, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0962 */ { UD_Inot, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0963 */ { UD_Inot, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0964 */ { UD_Ior, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0965 */ { UD_Ior, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0966 */ { UD_Ior, O_Gb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0967 */ { UD_Ior, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0968 */ { UD_Ior, O_AL, O_Ib, O_NONE, O_NONE, P_none }, + /* 0969 */ { UD_Ior, O_rAX, O_sIz, O_NONE, O_NONE, P_oso|P_rexw }, + /* 0970 */ { UD_Ior, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0971 */ { UD_Ior, O_Ev, O_sIz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0972 */ { UD_Ior, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0973 */ { UD_Ior, O_Ev, O_sIb, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 0974 */ { UD_Iorpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0975 */ { UD_Ivorpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0976 */ { UD_Iorps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0977 */ { UD_Ivorps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0978 */ { UD_Iout, O_Ib, O_AL, O_NONE, O_NONE, P_none }, + /* 0979 */ { UD_Iout, O_Ib, O_eAX, O_NONE, O_NONE, P_oso }, + /* 0980 */ { UD_Iout, O_DX, O_AL, O_NONE, O_NONE, P_none }, + /* 0981 */ { UD_Iout, O_DX, O_eAX, O_NONE, O_NONE, P_oso }, + /* 0982 */ { UD_Ioutsb, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg }, + /* 0983 */ { UD_Ioutsw, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg }, + /* 0984 */ { UD_Ioutsd, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg }, + /* 0985 */ { UD_Ipacksswb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0986 */ { UD_Ivpacksswb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0987 */ { UD_Ipacksswb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0988 */ { UD_Ipackssdw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0989 */ { UD_Ivpackssdw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0990 */ { UD_Ipackssdw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0991 */ { UD_Ipackuswb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0992 */ { UD_Ivpackuswb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0993 */ { UD_Ipackuswb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0994 */ { UD_Ipaddb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0995 */ { UD_Ivpaddb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 0996 */ { UD_Ipaddb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0997 */ { UD_Ipaddw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0998 */ { UD_Ipaddw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 0999 */ { UD_Ivpaddw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1000 */ { UD_Ipaddd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1001 */ { UD_Ipaddd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1002 */ { UD_Ivpaddd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1003 */ { UD_Ipaddsb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1004 */ { UD_Ipaddsb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1005 */ { UD_Ivpaddsb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1006 */ { UD_Ipaddsw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1007 */ { UD_Ipaddsw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1008 */ { UD_Ivpaddsw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1009 */ { UD_Ipaddusb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1010 */ { UD_Ipaddusb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1011 */ { UD_Ivpaddusb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1012 */ { UD_Ipaddusw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1013 */ { UD_Ipaddusw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1014 */ { UD_Ivpaddusw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1015 */ { UD_Ipand, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1016 */ { UD_Ivpand, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1017 */ { UD_Ipand, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1018 */ { UD_Ipandn, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1019 */ { UD_Ivpandn, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1020 */ { UD_Ipandn, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1021 */ { UD_Ipavgb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1022 */ { UD_Ivpavgb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1023 */ { UD_Ipavgb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1024 */ { UD_Ipavgw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1025 */ { UD_Ivpavgw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1026 */ { UD_Ipavgw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1027 */ { UD_Ipcmpeqb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1028 */ { UD_Ipcmpeqb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1029 */ { UD_Ivpcmpeqb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1030 */ { UD_Ipcmpeqw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1031 */ { UD_Ipcmpeqw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1032 */ { UD_Ivpcmpeqw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1033 */ { UD_Ipcmpeqd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1034 */ { UD_Ipcmpeqd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1035 */ { UD_Ivpcmpeqd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1036 */ { UD_Ipcmpgtb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1037 */ { UD_Ivpcmpgtb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1038 */ { UD_Ipcmpgtb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1039 */ { UD_Ipcmpgtw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1040 */ { UD_Ivpcmpgtw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1041 */ { UD_Ipcmpgtw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1042 */ { UD_Ipcmpgtd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1043 */ { UD_Ivpcmpgtd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1044 */ { UD_Ipcmpgtd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1045 */ { UD_Ipextrb, O_MbRv, O_V, O_Ib, O_NONE, P_aso|P_rexx|P_rexr|P_rexb|P_def64 }, + /* 1046 */ { UD_Ivpextrb, O_MbRv, O_Vx, O_Ib, O_NONE, P_aso|P_rexx|P_rexr|P_rexb|P_def64 }, + /* 1047 */ { UD_Ipextrd, O_Ed, O_V, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexw|P_rexb }, + /* 1048 */ { UD_Ivpextrd, O_Ed, O_Vx, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexw|P_rexb }, + /* 1049 */ { UD_Ipextrd, O_Ed, O_V, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexw|P_rexb }, + /* 1050 */ { UD_Ivpextrd, O_Ed, O_Vx, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexw|P_rexb }, + /* 1051 */ { UD_Ipextrq, O_Eq, O_V, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexb|P_def64 }, + /* 1052 */ { UD_Ivpextrq, O_Eq, O_Vx, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexb|P_def64 }, + /* 1053 */ { UD_Ipextrw, O_Gd, O_U, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexb }, + /* 1054 */ { UD_Ivpextrw, O_Gd, O_Ux, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexb }, + /* 1055 */ { UD_Ipextrw, O_Gd, O_N, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1056 */ { UD_Ipextrw, O_MwRd, O_V, O_Ib, O_NONE, P_aso|P_rexw|P_rexx|P_rexr|P_rexb }, + /* 1057 */ { UD_Ivpextrw, O_MwRd, O_Vx, O_Ib, O_NONE, P_aso|P_rexw|P_rexx|P_rexr|P_rexb }, + /* 1058 */ { UD_Ipinsrb, O_V, O_MbRd, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1059 */ { UD_Ipinsrw, O_P, O_MwRy, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, + /* 1060 */ { UD_Ipinsrw, O_V, O_MwRy, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, + /* 1061 */ { UD_Ivpinsrw, O_Vx, O_MwRy, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, + /* 1062 */ { UD_Ipinsrd, O_V, O_Ed, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1063 */ { UD_Ipinsrd, O_V, O_Ed, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1064 */ { UD_Ipinsrq, O_V, O_Eq, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1065 */ { UD_Ivpinsrb, O_V, O_H, O_MbRd, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1066 */ { UD_Ivpinsrd, O_V, O_H, O_Ed, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1067 */ { UD_Ivpinsrd, O_V, O_H, O_Ed, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1068 */ { UD_Ivpinsrq, O_V, O_H, O_Eq, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1069 */ { UD_Ipmaddwd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1070 */ { UD_Ipmaddwd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1071 */ { UD_Ivpmaddwd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1072 */ { UD_Ipmaxsw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1073 */ { UD_Ivpmaxsw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1074 */ { UD_Ipmaxsw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1075 */ { UD_Ipmaxub, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1076 */ { UD_Ipmaxub, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1077 */ { UD_Ivpmaxub, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1078 */ { UD_Ipminsw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1079 */ { UD_Ivpminsw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1080 */ { UD_Ipminsw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1081 */ { UD_Ipminub, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1082 */ { UD_Ivpminub, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1083 */ { UD_Ipminub, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1084 */ { UD_Ipmovmskb, O_Gd, O_U, O_NONE, O_NONE, P_oso|P_rexr|P_rexw|P_rexb }, + /* 1085 */ { UD_Ivpmovmskb, O_Gd, O_Ux, O_NONE, O_NONE, P_oso|P_rexr|P_rexw|P_rexb }, + /* 1086 */ { UD_Ipmovmskb, O_Gd, O_N, O_NONE, O_NONE, P_oso|P_rexr|P_rexw|P_rexb }, + /* 1087 */ { UD_Ipmulhuw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1088 */ { UD_Ipmulhuw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1089 */ { UD_Ivpmulhuw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1090 */ { UD_Ipmulhw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1091 */ { UD_Ivpmulhw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1092 */ { UD_Ipmulhw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1093 */ { UD_Ipmullw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1094 */ { UD_Ipmullw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1095 */ { UD_Ivpmullw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1096 */ { UD_Ipop, O_ES, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 1097 */ { UD_Ipop, O_SS, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 1098 */ { UD_Ipop, O_DS, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 1099 */ { UD_Ipop, O_GS, O_NONE, O_NONE, O_NONE, P_none }, + /* 1100 */ { UD_Ipop, O_FS, O_NONE, O_NONE, O_NONE, P_none }, + /* 1101 */ { UD_Ipop, O_R0v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1102 */ { UD_Ipop, O_R1v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1103 */ { UD_Ipop, O_R2v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1104 */ { UD_Ipop, O_R3v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1105 */ { UD_Ipop, O_R4v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1106 */ { UD_Ipop, O_R5v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1107 */ { UD_Ipop, O_R6v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1108 */ { UD_Ipop, O_R7v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1109 */ { UD_Ipop, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, + /* 1110 */ { UD_Ipopa, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 }, + /* 1111 */ { UD_Ipopad, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 }, + /* 1112 */ { UD_Ipopfw, O_NONE, O_NONE, O_NONE, O_NONE, P_oso }, + /* 1113 */ { UD_Ipopfd, O_NONE, O_NONE, O_NONE, O_NONE, P_oso }, + /* 1114 */ { UD_Ipopfq, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 1115 */ { UD_Ipopfq, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 1116 */ { UD_Ipor, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1117 */ { UD_Ivpor, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1118 */ { UD_Ipor, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1119 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1120 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1121 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1122 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1123 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1124 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1125 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1126 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1127 */ { UD_Iprefetchnta, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1128 */ { UD_Iprefetcht0, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1129 */ { UD_Iprefetcht1, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1130 */ { UD_Iprefetcht2, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1131 */ { UD_Ipsadbw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1132 */ { UD_Ivpsadbw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1133 */ { UD_Ipsadbw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1134 */ { UD_Ipshufw, O_P, O_Q, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1135 */ { UD_Ipsllw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1136 */ { UD_Ipsllw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1137 */ { UD_Ipsllw, O_U, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 1138 */ { UD_Ipsllw, O_N, O_Ib, O_NONE, O_NONE, P_none }, + /* 1139 */ { UD_Ipslld, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1140 */ { UD_Ipslld, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1141 */ { UD_Ipslld, O_U, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 1142 */ { UD_Ipslld, O_N, O_Ib, O_NONE, O_NONE, P_none }, + /* 1143 */ { UD_Ipsllq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1144 */ { UD_Ipsllq, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1145 */ { UD_Ipsllq, O_U, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 1146 */ { UD_Ipsllq, O_N, O_Ib, O_NONE, O_NONE, P_none }, + /* 1147 */ { UD_Ipsraw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1148 */ { UD_Ipsraw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1149 */ { UD_Ivpsraw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1150 */ { UD_Ipsraw, O_U, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 1151 */ { UD_Ivpsraw, O_Hx, O_Ux, O_Ib, O_NONE, P_rexb }, + /* 1152 */ { UD_Ipsraw, O_N, O_Ib, O_NONE, O_NONE, P_none }, + /* 1153 */ { UD_Ipsrad, O_N, O_Ib, O_NONE, O_NONE, P_none }, + /* 1154 */ { UD_Ipsrad, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1155 */ { UD_Ivpsrad, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1156 */ { UD_Ipsrad, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1157 */ { UD_Ipsrad, O_U, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 1158 */ { UD_Ivpsrad, O_Hx, O_Ux, O_Ib, O_NONE, P_rexb }, + /* 1159 */ { UD_Ipsrlw, O_N, O_Ib, O_NONE, O_NONE, P_none }, + /* 1160 */ { UD_Ipsrlw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1161 */ { UD_Ipsrlw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1162 */ { UD_Ivpsrlw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1163 */ { UD_Ipsrlw, O_U, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 1164 */ { UD_Ivpsrlw, O_Hx, O_Ux, O_Ib, O_NONE, P_rexb }, + /* 1165 */ { UD_Ipsrld, O_N, O_Ib, O_NONE, O_NONE, P_none }, + /* 1166 */ { UD_Ipsrld, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1167 */ { UD_Ipsrld, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1168 */ { UD_Ivpsrld, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1169 */ { UD_Ipsrld, O_U, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 1170 */ { UD_Ivpsrld, O_Hx, O_Ux, O_Ib, O_NONE, P_rexb }, + /* 1171 */ { UD_Ipsrlq, O_N, O_Ib, O_NONE, O_NONE, P_none }, + /* 1172 */ { UD_Ipsrlq, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1173 */ { UD_Ipsrlq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1174 */ { UD_Ivpsrlq, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1175 */ { UD_Ipsrlq, O_U, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 1176 */ { UD_Ivpsrlq, O_Hx, O_Ux, O_Ib, O_NONE, P_rexb }, + /* 1177 */ { UD_Ipsubb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1178 */ { UD_Ivpsubb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1179 */ { UD_Ipsubb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1180 */ { UD_Ipsubw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1181 */ { UD_Ivpsubw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1182 */ { UD_Ipsubw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1183 */ { UD_Ipsubd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1184 */ { UD_Ipsubd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1185 */ { UD_Ivpsubd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1186 */ { UD_Ipsubsb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1187 */ { UD_Ipsubsb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1188 */ { UD_Ivpsubsb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1189 */ { UD_Ipsubsw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1190 */ { UD_Ipsubsw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1191 */ { UD_Ivpsubsw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1192 */ { UD_Ipsubusb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1193 */ { UD_Ipsubusb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1194 */ { UD_Ivpsubusb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1195 */ { UD_Ipsubusw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1196 */ { UD_Ipsubusw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1197 */ { UD_Ivpsubusw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1198 */ { UD_Ipunpckhbw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1199 */ { UD_Ivpunpckhbw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1200 */ { UD_Ipunpckhbw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1201 */ { UD_Ipunpckhwd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1202 */ { UD_Ivpunpckhwd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1203 */ { UD_Ipunpckhwd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1204 */ { UD_Ipunpckhdq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1205 */ { UD_Ivpunpckhdq, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1206 */ { UD_Ipunpckhdq, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1207 */ { UD_Ipunpcklbw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1208 */ { UD_Ivpunpcklbw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1209 */ { UD_Ipunpcklbw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1210 */ { UD_Ipunpcklwd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1211 */ { UD_Ivpunpcklwd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1212 */ { UD_Ipunpcklwd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1213 */ { UD_Ipunpckldq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1214 */ { UD_Ivpunpckldq, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1215 */ { UD_Ipunpckldq, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1216 */ { UD_Ipi2fw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1217 */ { UD_Ipi2fd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1218 */ { UD_Ipf2iw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1219 */ { UD_Ipf2id, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1220 */ { UD_Ipfnacc, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1221 */ { UD_Ipfpnacc, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1222 */ { UD_Ipfcmpge, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1223 */ { UD_Ipfmin, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1224 */ { UD_Ipfrcp, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1225 */ { UD_Ipfrsqrt, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1226 */ { UD_Ipfsub, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1227 */ { UD_Ipfadd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1228 */ { UD_Ipfcmpgt, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1229 */ { UD_Ipfmax, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1230 */ { UD_Ipfrcpit1, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1231 */ { UD_Ipfrsqit1, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1232 */ { UD_Ipfsubr, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1233 */ { UD_Ipfacc, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1234 */ { UD_Ipfcmpeq, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1235 */ { UD_Ipfmul, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1236 */ { UD_Ipfrcpit2, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1237 */ { UD_Ipmulhrw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1238 */ { UD_Ipswapd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1239 */ { UD_Ipavgusb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1240 */ { UD_Ipush, O_ES, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 1241 */ { UD_Ipush, O_CS, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 1242 */ { UD_Ipush, O_SS, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 1243 */ { UD_Ipush, O_DS, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 1244 */ { UD_Ipush, O_GS, O_NONE, O_NONE, O_NONE, P_none }, + /* 1245 */ { UD_Ipush, O_FS, O_NONE, O_NONE, O_NONE, P_none }, + /* 1246 */ { UD_Ipush, O_R0v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1247 */ { UD_Ipush, O_R1v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1248 */ { UD_Ipush, O_R2v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1249 */ { UD_Ipush, O_R3v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1250 */ { UD_Ipush, O_R4v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1251 */ { UD_Ipush, O_R5v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1252 */ { UD_Ipush, O_R6v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1253 */ { UD_Ipush, O_R7v, O_NONE, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, + /* 1254 */ { UD_Ipush, O_sIz, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 1255 */ { UD_Ipush, O_Ev, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, + /* 1256 */ { UD_Ipush, O_sIb, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, + /* 1257 */ { UD_Ipusha, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 }, + /* 1258 */ { UD_Ipushad, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 }, + /* 1259 */ { UD_Ipushfw, O_NONE, O_NONE, O_NONE, O_NONE, P_oso }, + /* 1260 */ { UD_Ipushfw, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_def64 }, + /* 1261 */ { UD_Ipushfd, O_NONE, O_NONE, O_NONE, O_NONE, P_oso }, + /* 1262 */ { UD_Ipushfq, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_def64 }, + /* 1263 */ { UD_Ipushfq, O_NONE, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_def64 }, + /* 1264 */ { UD_Ipxor, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1265 */ { UD_Ivpxor, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1266 */ { UD_Ipxor, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1267 */ { UD_Ircl, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1268 */ { UD_Ircl, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1269 */ { UD_Ircl, O_Eb, O_I1, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1270 */ { UD_Ircl, O_Eb, O_CL, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1271 */ { UD_Ircl, O_Ev, O_CL, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1272 */ { UD_Ircl, O_Ev, O_I1, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1273 */ { UD_Ircr, O_Eb, O_I1, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1274 */ { UD_Ircr, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1275 */ { UD_Ircr, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1276 */ { UD_Ircr, O_Ev, O_I1, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1277 */ { UD_Ircr, O_Eb, O_CL, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1278 */ { UD_Ircr, O_Ev, O_CL, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1279 */ { UD_Irol, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1280 */ { UD_Irol, O_Eb, O_I1, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1281 */ { UD_Irol, O_Ev, O_I1, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1282 */ { UD_Irol, O_Eb, O_CL, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1283 */ { UD_Irol, O_Ev, O_CL, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1284 */ { UD_Irol, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1285 */ { UD_Iror, O_Eb, O_I1, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1286 */ { UD_Iror, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1287 */ { UD_Iror, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1288 */ { UD_Iror, O_Ev, O_I1, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1289 */ { UD_Iror, O_Eb, O_CL, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1290 */ { UD_Iror, O_Ev, O_CL, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1291 */ { UD_Ircpps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1292 */ { UD_Ivrcpps, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1293 */ { UD_Ircpss, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1294 */ { UD_Ivrcpss, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1295 */ { UD_Irdmsr, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1296 */ { UD_Irdpmc, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1297 */ { UD_Irdtsc, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1298 */ { UD_Irdtscp, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1299 */ { UD_Irepne, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1300 */ { UD_Irep, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1301 */ { UD_Iret, O_Iw, O_NONE, O_NONE, O_NONE, P_none }, + /* 1302 */ { UD_Iret, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1303 */ { UD_Iretf, O_Iw, O_NONE, O_NONE, O_NONE, P_none }, + /* 1304 */ { UD_Iretf, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1305 */ { UD_Irsm, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1306 */ { UD_Irsqrtps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1307 */ { UD_Ivrsqrtps, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1308 */ { UD_Irsqrtss, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1309 */ { UD_Ivrsqrtss, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1310 */ { UD_Isahf, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1311 */ { UD_Isalc, O_NONE, O_NONE, O_NONE, O_NONE, P_inv64 }, + /* 1312 */ { UD_Isar, O_Ev, O_I1, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1313 */ { UD_Isar, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1314 */ { UD_Isar, O_Eb, O_I1, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1315 */ { UD_Isar, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1316 */ { UD_Isar, O_Eb, O_CL, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1317 */ { UD_Isar, O_Ev, O_CL, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1318 */ { UD_Ishl, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1319 */ { UD_Ishl, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1320 */ { UD_Ishl, O_Eb, O_I1, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1321 */ { UD_Ishl, O_Eb, O_CL, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1322 */ { UD_Ishl, O_Ev, O_CL, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1323 */ { UD_Ishl, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1324 */ { UD_Ishl, O_Eb, O_CL, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1325 */ { UD_Ishl, O_Ev, O_I1, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1326 */ { UD_Ishl, O_Eb, O_I1, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1327 */ { UD_Ishl, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1328 */ { UD_Ishl, O_Ev, O_CL, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1329 */ { UD_Ishl, O_Ev, O_I1, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1330 */ { UD_Ishr, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1331 */ { UD_Ishr, O_Eb, O_CL, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1332 */ { UD_Ishr, O_Ev, O_I1, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1333 */ { UD_Ishr, O_Eb, O_I1, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1334 */ { UD_Ishr, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1335 */ { UD_Ishr, O_Ev, O_CL, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1336 */ { UD_Isbb, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1337 */ { UD_Isbb, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1338 */ { UD_Isbb, O_Gb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1339 */ { UD_Isbb, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1340 */ { UD_Isbb, O_AL, O_Ib, O_NONE, O_NONE, P_none }, + /* 1341 */ { UD_Isbb, O_rAX, O_sIz, O_NONE, O_NONE, P_oso|P_rexw }, + /* 1342 */ { UD_Isbb, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1343 */ { UD_Isbb, O_Ev, O_sIz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1344 */ { UD_Isbb, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, + /* 1345 */ { UD_Isbb, O_Ev, O_sIb, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1346 */ { UD_Iscasb, O_NONE, O_NONE, O_NONE, O_NONE, P_strz }, + /* 1347 */ { UD_Iscasw, O_NONE, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw }, + /* 1348 */ { UD_Iscasd, O_NONE, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw }, + /* 1349 */ { UD_Iscasq, O_NONE, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw }, + /* 1350 */ { UD_Iseto, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1351 */ { UD_Isetno, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1352 */ { UD_Isetb, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1353 */ { UD_Isetae, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1354 */ { UD_Isetz, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1355 */ { UD_Isetnz, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1356 */ { UD_Isetbe, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1357 */ { UD_Iseta, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1358 */ { UD_Isets, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1359 */ { UD_Isetns, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1360 */ { UD_Isetp, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1361 */ { UD_Isetnp, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1362 */ { UD_Isetl, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1363 */ { UD_Isetge, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1364 */ { UD_Isetle, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1365 */ { UD_Isetg, O_Eb, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1366 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1367 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1368 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1369 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1370 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1371 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1372 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1373 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1374 */ { UD_Isgdt, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1375 */ { UD_Ishld, O_Ev, O_Gv, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1376 */ { UD_Ishld, O_Ev, O_Gv, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1377 */ { UD_Ishrd, O_Ev, O_Gv, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1378 */ { UD_Ishrd, O_Ev, O_Gv, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1379 */ { UD_Ishufpd, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1380 */ { UD_Ivshufpd, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1381 */ { UD_Ishufps, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1382 */ { UD_Ivshufps, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1383 */ { UD_Isidt, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1384 */ { UD_Isldt, O_MwRv, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1385 */ { UD_Ismsw, O_MwRv, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1386 */ { UD_Ismsw, O_MwRv, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1387 */ { UD_Isqrtps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1388 */ { UD_Ivsqrtps, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1389 */ { UD_Isqrtpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1390 */ { UD_Ivsqrtpd, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1391 */ { UD_Isqrtsd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1392 */ { UD_Ivsqrtsd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1393 */ { UD_Isqrtss, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1394 */ { UD_Ivsqrtss, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1395 */ { UD_Istc, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1396 */ { UD_Istd, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1397 */ { UD_Istgi, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1398 */ { UD_Isti, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1399 */ { UD_Iskinit, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1400 */ { UD_Istmxcsr, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1401 */ { UD_Ivstmxcsr, O_Md, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1402 */ { UD_Istosb, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg }, + /* 1403 */ { UD_Istosw, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, + /* 1404 */ { UD_Istosd, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, + /* 1405 */ { UD_Istosq, O_NONE, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, + /* 1406 */ { UD_Istr, O_MwRv, O_NONE, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1407 */ { UD_Isub, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1408 */ { UD_Isub, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1409 */ { UD_Isub, O_Gb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1410 */ { UD_Isub, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1411 */ { UD_Isub, O_AL, O_Ib, O_NONE, O_NONE, P_none }, + /* 1412 */ { UD_Isub, O_rAX, O_sIz, O_NONE, O_NONE, P_oso|P_rexw }, + /* 1413 */ { UD_Isub, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1414 */ { UD_Isub, O_Ev, O_sIz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1415 */ { UD_Isub, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, + /* 1416 */ { UD_Isub, O_Ev, O_sIb, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1417 */ { UD_Isubpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1418 */ { UD_Ivsubpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1419 */ { UD_Isubps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1420 */ { UD_Ivsubps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1421 */ { UD_Isubsd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1422 */ { UD_Ivsubsd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1423 */ { UD_Isubss, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1424 */ { UD_Ivsubss, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1425 */ { UD_Iswapgs, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1426 */ { UD_Isyscall, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1427 */ { UD_Isysenter, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1428 */ { UD_Isysenter, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1429 */ { UD_Isysexit, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1430 */ { UD_Isysexit, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1431 */ { UD_Isysret, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1432 */ { UD_Itest, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1433 */ { UD_Itest, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1434 */ { UD_Itest, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1435 */ { UD_Itest, O_AL, O_Ib, O_NONE, O_NONE, P_none }, + /* 1436 */ { UD_Itest, O_rAX, O_sIz, O_NONE, O_NONE, P_oso|P_rexw }, + /* 1437 */ { UD_Itest, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1438 */ { UD_Itest, O_Ev, O_sIz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1439 */ { UD_Itest, O_Ev, O_Iz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1440 */ { UD_Iucomisd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1441 */ { UD_Ivucomisd, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1442 */ { UD_Iucomiss, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1443 */ { UD_Ivucomiss, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1444 */ { UD_Iud2, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1445 */ { UD_Iunpckhpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1446 */ { UD_Ivunpckhpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1447 */ { UD_Iunpckhps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1448 */ { UD_Ivunpckhps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1449 */ { UD_Iunpcklps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1450 */ { UD_Ivunpcklps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1451 */ { UD_Iunpcklpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1452 */ { UD_Ivunpcklpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1453 */ { UD_Iverr, O_Ew, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1454 */ { UD_Iverw, O_Ew, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1455 */ { UD_Ivmcall, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1456 */ { UD_Irdrand, O_R, O_NONE, O_NONE, O_NONE, P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1457 */ { UD_Ivmclear, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1458 */ { UD_Ivmxon, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1459 */ { UD_Ivmptrld, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1460 */ { UD_Ivmptrst, O_Mq, O_NONE, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1461 */ { UD_Ivmlaunch, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1462 */ { UD_Ivmresume, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1463 */ { UD_Ivmxoff, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1464 */ { UD_Ivmread, O_Ey, O_Gy, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_def64 }, + /* 1465 */ { UD_Ivmwrite, O_Gy, O_Ey, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_def64 }, + /* 1466 */ { UD_Ivmrun, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1467 */ { UD_Ivmmcall, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1468 */ { UD_Ivmload, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1469 */ { UD_Ivmsave, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1470 */ { UD_Iwait, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1471 */ { UD_Iwbinvd, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1472 */ { UD_Iwrmsr, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1473 */ { UD_Ixadd, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexx|P_rexb }, + /* 1474 */ { UD_Ixadd, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1475 */ { UD_Ixchg, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1476 */ { UD_Ixchg, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1477 */ { UD_Ixchg, O_R0v, O_rAX, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1478 */ { UD_Ixchg, O_R1v, O_rAX, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1479 */ { UD_Ixchg, O_R2v, O_rAX, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1480 */ { UD_Ixchg, O_R3v, O_rAX, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1481 */ { UD_Ixchg, O_R4v, O_rAX, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1482 */ { UD_Ixchg, O_R5v, O_rAX, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1483 */ { UD_Ixchg, O_R6v, O_rAX, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1484 */ { UD_Ixchg, O_R7v, O_rAX, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1485 */ { UD_Ixgetbv, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1486 */ { UD_Ixlatb, O_NONE, O_NONE, O_NONE, O_NONE, P_rexw|P_seg }, + /* 1487 */ { UD_Ixor, O_Eb, O_Gb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1488 */ { UD_Ixor, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1489 */ { UD_Ixor, O_Gb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1490 */ { UD_Ixor, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1491 */ { UD_Ixor, O_AL, O_Ib, O_NONE, O_NONE, P_none }, + /* 1492 */ { UD_Ixor, O_rAX, O_sIz, O_NONE, O_NONE, P_oso|P_rexw }, + /* 1493 */ { UD_Ixor, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1494 */ { UD_Ixor, O_Ev, O_sIz, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1495 */ { UD_Ixor, O_Eb, O_Ib, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, + /* 1496 */ { UD_Ixor, O_Ev, O_sIb, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1497 */ { UD_Ixorpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1498 */ { UD_Ivxorpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1499 */ { UD_Ixorps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1500 */ { UD_Ivxorps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1501 */ { UD_Ixcryptecb, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1502 */ { UD_Ixcryptcbc, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1503 */ { UD_Ixcryptctr, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1504 */ { UD_Ixcryptcfb, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1505 */ { UD_Ixcryptofb, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1506 */ { UD_Ixrstor, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1507 */ { UD_Ixsave, O_M, O_NONE, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1508 */ { UD_Ixsetbv, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1509 */ { UD_Ixsha1, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1510 */ { UD_Ixsha256, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1511 */ { UD_Ixstore, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1512 */ { UD_Ipclmulqdq, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1513 */ { UD_Ivpclmulqdq, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1514 */ { UD_Igetsec, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1515 */ { UD_Imovdqa, O_W, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1516 */ { UD_Ivmovdqa, O_Wx, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1517 */ { UD_Imovdqa, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1518 */ { UD_Ivmovdqa, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1519 */ { UD_Imaskmovdqu, O_V, O_U, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1520 */ { UD_Ivmaskmovdqu, O_Vx, O_Ux, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1521 */ { UD_Imovdq2q, O_P, O_U, O_NONE, O_NONE, P_aso|P_rexb }, + /* 1522 */ { UD_Imovdqu, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1523 */ { UD_Ivmovdqu, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1524 */ { UD_Imovdqu, O_W, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1525 */ { UD_Ivmovdqu, O_Wx, O_Vx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1526 */ { UD_Imovq2dq, O_V, O_N, O_NONE, O_NONE, P_aso|P_rexr }, + /* 1527 */ { UD_Ipaddq, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1528 */ { UD_Ipaddq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1529 */ { UD_Ivpaddq, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1530 */ { UD_Ipsubq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1531 */ { UD_Ivpsubq, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1532 */ { UD_Ipsubq, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1533 */ { UD_Ipmuludq, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1534 */ { UD_Ipmuludq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1535 */ { UD_Ipshufhw, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1536 */ { UD_Ivpshufhw, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1537 */ { UD_Ipshuflw, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1538 */ { UD_Ivpshuflw, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1539 */ { UD_Ipshufd, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1540 */ { UD_Ivpshufd, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1541 */ { UD_Ipslldq, O_U, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 1542 */ { UD_Ivpslldq, O_Hx, O_Ux, O_Ib, O_NONE, P_rexb }, + /* 1543 */ { UD_Ipsrldq, O_U, O_Ib, O_NONE, O_NONE, P_rexb }, + /* 1544 */ { UD_Ivpsrldq, O_Hx, O_Ux, O_Ib, O_NONE, P_rexb }, + /* 1545 */ { UD_Ipunpckhqdq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1546 */ { UD_Ivpunpckhqdq, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1547 */ { UD_Ipunpcklqdq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1548 */ { UD_Ivpunpcklqdq, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1549 */ { UD_Ihaddpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1550 */ { UD_Ivhaddpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1551 */ { UD_Ihaddps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1552 */ { UD_Ivhaddps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1553 */ { UD_Ihsubpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1554 */ { UD_Ivhsubpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1555 */ { UD_Ihsubps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1556 */ { UD_Ivhsubps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1557 */ { UD_Iinsertps, O_V, O_Md, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1558 */ { UD_Ivinsertps, O_Vx, O_Hx, O_Md, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1559 */ { UD_Ilddqu, O_V, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1560 */ { UD_Ivlddqu, O_Vx, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1561 */ { UD_Imovddup, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1562 */ { UD_Ivmovddup, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1563 */ { UD_Imovddup, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1564 */ { UD_Ivmovddup, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1565 */ { UD_Imovshdup, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1566 */ { UD_Ivmovshdup, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1567 */ { UD_Imovshdup, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1568 */ { UD_Ivmovshdup, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1569 */ { UD_Imovsldup, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1570 */ { UD_Ivmovsldup, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1571 */ { UD_Imovsldup, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1572 */ { UD_Ivmovsldup, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1573 */ { UD_Ipabsb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1574 */ { UD_Ipabsb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1575 */ { UD_Ivpabsb, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1576 */ { UD_Ipabsw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1577 */ { UD_Ipabsw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1578 */ { UD_Ivpabsw, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1579 */ { UD_Ipabsd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1580 */ { UD_Ipabsd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1581 */ { UD_Ivpabsd, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1582 */ { UD_Ipshufb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1583 */ { UD_Ipshufb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1584 */ { UD_Ivpshufb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1585 */ { UD_Iphaddw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1586 */ { UD_Iphaddw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1587 */ { UD_Ivphaddw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1588 */ { UD_Iphaddd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1589 */ { UD_Iphaddd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1590 */ { UD_Ivphaddd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1591 */ { UD_Iphaddsw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1592 */ { UD_Iphaddsw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1593 */ { UD_Ivphaddsw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1594 */ { UD_Ipmaddubsw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1595 */ { UD_Ipmaddubsw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1596 */ { UD_Ivpmaddubsw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1597 */ { UD_Iphsubw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1598 */ { UD_Iphsubw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1599 */ { UD_Ivphsubw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1600 */ { UD_Iphsubd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1601 */ { UD_Iphsubd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1602 */ { UD_Ivphsubd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1603 */ { UD_Iphsubsw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1604 */ { UD_Iphsubsw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1605 */ { UD_Ivphsubsw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1606 */ { UD_Ipsignb, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1607 */ { UD_Ipsignb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1608 */ { UD_Ivpsignb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1609 */ { UD_Ipsignd, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1610 */ { UD_Ipsignd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1611 */ { UD_Ivpsignd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1612 */ { UD_Ipsignw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1613 */ { UD_Ipsignw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1614 */ { UD_Ivpsignw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1615 */ { UD_Ipmulhrsw, O_P, O_Q, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1616 */ { UD_Ipmulhrsw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1617 */ { UD_Ivpmulhrsw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1618 */ { UD_Ipalignr, O_P, O_Q, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1619 */ { UD_Ipalignr, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1620 */ { UD_Ivpalignr, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1621 */ { UD_Ipblendvb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1622 */ { UD_Ipmuldq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1623 */ { UD_Ivpmuldq, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1624 */ { UD_Ipminsb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1625 */ { UD_Ivpminsb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1626 */ { UD_Ipminsd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1627 */ { UD_Ivpminsd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1628 */ { UD_Ipminuw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1629 */ { UD_Ivpminuw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1630 */ { UD_Ipminud, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1631 */ { UD_Ivpminud, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1632 */ { UD_Ipmaxsb, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1633 */ { UD_Ivpmaxsb, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1634 */ { UD_Ipmaxsd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1635 */ { UD_Ivpmaxsd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1636 */ { UD_Ipmaxud, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1637 */ { UD_Ivpmaxud, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1638 */ { UD_Ipmaxuw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1639 */ { UD_Ivpmaxuw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1640 */ { UD_Ipmulld, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1641 */ { UD_Ivpmulld, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1642 */ { UD_Iphminposuw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1643 */ { UD_Ivphminposuw, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1644 */ { UD_Iroundps, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1645 */ { UD_Ivroundps, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1646 */ { UD_Iroundpd, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1647 */ { UD_Ivroundpd, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1648 */ { UD_Iroundss, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1649 */ { UD_Ivroundss, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1650 */ { UD_Iroundsd, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1651 */ { UD_Ivroundsd, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1652 */ { UD_Iblendpd, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1653 */ { UD_Ivblendpd, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1654 */ { UD_Iblendps, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1655 */ { UD_Ivblendps, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1656 */ { UD_Iblendvpd, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1657 */ { UD_Iblendvps, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1658 */ { UD_Ibound, O_Gv, O_M, O_NONE, O_NONE, P_aso|P_oso }, + /* 1659 */ { UD_Ibsf, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1660 */ { UD_Ibsr, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1661 */ { UD_Ibswap, O_R0y, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1662 */ { UD_Ibswap, O_R1y, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1663 */ { UD_Ibswap, O_R2y, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1664 */ { UD_Ibswap, O_R3y, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1665 */ { UD_Ibswap, O_R4y, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1666 */ { UD_Ibswap, O_R5y, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1667 */ { UD_Ibswap, O_R6y, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1668 */ { UD_Ibswap, O_R7y, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, + /* 1669 */ { UD_Ibt, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1670 */ { UD_Ibt, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1671 */ { UD_Ibtc, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1672 */ { UD_Ibtc, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1673 */ { UD_Ibtr, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1674 */ { UD_Ibtr, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1675 */ { UD_Ibts, O_Ev, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1676 */ { UD_Ibts, O_Ev, O_Ib, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, + /* 1677 */ { UD_Ipblendw, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1678 */ { UD_Ivpblendw, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1679 */ { UD_Impsadbw, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1680 */ { UD_Ivmpsadbw, O_Vx, O_Hx, O_Wx, O_Ib, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1681 */ { UD_Imovntdqa, O_V, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1682 */ { UD_Ivmovntdqa, O_Vx, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb|P_vexl }, + /* 1683 */ { UD_Ipackusdw, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1684 */ { UD_Ivpackusdw, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb|P_vexl }, + /* 1685 */ { UD_Ipmovsxbw, O_V, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1686 */ { UD_Ivpmovsxbw, O_Vx, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1687 */ { UD_Ipmovsxbd, O_V, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1688 */ { UD_Ivpmovsxbd, O_Vx, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1689 */ { UD_Ipmovsxbq, O_V, O_MwU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1690 */ { UD_Ivpmovsxbq, O_Vx, O_MwU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1691 */ { UD_Ipmovsxwd, O_V, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1692 */ { UD_Ivpmovsxwd, O_Vx, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1693 */ { UD_Ipmovsxwq, O_V, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1694 */ { UD_Ivpmovsxwq, O_Vx, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1695 */ { UD_Ipmovsxdq, O_V, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1696 */ { UD_Ipmovzxbw, O_V, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1697 */ { UD_Ivpmovzxbw, O_Vx, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1698 */ { UD_Ipmovzxbd, O_V, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1699 */ { UD_Ivpmovzxbd, O_Vx, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1700 */ { UD_Ipmovzxbq, O_V, O_MwU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1701 */ { UD_Ivpmovzxbq, O_Vx, O_MwU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1702 */ { UD_Ipmovzxwd, O_V, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1703 */ { UD_Ivpmovzxwd, O_Vx, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1704 */ { UD_Ipmovzxwq, O_V, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1705 */ { UD_Ivpmovzxwq, O_Vx, O_MdU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1706 */ { UD_Ipmovzxdq, O_V, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1707 */ { UD_Ivpmovzxdq, O_Vx, O_MqU, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1708 */ { UD_Ipcmpeqq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1709 */ { UD_Ivpcmpeqq, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1710 */ { UD_Ipopcnt, O_Gv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1711 */ { UD_Iptest, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1712 */ { UD_Ivptest, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb|P_vexl }, + /* 1713 */ { UD_Ipcmpestri, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1714 */ { UD_Ivpcmpestri, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1715 */ { UD_Ipcmpestrm, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1716 */ { UD_Ivpcmpestrm, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1717 */ { UD_Ipcmpgtq, O_V, O_W, O_NONE, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1718 */ { UD_Ivpcmpgtq, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1719 */ { UD_Ipcmpistri, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1720 */ { UD_Ivpcmpistri, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1721 */ { UD_Ipcmpistrm, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1722 */ { UD_Ivpcmpistrm, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1723 */ { UD_Imovbe, O_Gv, O_Mv, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1724 */ { UD_Imovbe, O_Mv, O_Gv, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1725 */ { UD_Icrc32, O_Gy, O_Eb, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1726 */ { UD_Icrc32, O_Gy, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, + /* 1727 */ { UD_Ivbroadcastss, O_V, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1728 */ { UD_Ivbroadcastsd, O_Vqq, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1729 */ { UD_Ivextractf128, O_Wdq, O_Vqq, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1730 */ { UD_Ivinsertf128, O_Vqq, O_Hqq, O_Wdq, O_Ib, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1731 */ { UD_Ivmaskmovps, O_V, O_H, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1732 */ { UD_Ivmaskmovps, O_M, O_H, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1733 */ { UD_Ivmaskmovpd, O_V, O_H, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1734 */ { UD_Ivmaskmovpd, O_M, O_H, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1735 */ { UD_Ivpermilpd, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1736 */ { UD_Ivpermilpd, O_V, O_W, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1737 */ { UD_Ivpermilps, O_Vx, O_Hx, O_Wx, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1738 */ { UD_Ivpermilps, O_Vx, O_Wx, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1739 */ { UD_Ivperm2f128, O_Vqq, O_Hqq, O_Wqq, O_Ib, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1740 */ { UD_Ivtestps, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1741 */ { UD_Ivtestpd, O_Vx, O_Wx, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1742 */ { UD_Ivzeroupper, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1743 */ { UD_Ivzeroall, O_NONE, O_NONE, O_NONE, O_NONE, P_none }, + /* 1744 */ { UD_Ivblendvpd, O_Vx, O_Hx, O_Wx, O_Lx, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1745 */ { UD_Ivblendvps, O_Vx, O_Hx, O_Wx, O_Lx, P_aso|P_rexr|P_rexx|P_rexb|P_vexl }, + /* 1746 */ { UD_Ivmovsd, O_V, O_H, O_U, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1747 */ { UD_Ivmovsd, O_V, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1748 */ { UD_Ivmovsd, O_U, O_H, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1749 */ { UD_Ivmovsd, O_Mq, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1750 */ { UD_Ivmovss, O_V, O_H, O_U, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1751 */ { UD_Ivmovss, O_V, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1752 */ { UD_Ivmovss, O_U, O_H, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1753 */ { UD_Ivmovss, O_Md, O_V, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1754 */ { UD_Ivpblendvb, O_V, O_H, O_W, O_L, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1755 */ { UD_Ivpsllw, O_V, O_H, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1756 */ { UD_Ivpsllw, O_H, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1757 */ { UD_Ivpslld, O_V, O_H, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1758 */ { UD_Ivpslld, O_H, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1759 */ { UD_Ivpsllq, O_V, O_H, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, + /* 1760 */ { UD_Ivpsllq, O_H, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, +}; + + +const char* ud_mnemonics_str[] = { + "aaa", + "aad", + "aam", + "aas", + "adc", + "add", + "addpd", + "addps", + "addsd", + "addss", + "addsubpd", + "addsubps", + "aesdec", + "aesdeclast", + "aesenc", + "aesenclast", + "aesimc", + "aeskeygenassist", + "and", + "andnpd", + "andnps", + "andpd", + "andps", + "arpl", + "blendpd", + "blendps", + "blendvpd", + "blendvps", + "bound", + "bsf", + "bsr", + "bswap", + "bt", + "btc", + "btr", + "bts", + "call", + "cbw", + "cdq", + "cdqe", + "clc", + "cld", + "clflush", + "clgi", + "cli", + "clts", + "cmc", + "cmova", + "cmovae", + "cmovb", + "cmovbe", + "cmovg", + "cmovge", + "cmovl", + "cmovle", + "cmovno", + "cmovnp", + "cmovns", + "cmovnz", + "cmovo", + "cmovp", + "cmovs", + "cmovz", + "cmp", + "cmppd", + "cmpps", + "cmpsb", + "cmpsd", + "cmpsq", + "cmpss", + "cmpsw", + "cmpxchg", + "cmpxchg16b", + "cmpxchg8b", + "comisd", + "comiss", + "cpuid", + "cqo", + "crc32", + "cvtdq2pd", + "cvtdq2ps", + "cvtpd2dq", + "cvtpd2pi", + "cvtpd2ps", + "cvtpi2pd", + "cvtpi2ps", + "cvtps2dq", + "cvtps2pd", + "cvtps2pi", + "cvtsd2si", + "cvtsd2ss", + "cvtsi2sd", + "cvtsi2ss", + "cvtss2sd", + "cvtss2si", + "cvttpd2dq", + "cvttpd2pi", + "cvttps2dq", + "cvttps2pi", + "cvttsd2si", + "cvttss2si", + "cwd", + "cwde", + "daa", + "das", + "dec", + "div", + "divpd", + "divps", + "divsd", + "divss", + "dppd", + "dpps", + "emms", + "enter", + "extractps", + "f2xm1", + "fabs", + "fadd", + "faddp", + "fbld", + "fbstp", + "fchs", + "fclex", + "fcmovb", + "fcmovbe", + "fcmove", + "fcmovnb", + "fcmovnbe", + "fcmovne", + "fcmovnu", + "fcmovu", + "fcom", + "fcom2", + "fcomi", + "fcomip", + "fcomp", + "fcomp3", + "fcomp5", + "fcompp", + "fcos", + "fdecstp", + "fdiv", + "fdivp", + "fdivr", + "fdivrp", + "femms", + "ffree", + "ffreep", + "fiadd", + "ficom", + "ficomp", + "fidiv", + "fidivr", + "fild", + "fimul", + "fincstp", + "fist", + "fistp", + "fisttp", + "fisub", + "fisubr", + "fld", + "fld1", + "fldcw", + "fldenv", + "fldl2e", + "fldl2t", + "fldlg2", + "fldln2", + "fldpi", + "fldz", + "fmul", + "fmulp", + "fndisi", + "fneni", + "fninit", + "fnop", + "fnsave", + "fnsetpm", + "fnstcw", + "fnstenv", + "fnstsw", + "fpatan", + "fprem", + "fprem1", + "fptan", + "frndint", + "frstor", + "frstpm", + "fscale", + "fsin", + "fsincos", + "fsqrt", + "fst", + "fstp", + "fstp1", + "fstp8", + "fstp9", + "fsub", + "fsubp", + "fsubr", + "fsubrp", + "ftst", + "fucom", + "fucomi", + "fucomip", + "fucomp", + "fucompp", + "fxam", + "fxch", + "fxch4", + "fxch7", + "fxrstor", + "fxsave", + "fxtract", + "fyl2x", + "fyl2xp1", + "getsec", + "haddpd", + "haddps", + "hlt", + "hsubpd", + "hsubps", + "idiv", + "imul", + "in", + "inc", + "insb", + "insd", + "insertps", + "insw", + "int", + "int1", + "int3", + "into", + "invd", + "invept", + "invlpg", + "invlpga", + "invvpid", + "iretd", + "iretq", + "iretw", + "ja", + "jae", + "jb", + "jbe", + "jcxz", + "jecxz", + "jg", + "jge", + "jl", + "jle", + "jmp", + "jno", + "jnp", + "jns", + "jnz", + "jo", + "jp", + "jrcxz", + "js", + "jz", + "lahf", + "lar", + "lddqu", + "ldmxcsr", + "lds", + "lea", + "leave", + "les", + "lfence", + "lfs", + "lgdt", + "lgs", + "lidt", + "lldt", + "lmsw", + "lock", + "lodsb", + "lodsd", + "lodsq", + "lodsw", + "loop", + "loope", + "loopne", + "lsl", + "lss", + "ltr", + "maskmovdqu", + "maskmovq", + "maxpd", + "maxps", + "maxsd", + "maxss", + "mfence", + "minpd", + "minps", + "minsd", + "minss", + "monitor", + "montmul", + "mov", + "movapd", + "movaps", + "movbe", + "movd", + "movddup", + "movdq2q", + "movdqa", + "movdqu", + "movhlps", + "movhpd", + "movhps", + "movlhps", + "movlpd", + "movlps", + "movmskpd", + "movmskps", + "movntdq", + "movntdqa", + "movnti", + "movntpd", + "movntps", + "movntq", + "movq", + "movq2dq", + "movsb", + "movsd", + "movshdup", + "movsldup", + "movsq", + "movss", + "movsw", + "movsx", + "movsxd", + "movupd", + "movups", + "movzx", + "mpsadbw", + "mul", + "mulpd", + "mulps", + "mulsd", + "mulss", + "mwait", + "neg", + "nop", + "not", + "or", + "orpd", + "orps", + "out", + "outsb", + "outsd", + "outsw", + "pabsb", + "pabsd", + "pabsw", + "packssdw", + "packsswb", + "packusdw", + "packuswb", + "paddb", + "paddd", + "paddq", + "paddsb", + "paddsw", + "paddusb", + "paddusw", + "paddw", + "palignr", + "pand", + "pandn", + "pavgb", + "pavgusb", + "pavgw", + "pblendvb", + "pblendw", + "pclmulqdq", + "pcmpeqb", + "pcmpeqd", + "pcmpeqq", + "pcmpeqw", + "pcmpestri", + "pcmpestrm", + "pcmpgtb", + "pcmpgtd", + "pcmpgtq", + "pcmpgtw", + "pcmpistri", + "pcmpistrm", + "pextrb", + "pextrd", + "pextrq", + "pextrw", + "pf2id", + "pf2iw", + "pfacc", + "pfadd", + "pfcmpeq", + "pfcmpge", + "pfcmpgt", + "pfmax", + "pfmin", + "pfmul", + "pfnacc", + "pfpnacc", + "pfrcp", + "pfrcpit1", + "pfrcpit2", + "pfrsqit1", + "pfrsqrt", + "pfsub", + "pfsubr", + "phaddd", + "phaddsw", + "phaddw", + "phminposuw", + "phsubd", + "phsubsw", + "phsubw", + "pi2fd", + "pi2fw", + "pinsrb", + "pinsrd", + "pinsrq", + "pinsrw", + "pmaddubsw", + "pmaddwd", + "pmaxsb", + "pmaxsd", + "pmaxsw", + "pmaxub", + "pmaxud", + "pmaxuw", + "pminsb", + "pminsd", + "pminsw", + "pminub", + "pminud", + "pminuw", + "pmovmskb", + "pmovsxbd", + "pmovsxbq", + "pmovsxbw", + "pmovsxdq", + "pmovsxwd", + "pmovsxwq", + "pmovzxbd", + "pmovzxbq", + "pmovzxbw", + "pmovzxdq", + "pmovzxwd", + "pmovzxwq", + "pmuldq", + "pmulhrsw", + "pmulhrw", + "pmulhuw", + "pmulhw", + "pmulld", + "pmullw", + "pmuludq", + "pop", + "popa", + "popad", + "popcnt", + "popfd", + "popfq", + "popfw", + "por", + "prefetch", + "prefetchnta", + "prefetcht0", + "prefetcht1", + "prefetcht2", + "psadbw", + "pshufb", + "pshufd", + "pshufhw", + "pshuflw", + "pshufw", + "psignb", + "psignd", + "psignw", + "pslld", + "pslldq", + "psllq", + "psllw", + "psrad", + "psraw", + "psrld", + "psrldq", + "psrlq", + "psrlw", + "psubb", + "psubd", + "psubq", + "psubsb", + "psubsw", + "psubusb", + "psubusw", + "psubw", + "pswapd", + "ptest", + "punpckhbw", + "punpckhdq", + "punpckhqdq", + "punpckhwd", + "punpcklbw", + "punpckldq", + "punpcklqdq", + "punpcklwd", + "push", + "pusha", + "pushad", + "pushfd", + "pushfq", + "pushfw", + "pxor", + "rcl", + "rcpps", + "rcpss", + "rcr", + "rdmsr", + "rdpmc", + "rdrand", + "rdtsc", + "rdtscp", + "rep", + "repne", + "ret", + "retf", + "rol", + "ror", + "roundpd", + "roundps", + "roundsd", + "roundss", + "rsm", + "rsqrtps", + "rsqrtss", + "sahf", + "salc", + "sar", + "sbb", + "scasb", + "scasd", + "scasq", + "scasw", + "seta", + "setae", + "setb", + "setbe", + "setg", + "setge", + "setl", + "setle", + "setno", + "setnp", + "setns", + "setnz", + "seto", + "setp", + "sets", + "setz", + "sfence", + "sgdt", + "shl", + "shld", + "shr", + "shrd", + "shufpd", + "shufps", + "sidt", + "skinit", + "sldt", + "smsw", + "sqrtpd", + "sqrtps", + "sqrtsd", + "sqrtss", + "stc", + "std", + "stgi", + "sti", + "stmxcsr", + "stosb", + "stosd", + "stosq", + "stosw", + "str", + "sub", + "subpd", + "subps", + "subsd", + "subss", + "swapgs", + "syscall", + "sysenter", + "sysexit", + "sysret", + "test", + "ucomisd", + "ucomiss", + "ud2", + "unpckhpd", + "unpckhps", + "unpcklpd", + "unpcklps", + "vaddpd", + "vaddps", + "vaddsd", + "vaddss", + "vaddsubpd", + "vaddsubps", + "vaesdec", + "vaesdeclast", + "vaesenc", + "vaesenclast", + "vaesimc", + "vaeskeygenassist", + "vandnpd", + "vandnps", + "vandpd", + "vandps", + "vblendpd", + "vblendps", + "vblendvpd", + "vblendvps", + "vbroadcastsd", + "vbroadcastss", + "vcmppd", + "vcmpps", + "vcmpsd", + "vcmpss", + "vcomisd", + "vcomiss", + "vcvtdq2pd", + "vcvtdq2ps", + "vcvtpd2dq", + "vcvtpd2ps", + "vcvtps2dq", + "vcvtps2pd", + "vcvtsd2si", + "vcvtsd2ss", + "vcvtsi2sd", + "vcvtsi2ss", + "vcvtss2sd", + "vcvtss2si", + "vcvttpd2dq", + "vcvttps2dq", + "vcvttsd2si", + "vcvttss2si", + "vdivpd", + "vdivps", + "vdivsd", + "vdivss", + "vdppd", + "vdpps", + "verr", + "verw", + "vextractf128", + "vextractps", + "vhaddpd", + "vhaddps", + "vhsubpd", + "vhsubps", + "vinsertf128", + "vinsertps", + "vlddqu", + "vmaskmovdqu", + "vmaskmovpd", + "vmaskmovps", + "vmaxpd", + "vmaxps", + "vmaxsd", + "vmaxss", + "vmcall", + "vmclear", + "vminpd", + "vminps", + "vminsd", + "vminss", + "vmlaunch", + "vmload", + "vmmcall", + "vmovapd", + "vmovaps", + "vmovd", + "vmovddup", + "vmovdqa", + "vmovdqu", + "vmovhlps", + "vmovhpd", + "vmovhps", + "vmovlhps", + "vmovlpd", + "vmovlps", + "vmovmskpd", + "vmovmskps", + "vmovntdq", + "vmovntdqa", + "vmovntpd", + "vmovntps", + "vmovq", + "vmovsd", + "vmovshdup", + "vmovsldup", + "vmovss", + "vmovupd", + "vmovups", + "vmpsadbw", + "vmptrld", + "vmptrst", + "vmread", + "vmresume", + "vmrun", + "vmsave", + "vmulpd", + "vmulps", + "vmulsd", + "vmulss", + "vmwrite", + "vmxoff", + "vmxon", + "vorpd", + "vorps", + "vpabsb", + "vpabsd", + "vpabsw", + "vpackssdw", + "vpacksswb", + "vpackusdw", + "vpackuswb", + "vpaddb", + "vpaddd", + "vpaddq", + "vpaddsb", + "vpaddsw", + "vpaddusb", + "vpaddusw", + "vpaddw", + "vpalignr", + "vpand", + "vpandn", + "vpavgb", + "vpavgw", + "vpblendvb", + "vpblendw", + "vpclmulqdq", + "vpcmpeqb", + "vpcmpeqd", + "vpcmpeqq", + "vpcmpeqw", + "vpcmpestri", + "vpcmpestrm", + "vpcmpgtb", + "vpcmpgtd", + "vpcmpgtq", + "vpcmpgtw", + "vpcmpistri", + "vpcmpistrm", + "vperm2f128", + "vpermilpd", + "vpermilps", + "vpextrb", + "vpextrd", + "vpextrq", + "vpextrw", + "vphaddd", + "vphaddsw", + "vphaddw", + "vphminposuw", + "vphsubd", + "vphsubsw", + "vphsubw", + "vpinsrb", + "vpinsrd", + "vpinsrq", + "vpinsrw", + "vpmaddubsw", + "vpmaddwd", + "vpmaxsb", + "vpmaxsd", + "vpmaxsw", + "vpmaxub", + "vpmaxud", + "vpmaxuw", + "vpminsb", + "vpminsd", + "vpminsw", + "vpminub", + "vpminud", + "vpminuw", + "vpmovmskb", + "vpmovsxbd", + "vpmovsxbq", + "vpmovsxbw", + "vpmovsxwd", + "vpmovsxwq", + "vpmovzxbd", + "vpmovzxbq", + "vpmovzxbw", + "vpmovzxdq", + "vpmovzxwd", + "vpmovzxwq", + "vpmuldq", + "vpmulhrsw", + "vpmulhuw", + "vpmulhw", + "vpmulld", + "vpmullw", + "vpor", + "vpsadbw", + "vpshufb", + "vpshufd", + "vpshufhw", + "vpshuflw", + "vpsignb", + "vpsignd", + "vpsignw", + "vpslld", + "vpslldq", + "vpsllq", + "vpsllw", + "vpsrad", + "vpsraw", + "vpsrld", + "vpsrldq", + "vpsrlq", + "vpsrlw", + "vpsubb", + "vpsubd", + "vpsubq", + "vpsubsb", + "vpsubsw", + "vpsubusb", + "vpsubusw", + "vpsubw", + "vptest", + "vpunpckhbw", + "vpunpckhdq", + "vpunpckhqdq", + "vpunpckhwd", + "vpunpcklbw", + "vpunpckldq", + "vpunpcklqdq", + "vpunpcklwd", + "vpxor", + "vrcpps", + "vrcpss", + "vroundpd", + "vroundps", + "vroundsd", + "vroundss", + "vrsqrtps", + "vrsqrtss", + "vshufpd", + "vshufps", + "vsqrtpd", + "vsqrtps", + "vsqrtsd", + "vsqrtss", + "vstmxcsr", + "vsubpd", + "vsubps", + "vsubsd", + "vsubss", + "vtestpd", + "vtestps", + "vucomisd", + "vucomiss", + "vunpckhpd", + "vunpckhps", + "vunpcklpd", + "vunpcklps", + "vxorpd", + "vxorps", + "vzeroall", + "vzeroupper", + "wait", + "wbinvd", + "wrmsr", + "xadd", + "xchg", + "xcryptcbc", + "xcryptcfb", + "xcryptctr", + "xcryptecb", + "xcryptofb", + "xgetbv", + "xlatb", + "xor", + "xorpd", + "xorps", + "xrstor", + "xsave", + "xsetbv", + "xsha1", + "xsha256", + "xstore", + "invalid", + "3dnow", + "none", + "db", + "pause" +}; diff --git a/deps/extra/udis86/libudis86/itab.h b/deps/extra/udis86/libudis86/itab.h new file mode 100644 index 0000000..3d54c43 --- /dev/null +++ b/deps/extra/udis86/libudis86/itab.h @@ -0,0 +1,939 @@ +#ifndef UD_ITAB_H +#define UD_ITAB_H + +/* itab.h -- generated by udis86:scripts/ud_itab.py, do no edit */ + +/* ud_table_type -- lookup table types (see decode.c) */ +enum ud_table_type { + UD_TAB__OPC_VEX, + UD_TAB__OPC_TABLE, + UD_TAB__OPC_X87, + UD_TAB__OPC_MOD, + UD_TAB__OPC_RM, + UD_TAB__OPC_OSIZE, + UD_TAB__OPC_MODE, + UD_TAB__OPC_VEX_L, + UD_TAB__OPC_3DNOW, + UD_TAB__OPC_REG, + UD_TAB__OPC_ASIZE, + UD_TAB__OPC_VEX_W, + UD_TAB__OPC_SSE, + UD_TAB__OPC_VENDOR +}; + +/* ud_mnemonic -- mnemonic constants */ +enum ud_mnemonic_code { + UD_Iaaa, + UD_Iaad, + UD_Iaam, + UD_Iaas, + UD_Iadc, + UD_Iadd, + UD_Iaddpd, + UD_Iaddps, + UD_Iaddsd, + UD_Iaddss, + UD_Iaddsubpd, + UD_Iaddsubps, + UD_Iaesdec, + UD_Iaesdeclast, + UD_Iaesenc, + UD_Iaesenclast, + UD_Iaesimc, + UD_Iaeskeygenassist, + UD_Iand, + UD_Iandnpd, + UD_Iandnps, + UD_Iandpd, + UD_Iandps, + UD_Iarpl, + UD_Iblendpd, + UD_Iblendps, + UD_Iblendvpd, + UD_Iblendvps, + UD_Ibound, + UD_Ibsf, + UD_Ibsr, + UD_Ibswap, + UD_Ibt, + UD_Ibtc, + UD_Ibtr, + UD_Ibts, + UD_Icall, + UD_Icbw, + UD_Icdq, + UD_Icdqe, + UD_Iclc, + UD_Icld, + UD_Iclflush, + UD_Iclgi, + UD_Icli, + UD_Iclts, + UD_Icmc, + UD_Icmova, + UD_Icmovae, + UD_Icmovb, + UD_Icmovbe, + UD_Icmovg, + UD_Icmovge, + UD_Icmovl, + UD_Icmovle, + UD_Icmovno, + UD_Icmovnp, + UD_Icmovns, + UD_Icmovnz, + UD_Icmovo, + UD_Icmovp, + UD_Icmovs, + UD_Icmovz, + UD_Icmp, + UD_Icmppd, + UD_Icmpps, + UD_Icmpsb, + UD_Icmpsd, + UD_Icmpsq, + UD_Icmpss, + UD_Icmpsw, + UD_Icmpxchg, + UD_Icmpxchg16b, + UD_Icmpxchg8b, + UD_Icomisd, + UD_Icomiss, + UD_Icpuid, + UD_Icqo, + UD_Icrc32, + UD_Icvtdq2pd, + UD_Icvtdq2ps, + UD_Icvtpd2dq, + UD_Icvtpd2pi, + UD_Icvtpd2ps, + UD_Icvtpi2pd, + UD_Icvtpi2ps, + UD_Icvtps2dq, + UD_Icvtps2pd, + UD_Icvtps2pi, + UD_Icvtsd2si, + UD_Icvtsd2ss, + UD_Icvtsi2sd, + UD_Icvtsi2ss, + UD_Icvtss2sd, + UD_Icvtss2si, + UD_Icvttpd2dq, + UD_Icvttpd2pi, + UD_Icvttps2dq, + UD_Icvttps2pi, + UD_Icvttsd2si, + UD_Icvttss2si, + UD_Icwd, + UD_Icwde, + UD_Idaa, + UD_Idas, + UD_Idec, + UD_Idiv, + UD_Idivpd, + UD_Idivps, + UD_Idivsd, + UD_Idivss, + UD_Idppd, + UD_Idpps, + UD_Iemms, + UD_Ienter, + UD_Iextractps, + UD_If2xm1, + UD_Ifabs, + UD_Ifadd, + UD_Ifaddp, + UD_Ifbld, + UD_Ifbstp, + UD_Ifchs, + UD_Ifclex, + UD_Ifcmovb, + UD_Ifcmovbe, + UD_Ifcmove, + UD_Ifcmovnb, + UD_Ifcmovnbe, + UD_Ifcmovne, + UD_Ifcmovnu, + UD_Ifcmovu, + UD_Ifcom, + UD_Ifcom2, + UD_Ifcomi, + UD_Ifcomip, + UD_Ifcomp, + UD_Ifcomp3, + UD_Ifcomp5, + UD_Ifcompp, + UD_Ifcos, + UD_Ifdecstp, + UD_Ifdiv, + UD_Ifdivp, + UD_Ifdivr, + UD_Ifdivrp, + UD_Ifemms, + UD_Iffree, + UD_Iffreep, + UD_Ifiadd, + UD_Ificom, + UD_Ificomp, + UD_Ifidiv, + UD_Ifidivr, + UD_Ifild, + UD_Ifimul, + UD_Ifincstp, + UD_Ifist, + UD_Ifistp, + UD_Ifisttp, + UD_Ifisub, + UD_Ifisubr, + UD_Ifld, + UD_Ifld1, + UD_Ifldcw, + UD_Ifldenv, + UD_Ifldl2e, + UD_Ifldl2t, + UD_Ifldlg2, + UD_Ifldln2, + UD_Ifldpi, + UD_Ifldz, + UD_Ifmul, + UD_Ifmulp, + UD_Ifndisi, + UD_Ifneni, + UD_Ifninit, + UD_Ifnop, + UD_Ifnsave, + UD_Ifnsetpm, + UD_Ifnstcw, + UD_Ifnstenv, + UD_Ifnstsw, + UD_Ifpatan, + UD_Ifprem, + UD_Ifprem1, + UD_Ifptan, + UD_Ifrndint, + UD_Ifrstor, + UD_Ifrstpm, + UD_Ifscale, + UD_Ifsin, + UD_Ifsincos, + UD_Ifsqrt, + UD_Ifst, + UD_Ifstp, + UD_Ifstp1, + UD_Ifstp8, + UD_Ifstp9, + UD_Ifsub, + UD_Ifsubp, + UD_Ifsubr, + UD_Ifsubrp, + UD_Iftst, + UD_Ifucom, + UD_Ifucomi, + UD_Ifucomip, + UD_Ifucomp, + UD_Ifucompp, + UD_Ifxam, + UD_Ifxch, + UD_Ifxch4, + UD_Ifxch7, + UD_Ifxrstor, + UD_Ifxsave, + UD_Ifxtract, + UD_Ifyl2x, + UD_Ifyl2xp1, + UD_Igetsec, + UD_Ihaddpd, + UD_Ihaddps, + UD_Ihlt, + UD_Ihsubpd, + UD_Ihsubps, + UD_Iidiv, + UD_Iimul, + UD_Iin, + UD_Iinc, + UD_Iinsb, + UD_Iinsd, + UD_Iinsertps, + UD_Iinsw, + UD_Iint, + UD_Iint1, + UD_Iint3, + UD_Iinto, + UD_Iinvd, + UD_Iinvept, + UD_Iinvlpg, + UD_Iinvlpga, + UD_Iinvvpid, + UD_Iiretd, + UD_Iiretq, + UD_Iiretw, + UD_Ija, + UD_Ijae, + UD_Ijb, + UD_Ijbe, + UD_Ijcxz, + UD_Ijecxz, + UD_Ijg, + UD_Ijge, + UD_Ijl, + UD_Ijle, + UD_Ijmp, + UD_Ijno, + UD_Ijnp, + UD_Ijns, + UD_Ijnz, + UD_Ijo, + UD_Ijp, + UD_Ijrcxz, + UD_Ijs, + UD_Ijz, + UD_Ilahf, + UD_Ilar, + UD_Ilddqu, + UD_Ildmxcsr, + UD_Ilds, + UD_Ilea, + UD_Ileave, + UD_Iles, + UD_Ilfence, + UD_Ilfs, + UD_Ilgdt, + UD_Ilgs, + UD_Ilidt, + UD_Illdt, + UD_Ilmsw, + UD_Ilock, + UD_Ilodsb, + UD_Ilodsd, + UD_Ilodsq, + UD_Ilodsw, + UD_Iloop, + UD_Iloope, + UD_Iloopne, + UD_Ilsl, + UD_Ilss, + UD_Iltr, + UD_Imaskmovdqu, + UD_Imaskmovq, + UD_Imaxpd, + UD_Imaxps, + UD_Imaxsd, + UD_Imaxss, + UD_Imfence, + UD_Iminpd, + UD_Iminps, + UD_Iminsd, + UD_Iminss, + UD_Imonitor, + UD_Imontmul, + UD_Imov, + UD_Imovapd, + UD_Imovaps, + UD_Imovbe, + UD_Imovd, + UD_Imovddup, + UD_Imovdq2q, + UD_Imovdqa, + UD_Imovdqu, + UD_Imovhlps, + UD_Imovhpd, + UD_Imovhps, + UD_Imovlhps, + UD_Imovlpd, + UD_Imovlps, + UD_Imovmskpd, + UD_Imovmskps, + UD_Imovntdq, + UD_Imovntdqa, + UD_Imovnti, + UD_Imovntpd, + UD_Imovntps, + UD_Imovntq, + UD_Imovq, + UD_Imovq2dq, + UD_Imovsb, + UD_Imovsd, + UD_Imovshdup, + UD_Imovsldup, + UD_Imovsq, + UD_Imovss, + UD_Imovsw, + UD_Imovsx, + UD_Imovsxd, + UD_Imovupd, + UD_Imovups, + UD_Imovzx, + UD_Impsadbw, + UD_Imul, + UD_Imulpd, + UD_Imulps, + UD_Imulsd, + UD_Imulss, + UD_Imwait, + UD_Ineg, + UD_Inop, + UD_Inot, + UD_Ior, + UD_Iorpd, + UD_Iorps, + UD_Iout, + UD_Ioutsb, + UD_Ioutsd, + UD_Ioutsw, + UD_Ipabsb, + UD_Ipabsd, + UD_Ipabsw, + UD_Ipackssdw, + UD_Ipacksswb, + UD_Ipackusdw, + UD_Ipackuswb, + UD_Ipaddb, + UD_Ipaddd, + UD_Ipaddq, + UD_Ipaddsb, + UD_Ipaddsw, + UD_Ipaddusb, + UD_Ipaddusw, + UD_Ipaddw, + UD_Ipalignr, + UD_Ipand, + UD_Ipandn, + UD_Ipavgb, + UD_Ipavgusb, + UD_Ipavgw, + UD_Ipblendvb, + UD_Ipblendw, + UD_Ipclmulqdq, + UD_Ipcmpeqb, + UD_Ipcmpeqd, + UD_Ipcmpeqq, + UD_Ipcmpeqw, + UD_Ipcmpestri, + UD_Ipcmpestrm, + UD_Ipcmpgtb, + UD_Ipcmpgtd, + UD_Ipcmpgtq, + UD_Ipcmpgtw, + UD_Ipcmpistri, + UD_Ipcmpistrm, + UD_Ipextrb, + UD_Ipextrd, + UD_Ipextrq, + UD_Ipextrw, + UD_Ipf2id, + UD_Ipf2iw, + UD_Ipfacc, + UD_Ipfadd, + UD_Ipfcmpeq, + UD_Ipfcmpge, + UD_Ipfcmpgt, + UD_Ipfmax, + UD_Ipfmin, + UD_Ipfmul, + UD_Ipfnacc, + UD_Ipfpnacc, + UD_Ipfrcp, + UD_Ipfrcpit1, + UD_Ipfrcpit2, + UD_Ipfrsqit1, + UD_Ipfrsqrt, + UD_Ipfsub, + UD_Ipfsubr, + UD_Iphaddd, + UD_Iphaddsw, + UD_Iphaddw, + UD_Iphminposuw, + UD_Iphsubd, + UD_Iphsubsw, + UD_Iphsubw, + UD_Ipi2fd, + UD_Ipi2fw, + UD_Ipinsrb, + UD_Ipinsrd, + UD_Ipinsrq, + UD_Ipinsrw, + UD_Ipmaddubsw, + UD_Ipmaddwd, + UD_Ipmaxsb, + UD_Ipmaxsd, + UD_Ipmaxsw, + UD_Ipmaxub, + UD_Ipmaxud, + UD_Ipmaxuw, + UD_Ipminsb, + UD_Ipminsd, + UD_Ipminsw, + UD_Ipminub, + UD_Ipminud, + UD_Ipminuw, + UD_Ipmovmskb, + UD_Ipmovsxbd, + UD_Ipmovsxbq, + UD_Ipmovsxbw, + UD_Ipmovsxdq, + UD_Ipmovsxwd, + UD_Ipmovsxwq, + UD_Ipmovzxbd, + UD_Ipmovzxbq, + UD_Ipmovzxbw, + UD_Ipmovzxdq, + UD_Ipmovzxwd, + UD_Ipmovzxwq, + UD_Ipmuldq, + UD_Ipmulhrsw, + UD_Ipmulhrw, + UD_Ipmulhuw, + UD_Ipmulhw, + UD_Ipmulld, + UD_Ipmullw, + UD_Ipmuludq, + UD_Ipop, + UD_Ipopa, + UD_Ipopad, + UD_Ipopcnt, + UD_Ipopfd, + UD_Ipopfq, + UD_Ipopfw, + UD_Ipor, + UD_Iprefetch, + UD_Iprefetchnta, + UD_Iprefetcht0, + UD_Iprefetcht1, + UD_Iprefetcht2, + UD_Ipsadbw, + UD_Ipshufb, + UD_Ipshufd, + UD_Ipshufhw, + UD_Ipshuflw, + UD_Ipshufw, + UD_Ipsignb, + UD_Ipsignd, + UD_Ipsignw, + UD_Ipslld, + UD_Ipslldq, + UD_Ipsllq, + UD_Ipsllw, + UD_Ipsrad, + UD_Ipsraw, + UD_Ipsrld, + UD_Ipsrldq, + UD_Ipsrlq, + UD_Ipsrlw, + UD_Ipsubb, + UD_Ipsubd, + UD_Ipsubq, + UD_Ipsubsb, + UD_Ipsubsw, + UD_Ipsubusb, + UD_Ipsubusw, + UD_Ipsubw, + UD_Ipswapd, + UD_Iptest, + UD_Ipunpckhbw, + UD_Ipunpckhdq, + UD_Ipunpckhqdq, + UD_Ipunpckhwd, + UD_Ipunpcklbw, + UD_Ipunpckldq, + UD_Ipunpcklqdq, + UD_Ipunpcklwd, + UD_Ipush, + UD_Ipusha, + UD_Ipushad, + UD_Ipushfd, + UD_Ipushfq, + UD_Ipushfw, + UD_Ipxor, + UD_Ircl, + UD_Ircpps, + UD_Ircpss, + UD_Ircr, + UD_Irdmsr, + UD_Irdpmc, + UD_Irdrand, + UD_Irdtsc, + UD_Irdtscp, + UD_Irep, + UD_Irepne, + UD_Iret, + UD_Iretf, + UD_Irol, + UD_Iror, + UD_Iroundpd, + UD_Iroundps, + UD_Iroundsd, + UD_Iroundss, + UD_Irsm, + UD_Irsqrtps, + UD_Irsqrtss, + UD_Isahf, + UD_Isalc, + UD_Isar, + UD_Isbb, + UD_Iscasb, + UD_Iscasd, + UD_Iscasq, + UD_Iscasw, + UD_Iseta, + UD_Isetae, + UD_Isetb, + UD_Isetbe, + UD_Isetg, + UD_Isetge, + UD_Isetl, + UD_Isetle, + UD_Isetno, + UD_Isetnp, + UD_Isetns, + UD_Isetnz, + UD_Iseto, + UD_Isetp, + UD_Isets, + UD_Isetz, + UD_Isfence, + UD_Isgdt, + UD_Ishl, + UD_Ishld, + UD_Ishr, + UD_Ishrd, + UD_Ishufpd, + UD_Ishufps, + UD_Isidt, + UD_Iskinit, + UD_Isldt, + UD_Ismsw, + UD_Isqrtpd, + UD_Isqrtps, + UD_Isqrtsd, + UD_Isqrtss, + UD_Istc, + UD_Istd, + UD_Istgi, + UD_Isti, + UD_Istmxcsr, + UD_Istosb, + UD_Istosd, + UD_Istosq, + UD_Istosw, + UD_Istr, + UD_Isub, + UD_Isubpd, + UD_Isubps, + UD_Isubsd, + UD_Isubss, + UD_Iswapgs, + UD_Isyscall, + UD_Isysenter, + UD_Isysexit, + UD_Isysret, + UD_Itest, + UD_Iucomisd, + UD_Iucomiss, + UD_Iud2, + UD_Iunpckhpd, + UD_Iunpckhps, + UD_Iunpcklpd, + UD_Iunpcklps, + UD_Ivaddpd, + UD_Ivaddps, + UD_Ivaddsd, + UD_Ivaddss, + UD_Ivaddsubpd, + UD_Ivaddsubps, + UD_Ivaesdec, + UD_Ivaesdeclast, + UD_Ivaesenc, + UD_Ivaesenclast, + UD_Ivaesimc, + UD_Ivaeskeygenassist, + UD_Ivandnpd, + UD_Ivandnps, + UD_Ivandpd, + UD_Ivandps, + UD_Ivblendpd, + UD_Ivblendps, + UD_Ivblendvpd, + UD_Ivblendvps, + UD_Ivbroadcastsd, + UD_Ivbroadcastss, + UD_Ivcmppd, + UD_Ivcmpps, + UD_Ivcmpsd, + UD_Ivcmpss, + UD_Ivcomisd, + UD_Ivcomiss, + UD_Ivcvtdq2pd, + UD_Ivcvtdq2ps, + UD_Ivcvtpd2dq, + UD_Ivcvtpd2ps, + UD_Ivcvtps2dq, + UD_Ivcvtps2pd, + UD_Ivcvtsd2si, + UD_Ivcvtsd2ss, + UD_Ivcvtsi2sd, + UD_Ivcvtsi2ss, + UD_Ivcvtss2sd, + UD_Ivcvtss2si, + UD_Ivcvttpd2dq, + UD_Ivcvttps2dq, + UD_Ivcvttsd2si, + UD_Ivcvttss2si, + UD_Ivdivpd, + UD_Ivdivps, + UD_Ivdivsd, + UD_Ivdivss, + UD_Ivdppd, + UD_Ivdpps, + UD_Iverr, + UD_Iverw, + UD_Ivextractf128, + UD_Ivextractps, + UD_Ivhaddpd, + UD_Ivhaddps, + UD_Ivhsubpd, + UD_Ivhsubps, + UD_Ivinsertf128, + UD_Ivinsertps, + UD_Ivlddqu, + UD_Ivmaskmovdqu, + UD_Ivmaskmovpd, + UD_Ivmaskmovps, + UD_Ivmaxpd, + UD_Ivmaxps, + UD_Ivmaxsd, + UD_Ivmaxss, + UD_Ivmcall, + UD_Ivmclear, + UD_Ivminpd, + UD_Ivminps, + UD_Ivminsd, + UD_Ivminss, + UD_Ivmlaunch, + UD_Ivmload, + UD_Ivmmcall, + UD_Ivmovapd, + UD_Ivmovaps, + UD_Ivmovd, + UD_Ivmovddup, + UD_Ivmovdqa, + UD_Ivmovdqu, + UD_Ivmovhlps, + UD_Ivmovhpd, + UD_Ivmovhps, + UD_Ivmovlhps, + UD_Ivmovlpd, + UD_Ivmovlps, + UD_Ivmovmskpd, + UD_Ivmovmskps, + UD_Ivmovntdq, + UD_Ivmovntdqa, + UD_Ivmovntpd, + UD_Ivmovntps, + UD_Ivmovq, + UD_Ivmovsd, + UD_Ivmovshdup, + UD_Ivmovsldup, + UD_Ivmovss, + UD_Ivmovupd, + UD_Ivmovups, + UD_Ivmpsadbw, + UD_Ivmptrld, + UD_Ivmptrst, + UD_Ivmread, + UD_Ivmresume, + UD_Ivmrun, + UD_Ivmsave, + UD_Ivmulpd, + UD_Ivmulps, + UD_Ivmulsd, + UD_Ivmulss, + UD_Ivmwrite, + UD_Ivmxoff, + UD_Ivmxon, + UD_Ivorpd, + UD_Ivorps, + UD_Ivpabsb, + UD_Ivpabsd, + UD_Ivpabsw, + UD_Ivpackssdw, + UD_Ivpacksswb, + UD_Ivpackusdw, + UD_Ivpackuswb, + UD_Ivpaddb, + UD_Ivpaddd, + UD_Ivpaddq, + UD_Ivpaddsb, + UD_Ivpaddsw, + UD_Ivpaddusb, + UD_Ivpaddusw, + UD_Ivpaddw, + UD_Ivpalignr, + UD_Ivpand, + UD_Ivpandn, + UD_Ivpavgb, + UD_Ivpavgw, + UD_Ivpblendvb, + UD_Ivpblendw, + UD_Ivpclmulqdq, + UD_Ivpcmpeqb, + UD_Ivpcmpeqd, + UD_Ivpcmpeqq, + UD_Ivpcmpeqw, + UD_Ivpcmpestri, + UD_Ivpcmpestrm, + UD_Ivpcmpgtb, + UD_Ivpcmpgtd, + UD_Ivpcmpgtq, + UD_Ivpcmpgtw, + UD_Ivpcmpistri, + UD_Ivpcmpistrm, + UD_Ivperm2f128, + UD_Ivpermilpd, + UD_Ivpermilps, + UD_Ivpextrb, + UD_Ivpextrd, + UD_Ivpextrq, + UD_Ivpextrw, + UD_Ivphaddd, + UD_Ivphaddsw, + UD_Ivphaddw, + UD_Ivphminposuw, + UD_Ivphsubd, + UD_Ivphsubsw, + UD_Ivphsubw, + UD_Ivpinsrb, + UD_Ivpinsrd, + UD_Ivpinsrq, + UD_Ivpinsrw, + UD_Ivpmaddubsw, + UD_Ivpmaddwd, + UD_Ivpmaxsb, + UD_Ivpmaxsd, + UD_Ivpmaxsw, + UD_Ivpmaxub, + UD_Ivpmaxud, + UD_Ivpmaxuw, + UD_Ivpminsb, + UD_Ivpminsd, + UD_Ivpminsw, + UD_Ivpminub, + UD_Ivpminud, + UD_Ivpminuw, + UD_Ivpmovmskb, + UD_Ivpmovsxbd, + UD_Ivpmovsxbq, + UD_Ivpmovsxbw, + UD_Ivpmovsxwd, + UD_Ivpmovsxwq, + UD_Ivpmovzxbd, + UD_Ivpmovzxbq, + UD_Ivpmovzxbw, + UD_Ivpmovzxdq, + UD_Ivpmovzxwd, + UD_Ivpmovzxwq, + UD_Ivpmuldq, + UD_Ivpmulhrsw, + UD_Ivpmulhuw, + UD_Ivpmulhw, + UD_Ivpmulld, + UD_Ivpmullw, + UD_Ivpor, + UD_Ivpsadbw, + UD_Ivpshufb, + UD_Ivpshufd, + UD_Ivpshufhw, + UD_Ivpshuflw, + UD_Ivpsignb, + UD_Ivpsignd, + UD_Ivpsignw, + UD_Ivpslld, + UD_Ivpslldq, + UD_Ivpsllq, + UD_Ivpsllw, + UD_Ivpsrad, + UD_Ivpsraw, + UD_Ivpsrld, + UD_Ivpsrldq, + UD_Ivpsrlq, + UD_Ivpsrlw, + UD_Ivpsubb, + UD_Ivpsubd, + UD_Ivpsubq, + UD_Ivpsubsb, + UD_Ivpsubsw, + UD_Ivpsubusb, + UD_Ivpsubusw, + UD_Ivpsubw, + UD_Ivptest, + UD_Ivpunpckhbw, + UD_Ivpunpckhdq, + UD_Ivpunpckhqdq, + UD_Ivpunpckhwd, + UD_Ivpunpcklbw, + UD_Ivpunpckldq, + UD_Ivpunpcklqdq, + UD_Ivpunpcklwd, + UD_Ivpxor, + UD_Ivrcpps, + UD_Ivrcpss, + UD_Ivroundpd, + UD_Ivroundps, + UD_Ivroundsd, + UD_Ivroundss, + UD_Ivrsqrtps, + UD_Ivrsqrtss, + UD_Ivshufpd, + UD_Ivshufps, + UD_Ivsqrtpd, + UD_Ivsqrtps, + UD_Ivsqrtsd, + UD_Ivsqrtss, + UD_Ivstmxcsr, + UD_Ivsubpd, + UD_Ivsubps, + UD_Ivsubsd, + UD_Ivsubss, + UD_Ivtestpd, + UD_Ivtestps, + UD_Ivucomisd, + UD_Ivucomiss, + UD_Ivunpckhpd, + UD_Ivunpckhps, + UD_Ivunpcklpd, + UD_Ivunpcklps, + UD_Ivxorpd, + UD_Ivxorps, + UD_Ivzeroall, + UD_Ivzeroupper, + UD_Iwait, + UD_Iwbinvd, + UD_Iwrmsr, + UD_Ixadd, + UD_Ixchg, + UD_Ixcryptcbc, + UD_Ixcryptcfb, + UD_Ixcryptctr, + UD_Ixcryptecb, + UD_Ixcryptofb, + UD_Ixgetbv, + UD_Ixlatb, + UD_Ixor, + UD_Ixorpd, + UD_Ixorps, + UD_Ixrstor, + UD_Ixsave, + UD_Ixsetbv, + UD_Ixsha1, + UD_Ixsha256, + UD_Ixstore, + UD_Iinvalid, + UD_I3dnow, + UD_Inone, + UD_Idb, + UD_Ipause, + UD_MAX_MNEMONIC_CODE +}; + +extern const char * ud_mnemonics_str[]; + +#endif /* UD_ITAB_H */ diff --git a/deps/gsc-tool b/deps/gsc-tool new file mode 160000 index 0000000..2dbff1a --- /dev/null +++ b/deps/gsc-tool @@ -0,0 +1 @@ +Subproject commit 2dbff1a408096e418c5b3eda01bc9a91eee6587b diff --git a/deps/libtomcrypt b/deps/libtomcrypt new file mode 160000 index 0000000..7e863d2 --- /dev/null +++ b/deps/libtomcrypt @@ -0,0 +1 @@ +Subproject commit 7e863d21429f94ed6a720e24499a12a3f852bb31 diff --git a/deps/libtommath b/deps/libtommath new file mode 160000 index 0000000..8314bde --- /dev/null +++ b/deps/libtommath @@ -0,0 +1 @@ +Subproject commit 8314bde5e5c8e5d9331460130a9d1066e324f091 diff --git a/deps/minhook b/deps/minhook new file mode 160000 index 0000000..f5485b8 --- /dev/null +++ b/deps/minhook @@ -0,0 +1 @@ +Subproject commit f5485b8454544c2f034c78f8f127c1d03dea3636 diff --git a/deps/premake/asmjit.lua b/deps/premake/asmjit.lua new file mode 100644 index 0000000..ee93259 --- /dev/null +++ b/deps/premake/asmjit.lua @@ -0,0 +1,34 @@ +asmjit = { + source = path.join(dependencies.basePath, "asmjit"), +} + +function asmjit.import() + links { "asmjit" } + asmjit.includes() +end + +function asmjit.includes() + includedirs { + path.join(asmjit.source, "src") + } + + defines { + "ASMJIT_STATIC" + } +end + +function asmjit.project() + project "asmjit" + language "C++" + + asmjit.includes() + + files { + path.join(asmjit.source, "src/**.cpp"), + } + + warnings "Off" + kind "StaticLib" +end + +table.insert(dependencies, asmjit) diff --git a/deps/premake/discord-rpc.lua b/deps/premake/discord-rpc.lua new file mode 100644 index 0000000..ef28bcb --- /dev/null +++ b/deps/premake/discord-rpc.lua @@ -0,0 +1,39 @@ +discordrpc = { + source = path.join(dependencies.basePath, "discord-rpc"), +} + +function discordrpc.import() + links { "discord-rpc" } + discordrpc.includes() +end + +function discordrpc.includes() + includedirs { + path.join(discordrpc.source, "include"), + } +end + +function discordrpc.project() + project "discord-rpc" + language "C++" + + discordrpc.includes() + rapidjson.import(); + + files { + path.join(discordrpc.source, "src/*.h"), + path.join(discordrpc.source, "src/*.cpp"), + } + + removefiles { + path.join(discordrpc.source, "src/dllmain.cpp"), + path.join(discordrpc.source, "src/*_linux.cpp"), + path.join(discordrpc.source, "src/*_unix.cpp"), + path.join(discordrpc.source, "src/*_osx.cpp"), + } + + warnings "Off" + kind "StaticLib" +end + +table.insert(dependencies, discordrpc) diff --git a/deps/premake/gsc-tool.lua b/deps/premake/gsc-tool.lua new file mode 100644 index 0000000..32efc4d --- /dev/null +++ b/deps/premake/gsc-tool.lua @@ -0,0 +1,62 @@ +gsc_tool = { + source = path.join(dependencies.basePath, "gsc-tool"), +} + +function gsc_tool.import() + links { "xsk-gsc-s1", "xsk-gsc-utils" } + gsc_tool.includes() +end + +function gsc_tool.includes() + includedirs { + path.join(gsc_tool.source, "include"), + } +end + +function gsc_tool.project() + project "xsk-gsc-utils" + kind "StaticLib" + language "C++" + + files { + path.join(gsc_tool.source, "include/xsk/utils/*.hpp"), + path.join(gsc_tool.source, "src/utils/*.cpp"), + } + + includedirs { + path.join(gsc_tool.source, "include"), + } + + zlib.includes() + + project "xsk-gsc-s1" + kind "StaticLib" + language "C++" + + filter "action:vs*" + buildoptions "/Zc:__cplusplus" + filter {} + + files { + path.join(gsc_tool.source, "include/xsk/stdinc.hpp"), + + path.join(gsc_tool.source, "include/xsk/gsc/engine/s1_pc.hpp"), + path.join(gsc_tool.source, "src/gsc/engine/s1_pc.cpp"), + + path.join(gsc_tool.source, "src/gsc/engine/s1_pc_code.cpp"), + path.join(gsc_tool.source, "src/gsc/engine/s1_pc_func.cpp"), + path.join(gsc_tool.source, "src/gsc/engine/s1_pc_meth.cpp"), + path.join(gsc_tool.source, "src/gsc/engine/s1_pc_token.cpp"), + + path.join(gsc_tool.source, "src/gsc/*.cpp"), + + path.join(gsc_tool.source, "src/gsc/common/*.cpp"), + path.join(gsc_tool.source, "include/xsk/gsc/common/*.hpp"), + } + + includedirs { + path.join(gsc_tool.source, "include"), + } +end + +table.insert(dependencies, gsc_tool) diff --git a/deps/premake/gsl.lua b/deps/premake/gsl.lua new file mode 100644 index 0000000..7a2daf6 --- /dev/null +++ b/deps/premake/gsl.lua @@ -0,0 +1,19 @@ +gsl = { + source = path.join(dependencies.basePath, "GSL"), +} + +function gsl.import() + gsl.includes() +end + +function gsl.includes() + includedirs { + path.join(gsl.source, "include") + } +end + +function gsl.project() + +end + +table.insert(dependencies, gsl) diff --git a/deps/premake/libtomcrypt.lua b/deps/premake/libtomcrypt.lua new file mode 100644 index 0000000..7ca3570 --- /dev/null +++ b/deps/premake/libtomcrypt.lua @@ -0,0 +1,64 @@ +libtomcrypt = { + source = path.join(dependencies.basePath, "libtomcrypt"), +} + +function libtomcrypt.import() + links { + "libtomcrypt" + } + + libtomcrypt.includes() +end + +function libtomcrypt.includes() + includedirs { + path.join(libtomcrypt.source, "src/headers") + } + + defines { + "LTC_NO_FAST", + "LTC_NO_PROTOTYPES", + "LTC_NO_RSA_BLINDING", + "LTC_NO_FILE", + "ARGTYPE=4", + } +end + +function libtomcrypt.project() + project "libtomcrypt" + language "C" + + libtomcrypt.includes() + libtommath.import() + + files { + path.join(libtomcrypt.source, "src/**.c"), + } + + removefiles { + path.join(libtomcrypt.source, "src/**/*_test.c"), + path.join(libtomcrypt.source, "src/**/*tab.c"), + path.join(libtomcrypt.source, "src/encauth/ocb3/**.c"), + } + + defines { + "_CRT_SECURE_NO_WARNINGS", + "LTC_SOURCE", + "_LIB", + "USE_LTM" + } + + removedefines { + "_DLL", + "_USRDLL" + } + + linkoptions { + "-IGNORE:4221" + } + + warnings "Off" + kind "StaticLib" +end + +table.insert(dependencies, libtomcrypt) diff --git a/deps/premake/libtommath.lua b/deps/premake/libtommath.lua new file mode 100644 index 0000000..ab4cdde --- /dev/null +++ b/deps/premake/libtommath.lua @@ -0,0 +1,52 @@ +libtommath = { + source = path.join(dependencies.basePath, "libtommath"), +} + +function libtommath.import() + links { + "libtommath" + } + + libtommath.includes() +end + +function libtommath.includes() + includedirs { + libtommath.source + } + + defines { + "LTM_DESC", + "__STDC_IEC_559__", + "MP_NO_DEV_URANDOM", + } +end + +function libtommath.project() + project "libtommath" + language "C" + + libtommath.includes() + + files { + path.join(libtommath.source, "*.c"), + } + + defines { + "_LIB" + } + + removedefines { + "_DLL", + "_USRDLL" + } + + linkoptions { + "-IGNORE:4221" + } + + warnings "Off" + kind "StaticLib" +end + +table.insert(dependencies, libtommath) diff --git a/deps/premake/minhook.lua b/deps/premake/minhook.lua new file mode 100644 index 0000000..396d4d3 --- /dev/null +++ b/deps/premake/minhook.lua @@ -0,0 +1,31 @@ +minhook = { + source = path.join(dependencies.basePath, "minhook"), +} + +function minhook.import() + links { "minhook" } + minhook.includes() +end + +function minhook.includes() + includedirs { + path.join(minhook.source, "include") + } +end + +function minhook.project() + project "minhook" + language "C" + + minhook.includes() + + files { + path.join(minhook.source, "src/**.h"), + path.join(minhook.source, "src/**.c"), + } + + warnings "Off" + kind "StaticLib" +end + +table.insert(dependencies, minhook) diff --git a/deps/premake/minizip.lua b/deps/premake/minizip.lua new file mode 100644 index 0000000..4a5754b --- /dev/null +++ b/deps/premake/minizip.lua @@ -0,0 +1,43 @@ +minizip = { + source = path.join(dependencies.basePath, "zlib/contrib/minizip"), +} + +function minizip.import() + links { "minizip" } + zlib.import() + minizip.includes() +end + +function minizip.includes() + includedirs { + minizip.source + } + + zlib.includes() +end + +function minizip.project() + project "minizip" + language "C" + + minizip.includes() + + files { + path.join(minizip.source, "*.h"), + path.join(minizip.source, "*.c"), + } + + removefiles { + path.join(minizip.source, "miniunz.c"), + path.join(minizip.source, "minizip.c"), + } + + defines { + "_CRT_SECURE_NO_DEPRECATE", + } + + warnings "Off" + kind "StaticLib" +end + +table.insert(dependencies, minizip) diff --git a/deps/premake/protobuf.lua b/deps/premake/protobuf.lua new file mode 100644 index 0000000..1c58972 --- /dev/null +++ b/deps/premake/protobuf.lua @@ -0,0 +1,60 @@ +protobuf = { + source = path.join(dependencies.basePath, "protobuf"), +} + +function protobuf.import() + links { + "protobuf" + } + + protobuf.includes() +end + +function protobuf.includes() + includedirs { + path.join(protobuf.source, "src"), + } +end + +function protobuf.project() + project "protobuf" + language "C++" + + protobuf.includes() + + files { + path.join(protobuf.source, "src/**.cc"), + "./src/**.proto", + } + + removefiles { + path.join(protobuf.source, "src/**/*test.cc"), + path.join(protobuf.source, "src/google/protobuf/*test*.cc"), + + path.join(protobuf.source, "src/google/protobuf/testing/**.cc"), + path.join(protobuf.source, "src/google/protobuf/compiler/**.cc"), + + path.join(protobuf.source, "src/google/protobuf/arena_nc.cc"), + path.join(protobuf.source, "src/google/protobuf/util/internal/error_listener.cc"), + path.join(protobuf.source, "**/*_gcc.cc"), + } + + rules { + "ProtobufCompiler" + } + + defines { + "_SCL_SECURE_NO_WARNINGS", + "_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS", + "_SILENCE_ALL_CXX20_DEPRECATION_WARNINGS", + } + + linkoptions { + "-IGNORE:4221" + } + + warnings "Off" + kind "StaticLib" +end + +table.insert(dependencies, protobuf) diff --git a/deps/premake/rapidjson.lua b/deps/premake/rapidjson.lua new file mode 100644 index 0000000..0dc3b4b --- /dev/null +++ b/deps/premake/rapidjson.lua @@ -0,0 +1,23 @@ +rapidjson = { + source = path.join(dependencies.basePath, "rapidjson"), +} + +function rapidjson.import() + defines { + "RAPIDJSON_HAS_STDSTRING" + } + + rapidjson.includes() +end + +function rapidjson.includes() + includedirs { + path.join(rapidjson.source, "include"), + } +end + +function rapidjson.project() + +end + +table.insert(dependencies, rapidjson) diff --git a/deps/premake/udis86.lua b/deps/premake/udis86.lua new file mode 100644 index 0000000..896ec8b --- /dev/null +++ b/deps/premake/udis86.lua @@ -0,0 +1,37 @@ +udis86 = { + source = path.join(dependencies.basePath, "udis86"), +} + +function udis86.import() + links { + "udis86" + } + + udis86.includes() +end + +function udis86.includes() + includedirs { + udis86.source, + path.join(udis86.source, "libudis86"), + path.join(dependencies.basePath, "extra/udis86"), + path.join(dependencies.basePath, "extra/udis86/libudis86"), + } +end + +function udis86.project() + project "udis86" + language "C" + + udis86.includes() + + files { + path.join(udis86.source, "libudis86/*.c"), + path.join(dependencies.basePath, "extra/udis86/libudis86/*.c"), + } + + warnings "Off" + kind "StaticLib" +end + +table.insert(dependencies, udis86) diff --git a/deps/premake/wintoast.lua b/deps/premake/wintoast.lua new file mode 100644 index 0000000..deffb7c --- /dev/null +++ b/deps/premake/wintoast.lua @@ -0,0 +1,32 @@ +wintoast = { + source = path.join(dependencies.basePath, "WinToast"), +} + +function wintoast.import() + links { "WinToast" } + wintoast.includes() +end + +function wintoast.includes() + includedirs { + path.join(wintoast.source, "include"), + } +end + +function wintoast.project() + project "WinToast" + language "C++" + + wintoast.includes() + rapidjson.import(); + + files { + path.join(wintoast.source, "include/wintoastlib.h"), + path.join(wintoast.source, "src/wintoastlib.cpp"), + } + + warnings "Off" + kind "StaticLib" +end + +table.insert(dependencies, wintoast) diff --git a/deps/premake/zlib.lua b/deps/premake/zlib.lua new file mode 100644 index 0000000..566a707 --- /dev/null +++ b/deps/premake/zlib.lua @@ -0,0 +1,39 @@ +zlib = { + source = path.join(dependencies.basePath, "zlib"), +} + +function zlib.import() + links { "zlib" } + zlib.includes() +end + +function zlib.includes() + includedirs { + zlib.source + } + + defines { + "ZLIB_CONST", + } +end + +function zlib.project() + project "zlib" + language "C" + + zlib.includes() + + files { + path.join(zlib.source, "*.h"), + path.join(zlib.source, "*.c"), + } + + defines { + "_CRT_SECURE_NO_DEPRECATE", + } + + warnings "Off" + kind "StaticLib" +end + +table.insert(dependencies, zlib) diff --git a/deps/protobuf b/deps/protobuf new file mode 160000 index 0000000..5a3dac8 --- /dev/null +++ b/deps/protobuf @@ -0,0 +1 @@ +Subproject commit 5a3dac894157bf3618b2c906a8b9073b4cad62b6 diff --git a/deps/rapidjson b/deps/rapidjson new file mode 160000 index 0000000..6089180 --- /dev/null +++ b/deps/rapidjson @@ -0,0 +1 @@ +Subproject commit 6089180ecb704cb2b136777798fa1be303618975 diff --git a/deps/udis86 b/deps/udis86 new file mode 160000 index 0000000..56ff6c8 --- /dev/null +++ b/deps/udis86 @@ -0,0 +1 @@ +Subproject commit 56ff6c87c11de0ffa725b14339004820556e343d diff --git a/deps/zlib b/deps/zlib new file mode 160000 index 0000000..643e17b --- /dev/null +++ b/deps/zlib @@ -0,0 +1 @@ +Subproject commit 643e17b7498d12ab8d15565662880579692f769d diff --git a/premake5.lua b/premake5.lua new file mode 100644 index 0000000..d502375 --- /dev/null +++ b/premake5.lua @@ -0,0 +1,362 @@ +gitVersioningCommand = "git describe --tags --dirty --always" +gitCurrentBranchCommand = "git symbolic-ref -q --short HEAD" + +-- Quote the given string input as a C string +function cstrquote(value) + if value == nil then + return "\"\"" + end + result = value:gsub("\\", "\\\\") + result = result:gsub("\"", "\\\"") + result = result:gsub("\n", "\\n") + result = result:gsub("\t", "\\t") + result = result:gsub("\r", "\\r") + result = result:gsub("\a", "\\a") + result = result:gsub("\b", "\\b") + result = "\"" .. result .. "\"" + return result +end + +-- Converts tags in "vX.X.X" format and given revision number Y to an array of numbers {X,X,X,Y}. +-- In the case where the format does not work fall back to padding with zeroes and just ending with the revision number. +-- partscount can be either 3 or 4. +function vertonumarr(value, vernumber, partscount) + vernum = {} + for num in string.gmatch(value or "", "%d+") do + if #vernum < 3 then + table.insert(vernum, tonumber(num)) + end + end + while #vernum < 3 do + table.insert(vernum, 0) + end + if #vernum < partscount then + table.insert(vernum, tonumber(vernumber)) + end + return vernum +end + +dependencies = { + basePath = "./deps" +} + +function dependencies.load() + dir = path.join(dependencies.basePath, "premake/*.lua") + deps = os.matchfiles(dir) + + for i, dep in pairs(deps) do + dep = dep:gsub(".lua", "") + require(dep) + end +end + +function dependencies.imports() + for i, proj in pairs(dependencies) do + if type(i) == 'number' then + proj.import() + end + end +end + +function dependencies.projects() + for i, proj in pairs(dependencies) do + if type(i) == 'number' then + proj.project() + end + end +end + +newoption { + trigger = "copy-to", + description = "Optional, copy the EXE to a custom folder after build, define the path here if wanted.", + value = "PATH" +} + +newoption { + trigger = "dev-build", + description = "Enable development builds of the client." +} + +newaction { + trigger = "version", + description = "Returns the version string for the current commit of the source code.", + onWorkspace = function(wks) + -- get current version via git + local proc = assert(io.popen(gitVersioningCommand, "r")) + local gitDescribeOutput = assert(proc:read('*a')):gsub("%s+", "") + proc:close() + local version = gitDescribeOutput + + proc = assert(io.popen(gitCurrentBranchCommand, "r")) + local gitCurrentBranchOutput = assert(proc:read('*a')):gsub("%s+", "") + local gitCurrentBranchSuccess = proc:close() + if gitCurrentBranchSuccess then + -- We got a branch name, check if it is a feature branch + if gitCurrentBranchOutput ~= "develop" and gitCurrentBranchOutput ~= "master" then + version = version .. "-" .. gitCurrentBranchOutput + end + end + + print(version) + os.exit(0) + end +} + +newaction { + trigger = "generate-buildinfo", + description = "Sets up build information file like version.h.", + onWorkspace = function(wks) + -- get old version number from version.hpp if any + local oldVersion = "(none)" + local oldVersionHeader = io.open(wks.location .. "/src/version.h", "r") + if oldVersionHeader ~= nil then + local oldVersionHeaderContent = assert(oldVersionHeader:read('*l')) + while oldVersionHeaderContent do + m = string.match(oldVersionHeaderContent, "#define GIT_DESCRIBE (.+)%s*$") + if m ~= nil then + oldVersion = m + end + + oldVersionHeaderContent = oldVersionHeader:read('*l') + end + end + + -- get current version via git + local proc = assert(io.popen(gitVersioningCommand, "r")) + local gitDescribeOutput = assert(proc:read('*a')):gsub("%s+", "") + proc:close() + + -- generate version.hpp with a revision number if not equal + gitDescribeOutputQuoted = cstrquote(gitDescribeOutput) + if oldVersion ~= gitDescribeOutputQuoted then + -- get current git hash and write to version.txt (used by the preliminary updater) + -- TODO - remove once proper updater and release versioning exists + local proc = assert(io.popen("git rev-parse HEAD", "r")) + local gitCommitHash = assert(proc:read('*a')):gsub("%s+", "") + proc:close() + + -- get whether this is a clean revision (no uncommitted changes) + proc = assert(io.popen("git status --porcelain", "r")) + local revDirty = (assert(proc:read('*a')) ~= "") + if revDirty then revDirty = 1 else revDirty = 0 end + proc:close() + + -- get current tag name + proc = assert(io.popen("git describe --tags --abbrev=0")) + local tagName = proc:read('*l') + + -- get current branch name + proc = assert(io.popen("git branch --show-current")) + local branchName = proc:read('*l') + + -- branch for ci + if branchName == nil or branchName == '' then + proc = assert(io.popen("git show -s --pretty=%d HEAD")) + local branchInfo = proc:read('*l') + m = string.match(branchInfo, ".+,.+, ([^)]+)") + if m ~= nil then + branchName = m + end + end + + if branchName == nil then + branchName = "develop" + end + + print("Detected branch: " .. branchName) + + -- get revision number via git + local proc = assert(io.popen("git rev-list --count HEAD", "r")) + local revNumber = assert(proc:read('*a')):gsub("%s+", "") + + print ("Update " .. oldVersion .. " -> " .. gitDescribeOutputQuoted) + + -- write to version.txt for preliminary updater + -- NOTE - remove this once we have a proper updater and proper release versioning + local versionFile = assert(io.open(wks.location .. "/version.txt", "w")) + versionFile:write(gitCommitHash) + versionFile:close() + + -- write version header + local versionHeader = assert(io.open(wks.location .. "/src/version.h", "w")) + versionHeader:write("/*\n") + versionHeader:write(" * Automatically generated by premake5.\n") + versionHeader:write(" * Do not touch!\n") + versionHeader:write(" */\n") + versionHeader:write("\n") + versionHeader:write("#define GIT_DESCRIBE " .. gitDescribeOutputQuoted .. "\n") + versionHeader:write("#define GIT_DIRTY " .. revDirty .. "\n") + versionHeader:write("#define GIT_HASH " .. cstrquote(gitCommitHash) .. "\n") + versionHeader:write("#define GIT_TAG " .. cstrquote(tagName) .. "\n") + versionHeader:write("#define GIT_BRANCH " .. cstrquote(branchName) .. "\n") + versionHeader:write("\n") + versionHeader:write("// Version transformed for RC files\n") + versionHeader:write("#define VERSION_PRODUCT_RC " .. table.concat(vertonumarr(tagName, revNumber, 3), ",") .. "\n") + versionHeader:write("#define VERSION_PRODUCT " .. cstrquote(table.concat(vertonumarr(tagName, revNumber, 3), ".")) .. "\n") + versionHeader:write("#define VERSION_FILE_RC " .. table.concat(vertonumarr(tagName, revNumber, 4), ",") .. "\n") + versionHeader:write("#define VERSION_FILE " .. cstrquote(table.concat(vertonumarr(tagName, revNumber, 4), ".")) .. "\n") + versionHeader:write("\n") + versionHeader:write("// Alias definitions\n") + versionHeader:write("#define VERSION GIT_DESCRIBE\n") + versionHeader:write("#define SHORTVERSION VERSION_PRODUCT\n") + versionHeader:close() + local versionHeader = assert(io.open(wks.location .. "/src/version.hpp", "w")) + versionHeader:write("/*\n") + versionHeader:write(" * Automatically generated by premake5.\n") + versionHeader:write(" * Do not touch!\n") + versionHeader:write(" *\n") + versionHeader:write(" * This file exists for reasons of complying with our coding standards.\n") + versionHeader:write(" *\n") + versionHeader:write(" * The Resource Compiler will ignore any content from C++ header files if they're not from STDInclude.hpp.\n") + versionHeader:write(" * That's the reason why we now place all version info in version.h instead.\n") + versionHeader:write(" */\n") + versionHeader:write("\n") + versionHeader:write("#include \".\\version.h\"\n") + versionHeader:close() + end + end +} + +dependencies.load() + +workspace "s1-mod" +startproject "client" +location "./build" +objdir "%{wks.location}/obj" +targetdir "%{wks.location}/bin/%{cfg.platform}/%{cfg.buildcfg}" + +configurations {"Debug", "Release"} + +language "C++" +cppdialect "C++20" + +architecture "x86_64" +platforms "x64" + +systemversion "latest" +symbols "On" +staticruntime "On" +editandcontinue "Off" +warnings "Extra" +characterset "ASCII" + +if _OPTIONS["dev-build"] then + defines {"DEV_BUILD"} +end + +if os.getenv("CI") then + defines {"CI"} +end + +flags {"NoIncrementalLink", "NoMinimalRebuild", "MultiProcessorCompile", "No64BitChecks"} + +filter "platforms:x64" + defines {"_WINDOWS", "WIN32"} +filter {} + +filter "configurations:Release" + optimize "Size" + buildoptions {"/GL"} + linkoptions {"/IGNORE:4702", "/LTCG"} + defines {"NDEBUG"} + flags {"FatalCompileWarnings"} +filter {} + +filter "configurations:Debug" + optimize "Debug" + defines {"DEBUG", "_DEBUG"} +filter {} + +project "common" +kind "StaticLib" +language "C++" + +files {"./src/common/**.hpp", "./src/common/**.cpp"} + +includedirs {"./src/common", "%{prj.location}/src"} + +resincludedirs {"$(ProjectDir)src"} + +dependencies.imports() + +project "runner" +kind "WindowedApp" +language "C++" + +files {"./src/runner/**.rc", "./src/runner/**.hpp", "./src/runner/**.cpp", "./src/runner/resources/**.*"} + +includedirs {"./src/runner", "./src/common", "%{prj.location}/src"} + +resincludedirs {"$(ProjectDir)src"} + +links {"common"} + +dependencies.imports() + +project "client" +kind "WindowedApp" +language "C++" + +targetname "s1-mod" + +pchheader "std_include.hpp" +pchsource "src/client/std_include.cpp" + +linkoptions {"/IGNORE:4254", "/DYNAMICBASE:NO", "/SAFESEH:NO", "/LARGEADDRESSAWARE", "/LAST:.main", "/PDBCompress"} + +files {"./src/client/**.rc", "./src/client/**.hpp", "./src/client/**.cpp", "./src/client/resources/**.*"} + +includedirs {"./src/client", "./src/common", "%{prj.location}/src"} + +resincludedirs {"$(ProjectDir)src"} + +dependson {"tlsdll", "runner"} + +links {"common"} + +prebuildcommands {"pushd %{_MAIN_SCRIPT_DIR}", "tools\\premake5 generate-buildinfo", "popd"} + +if _OPTIONS["copy-to"] then + postbuildcommands {"copy /y \"$(TargetPath)\" \"" .. _OPTIONS["copy-to"] .. "\""} +end + +dependencies.imports() + +project "tlsdll" +kind "SharedLib" +language "C++" + +files {"./src/tlsdll/**.rc", "./src/tlsdll/**.hpp", "./src/tlsdll/**.cpp", "./src/tlsdll/resources/**.*"} + +includedirs {"./src/tlsdll", "%{prj.location}/src"} + +links {"common"} + +resincludedirs {"$(ProjectDir)src"} + +project "runner" +kind "WindowedApp" +language "C++" + +files {"./src/runner/**.rc", "./src/runner/**.hpp", "./src/runner/**.cpp", "./src/runner/resources/**.*"} + +includedirs {"./src/runner", "./src/common", "%{prj.location}/src"} + +links {"common"} + +resincludedirs {"$(ProjectDir)src"} + +dependencies.imports() + +group "Dependencies" +dependencies.projects() + +rule "ProtobufCompiler" +display "Protobuf compiler" +location "./build" +fileExtension ".proto" +buildmessage "Compiling %(Identity) with protoc..." +buildcommands {'@echo off', 'path "$(SolutionDir)\\..\\tools"', + 'if not exist "$(ProjectDir)\\src\\proto" mkdir "$(ProjectDir)\\src\\proto"', + 'protoc --error_format=msvs -I=%(RelativeDir) --cpp_out=src\\proto %(Identity)'} +buildoutputs {'$(ProjectDir)\\src\\proto\\%(Filename).pb.cc', '$(ProjectDir)\\src\\proto\\%(Filename).pb.h'} diff --git a/src/client/component/arxan.cpp b/src/client/component/arxan.cpp new file mode 100644 index 0000000..2dcdd81 --- /dev/null +++ b/src/client/component/arxan.cpp @@ -0,0 +1,163 @@ +#include +#include "loader/component_loader.hpp" +#include "scheduler.hpp" +#include "game/game.hpp" + +#include + +namespace arxan +{ + namespace + { + utils::hook::detour nt_close_hook; + utils::hook::detour nt_query_information_process_hook; + + NTSTATUS WINAPI nt_query_information_process_stub(const HANDLE handle, const PROCESSINFOCLASS info_class, + const PVOID info, + const ULONG info_length, const PULONG ret_length) + { + auto* orig = static_cast(nt_query_information_process_hook. + get_original()); + const auto status = orig(handle, info_class, info, info_length, ret_length); + + if (NT_SUCCESS(status)) + { + if (info_class == ProcessBasicInformation) + { + static DWORD explorer_pid = 0; + if (!explorer_pid) + { + auto* const shell_window = GetShellWindow(); + GetWindowThreadProcessId(shell_window, &explorer_pid); + } + + static_cast(info)->Reserved3 = PVOID(DWORD64(explorer_pid)); + } + else if (info_class == 30) // ProcessDebugObjectHandle + { + *static_cast(info) = nullptr; + + return 0xC0000353; + } + else if (info_class == 7) // ProcessDebugPort + { + *static_cast(info) = nullptr; + } + else if (info_class == 31) + { + *static_cast(info) = 1; + } + } + + return status; + } + + NTSTATUS NTAPI nt_close_stub(const HANDLE handle) + { + char info[16]; + if (NtQueryObject(handle, OBJECT_INFORMATION_CLASS(4), &info, 2, nullptr) >= 0 && size_t(handle) != 0x12345) + { + auto* orig = static_cast(nt_close_hook.get_original()); + return orig(handle); + } + + return STATUS_INVALID_HANDLE; + } + + LONG WINAPI exception_filter(const LPEXCEPTION_POINTERS info) + { + if (info->ExceptionRecord->ExceptionCode == STATUS_INVALID_HANDLE) + { + return EXCEPTION_CONTINUE_EXECUTION; + } + + return EXCEPTION_CONTINUE_SEARCH; + } + + void hide_being_debugged() + { + auto* const peb = PPEB(__readgsqword(0x60)); + peb->BeingDebugged = false; + *reinterpret_cast(LPSTR(peb) + 0xBC) &= ~0x70; + } + + void remove_hardware_breakpoints() + { + CONTEXT context; + ZeroMemory(&context, sizeof(context)); + context.ContextFlags = CONTEXT_DEBUG_REGISTERS; + + auto* const thread = GetCurrentThread(); + GetThreadContext(thread, &context); + + context.Dr0 = 0; + context.Dr1 = 0; + context.Dr2 = 0; + context.Dr3 = 0; + context.Dr6 = 0; + context.Dr7 = 0; + + SetThreadContext(thread, &context); + } + + BOOL WINAPI set_thread_context_stub(const HANDLE thread, CONTEXT* context) + { + if (!game::environment::is_sp() + && game::dwGetLogOnStatus() == game::DW_LIVE_CONNECTED + && context->ContextFlags == CONTEXT_DEBUG_REGISTERS) + { + return TRUE; + } + + return SetThreadContext(thread, context); + } + } + + class component final : public component_interface + { + public: + void* load_import(const std::string& library, const std::string& function) override + { + if (function == "SetThreadContext") + { + //return set_thread_context_stub; + } + + return nullptr; + } + + void post_load() override + { + hide_being_debugged(); + scheduler::loop(hide_being_debugged, scheduler::pipeline::async); + + const utils::nt::library ntdll("ntdll.dll"); + nt_close_hook.create(ntdll.get_proc("NtClose"), nt_close_stub); + nt_query_information_process_hook.create(ntdll.get_proc("NtQueryInformationProcess"), + nt_query_information_process_stub); + + AddVectoredExceptionHandler(1, exception_filter); + } + + void post_unpack() override + { + // cba to implement sp, not sure if it's even needed + if (game::environment::is_sp()) return; + + // HW-BP Mapping + // 1404D4F40 -> 1404D4F30 + // 140509500 -> 140509410 + // 140545F80 -> 140545EE0 + // 14053CCF0 -> 14053CCC0 // dwGetLogonStatus + + utils::hook::call(0x14053B5FE, 0x140545EE0); // some pump + utils::hook::call(0x1404D3D42, 0x140509410); // some other pump + utils::hook::jump(0x14053CCB0, 0x14053CCC0); // dwGetLogonStatus + utils::hook::call(0x14053CD04, 0x14053CCC0); // dwGetLogonStatus + + //scheduler::on_game_initialized(remove_hardware_breakpoints, scheduler::pipeline::main); + } + }; +} + +REGISTER_COMPONENT(arxan::component) diff --git a/src/client/component/auth.cpp b/src/client/component/auth.cpp new file mode 100644 index 0000000..0051f69 --- /dev/null +++ b/src/client/component/auth.cpp @@ -0,0 +1,229 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" +#include "steam/steam.hpp" + +#include "auth.hpp" +#include "command.hpp" +#include "network.hpp" +#include "console.hpp" + +#include +#include +#include +#include +#include + +namespace auth +{ + namespace + { + std::string get_hdd_serial() + { + DWORD serial{}; + if (!GetVolumeInformationA("C:\\", nullptr, 0, &serial, nullptr, nullptr, nullptr, 0)) + { + return {}; + } + + return utils::string::va("%08X", serial); + } + + std::string get_hw_profile_guid() + { + HW_PROFILE_INFO info; + if (!GetCurrentHwProfileA(&info)) + { + return {}; + } + + return std::string{info.szHwProfileGuid, sizeof(info.szHwProfileGuid)}; + } + + std::string get_protected_data() + { + std::string input = "AlterWare-S1-Auth"; + + DATA_BLOB data_in{}, data_out{}; + data_in.pbData = reinterpret_cast(input.data()); + data_in.cbData = static_cast(input.size()); + if(CryptProtectData(&data_in, nullptr, nullptr, nullptr, nullptr, CRYPTPROTECT_LOCAL_MACHINE, &data_out) != TRUE) + { + return {}; + } + + const auto size = std::min(data_out.cbData, 52ul); + std::string result{reinterpret_cast(data_out.pbData), size}; + LocalFree(data_out.pbData); + + return result; + } + + std::string get_key_entropy() + { + std::string entropy{}; + entropy.append(utils::smbios::get_uuid()); + entropy.append(get_hw_profile_guid()); + entropy.append(get_protected_data()); + entropy.append(get_hdd_serial()); + + if (entropy.empty()) + { + entropy.resize(32); + utils::cryptography::random::get_data(entropy.data(), entropy.size()); + } + + return entropy; + } + + utils::cryptography::ecc::key& get_key() + { + static auto key = utils::cryptography::ecc::generate_key(512, get_key_entropy()); + return key; + } + + int send_connect_data_stub(game::netsrc_t sock, game::netadr_s* adr, const char* format, const int len) + { + std::string connect_string(format, len); + game::SV_Cmd_TokenizeString(connect_string.data()); + const auto _ = gsl::finally([]() + { + game::SV_Cmd_EndTokenizedString(); + }); + + const command::params_sv params; + if (params.size() < 3) + { + return false; + } + + const utils::info_string info_string{std::string{params[2]}}; + const auto challenge = info_string.get("challenge"); + + connect_string.clear(); + connect_string.append(params[0]); + connect_string.append(" "); + connect_string.append(params[1]); + connect_string.append(" "); + connect_string.append("\"" + info_string.build() + "\""); + + proto::network::connect_info info; + info.set_publickey(get_key().get_public_key()); + info.set_signature(sign_message(get_key(), challenge)); + info.set_infostring(connect_string); + + network::send(*adr, "connect", info.SerializeAsString()); + return true; + } + + void direct_connect(game::netadr_s* from, game::msg_t* msg) + { + const auto offset = sizeof("connect") + 4; + + proto::network::connect_info info; + if (msg->cursize < offset || !info.ParseFromArray(msg->data + offset, msg->cursize - offset)) + { + network::send(*from, "error", "Invalid connect data!", '\n'); + return; + } + + game::SV_Cmd_EndTokenizedString(); + game::SV_Cmd_TokenizeString(info.infostring().data()); + + const command::params_sv params; + if (params.size() < 3) + { + network::send(*from, "error", "Invalid connect string!", '\n'); + return; + } + + const utils::info_string info_string{std::string{params[2]}}; + + const auto steam_id = info_string.get("xuid"); + const auto challenge = info_string.get("challenge"); + + if (steam_id.empty() || challenge.empty()) + { + network::send(*from, "error", "Invalid connect data!", '\n'); + return; + } + + utils::cryptography::ecc::key key; + key.set(info.publickey()); + + const auto xuid = strtoull(steam_id.data(), nullptr, 16); + if (xuid != key.get_hash()) + { + network::send(*from, "error", utils::string::va("XUID doesn't match the certificate: %llX != %llX", xuid, key.get_hash()), '\n'); + return; + } + + if (!key.is_valid() || !verify_message(key, challenge, info.signature())) + { + network::send(*from, "error", "Challenge signature was invalid!", '\n'); + return; + } + + game::SV_DirectConnect(from); + } + + void* get_direct_connect_stub() + { + return utils::hook::assemble([](utils::hook::assembler& a) + { + a.lea(rcx, qword_ptr(rsp, 0x20)); + a.movaps(xmmword_ptr(rsp, 0x20), xmm0); + + a.pushad64(); + a.mov(rdx, rdi); + a.call_aligned(direct_connect); + a.popad64(); + + a.jmp(0x140442317); + }); + } + } + + uint64_t get_guid() + { + if (game::environment::is_dedi()) + { + return 0x110000100000000 | (::utils::cryptography::random::get_integer() & ~0x80000000); + } + + return get_key().get_hash(); + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + // Patch steam id bit check + if (game::environment::is_sp()) + { + utils::hook::jump(0x1404267F0, 0x140426846); + utils::hook::jump(0x14042760F, 0x140427650); + utils::hook::jump(0x140427AB4, 0x140427B02); + } + else + { + utils::hook::jump(0x140538920, 0x140538976); + utils::hook::jump(0x140009801, 0x140009B48); + utils::hook::jump(0x140009AEB, 0x140009B48); + utils::hook::jump(0x14053995F, 0x1405399A0); + utils::hook::jump(0x140539E70, 0x140539EB6); + + utils::hook::jump(0x1404421F6, get_direct_connect_stub(), true); + utils::hook::call(0x140208C54, send_connect_data_stub); + } + + command::add("guid", [] + { + console::info("Your guid: %llX\n", steam::SteamUser()->GetSteamID().bits); + }); + } + }; +} + +REGISTER_COMPONENT(auth::component) diff --git a/src/client/component/auth.hpp b/src/client/component/auth.hpp new file mode 100644 index 0000000..3ee0c53 --- /dev/null +++ b/src/client/component/auth.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace auth +{ + uint64_t get_guid(); +} diff --git a/src/client/component/binding.cpp b/src/client/component/binding.cpp new file mode 100644 index 0000000..f88a0a6 --- /dev/null +++ b/src/client/component/binding.cpp @@ -0,0 +1,138 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include +#include + +namespace binding +{ + namespace + { + std::vector custom_binds = {}; + + utils::hook::detour cl_execute_key_hook; + + int get_num_keys() + { + return SELECT_VALUE(102, 103); + } + + int key_write_bindings_to_buffer_stub(int /*localClientNum*/, char* buffer, const int buffer_size) + { + auto bytes_used = 0; + const auto buffer_size_align = static_cast(buffer_size) - 4; + + for (auto key_index = 0; key_index < 256; ++key_index) + { + const auto* const key_button = game::Key_KeynumToString(key_index, 0, 1); + auto value = game::playerKeys->keys[key_index].binding; + + if (value && value < get_num_keys()) + { + const auto len = sprintf_s(&buffer[bytes_used], (buffer_size_align - bytes_used), + "bind %s \"%s\"\n", key_button, game::command_whitelist[value]); + + if (len < 0) + { + return bytes_used; + } + + bytes_used += len; + } + else if (value >= get_num_keys()) + { + value -= get_num_keys(); + if (static_cast(value) < custom_binds.size() && !custom_binds[value].empty()) + { + const auto len = sprintf_s(&buffer[bytes_used], (buffer_size_align - bytes_used), + "bind %s \"%s\"\n", key_button, custom_binds[value].data()); + + if (len < 0) + { + return bytes_used; + } + + bytes_used += len; + } + } + } + + buffer[bytes_used] = 0; + return bytes_used; + } + + int get_binding_for_custom_command(const char* command) + { + auto index = 0; + for (auto& bind : custom_binds) + { + if (bind == command) + { + return index; + } + index++; + } + + custom_binds.emplace_back(command); + index = static_cast(custom_binds.size()) - 1; + + return index; + } + + int key_get_binding_for_cmd_stub(const char* command) + { + // original binds + for (auto i = 0; i <= get_num_keys(); i++) + { + if (game::command_whitelist[i] && !strcmp(command, game::command_whitelist[i])) + { + return i; + } + } + + // custom binds + return get_num_keys() + get_binding_for_custom_command(command); + } + + void cl_execute_key_stub(const int local_client_num, int key, const int down, const int time) + { + if (key >= get_num_keys()) + { + key -= get_num_keys(); + + if (static_cast(key) < custom_binds.size() && !custom_binds[key].empty()) + { + game::Cbuf_AddText(local_client_num, utils::string::va("%s\n", custom_binds[key].data())); + } + + return; + } + + cl_execute_key_hook.invoke(local_client_num, key, down, time); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_dedi()) + { + return; + } + + // write all bindings to config file + utils::hook::call(SELECT_VALUE(0x14013F90B, 0x1402081CB), key_write_bindings_to_buffer_stub); + + // links a custom command to an index + utils::hook::jump(SELECT_VALUE(0x1402EE5A0, 0x1403AFB50), key_get_binding_for_cmd_stub); + + // execute custom binds + cl_execute_key_hook.create(SELECT_VALUE(0x14013B110, 0x140202BE0), &cl_execute_key_stub); + } + }; +} + +REGISTER_COMPONENT(binding::component) diff --git a/src/client/component/bots.cpp b/src/client/component/bots.cpp new file mode 100644 index 0000000..6c0a9c3 --- /dev/null +++ b/src/client/component/bots.cpp @@ -0,0 +1,197 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "command.hpp" +#include "console.hpp" +#include "filesystem.hpp" +#include "network.hpp" +#include "party.hpp" +#include "scheduler.hpp" +#include "server_list.hpp" + +#include +#include + +namespace bots +{ + namespace + { + constexpr std::size_t MAX_NAME_LENGTH = 16; + + bool can_add() + { + if (party::get_client_count() < *game::mp::svs_numclients) + { + return true; + } + + return false; + } + + void bot_team_join(const unsigned int entity_num) + { + scheduler::once([entity_num]() + { + game::Scr_AddInt(2); + game::Scr_AddString("team_select"); + game::Scr_Notify(&game::mp::g_entities[entity_num], static_cast(game::SL_GetString("luinotifyserver", 0)), 2); + + scheduler::once([entity_num]() + { + game::Scr_AddString(utils::string::va("class%d", std::rand() % 5)); + game::Scr_AddString("class_select"); + game::Scr_Notify(&game::mp::g_entities[entity_num], static_cast(game::SL_GetString("luinotifyserver", 0)), 2); + }, scheduler::pipeline::server, 2s); + }, scheduler::pipeline::server, 2s); + } + + void spawn_bot(const int entity_num) + { + game::SV_SpawnTestClient(&game::mp::g_entities[entity_num]); + if (game::Com_GetCurrentCoDPlayMode() == game::CODPLAYMODE_CORE) + { + bot_team_join(entity_num); + } + } + + void add_bot() + { + if (!can_add()) + { + return; + } + + // SV_BotGetRandomName + const auto* const bot_name = game::SV_BotGetRandomName(); + auto* bot_ent = game::SV_AddBot(bot_name); + if (bot_ent) + { + spawn_bot(bot_ent->s.number); + } + else if (can_add()) // workaround since first bot won't ever spawn + { + add_bot(); + } + } + + utils::hook::detour get_bot_name_hook; + volatile bool bot_names_received = false; + std::vector bot_names; + + const char* get_random_bot_name() + { + if (bot_names.empty()) + { + return get_bot_name_hook.invoke(); + } + + const auto index = std::rand() % bot_names.size(); + const auto& name = bot_names.at(index); + + return utils::string::va("%.*s", static_cast(name.size()), name.data()); + } + + bool should_update_bot_names() + { + return !filesystem::exists("bots.txt"); + } + + void parse_bot_names_from_file() + { + std::string data; + filesystem::read_file("bots.txt", &data); + if (data.empty()) + { + return; + } + + auto name_list = utils::string::split(data, '\n'); + for (auto& entry : name_list) + { + // Take into account CR line endings + entry = utils::string::replace(entry, "\r", ""); + + if (entry.empty()) + { + continue; + } + + entry = entry.substr(0, MAX_NAME_LENGTH - 1); + bot_names.emplace_back(entry); + } + } + + void update_bot_names() + { + bot_names_received = false; + + game::netadr_s master; + if (server_list::get_master_server(master)) + { + console::info("Getting bots...\n"); + network::send(master, "getbots"); + } + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) + { + return; + } + + get_bot_name_hook.create(game::SV_BotGetRandomName, get_random_bot_name); + + command::add("spawnBot", [](const command::params& params) + { + if (!game::SV_Loaded() || game::VirtualLobby_Loaded()) return; + + auto num_bots = 1; + if (params.size() == 2) + { + num_bots = std::atoi(params.get(1)); + } + + num_bots = std::min(num_bots, *game::mp::svs_numclients); + + console::info("Spawning %i %s\n", num_bots, (num_bots == 1 ? "bot" : "bots")); + + for (auto i = 0; i < num_bots; ++i) + { + scheduler::once(add_bot, scheduler::pipeline::server, 100ms * i); + } + }); + + if (should_update_bot_names()) + { + scheduler::on_game_initialized([]() -> void + { + update_bot_names(); + scheduler::loop(update_bot_names, scheduler::main, 1h); + }, scheduler::main); + } + else + { + parse_bot_names_from_file(); + } + + network::on("getbotsResponse", [](const game::netadr_s& target, const std::string_view& data) + { + game::netadr_s master{}; + if (server_list::get_master_server(master) && !bot_names_received && target == master) + { + const std::string received_data{ data }; + bot_names = utils::string::split(received_data, '\n'); + bot_names_received = true; + } + }); + } + }; +} + +REGISTER_COMPONENT(bots::component) diff --git a/src/client/component/branding.cpp b/src/client/component/branding.cpp new file mode 100644 index 0000000..001f2b8 --- /dev/null +++ b/src/client/component/branding.cpp @@ -0,0 +1,69 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "localized_strings.hpp" +#include "scheduler.hpp" +#include "dvars.hpp" + +#include +#include + +#include "version.hpp" + +namespace branding +{ + namespace + { + utils::hook::detour ui_get_formatted_build_number_hook; + + const char* ui_get_formatted_build_number_stub() + { + const auto* const build_num = ui_get_formatted_build_number_hook.invoke(); + + return utils::string::va("%s (%s)", VERSION, build_num); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_dedi()) + { + return; + } + + if (game::environment::is_mp()) + { + localized_strings::override("LUA_MENU_MULTIPLAYER_CAPS", "s1-mod: MULTIPLAYER\n"); + } + localized_strings::override("LUA_MENU_LEGAL_COPYRIGHT", "s1-mod: " VERSION); + + dvars::override::set_string("version", utils::string::va("s1-mod %s", VERSION)); + + ui_get_formatted_build_number_hook.create( + SELECT_VALUE(0x14035B3F0, 0x1404A8950), ui_get_formatted_build_number_stub); + + scheduler::loop([]() + { + const auto x = 4; + const auto y = 4; + const auto scale = 1.0f; + float color[4] = {0.666f, 0.666f, 0.666f, 0.666f}; + const auto* text = "s1-mod: " VERSION; + + auto* font = game::R_RegisterFont("fonts/consolefont"); + + if (!font) return; + + game::R_AddCmdDrawText(text, std::numeric_limits::max(), font, static_cast(x), + y + static_cast(font->pixelHeight) * scale, + scale, scale, 0.0f, color, 0); + }, scheduler::pipeline::renderer); + } + }; +} + +REGISTER_COMPONENT(branding::component) diff --git a/src/client/component/bullet.cpp b/src/client/component/bullet.cpp new file mode 100644 index 0000000..6b25a3e --- /dev/null +++ b/src/client/component/bullet.cpp @@ -0,0 +1,44 @@ +#include +#include "loader/component_loader.hpp" + +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include + +namespace bullet +{ + namespace + { + utils::hook::detour bg_get_surface_penetration_depth_hook; + + float bg_get_surface_penetration_depth_stub(game::Weapon weapon, bool is_alternate, int surfaceType) + { + if (dvars::bg_surfacePenetration->current.value > 0.0f) + { + return dvars::bg_surfacePenetration->current.value; + } + + return bg_get_surface_penetration_depth_hook.invoke(weapon, is_alternate, surfaceType); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) + { + return; + } + + dvars::bg_surfacePenetration = game::Dvar_RegisterFloat("bg_surfacePenetration", 0.0f, + 0.0f, std::numeric_limits::max(), game::DVAR_FLAG_SAVED, + "Set to a value greater than 0 to override the surface penetration depth"); + bg_get_surface_penetration_depth_hook.create(0x1401641A0, &bg_get_surface_penetration_depth_stub); + } + }; +} + +REGISTER_COMPONENT(bullet::component) diff --git a/src/client/component/colors.cpp b/src/client/component/colors.cpp new file mode 100644 index 0000000..e918a4f --- /dev/null +++ b/src/client/component/colors.cpp @@ -0,0 +1,183 @@ +#include +#include "loader/component_loader.hpp" + +#include "game/game.hpp" + +#include +#include + +namespace colors +{ + struct hsv_color + { + unsigned char h; + unsigned char s; + unsigned char v; + }; + + namespace + { + std::vector color_table; + + DWORD hsv_to_rgb(const hsv_color hsv) + { + DWORD rgb; + + if (hsv.s == 0) + { + return RGB(hsv.v, hsv.v, hsv.v); + } + + // converting to 16 bit to prevent overflow + const unsigned int h = hsv.h; + const unsigned int s = hsv.s; + const unsigned int v = hsv.v; + + const auto region = static_cast(h / 43); + const auto remainder = (h - (region * 43)) * 6; + + const auto p = static_cast((v * (255 - s)) >> 8); + const auto q = static_cast( + (v * (255 - ((s * remainder) >> 8))) >> 8); + const auto t = static_cast( + (v * (255 - ((s * (255 - remainder)) >> 8))) >> 8); + + switch (region) + { + case 0: + rgb = RGB(v, t, p); + break; + case 1: + rgb = RGB(q, v, p); + break; + case 2: + rgb = RGB(p, v, t); + break; + case 3: + rgb = RGB(p, q, v); + break; + case 4: + rgb = RGB(t, p, v); + break; + default: + rgb = RGB(v, p, q); + break; + } + + return rgb; + } + + int color_index(const char c) + { + const auto index = c - 48; + return index >= 0xC ? 7 : index; + } + + char add(const uint8_t r, const uint8_t g, const uint8_t b) + { + const char index = '0' + static_cast(color_table.size()); + color_table.push_back(RGB(r, g, b)); + return index; + } + + void com_clean_name_stub(const char* in, char* out, const int out_size) + { + strncpy_s(out, out_size, in, _TRUNCATE); + } + + char* i_clean_str_stub(char* string) + { + utils::string::strip(string, string, std::strlen(string) + 1); + + return string; + } + + size_t get_client_name_stub(const int local_client_num, const int index, char* buf, const int size, + const size_t unk, const size_t unk2) + { + // CL_GetClientName (CL_GetClientNameAndClantag?) + const auto result = reinterpret_cast(0x140213E60)( + local_client_num, index, buf, size, unk, unk2); + + utils::string::strip(buf, buf, static_cast(size)); + + return result; + } + + void rb_lookup_color_stub(const char index, DWORD* color) + { + *color = RGB(255, 255, 255); + + if (index == '8') + { + *color = *reinterpret_cast(SELECT_VALUE(0x14CEDD978, 0x14D8594C4)); + } + else if (index == '9') + { + *color = *reinterpret_cast(SELECT_VALUE(0x14CEDD97C, 0x14D8594C8)); + } + else if (index == ':') + { + *color = hsv_to_rgb({static_cast((game::Sys_Milliseconds() / 100) % 256), 255, 255}); + } + else if (index == ';') + { + *color = *reinterpret_cast(SELECT_VALUE(0x14CEDD984, 0x14D8594D0)); + } + else if (index == '<') + { + *color = 0xFFFCFF80; + } + else + { + *color = color_table[color_index(index)]; + } + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_dedi()) + { + return; + } + + if (!game::environment::is_sp()) + { + // allows colored name in-game + utils::hook::jump(0x1404C9510, com_clean_name_stub); + + // don't apply colors to overhead names + utils::hook::call(0x1401891B0, get_client_name_stub); + + // patch I_CleanStr + utils::hook::jump(0x1404C99A0, i_clean_str_stub); + } + + // force new colors + utils::hook::jump(SELECT_VALUE(0x1404D3A20, 0x1405F2B90), rb_lookup_color_stub); + + // add colors + add(0, 0, 0); // 0 - Black + add(255, 49, 49); // 1 - Red + add(134, 192, 0); // 2 - Green + add(255, 173, 34); // 3 - Yellow + add(0, 135, 193); // 4 - Blue + add(32, 197, 255); // 5 - Light Blue + add(151, 80, 221); // 6 - Pink + add(255, 255, 255); // 7 - White + + add(0, 0, 0); // 8 - Team color (axis?) + add(0, 0, 0); // 9 - Team color (allies?) + + add(0, 0, 0); // 10 - Rainbow (:) + add(0, 0, 0); + // 11 - Server color (;) - using that color in infostrings (e.g. your name) fails, ';' is an illegal character! + } + }; +} + +REGISTER_COMPONENT(colors::component) diff --git a/src/client/component/command.cpp b/src/client/component/command.cpp new file mode 100644 index 0000000..6408a9a --- /dev/null +++ b/src/client/component/command.cpp @@ -0,0 +1,677 @@ +#include +#include "loader/component_loader.hpp" + +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include "command.hpp" +#include "console.hpp" +#include "game_console.hpp" +#include "scheduler.hpp" +#include "fastfiles.hpp" + +#include +#include +#include +#include + +namespace command +{ + namespace + { + constexpr auto CMD_MAX_NESTING = 8; + + utils::hook::detour client_command_hook; + + std::unordered_map> handlers; + std::unordered_map> handlers_sv; + + void main_handler() + { + params params = {}; + + const auto command = utils::string::to_lower(params[0]); + if (const auto itr = handlers.find(command); itr != handlers.end()) + { + itr->second(params); + } + } + + void client_command(const char client_num) + { + if (game::mp::g_entities[client_num].client == nullptr) + { + // Client is not fully connected + return; + } + + params_sv params = {}; + + const auto command = utils::string::to_lower(params[0]); + if (const auto itr = handlers_sv.find(command); itr != handlers_sv.end()) + { + itr->second(&game::mp::g_entities[client_num], params); + } + + client_command_hook.invoke(client_num); + } + + // Shamelessly stolen from Quake3 + // https://github.com/id-Software/Quake-III-Arena/blob/dbe4ddb10315479fc00086f08e25d968b4b43c49/code/qcommon/common.c#L364 + void parse_command_line() + { + static auto parsed = false; + if (parsed) + { + return; + } + + static std::string comand_line_buffer = GetCommandLineA(); + auto* command_line = comand_line_buffer.data(); + + auto& com_num_console_lines = *reinterpret_cast(0x147B76504); + auto* com_console_lines = reinterpret_cast(0x147B76510); + + auto inq = false; + com_console_lines[0] = command_line; + com_num_console_lines = 0; + + while (*command_line) + { + if (*command_line == '"') + { + inq = !inq; + } + // look for a + separating character + // if commandLine came from a file, we might have real line seperators + if ((*command_line == '+' && !inq) || *command_line == '\n' || *command_line == '\r') + { + if (com_num_console_lines == 0x20) // MAX_CONSOLE_LINES + { + break; + } + com_console_lines[com_num_console_lines] = command_line + 1; + com_num_console_lines++; + *command_line = '\0'; + } + command_line++; + } + parsed = true; + } + + void parse_commandline_stub() + { + parse_command_line(); + reinterpret_cast(0x1403CEE10)(); + } + } + + void read_startup_variable(const std::string& dvar) + { + // parse the commandline if it's not parsed + parse_command_line(); + + auto& com_num_console_lines = *reinterpret_cast(0x147B76504); + auto* com_console_lines = reinterpret_cast(0x147B76510); + + for (int i = 0; i < com_num_console_lines; i++) + { + game::Cmd_TokenizeString(com_console_lines[i]); + + // only +set dvar value + if (game::Cmd_Argc() >= 3 && game::Cmd_Argv(0) == "set"s && game::Cmd_Argv(1) == dvar) + { + game::Dvar_SetCommand(game::Cmd_Argv(1), game::Cmd_Argv(2)); + } + + game::Cmd_EndTokenizeString(); + } + } + + params::params() + : nesting_(game::cmd_args->nesting) + { + assert(this->nesting_ < CMD_MAX_NESTING); + } + + int params::size() const + { + return game::cmd_args->argc[this->nesting_]; + } + + const char* params::get(const int index) const + { + if (index >= this->size()) + { + return ""; + } + + return game::cmd_args->argv[this->nesting_][index]; + } + + std::string params::join(const int index) const + { + std::string result = {}; + + for (auto i = index; i < this->size(); i++) + { + if (i > index) result.append(" "); + result.append(this->get(i)); + } + return result; + } + + params_sv::params_sv() + : nesting_(game::sv_cmd_args->nesting) + { + assert(this->nesting_ < CMD_MAX_NESTING); + } + + int params_sv::size() const + { + return game::sv_cmd_args->argc[this->nesting_]; + } + + const char* params_sv::get(const int index) const + { + if (index >= this->size()) + { + return ""; + } + + return game::sv_cmd_args->argv[this->nesting_][index]; + } + + std::string params_sv::join(const int index) const + { + std::string result; + + for (auto i = index; i < this->size(); i++) + { + if (i > index) result.append(" "); + result.append(this->get(i)); + } + return result; + } + + void add_raw(const char* name, void (*callback)()) + { + game::Cmd_AddCommandInternal(name, callback, utils::memory::get_allocator()->allocate()); + } + + void add(const char* name, const std::function& callback) + { + const auto command = utils::string::to_lower(name); + + if (!handlers.contains(command)) + { + add_raw(name, main_handler); + } + + handlers[command] = callback; + } + + void add(const char* name, const std::function& callback) + { + add(name, [callback](const params&) + { + callback(); + }); + } + + void add_sv(const char* name, const std::function& callback) + { + // doing this so the sv command would show up in the console + add_raw(name, nullptr); + + const auto command = utils::string::to_lower(name); + + if (!handlers_sv.contains(command)) + { + handlers_sv[command] = callback; + } + } + + bool cheats_ok(const game::mp::gentity_s* ent) + { + if (!dvars::sv_cheats->current.enabled) + { + game::SV_GameSendServerCommand(ent->s.number, game::SV_CMD_RELIABLE, + "f \"Cheats are not enabled on this server\""); + return false; + } + + if (ent->health < 1) + { + game::SV_GameSendServerCommand(ent->s.number, game::SV_CMD_RELIABLE, + "f \"You must be alive to use this command\""); + return false; + } + + return true; + } + + void execute(std::string command, const bool sync) + { + command += "\n"; + + if (sync) + { + game::Cmd_ExecuteSingleCommand(0, 0, command.data()); + } + else + { + game::Cbuf_AddText(0, command.data()); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) + { + add_commands_sp(); + } + else + { + utils::hook::call(0x1403CDF1C, &parse_commandline_stub); + add_commands_mp(); + } + + add_commands_generic(); + } + + private: + static void add_commands_generic() + { + add("quit", game::Com_Quit_f); + add("crash", [] + { + *reinterpret_cast(1) = 0x12345678; + }); + + add("consoleList", [](const params& params) + { + const std::string input = params.get(1); + + std::vector matches; + game_console::find_matches(input, matches, false); + + for(auto& match : matches) + { + auto* dvar = game::Dvar_FindVar(match.c_str()); + if (!dvar) + { + console::info("[CMD]\t %s\n", match.c_str()); + } + else + { + console::info("[DVAR]\t%s \"%s\"\n", match.c_str(), game::Dvar_ValueToString(dvar, dvar->current)); + } + } + + console::info("Total %i matches\n", matches.size()); + }); + + add("dvarDump", [](const params& argument) + { + console::info("================================ DVAR DUMP ========================================\n"); + std::string filename; + if (argument.size() == 2) + { + filename = "s1/"; + filename.append(argument[1]); + if (!filename.ends_with(".txt")) + { + filename.append(".txt"); + } + } + for (auto i = 0; i < *game::dvarCount; i++) + { + const auto dvar = game::sortedDvars[i]; + if (dvar) + { + if (!filename.empty()) + { + const auto line = std::format("{} \"{}\"\r\n", dvar->name, + game::Dvar_ValueToString(dvar, dvar->current)); + utils::io::write_file(filename, line, i != 0); + } + console::info("%s \"%s\"\n", dvar->name, + game::Dvar_ValueToString(dvar, dvar->current)); + } + } + console::info("\n%i dvars\n", *game::dvarCount); + console::info("================================ END DVAR DUMP ====================================\n"); + }); + + add("commandDump", [](const params& argument) + { + console::info("================================ COMMAND DUMP =====================================\n"); + game::cmd_function_s* cmd = (*game::cmd_functions); + std::string filename; + if (argument.size() == 2) + { + filename = "s1/"; + filename.append(argument[1]); + if (!filename.ends_with(".txt")) + { + filename.append(".txt"); + } + } + int i = 0; + while (cmd) + { + if (cmd->name) + { + if (!filename.empty()) + { + const auto line = std::format("{}\r\n", cmd->name); + utils::io::write_file(filename, line, i != 0); + } + console::info("%s\n", cmd->name); + i++; + } + cmd = cmd->next; + } + console::info("\n%i commands\n", i); + console::info("================================ END COMMAND DUMP =================================\n"); + }); + + add("listassetpool", [](const params& params) + { + if (params.size() < 2) + { + console::info("listassetpool [filter]: list all the assets in the specified pool\n"); + + for (auto i = 0; i < game::XAssetType::ASSET_TYPE_COUNT; i++) + { + console::info("%d %s\n", i, game::g_assetNames[i]); + } + } + else + { + const auto type = static_cast(atoi(params.get(1))); + + if (type < 0 || type >= game::XAssetType::ASSET_TYPE_COUNT) + { + console::error("Invalid pool passed must be between [%d, %d]\n", 0, game::XAssetType::ASSET_TYPE_COUNT - 1); + return; + } + + console::info("Listing assets in pool %s\n", game::g_assetNames[type]); + + const std::string filter = params.get(2); + fastfiles::enum_assets(type, [type, filter](const game::XAssetHeader header) + { + const auto asset = game::XAsset{ type, header }; + const auto* const asset_name = game::DB_GetXAssetName(&asset); + //const auto entry = game::DB_FindXAssetEntry(type, asset_name); + //TODO: display which zone the asset is from + + if (!filter.empty() && !game_console::match_compare(filter, asset_name, false)) + { + return; + } + + console::info("%s\n", asset_name); + }, true); + } + }); + + add("vstr", [](const params& params) + { + if (params.size() < 2) + { + console::info("vstr : execute a variable command\n"); + return; + } + + const auto* dvarName = params.get(1); + const auto* dvar = game::Dvar_FindVar(dvarName); + + if (dvar == nullptr) + { + console::info("%s doesn't exist\n", dvarName); + return; + } + + if (dvar->type != game::dvar_type::string + && dvar->type != game::dvar_type::enumeration) + { + console::info("%s is not a string-based dvar\n", dvar->name); + return; + } + + execute(dvar->current.string); + }); + } + + static void add_commands_sp() + { + add("god", []() + { + if (!game::SV_Loaded()) + { + return; + } + + game::sp::g_entities[0].flags ^= 1; + game::CG_GameMessage(0, utils::string::va("godmode %s", + game::sp::g_entities[0].flags & 1 + ? "^2on" + : "^1off")); + }); + + add("demigod", []() + { + if (!game::SV_Loaded()) + { + return; + } + + game::sp::g_entities[0].flags ^= 2; + game::CG_GameMessage(0, utils::string::va("demigod mode %s", + game::sp::g_entities[0].flags & 2 + ? "^2on" + : "^1off")); + }); + + add("notarget", []() + { + if (!game::SV_Loaded()) + { + return; + } + + game::sp::g_entities[0].flags ^= 4; + game::CG_GameMessage(0, utils::string::va("notarget %s", + game::sp::g_entities[0].flags & 4 + ? "^2on" + : "^1off")); + }); + + add("noclip", []() + { + if (!game::SV_Loaded()) + { + return; + } + + game::sp::g_entities[0].client->flags ^= 1; + game::CG_GameMessage(0, utils::string::va("noclip %s", + game::sp::g_entities[0].client->flags & 1 + ? "^2on" + : "^1off")); + }); + + add("ufo", []() + { + if (!game::SV_Loaded()) + { + return; + } + + game::sp::g_entities[0].client->flags ^= 2; + game::CG_GameMessage(0, utils::string::va("ufo %s", + game::sp::g_entities[0].client->flags & 2 + ? "^2on" + : "^1off")); + }); + + add("give", [](const params& params) + { + if (!game::SV_Loaded()) + { + return; + } + + if (params.size() < 2) + { + game::CG_GameMessage(0, "You did not specify a weapon name"); + return; + } + + auto ps = game::SV_GetPlayerstateForClientNum(0); + const auto wp = game::G_GetWeaponForName(params.get(1)); + if (wp) + { + if (game::G_GivePlayerWeapon(ps, wp, 0, 0, 0, 0, 0, 0)) + { + game::G_InitializeAmmo(ps, wp, 0); + game::G_SelectWeapon(0, wp); + } + } + }); + + add("take", [](const params& params) + { + if (!game::SV_Loaded()) + { + return; + } + + if (params.size() < 2) + { + game::CG_GameMessage(0, "You did not specify a weapon name"); + return; + } + + auto ps = game::SV_GetPlayerstateForClientNum(0); + const auto wp = game::G_GetWeaponForName(params.get(1)); + if (wp) + { + game::G_TakePlayerWeapon(ps, wp); + } + }); + } + + static void add_commands_mp() + { + client_command_hook.create(0x1402E98F0, &client_command); + + add_sv("god", [](game::mp::gentity_s* ent, const params_sv&) + { + if (!cheats_ok(ent)) + return; + + ent->flags ^= game::FL_GODMODE; + + game::SV_GameSendServerCommand(ent->s.number, game::SV_CMD_RELIABLE, + utils::string::va("f \"godmode %s\"", (ent->flags & game::FL_GODMODE) ? "^2on" : "^1off")); + }); + + add_sv("demigod", [](game::mp::gentity_s* ent, const params_sv&) + { + if (!cheats_ok(ent)) + return; + + ent->flags ^= game::FL_DEMI_GODMODE; + + game::SV_GameSendServerCommand(ent->s.number, game::SV_CMD_RELIABLE, + utils::string::va("f \"demigod mode %s\"", (ent->flags & game::FL_DEMI_GODMODE) ? "^2on" : "^1off")); + }); + + add_sv("notarget", [](game::mp::gentity_s* ent, const params_sv&) + { + if (!cheats_ok(ent)) + return; + + ent->flags ^= game::FL_NOTARGET; + + game::SV_GameSendServerCommand(ent->s.number, game::SV_CMD_RELIABLE, + utils::string::va("f \"notarget %s\"", (ent->flags & game::FL_NOTARGET) ? "^2on" : "^1off")); + }); + + add_sv("noclip", [](game::mp::gentity_s* ent, const params_sv&) + { + if (!cheats_ok(ent)) + return; + + ent->client->flags ^= 1; + + game::SV_GameSendServerCommand(ent->s.number, game::SV_CMD_RELIABLE, + utils::string::va("f \"noclip %s\"", ent->client->flags & 1 ? "^2on" : "^1off")); + }); + + add_sv("ufo", [](game::mp::gentity_s* ent, const params_sv&) + { + if (!cheats_ok(ent)) + return; + + ent->client->flags ^= 2; + + game::SV_GameSendServerCommand(ent->s.number, game::SV_CMD_RELIABLE, + utils::string::va("f \"ufo %s\"", ent->client->flags & 2 ? "^2on" : "^1off")); + }); + + add_sv("give", [](game::mp::gentity_s* ent, const params_sv& params) + { + if (!cheats_ok(ent)) + return; + + if (params.size() < 2) + { + game::SV_GameSendServerCommand(ent->s.number, game::SV_CMD_RELIABLE, + "f \"You did not specify a weapon name\""); + return; + } + + auto ps = game::SV_GetPlayerstateForClientNum(ent->s.number); + const auto wp = game::G_GetWeaponForName(params.get(1)); + if (wp) + { + if (game::G_GivePlayerWeapon(ps, wp, 0, 0, 0, 0, 0, 0)) + { + game::G_InitializeAmmo(ps, wp, 0); + game::G_SelectWeapon(ent->s.number, wp); + } + } + }); + + add_sv("take", [](game::mp::gentity_s* ent, const params_sv& params) + { + if (!cheats_ok(ent)) + return; + + if (params.size() < 2) + { + game::SV_GameSendServerCommand(ent->s.number, game::SV_CMD_RELIABLE, + "f \"You did not specify a weapon name\""); + return; + } + + auto ps = game::SV_GetPlayerstateForClientNum(ent->s.number); + const auto wp = game::G_GetWeaponForName(params.get(1)); + if (wp) + { + game::G_TakePlayerWeapon(ps, wp); + } + }); + } + }; +} + +REGISTER_COMPONENT(command::component) diff --git a/src/client/component/command.hpp b/src/client/component/command.hpp new file mode 100644 index 0000000..16563f7 --- /dev/null +++ b/src/client/component/command.hpp @@ -0,0 +1,50 @@ +#pragma once + +namespace command +{ + class params + { + public: + params(); + + int size() const; + const char* get(int index) const; + std::string join(int index) const; + + const char* operator[](const int index) const + { + return this->get(index); // + } + + private: + int nesting_; + }; + + class params_sv + { + public: + params_sv(); + + int size() const; + const char* get(int index) const; + std::string join(int index) const; + + const char* operator[](const int index) const + { + return this->get(index); // + } + + private: + int nesting_; + }; + + void read_startup_variable(const std::string& dvar); + + void add_raw(const char* name, void (*callback)()); + void add(const char* name, const std::function& callback); + void add(const char* name, const std::function& callback); + + void add_sv(const char* name, const std::function& callback); + + void execute(std::string command, bool sync = false); +} diff --git a/src/client/component/console.cpp b/src/client/component/console.cpp new file mode 100644 index 0000000..a66101d --- /dev/null +++ b/src/client/component/console.cpp @@ -0,0 +1,260 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "command.hpp" +#include "console.hpp" +#include "game_console.hpp" +#include "rcon.hpp" +#include "scheduler.hpp" + +#include +#include +#include + +namespace console +{ + namespace + { + using message_queue = std::queue; + utils::concurrency::container message_queue_; + + std::atomic_bool started_{false}; + std::atomic_bool terminate_runner_{false}; + + void print_message(const char* message) + { +#ifdef _DEBUG + OutputDebugStringA(message); +#endif + + if (game::is_headless()) + { + std::fputs(message, stdout); + } + else + { + game::Conbuf_AppendText(message); + } + } + + std::string format(va_list* ap, const char* message) + { + static thread_local char buffer[0x1000]; + + const auto count = vsnprintf_s(buffer, _TRUNCATE, message, *ap); + + if (count < 0) return {}; + return {buffer, static_cast(count)}; + } + + void dispatch_message(const int type, const std::string& message) + { + if (rcon::message_redirect(message)) + { + return; + } + + game_console::print(type, message); + + if (game::is_headless()) + { + std::fputs(message.data(), stdout); + return; + } + + message_queue_.access([&message](message_queue& queue) + { + queue.emplace(message); + }); + } + + message_queue empty_message_queue() + { + message_queue current_queue{}; + + message_queue_.access([&](message_queue& queue) + { + current_queue = std::move(queue); + queue = {}; + }); + + return current_queue; + } + + void print_stub(const char* fmt, ...) + { + va_list ap; + va_start(ap, fmt); + + char buffer[4096]{}; + const auto res = vsnprintf_s(buffer, _TRUNCATE, fmt, ap); + (void)res; + print_message(buffer); + + va_end(ap); + } + + void append_text(const char* text) + { + dispatch_message(con_type_info, text); + } + } + + class component final : public component_interface + { + public: + component() + { + if (game::is_headless()) + { + if (!AttachConsole(ATTACH_PARENT_PROCESS)) + { + AllocConsole(); + AttachConsole(GetCurrentProcessId()); + } + + ShowWindow(GetConsoleWindow(), SW_SHOW); + + FILE* fp; + freopen_s(&fp, "CONIN$", "r", stdin); + freopen_s(&fp, "CONOUT$", "w", stdout); + freopen_s(&fp, "CONOUT$", "w", stderr); + } + } + + void post_unpack() override + { + // Redirect input (]command) + utils::hook::jump(SELECT_VALUE(0x14038F3E0, 0x1404D9200), append_text); + + utils::hook::jump(printf, print_stub); + + if (game::is_headless()) + { + return; + } + + terminate_runner_ = false; + + this->message_runner_ = utils::thread::create_named_thread("Console IO", [] + { + while (!started_) + { + std::this_thread::sleep_for(10ms); + } + + while (!terminate_runner_) + { + std::string message_buffer{}; + auto current_queue = empty_message_queue(); + + while (!current_queue.empty()) + { + const auto& msg = current_queue.front(); + message_buffer.append(msg); + current_queue.pop(); + } + + if (!message_buffer.empty()) + { + print_message(message_buffer.data()); + } + + std::this_thread::sleep_for(5ms); + } + }); + + this->console_runner_ = utils::thread::create_named_thread("Console Window", [this] + { + game::Sys_ShowConsole(); + + MSG msg{}; + while (!terminate_runner_) + { + if (PeekMessageW(&msg, nullptr, NULL, NULL, PM_REMOVE)) + { + if (msg.message == WM_QUIT) + { + command::execute("quit", false); + break; + } + + TranslateMessage(&msg); + DispatchMessageW(&msg); + } + else + { + std::this_thread::sleep_for(5ms); + } + } + }); + + // Give the console a chance to open or we will lose some early messages + // like the ones printed from the filesystem component + scheduler::once([]() -> void + { + started_ = true; + }, scheduler::pipeline::main); + } + + void pre_destroy() override + { + terminate_runner_ = true; + + if (this->message_runner_.joinable()) + { + this->message_runner_.join(); + } + + if (this->console_runner_.joinable()) + { + this->console_runner_.join(); + } + } + + private: + std::thread console_runner_{}; + std::thread message_runner_{}; + }; + + HWND get_window() + { + return *reinterpret_cast((SELECT_VALUE(0x14A9F6070, 0x14B5B94C0))); + } + + void set_title(std::string title) + { + if (game::is_headless()) + { + SetConsoleTitleA(title.data()); + } + else + { + SetWindowTextA(get_window(), title.data()); + } + } + + void set_size(const int width, const int height) + { + RECT rect; + GetWindowRect(get_window(), &rect); + + SetWindowPos(get_window(), nullptr, rect.left, rect.top, width, height, 0); + + auto* const logo_window = *reinterpret_cast(SELECT_VALUE(0x14A9F6080, 0x14B5B94D0)); + SetWindowPos(logo_window, nullptr, 5, 5, width - 25, 60, 0); + } + + void print(const int type, const char* fmt, ...) + { + va_list ap; + va_start(ap, fmt); + const auto result = format(&ap, fmt); + va_end(ap); + + dispatch_message(type, result); + } +} + +REGISTER_COMPONENT(console::component) diff --git a/src/client/component/console.hpp b/src/client/component/console.hpp new file mode 100644 index 0000000..484266b --- /dev/null +++ b/src/client/component/console.hpp @@ -0,0 +1,35 @@ +#pragma once + +namespace console +{ + HWND get_window(); + void set_title(std::string title); + void set_size(int width, int height); + + enum console_type + { + con_type_error = 1, + con_type_warning = 3, + con_type_info = 7 + }; + + void print(int type, const char* fmt, ...); + + template + void error(const char* fmt, Args&&... args) + { + print(con_type_error, fmt, std::forward(args)...); + } + + template + void warn(const char* fmt, Args&&... args) + { + print(con_type_warning, fmt, std::forward(args)...); + } + + template + void info(const char* fmt, Args&&... args) + { + print(con_type_info, fmt, std::forward(args)...); + } +} diff --git a/src/client/component/dedicated.cpp b/src/client/component/dedicated.cpp new file mode 100644 index 0000000..072f3ce --- /dev/null +++ b/src/client/component/dedicated.cpp @@ -0,0 +1,326 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "console.hpp" +#include "scheduler.hpp" +#include "server_list.hpp" +#include "network.hpp" +#include "command.hpp" +#include "dvars.hpp" + +#include +#include + +namespace dedicated +{ + namespace + { + utils::hook::detour gscr_set_dynamic_dvar_hook; + utils::hook::detour com_quit_f_hook; + + const game::dvar_t* sv_lanOnly; + + void init_dedicated_server() + { + static bool initialized = false; + if (initialized) return; + initialized = true; + + // R_LoadGraphicsAssets + reinterpret_cast(0x1405A54F0)(); + } + + void send_heartbeat() + { + if (sv_lanOnly->current.enabled) + { + return; + } + + game::netadr_s target{}; + if (server_list::get_master_server(target)) + { + network::send(target, "heartbeat", "S1"); + } + } + + std::vector& get_startup_command_queue() + { + static std::vector startup_command_queue; + return startup_command_queue; + } + + void execute_startup_command(int client, int /*controllerIndex*/, const char* command) + { + if (game::Live_SyncOnlineDataFlags(0) == 0) + { + game::Cbuf_ExecuteBufferInternal(0, 0, command, game::Cmd_ExecuteSingleCommand); + } + else + { + get_startup_command_queue().emplace_back(command); + } + } + + void execute_startup_command_queue() + { + const auto queue = get_startup_command_queue(); + get_startup_command_queue().clear(); + + for (const auto& command : queue) + { + game::Cbuf_ExecuteBufferInternal(0, 0, command.data(), game::Cmd_ExecuteSingleCommand); + } + } + + std::vector& get_console_command_queue() + { + static std::vector console_command_queue; + return console_command_queue; + } + + void execute_console_command([[maybe_unused]] const int local_client_num, const char* command) + { + if (game::Live_SyncOnlineDataFlags(0) == 0) + { + command::execute(command); + } + else + { + get_console_command_queue().emplace_back(command); + } + } + + void execute_console_command_queue() + { + const auto queue = get_console_command_queue(); + get_console_command_queue().clear(); + + for (const auto& command : queue) + { + game::Cbuf_AddText(0, command.data()); + game::Cbuf_AddText(0, "\n"); + } + } + + void sync_gpu_stub() + { + std::this_thread::sleep_for(1ms); + } + + void gscr_set_dynamic_dvar() + { + auto s = game::Scr_GetString(0); + auto* dvar = game::Dvar_FindVar(s); + if (dvar && !std::strncmp("scr_", dvar->name, 4)) + { + return; + } + + gscr_set_dynamic_dvar_hook.invoke(); + } + + void kill_server() + { + for (auto i = 0; i < *game::mp::svs_numclients; ++i) + { + if (game::mp::svs_clients[i].header.state >= 3) + { + game::SV_GameSendServerCommand(i, game::SV_CMD_CAN_IGNORE, + utils::string::va("r \"%s\"", "EXE_ENDOFGAME")); + } + } + + com_quit_f_hook.invoke(); + } + + void sys_error_stub(const char* msg, ...) + { + char buffer[2048]{}; + + va_list ap; + va_start(ap, msg); + + vsnprintf_s(buffer, _TRUNCATE, msg, ap); + + va_end(ap); + + scheduler::once([] + { + command::execute("map_rotate"); + }, scheduler::main, 3s); + + game::Com_Error(game::ERR_DROP, "%s", buffer); + } + } + + void initialize() + { + command::execute("exec default_xboxlive.cfg", true); + command::execute("onlinegame 1", true); + command::execute("xblive_privatematch 1", true); + } + + class component final : public component_interface + { + public: + void* load_import(const std::string& library, const std::string& function) override + { + return nullptr; + } + + void post_unpack() override + { + if (!game::environment::is_dedi()) + { + return; + } + + game::Dvar_RegisterBool("dedicated", true, game::DVAR_FLAG_READ, "Dedicated server"); + + sv_lanOnly = game::Dvar_RegisterBool("sv_lanOnly", false, game::DVAR_FLAG_NONE, "Don't send heartbeat"); + + // Disable VirtualLobby + dvars::override::register_bool("virtualLobbyEnabled", false, game::DVAR_FLAG_NONE | game::DVAR_FLAG_READ); + + // Disable r_preloadShaders + dvars::override::register_bool("r_preloadShaders", false, game::DVAR_FLAG_NONE | game::DVAR_FLAG_READ); + + // Don't allow sv_hostname to be changed by the game + dvars::disable::set_string("sv_hostname"); + + // Stop crashing from sys_errors + utils::hook::jump(0x1404D6260, sys_error_stub); + + // Hook R_SyncGpu + utils::hook::jump(0x1405A7630, sync_gpu_stub); + + utils::hook::jump(0x14020C6B0, init_dedicated_server); + + // delay startup commands until the initialization is done + utils::hook::call(0x1403CDF63, execute_startup_command); + + // delay console commands until the initialization is done + utils::hook::call(0x1403CEC35, execute_console_command); + utils::hook::nop(0x1403CEC4B, 5); + + // patch GScr_SetDynamicDvar to behave better + gscr_set_dynamic_dvar_hook.create(0x140312D00, &gscr_set_dynamic_dvar); + + utils::hook::nop(0x1404AE6AE, 5); // don't load config file + utils::hook::nop(0x1403AF719, 5); // ^ + utils::hook::set(0x1403D2490, 0xC3); // don't save config file + utils::hook::set(0x14022AFC0, 0xC3); // disable self-registration + utils::hook::set(0x1404DA780, 0xC3); // init sound system (1) + utils::hook::set(0x14062BC10, 0xC3); // init sound system (2) + utils::hook::set(0x1405F31A0, 0xC3); // render thread + utils::hook::set(0x140213C20, 0xC3); // called from Com_Frame, seems to do renderer stuff + utils::hook::set(0x1402085C0, 0xC3); + // CL_CheckForResend, which tries to connect to the local server constantly + utils::hook::set(0x14059B854, 0); // r_loadForRenderer default to 0 + utils::hook::set(0x1404D6952, 0xC3); // recommended settings check - TODO: Check hook + utils::hook::set(0x1404D9BA0, 0xC3); // some mixer-related function called on shutdown + utils::hook::set(0x1403B2860, 0xC3); // dont load ui gametype stuff + utils::hook::nop(0x14043ABB8, 6); // unknown check in SV_ExecuteClientMessage + utils::hook::nop(0x140439F15, 4); // allow first slot to be occupied + utils::hook::nop(0x14020E01C, 2); // properly shut down dedicated servers + utils::hook::nop(0x14020DFE9, 2); // ^ + utils::hook::nop(0x14020E047, 5); // don't shutdown renderer + + utils::hook::set(0x140057D40, 0xC3); // something to do with blendShapeVertsView + utils::hook::nop(0x14062EA17, 8); // sound thing + + utils::hook::set(0x1404D6960, 0xC3); // cpu detection stuff? + utils::hook::set(0x1405AEC00, 0xC3); // gfx stuff during fastfile loading + utils::hook::set(0x1405AEB10, 0xC3); // ^ + utils::hook::set(0x1405AEBA0, 0xC3); // ^ + utils::hook::set(0x140275640, 0xC3); // ^ + utils::hook::set(0x1405AEB60, 0xC3); // ^ + utils::hook::set(0x140572640, 0xC3); // directx stuff + utils::hook::set(0x1405A1340, 0xC3); // ^ + utils::hook::set(0x140021D60, 0xC3); // ^ - mutex + utils::hook::set(0x1405A17E0, 0xC3); // ^ + + utils::hook::set(0x1400534F0, 0xC3); // rendering stuff + utils::hook::set(0x1405A1AB0, 0xC3); // ^ + utils::hook::set(0x1405A1BB0, 0xC3); // ^ + utils::hook::set(0x1405A21F0, 0xC3); // ^ + utils::hook::set(0x1405A2D60, 0xC3); // ^ + utils::hook::set(0x1405A3400, 0xC3); // ^ + + // shaders + utils::hook::set(0x140057BC0, 0xC3); // ^ + utils::hook::set(0x140057B40, 0xC3); // ^ + + utils::hook::set(0x1405EE040, 0xC3); // ^ - mutex + + utils::hook::set(0x1404DAF30, 0xC3); // idk + utils::hook::set(0x1405736B0, 0xC3); // ^ + + utils::hook::set(0x1405A6E70, 0xC3); // R_Shutdown + utils::hook::set(0x1405732D0, 0xC3); // shutdown stuff + utils::hook::set(0x1405A6F40, 0xC3); // ^ + utils::hook::set(0x1405A61A0, 0xC3); // ^ + + utils::hook::set(0x14062C550, 0xC3); // sound crashes + + utils::hook::set(0x140445070, 0xC3); // disable host migration + + utils::hook::set(0x1403E1A50, 0xC3); // render synchronization lock + utils::hook::set(0x1403E1990, 0xC3); // render synchronization unlock + + utils::hook::set(0x1400E517B, 0xEB); + // LUI: Unable to start the LUI system due to errors in main.lua + + utils::hook::nop(0x1404CC482, 5); // Disable sound pak file loading + utils::hook::nop(0x1404CC471, 2); // ^ + utils::hook::set(0x140279B80, 0xC3); // Disable image pak file loading + + // Reduce min required memory + utils::hook::set(0x1404D140D, 0x80000000); + utils::hook::set(0x1404D14BF, 0x80000000); + + // initialize the game after onlinedataflags is 32 (workaround) + scheduler::schedule([=]() + { + if (game::Live_SyncOnlineDataFlags(0) == 32 && game::Sys_IsDatabaseReady2()) + { + scheduler::once([] + { + command::execute("xstartprivateparty", true); + command::execute("disconnect", true); // 32 -> 0 + }, scheduler::pipeline::main, 1s); + return scheduler::cond_end; + } + + return scheduler::cond_continue; + }, scheduler::pipeline::main, 1s); + + scheduler::on_game_initialized([] + { + initialize(); + + console::info("==================================\n"); + console::info("Server started!\n"); + console::info("==================================\n"); + + // remove disconnect command + game::Cmd_RemoveCommand(reinterpret_cast(751)); + + execute_startup_command_queue(); + execute_console_command_queue(); + + // Send heartbeat to dpmaster + scheduler::once(send_heartbeat, scheduler::pipeline::server); + scheduler::loop(send_heartbeat, scheduler::pipeline::server, 10min); + command::add("heartbeat", send_heartbeat); + }, scheduler::pipeline::main, 1s); + + command::add("killserver", kill_server); + com_quit_f_hook.create(0x1403D08C0, &kill_server); + } + }; +} + +REGISTER_COMPONENT(dedicated::component) diff --git a/src/client/component/dedicated.hpp b/src/client/component/dedicated.hpp new file mode 100644 index 0000000..5863323 --- /dev/null +++ b/src/client/component/dedicated.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace dedicated +{ + void initialize(); +} diff --git a/src/client/component/dedicated_info.cpp b/src/client/component/dedicated_info.cpp new file mode 100644 index 0000000..ef4b34a --- /dev/null +++ b/src/client/component/dedicated_info.cpp @@ -0,0 +1,64 @@ +#include +#include "console.hpp" +#include "loader/component_loader.hpp" +#include "game/game.hpp" +#include "scheduler.hpp" +#include + +namespace dedicated_info +{ + class component final : public component_interface + { + public: + void post_unpack() override + { + if (!game::environment::is_dedi()) + { + return; + } + + scheduler::loop([]() + { + auto* sv_running = game::Dvar_FindVar("sv_running"); + if (!sv_running || !sv_running->current.enabled) + { + console::set_title("s1-mod Dedicated Server"); + return; + } + + auto* const sv_hostname = game::Dvar_FindVar("sv_hostname"); + auto* const sv_maxclients = game::Dvar_FindVar("sv_maxclients"); + auto* const mapname = game::Dvar_FindVar("mapname"); + + auto bot_count = 0; + auto client_count = 0; + + for (auto i = 0; i < sv_maxclients->current.integer; i++) + { + auto* client = &game::mp::svs_clients[i]; + auto* self = &game::mp::g_entities[i]; + + if (client->header.state >= 1 && self && self->client) + { + client_count++; + if (game::SV_BotIsBot(i)) + { + ++bot_count; + } + } + } + + std::string cleaned_hostname = sv_hostname->current.string; + + utils::string::strip(sv_hostname->current.string, cleaned_hostname.data(), + cleaned_hostname.size() + 1); + + console::set_title(utils::string::va("%s on %s [%d/%d] (%d)", cleaned_hostname.data(), + mapname->current.string, client_count, + sv_maxclients->current.integer, bot_count)); + }, scheduler::pipeline::main, 1s); + } + }; +} + +REGISTER_COMPONENT(dedicated_info::component) diff --git a/src/client/component/demonware.cpp b/src/client/component/demonware.cpp new file mode 100644 index 0000000..c2c5156 --- /dev/null +++ b/src/client/component/demonware.cpp @@ -0,0 +1,448 @@ +#include +#include "loader/component_loader.hpp" + +#include +#include + +#include "game/game.hpp" +#include "game/demonware/servers/lobby_server.hpp" +#include "game/demonware/servers/auth3_server.hpp" +#include "game/demonware/servers/stun_server.hpp" +#include "game/demonware/servers/umbrella_server.hpp" +#include "game/demonware/server_registry.hpp" + +#define TCP_BLOCKING true +#define UDP_BLOCKING false + +namespace demonware +{ + namespace + { + volatile bool exit_server; + std::thread server_thread; + utils::concurrency::container> blocking_sockets; + utils::concurrency::container> socket_map; + server_registry tcp_servers; + server_registry udp_servers; + + tcp_server* find_server(const SOCKET socket) + { + return socket_map.access([&](const std::unordered_map& map) -> tcp_server* + { + const auto entry = map.find(socket); + if (entry == map.end()) + { + return nullptr; + } + + return entry->second; + }); + } + + bool socket_link(const SOCKET socket, const uint32_t address) + { + auto* server = tcp_servers.find(address); + if (!server) + { + return false; + } + + socket_map.access([&](std::unordered_map& map) + { + map[socket] = server; + }); + + return true; + } + + void socket_unlink(const SOCKET socket) + { + socket_map.access([&](std::unordered_map& map) + { + const auto entry = map.find(socket); + if (entry != map.end()) + { + map.erase(entry); + } + }); + } + + bool is_socket_blocking(const SOCKET socket, const bool def) + { + return blocking_sockets.access([&](std::unordered_map& map) + { + const auto entry = map.find(socket); + if (entry == map.end()) + { + return def; + } + + return entry->second; + }); + } + + void remove_blocking_socket(const SOCKET socket) + { + blocking_sockets.access([&](std::unordered_map& map) + { + const auto entry = map.find(socket); + if (entry != map.end()) + { + map.erase(entry); + } + }); + } + + void add_blocking_socket(const SOCKET socket, const bool block) + { + blocking_sockets.access([&](std::unordered_map& map) + { + map[socket] = block; + }); + } + + void server_main() + { + exit_server = false; + + while (!exit_server) + { + tcp_servers.frame(); + udp_servers.frame(); + std::this_thread::sleep_for(50ms); + } + } + + namespace io + { + hostent* WINAPI gethostbyname_stub(const char* name) + { +#ifdef DEBUG + printf("[ network ]: [gethostbyname]: \"%s\"\n", name); +#endif + + base_server* server = tcp_servers.find(name); + if (!server) + { + server = udp_servers.find(name); + } + + if (!server) + { +#pragma warning(push) +#pragma warning(disable: 4996) + return gethostbyname(name); +#pragma warning(pop) + } + + static thread_local in_addr address{}; + address.s_addr = server->get_address(); + + static thread_local in_addr* addr_list[2]{}; + addr_list[0] = &address; + addr_list[1] = nullptr; + + static thread_local hostent host{}; + host.h_name = const_cast(name); + host.h_aliases = nullptr; + host.h_addrtype = AF_INET; + host.h_length = sizeof(in_addr); + host.h_addr_list = reinterpret_cast(addr_list); + + return &host; + } + + int WINAPI connect_stub(const SOCKET s, const sockaddr* addr, const int len) + { + if (len == sizeof(sockaddr_in)) + { + const auto* in_addr = reinterpret_cast(addr); + if (socket_link(s, in_addr->sin_addr.s_addr)) return 0; + } + + return connect(s, addr, len); + } + + int WINAPI closesocket_stub(const SOCKET s) + { + remove_blocking_socket(s); + socket_unlink(s); + + return closesocket(s); + } + + int WINAPI send_stub(const SOCKET s, const char* buf, const int len, const int flags) + { + auto* server = find_server(s); + + if (server) + { + server->handle_input(buf, len); + return len; + } + + return send(s, buf, len, flags); + } + + int WINAPI recv_stub(const SOCKET s, char* buf, const int len, const int flags) + { + auto* server = find_server(s); + + if (server) + { + if (server->pending_data()) + { + return static_cast(server->handle_output(buf, len)); + } + else + { + WSASetLastError(WSAEWOULDBLOCK); + return -1; + } + } + + return recv(s, buf, len, flags); + } + + int WINAPI sendto_stub(const SOCKET s, const char* buf, const int len, const int flags, const sockaddr* to, + const int tolen) + { + const auto* in_addr = reinterpret_cast(to); + auto* server = udp_servers.find(in_addr->sin_addr.s_addr); + + if (server) + { + server->handle_input(buf, len, {s, to, tolen}); + return len; + } + + return sendto(s, buf, len, flags, to, tolen); + } + + int WINAPI recvfrom_stub(const SOCKET s, char* buf, const int len, const int flags, sockaddr* from, + int* fromlen) + { + // Not supported yet + if (is_socket_blocking(s, UDP_BLOCKING)) + { + return recvfrom(s, buf, len, flags, from, fromlen); + } + + size_t result = 0; + udp_servers.for_each([&](udp_server& server) + { + if (server.pending_data(s)) + { + result = server.handle_output( + s, buf, static_cast(len), from, fromlen); + } + }); + + if (result) + { + return static_cast(result); + } + + return recvfrom(s, buf, len, flags, from, fromlen); + } + + int WINAPI select_stub(const int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, + timeval* timeout) + { + if (exit_server) + { + return select(nfds, readfds, writefds, exceptfds, timeout); + } + + auto result = 0; + std::vector read_sockets; + std::vector write_sockets; + + socket_map.access([&](std::unordered_map& sockets) + { + for (auto& s : sockets) + { + if (readfds) + { + if (FD_ISSET(s.first, readfds)) + { + if (s.second->pending_data()) + { + read_sockets.push_back(s.first); + FD_CLR(s.first, readfds); + } + } + } + + if (writefds) + { + if (FD_ISSET(s.first, writefds)) + { + write_sockets.push_back(s.first); + FD_CLR(s.first, writefds); + } + } + + if (exceptfds) + { + if (FD_ISSET(s.first, exceptfds)) + { + FD_CLR(s.first, exceptfds); + } + } + } + }); + + if ((!readfds || readfds->fd_count == 0) && (!writefds || writefds->fd_count == 0)) + { + timeout->tv_sec = 0; + timeout->tv_usec = 0; + } + + result = select(nfds, readfds, writefds, exceptfds, timeout); + if (result < 0) result = 0; + + for (const auto& socket : read_sockets) + { + if (readfds) + { + FD_SET(socket, readfds); + result++; + } + } + + for (const auto& socket : write_sockets) + { + if (writefds) + { + FD_SET(socket, writefds); + result++; + } + } + + return result; + } + + int WINAPI ioctlsocket_stub(const SOCKET s, const long cmd, u_long* argp) + { + if (static_cast(cmd) == (FIONBIO)) + { + add_blocking_socket(s, *argp == 0); + } + + return ioctlsocket(s, cmd, argp); + } + + BOOL internet_get_connected_state_stub(LPDWORD, DWORD) + { + // Allow offline play + return TRUE; + } + } + + void bd_logger_stub(const char* const function, const char* const msg, ...) + { + static const auto* bd_logger_enabled = game::Dvar_RegisterBool("bd_logger_enabled", false, game::DVAR_FLAG_NONE, "Enable bdLogger"); + if (!bd_logger_enabled->current.enabled) + { + return; + } + + char buffer[2048]; + + va_list ap; + va_start(ap, msg); + + vsnprintf_s(buffer, _TRUNCATE, msg, ap); + printf("%s: %s\n", function, buffer); + + va_end(ap); + } + + void startup_dw() + { + udp_servers.create("s1-stun.us.demonware.net"); + udp_servers.create("s1-stun.eu.demonware.net"); + udp_servers.create("s1-stun.jp.demonware.net"); + udp_servers.create("s1-stun.au.demonware.net"); + + udp_servers.create("stun.us.demonware.net"); + udp_servers.create("stun.eu.demonware.net"); + udp_servers.create("stun.jp.demonware.net"); + udp_servers.create("stun.au.demonware.net"); + + tcp_servers.create("aw-pc-auth3.prod.demonware.net"); + tcp_servers.create("aw-pc-lobby.prod.demonware.net"); + tcp_servers.create("prod.umbrella.demonware.net"); + } + } + + class component final : public component_interface + { + public: + void post_load() override + { + startup_dw(); + + server_thread = utils::thread::create_named_thread("Demonware", server_main); + } + + void* load_import(const std::string& library, const std::string& function) override + { + if (library == "WS2_32.dll") + { + if (function == "#3") return io::closesocket_stub; + if (function == "#4") return io::connect_stub; + if (function == "#10") return io::ioctlsocket_stub; + if (function == "#16") return io::recv_stub; + if (function == "#17") return io::recvfrom_stub; + if (function == "#18") return io::select_stub; + if (function == "#19") return io::send_stub; + if (function == "#20") return io::sendto_stub; + if (function == "#52") return io::gethostbyname_stub; + } + + if (function == "InternetGetConnectedState") + { + return io::internet_get_connected_state_stub; + } + + return nullptr; + } + + void post_unpack() override + { + utils::hook::jump(SELECT_VALUE(0x140575880, 0x1406C0080), bd_logger_stub); + + if (game::environment::is_sp()) + { + utils::hook::set(0x1405632E0, 0xC3); // bdAuthSteam + utils::hook::set(0x1402DF2C0, 0xC3); // dwNet + return; + } + + utils::hook::set(0x140698BB2, 0x0); // CURLOPT_SSL_VERIFYPEER + utils::hook::set(0x140698B69, 0xAF); // CURLOPT_SSL_VERIFYHOST + utils::hook::set(0x14088D0E8, 0x0); // HTTPS -> HTTP + + // HTTPS -> HTTP + utils::hook::inject(0x14003852E, "http://prod.umbrella.demonware.net/v1.0/"); + utils::hook::inject(0x14003884F, "http://prod.umbrella.demonware.net/v1.0/"); + utils::hook::inject(0x140038A07, "http://prod.umbrella.demonware.net/v1.0/"); + + utils::hook::set(0x140437CC0, 0xC3); // SV_SendMatchData + utils::hook::set(0x140560D70, 0xC3); // Live_CheckForFullDisconnect + } + + void pre_destroy() override + { + exit_server = true; + if (server_thread.joinable()) + { + server_thread.join(); + } + } + }; +} + +REGISTER_COMPONENT(demonware::component) diff --git a/src/client/component/discord.cpp b/src/client/component/discord.cpp new file mode 100644 index 0000000..610d09c --- /dev/null +++ b/src/client/component/discord.cpp @@ -0,0 +1,167 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "console.hpp" +#include "network.hpp" +#include "party.hpp" +#include "scheduler.hpp" + +#include +#include + +#include + +namespace discord +{ + namespace + { + DiscordRichPresence discord_presence; + + void join_game(const char* join_secret) + { + game::Cbuf_AddText(0, utils::string::va("connect %s\n", join_secret)); + } + + void join_request(const DiscordUser* request) + { +#ifdef _DEBUG + console::info("Discord: Join request from %s (%s)\n", request->username, request->userId); +#endif + Discord_Respond(request->userId, DISCORD_REPLY_IGNORE); + } + + void update_discord() + { + Discord_RunCallbacks(); + + auto* dvar = game::Dvar_FindVar("virtualLobbyActive"); + if (!game::CL_IsCgameInitialized() || (dvar && dvar->current.enabled == 1)) + { + discord_presence.details = game::environment::is_sp() ? "Singleplayer" : "Multiplayer"; + + dvar = game::Dvar_FindVar("virtualLobbyInFiringRange"); + if (dvar && dvar->current.enabled == 1) + { + discord_presence.state = "Firing Range"; + } + else + { + discord_presence.state = "Main Menu"; + } + + discord_presence.partySize = 0; + discord_presence.partyMax = 0; + discord_presence.startTimestamp = 0; + } + else + { + if (game::environment::is_sp()) return; + + const auto* gametype = game::UI_GetGameTypeDisplayName(game::Dvar_FindVar("ui_gametype")->current.string); + const auto* map = game::UI_GetMapDisplayName(game::Dvar_FindVar("ui_mapname")->current.string); + + discord_presence.details = utils::string::va("%s on %s", gametype, map); + + // get server host name + auto* const host_name = reinterpret_cast(0x141646CC4); + utils::string::strip(host_name, host_name, std::strlen(host_name) + 1); + + // get number of clients in game + auto clients = reinterpret_cast(0x1414CC290); + int clientsNum = *clients; + discord_presence.partySize = clientsNum; + + if (game::Dvar_FindVar("name") && !strcmp(host_name, game::Dvar_FindVar("name")->current.string)) // host_name == name, most likely private match + { + discord_presence.state = "Private Match"; + discord_presence.partyMax = game::Dvar_FindVar("sv_maxclients")->current.integer; + } + else + { + discord_presence.state = host_name; + discord_presence.partyMax = party::server_client_count(); + + std::hash hash_fn; + static const auto nonce = utils::cryptography::random::get_integer(); + + const auto& address = party::get_target(); + discord_presence.partyId = utils::string::va("%zu", hash_fn(address) ^ nonce); + discord_presence.joinSecret = network::net_adr_to_string(address); + } + + if (!discord_presence.startTimestamp) + { + discord_presence.startTimestamp = std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()).count(); + } + } + + Discord_UpdatePresence(&discord_presence); + } + } + + class component final : public component_interface + { + public: + void post_load() override + { + if (game::environment::is_dedi()) + { + return; + } + + DiscordEventHandlers handlers; + ZeroMemory(&handlers, sizeof(handlers)); + handlers.ready = ready; + handlers.errored = errored; + handlers.disconnected = errored; + handlers.joinGame = join_game; + handlers.spectateGame = nullptr; + handlers.joinRequest = join_request; + + Discord_Initialize("1117777088301240350", &handlers, 1, nullptr); + + scheduler::once([] + { + scheduler::once(update_discord, scheduler::pipeline::main); + scheduler::loop(update_discord, scheduler::pipeline::main, 15s); + }, scheduler::pipeline::main); + + initialized_ = true; + } + + void pre_destroy() override + { + if (!initialized_) + { + return; + } + + Discord_Shutdown(); + } + + private: + bool initialized_ = false; + + static void ready(const DiscordUser* /*request*/) + { + ZeroMemory(&discord_presence, sizeof(discord_presence)); + + discord_presence.instance = 1; + + console::info("Discord: Ready\n"); + + Discord_UpdatePresence(&discord_presence); + } + + static void errored(const int error_code, const char* message) + { + console::error("Discord: Error (%i): %s\n", error_code, message); + } + }; +} + +#ifndef DEV_BUILD +REGISTER_COMPONENT(discord::component) +#endif diff --git a/src/client/component/dvar_cheats.cpp b/src/client/component/dvar_cheats.cpp new file mode 100644 index 0000000..e2284f6 --- /dev/null +++ b/src/client/component/dvar_cheats.cpp @@ -0,0 +1,189 @@ +#include +#include "loader/component_loader.hpp" + +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include "console.hpp" + +#include +#include + +namespace dvar_cheats +{ + void apply_sv_cheats(const game::dvar_t* dvar, const game::DvarSetSource source, game::dvar_value* value) + { + if (dvar && dvar->name == "sv_cheats"s) + { + // if dedi, do not allow internal to change value so servers can allow cheats if they want to + if (game::environment::is_dedi() && source == game::DvarSetSource::DVAR_SOURCE_INTERNAL) + { + value->enabled = dvar->current.enabled; + } + + // if sv_cheats was enabled and it changes to disabled, we need to reset all cheat dvars + else if (dvar->current.enabled && !value->enabled) + { + for (auto i = 0; i < *game::dvarCount; ++i) + { + const auto var = game::sortedDvars[i]; + if (var && (var->flags & game::DvarFlags::DVAR_FLAG_CHEAT)) + { + game::Dvar_Reset(var, game::DvarSetSource::DVAR_SOURCE_INTERNAL); + } + } + } + } + } + + bool dvar_flag_checks(const game::dvar_t* dvar, const game::DvarSetSource source) + { + if ((dvar->flags & game::DvarFlags::DVAR_FLAG_WRITE)) + { + console::error("%s is write protected\n", dvar->name); + return false; + } + + if ((dvar->flags & game::DvarFlags::DVAR_FLAG_READ)) + { + console::error("%s is read only\n", dvar->name); + return false; + } + + // only check cheat/replicated values when the source is external + if (source == game::DvarSetSource::DVAR_SOURCE_EXTERNAL) + { + const auto cl_ingame = game::Dvar_FindVar("cl_ingame"); + const auto sv_running = game::Dvar_FindVar("sv_running"); + + if ((dvar->flags & game::DvarFlags::DVAR_FLAG_REPLICATED) && (cl_ingame && cl_ingame->current.enabled) && ( + sv_running && !sv_running->current.enabled)) + { + console::error("%s can only be changed by the server\n", dvar->name); + return false; + } + + if ((dvar->flags & game::DvarFlags::DVAR_FLAG_CHEAT) && (!dvars::sv_cheats->current.enabled)) + { + console::error("%s is cheat protected\n", dvar->name); + return false; + } + } + + // pass all the flag checks, allow dvar to be changed + return true; + } + + const auto dvar_flag_checks_stub = utils::hook::assemble([](utils::hook::assembler& a) + { + const auto can_set_value = a.newLabel(); + const auto zero_source = a.newLabel(); + + a.pushad64(); + a.mov(r8, rdi); + a.mov(edx, esi); + a.mov(rcx, rbx); + a.call_aligned(apply_sv_cheats); //check if we are setting sv_cheats + a.popad64(); + a.cmp(esi, 0); + a.jz(zero_source); //if the SetSource is 0 (INTERNAL) ignore flag checks + + a.pushad64(); + a.mov(edx, esi); //source + a.mov(rcx, rbx); //dvar + a.call_aligned(dvar_flag_checks); //protect read/write/cheat/replicated dvars + a.cmp(al, 1); + a.jz(can_set_value); + + // if we get here, we are non-zero source and CANNOT set values + a.popad64(); // if I do this before the jz it won't work. for some reason the popad64 is affecting the ZR flag + a.jmp(0x1404C3D45); + + // if we get here, we are non-zero source and CAN set values + a.bind(can_set_value); + a.popad64(); // if I do this before the jz it won't work. for some reason the popad64 is affecting the ZR flag + a.jmp(0x1404C3AAE); + + // if we get here, we are zero source and ignore flags + a.bind(zero_source); + a.jmp(0x1404C3AF4); + }); + + void cg_set_client_dvar_from_server(const int local_client_num, void* cg, const char* dvar_id, const char* value) + { + const auto* dvar = game::Dvar_FindVar(dvar_id); + if (dvar) + { + // If we send as string, it can't be set with source SERVERCMD because the game only allows that source on real server cmd dvars. + // Just use external instead as if it was being set by the console + game::Dvar_SetFromStringByNameFromSource(dvar_id, value, game::DvarSetSource::DVAR_SOURCE_EXTERNAL); + } + else + { + // Not a dvar name, assume it is an id and the game will handle normally + game::CG_SetClientDvarFromServer(local_client_num, cg, dvar_id, value); + } + } + + void set_client_dvar_by_string(const int entity_num, const char* value) + { + const auto* dvar = game::Scr_GetString(0); // grab the original dvar again since it's never stored on stack + const auto* command = utils::string::va("q %s \"%s\"", dvar, value); + + game::SV_GameSendServerCommand(entity_num, game::SV_CMD_RELIABLE, command); + } + + const auto player_cmd_set_client_dvar = utils::hook::assemble([](utils::hook::assembler& a) + { + const auto set_by_string = a.newLabel(); + + a.pushad64(); + + // check if we didn't find a network dvar index + a.mov(ecx, dword_ptr(rsp, 0x8C8)); + a.cmp(ecx, 0); + a.je(set_by_string); + + // we found an index, handle normally + a.popad64(); + a.mov(r8d, ptr(rsp, 0x848)); + a.lea(r9, ptr(rsp, 0x30)); + a.jmp(0x1402E2E57); + + // no index, let's send the dvar as a string + a.bind(set_by_string); + a.movzx(ecx, word_ptr(rsp, 0x8C0)); //entity_num + a.lea(rdx, ptr(rsp, 0xB0)); //value + a.call_aligned(set_client_dvar_by_string); + a.popad64(); + a.jmp(0x1402E2E7D); + }); + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) return; + + utils::hook::nop(0x1404C3A93, 4); // let our stub handle zero-source sets + utils::hook::jump(0x1404C3A9A, dvar_flag_checks_stub, true); // check extra dvar flags when setting values + + utils::hook::nop(0x1402E2E03, 5); // remove error in PlayerCmd_SetClientDvar if setting a non-network dvar + // don't check flags on the dvars, send any existing dvar instead + utils::hook::jump(0x1402E2E4A, player_cmd_set_client_dvar, true); // send non-network dvars as string + utils::hook::call(0x1401BB782, cg_set_client_dvar_from_server); + // check for dvars being sent as string before parsing ids + +#ifdef _DEBUG + constexpr auto value = true; +#else + constexpr auto value = false; +#endif + + dvars::sv_cheats = game::Dvar_RegisterBool("sv_cheats", value, game::DVAR_FLAG_REPLICATED, "Allow cheat commands and dvars on this server"); + } + }; +} + +REGISTER_COMPONENT(dvar_cheats::component) diff --git a/src/client/component/dvars.cpp b/src/client/component/dvars.cpp new file mode 100644 index 0000000..2dd26b4 --- /dev/null +++ b/src/client/component/dvars.cpp @@ -0,0 +1,387 @@ +#include +#include "loader/component_loader.hpp" +#include "dvars.hpp" + +#include "game/game.hpp" + +#include + +namespace dvars +{ + struct dvar_base + { + unsigned int flags{}; + }; + + struct dvar_bool : dvar_base + { + bool value{}; + }; + + struct dvar_float : dvar_base + { + float value{}; + float min{}; + float max{}; + }; + + struct dvar_vector2 : dvar_base + { + float x{}; + float y{}; + float min{}; + float max{}; + }; + + struct dvar_vector3 : dvar_base + { + + float x{}; + float y{}; + float z{}; + float min{}; + float max{}; + }; + + struct dvar_int : dvar_base + { + int value{}; + int min{}; + int max{}; + }; + + struct dvar_string : dvar_base + { + std::string value{}; + }; + + namespace + { + template + T* find_dvar(std::unordered_map& map, const std::string& name) + { + auto i = map.find(name); + if (i != map.end()) + { + return &i->second; + } + + return nullptr; + } + + bool find_dvar(std::unordered_set& set, const std::string& name) + { + return set.find(name) != set.end(); + } + } + + namespace disable + { + static std::unordered_set set_bool_disables; + static std::unordered_set set_float_disables; + static std::unordered_set set_int_disables; + static std::unordered_set set_string_disables; + + void set_bool(const std::string& name) + { + set_bool_disables.emplace(name); + } + + void set_float(const std::string& name) + { + set_float_disables.emplace(name); + } + + void set_int(const std::string& name) + { + set_int_disables.emplace(name); + } + + void set_string(const std::string& name) + { + set_string_disables.emplace(name); + } + } + + namespace override + { + static std::unordered_map register_bool_overrides; + static std::unordered_map register_float_overrides; + static std::unordered_map register_int_overrides; + static std::unordered_map register_string_overrides; + static std::unordered_map register_vector2_overrides; + static std::unordered_map register_vector3_overrides; + + static std::unordered_map set_bool_overrides; + static std::unordered_map set_float_overrides; + static std::unordered_map set_int_overrides; + static std::unordered_map set_string_overrides; + + void register_bool(const std::string& name, const bool value, const unsigned int flags) + { + dvar_bool values; + values.value = value; + values.flags = flags; + register_bool_overrides[name] = std::move(values); + } + + void register_float(const std::string& name, const float value, const float min, const float max, const unsigned int flags) + { + dvar_float values; + values.value = value; + values.min = min; + values.max = max; + values.flags = flags; + register_float_overrides[name] = std::move(values); + } + + void register_int(const std::string& name, const int value, const int min, const int max, const unsigned int flags) + { + dvar_int values; + values.value = value; + values.min = min; + values.max = max; + values.flags = flags; + register_int_overrides[name] = std::move(values); + } + + void register_string(const std::string& name, const std::string& value, const unsigned int flags) + { + dvar_string values; + values.value = value; + values.flags = flags; + register_string_overrides[name] = std::move(values); + } + + void register_vector2(const std::string& name, float x, float y, float min, float max, const unsigned int flags) + { + dvar_vector2 values; + values.x = x; + values.y = y; + values.min = min; + values.max = max; + values.flags = flags; + register_vector2_overrides[name] = std::move(values); + } + + void register_vector3(const std::string& name, float x, float y, float z, float min, float max, const unsigned int flags) + { + dvar_vector3 values; + values.x = x; + values.y = y; + values.z = z; + values.min = min; + values.max = max; + values.flags = flags; + register_vector3_overrides[name] = std::move(values); + } + + void set_bool(const std::string& name, const bool value) + { + set_bool_overrides[name] = value; + } + + void set_float(const std::string& name, const float value) + { + set_float_overrides[name] = value; + } + + void set_int(const std::string& name, const int value) + { + set_int_overrides[name] = value; + } + + void set_string(const std::string& name, const std::string& value) + { + set_string_overrides[name] = value; + } + } + + utils::hook::detour dvar_register_bool_hook; + utils::hook::detour dvar_register_float_hook; + utils::hook::detour dvar_register_int_hook; + utils::hook::detour dvar_register_string_hook; + utils::hook::detour dvar_register_vector2_hook; + utils::hook::detour dvar_register_vector3_hook; + + utils::hook::detour dvar_set_bool_hook; + utils::hook::detour dvar_set_float_hook; + utils::hook::detour dvar_set_int_hook; + utils::hook::detour dvar_set_string_hook; + + game::dvar_t* dvar_register_bool_stub(const char* name, bool value, unsigned int flags, const char* description) + { + auto* var = find_dvar(override::register_bool_overrides, name); + if (var) + { + value = var->value; + flags = var->flags; + } + + return dvar_register_bool_hook.invoke(name, value, flags, description); + } + + game::dvar_t* dvar_register_float_stub(const char* name, float value, float min, float max, unsigned int flags, + const char* description) + { + auto* var = find_dvar(override::register_float_overrides, name); + if (var) + { + value = var->value; + min = var->min; + max = var->max; + flags = var->flags; + } + + return dvar_register_float_hook.invoke(name, value, min, max, flags, description); + } + + game::dvar_t* dvar_register_int_stub(const char* name, int value, int min, int max, unsigned int flags, + const char* description) + { + auto* var = find_dvar(override::register_int_overrides, name); + if (var) + { + value = var->value; + min = var->min; + max = var->max; + flags = var->flags; + } + + return dvar_register_int_hook.invoke(name, value, min, max, flags, description); + } + + game::dvar_t* dvar_register_string_stub(const char* name, const char* value, unsigned int flags, const char* description) + { + auto* var = find_dvar(override::register_string_overrides, name); + if (var) + { + value = var->value.data(); + flags = var->flags; + } + + return dvar_register_string_hook.invoke(name, value, flags, description); + } + + game::dvar_t* dvar_register_vector2_stub(const char* name, float x, float y, float min, float max, + unsigned int flags, const char* description) + { + auto* var = find_dvar(override::register_vector2_overrides, name); + if (var) + { + x = var->x; + y = var->y; + min = var->min; + max = var->max; + flags = var->flags; + } + + return dvar_register_vector2_hook.invoke(name, x, y, min, max, flags, description); + } + + game::dvar_t* dvar_register_vector3_stub(const char* name, float x, float y, float z, float min, + float max, unsigned int flags, const char* description) + { + auto* var = find_dvar(override::register_vector3_overrides, name); + if (var) + { + x = var->x; + y = var->y; + z = var->z; + min = var->min; + max = var->max; + flags = var->flags; + } + + return dvar_register_vector3_hook.invoke(name, x, y, z, min, max, flags, description); + } + + void dvar_set_bool_stub(game::dvar_t* dvar, bool boolean) + { + const auto disabled = find_dvar(disable::set_bool_disables, dvar->name); + if (disabled) + { + return; + } + + auto* var = find_dvar(override::set_bool_overrides, dvar->name); + if (var) + { + boolean = *var; + } + + return dvar_set_bool_hook.invoke(dvar, boolean); + } + + void dvar_set_float_stub(game::dvar_t* dvar, float fl) + { + const auto disabled = find_dvar(disable::set_float_disables, dvar->name); + if (disabled) + { + return; + } + + auto* var = find_dvar(override::set_float_overrides, dvar->name); + if (var) + { + fl = *var; + } + + return dvar_set_float_hook.invoke(dvar, fl); + } + + void dvar_set_int_stub(game::dvar_t* dvar, int integer) + { + const auto disabled = find_dvar(disable::set_int_disables, dvar->name); + if (disabled) + { + return; + } + + auto* var = find_dvar(override::set_int_overrides, dvar->name); + if (var) + { + integer = *var; + } + + return dvar_set_int_hook.invoke(dvar, integer); + } + + void dvar_set_string_stub(game::dvar_t* dvar, const char* string) + { + const auto disabled = find_dvar(disable::set_string_disables, dvar->name); + if (disabled) + { + return; + } + + auto* var = find_dvar(override::set_string_overrides, dvar->name); + if (var) + { + string = var->data(); + } + + return dvar_set_string_hook.invoke(dvar, string); + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + dvar_register_bool_hook.create(SELECT_VALUE(0x140371850, 0x1404C0BE0), &dvar_register_bool_stub); + dvar_register_float_hook.create(SELECT_VALUE(0x140371C20, 0x1404C0FB0), &dvar_register_float_stub); + dvar_register_int_hook.create(SELECT_VALUE(0x140371CF0, 0x1404C1080), &dvar_register_int_stub); + dvar_register_string_hook.create(SELECT_VALUE(0x140372050, 0x1404C1450), &dvar_register_string_stub); + dvar_register_vector2_hook.create(SELECT_VALUE(0x140372120, 0x1404C1520), &dvar_register_vector2_stub); + dvar_register_vector3_hook.create(SELECT_VALUE(0x140372230, 0x1404C1600), &dvar_register_vector3_stub); + + dvar_set_bool_hook.create(SELECT_VALUE(0x140372B70, 0x1404C1F30), &dvar_set_bool_stub); + dvar_set_float_hook.create(SELECT_VALUE(0x140373420, 0x1404C2A10), &dvar_set_float_stub); + dvar_set_int_hook.create(SELECT_VALUE(0x1403738D0, 0x1404C2F40), &dvar_set_int_stub); + dvar_set_string_hook.create(SELECT_VALUE(0x140373DE0, 0x1404C3610), &dvar_set_string_stub); + } + }; +} + +REGISTER_COMPONENT(dvars::component) diff --git a/src/client/component/dvars.hpp b/src/client/component/dvars.hpp new file mode 100644 index 0000000..a0e5c52 --- /dev/null +++ b/src/client/component/dvars.hpp @@ -0,0 +1,27 @@ +#pragma once + +namespace dvars +{ + namespace disable + { + void set_bool(const std::string& name); + void set_float(const std::string& name); + void set_int(const std::string& name); + void set_string(const std::string& name); + } + + namespace override + { + void register_bool(const std::string& name, bool value, unsigned int flags); + void register_float(const std::string& name, float value, float min, float max, unsigned int flags); + void register_int(const std::string& name, int value, int min, int max, unsigned int flags); + void register_string(const std::string& name, const std::string& value, unsigned int flags); + void register_vector2(const std::string& name, float x, float y, float min, float max, unsigned int flags); + void register_vector3(const std::string& name, float x, float y, float z, float min, float max, unsigned int flags); + + void set_bool(const std::string& name, bool boolean); + void set_float(const std::string& name, float fl); + void set_int(const std::string& name, int integer); + void set_string(const std::string& name, const std::string& string); + } +} diff --git a/src/client/component/fastfiles.cpp b/src/client/component/fastfiles.cpp new file mode 100644 index 0000000..7bb1262 --- /dev/null +++ b/src/client/component/fastfiles.cpp @@ -0,0 +1,178 @@ +#include +#include "loader/component_loader.hpp" +#include "game/dvars.hpp" + +#include "fastfiles.hpp" +#include "command.hpp" +#include "console.hpp" + +#include +#include +#include + +namespace fastfiles +{ + static utils::concurrency::container current_fastfile; + + namespace + { + utils::hook::detour db_try_load_x_file_internal_hook; + utils::hook::detour db_find_x_asset_header_hook; + + void db_try_load_x_file_internal(const char* zone_name, const int flags) + { + console::info("Loading fastfile %s\n", zone_name); + current_fastfile.access([&](std::string& fastfile) + { + fastfile = zone_name; + }); + return db_try_load_x_file_internal_hook.invoke(zone_name, flags); + } + + void dump_gsc_script(const std::string& name, game::XAssetHeader header) + { + if (!dvars::g_dump_scripts->current.enabled) + { + return; + } + + std::string buffer; + buffer.append(header.scriptfile->name, std::strlen(header.scriptfile->name) + 1); + buffer.append(reinterpret_cast(&header.scriptfile->compressedLen), sizeof(int)); + buffer.append(reinterpret_cast(&header.scriptfile->len), sizeof(int)); + buffer.append(reinterpret_cast(&header.scriptfile->bytecodeLen), sizeof(int)); + buffer.append(header.scriptfile->buffer, header.scriptfile->compressedLen); + buffer.append(reinterpret_cast(header.scriptfile->bytecode), header.scriptfile->bytecodeLen); + + const auto out_name = std::format("gsc_dump/{}.gscbin", name); + utils::io::write_file(out_name, buffer); + + console::info("Dumped %s\n", out_name.data()); + } + + game::XAssetHeader db_find_x_asset_header_stub(game::XAssetType type, const char* name, int allow_create_default) + { + const auto start = game::Sys_Milliseconds(); + const auto result = db_find_x_asset_header_hook.invoke(type, name, allow_create_default); + const auto diff = game::Sys_Milliseconds() - start; + + if (type == game::ASSET_TYPE_SCRIPTFILE) + { + dump_gsc_script(name, result); + } + + if (diff > 100) + { + console::print( + result.data == nullptr ? console::con_type_error : console::con_type_warning, "Waited %i msec for asset '%s' of type '%s'.\n", + diff, + name, + game::g_assetNames[type] + ); + } + + return result; + } + } + + std::string get_current_fastfile() + { + auto fastfile_copy = current_fastfile.access([&](std::string& fastfile) + { + return fastfile; + }); + + return fastfile_copy; + } + + constexpr int get_asset_type_size(const game::XAssetType type) + { + constexpr int asset_type_sizes[] = + { + 96, 88, 128, 56, 40, 216, 56, 680, + 480, 32, 32, 32, 32, 32, 352, 1456, + 104, 32, 24, 152, 152, 152, 16, 64, + 640, 40, 16, 408, 24, 288, 176, 2800, + 48, -1, 40, 24, 200, 88, 16, 120, + 3560, 32, 64, 16, 16, -1, -1, -1, + -1, 24, 40, 24, 40, 24, 128, 2256, + 136, 32, 72, 24, 64, 88, 48, 32, + 96, 152, 64, 32, + }; + + return asset_type_sizes[type]; + } + + template + char* reallocate_asset_pool() + { + constexpr auto element_size = get_asset_type_size(Type); + static char new_pool[element_size * Size] = {0}; + assert(get_asset_type_size(Type) == game::DB_GetXAssetTypeSize(Type)); + + std::memmove(new_pool, game::DB_XAssetPool[Type], game::g_poolSize[Type] * element_size); + + game::DB_XAssetPool[Type] = new_pool; + game::g_poolSize[Type] = Size; + + return new_pool; + } + + void enum_assets(const game::XAssetType type, const std::function& callback, const bool include_override) + { + game::DB_EnumXAssets_Internal(type, static_cast([](game::XAssetHeader header, void* data) + { + const auto& cb = *static_cast*>(data); + cb(header); + }), &callback, include_override); + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + db_try_load_x_file_internal_hook.create(SELECT_VALUE(0x1401816F0, 0x1402741C0), &db_try_load_x_file_internal); + + db_find_x_asset_header_hook.create(game::DB_FindXAssetHeader, db_find_x_asset_header_stub); + dvars::g_dump_scripts = game::Dvar_RegisterBool("g_dumpScripts", false, game::DVAR_FLAG_NONE, "Dump GSC scripts to binary format"); + + command::add("loadzone", [](const command::params& params) + { + if (params.size() < 2) + { + console::info("usage: loadzone \n"); + return; + } + + game::XZoneInfo info{}; + info.name = params.get(1); + info.allocFlags = 1; + info.freeFlags = 0; + game::DB_LoadXAssets(&info, 1u, game::DBSyncMode::DB_LOAD_SYNC); + }); + + command::add("g_poolSizes", []() + { + for (auto i = 0; i < game::ASSET_TYPE_COUNT; i++) + { + console::info("g_poolSize[%i]: %i // %s\n", i, game::g_poolSize[i], game::g_assetNames[i]); + } + }); + + reallocate_asset_pool(); + + if (!game::environment::is_sp()) + { + const auto* xmodel_pool = reallocate_asset_pool(); + utils::hook::inject(0x14026FD63, xmodel_pool + 8); + utils::hook::inject(0x14026FDB3, xmodel_pool + 8); + utils::hook::inject(0x14026FFAC, xmodel_pool + 8); + utils::hook::inject(0x14027463C, xmodel_pool + 8); + utils::hook::inject(0x140274689, xmodel_pool + 8); + } + } + }; +} + +REGISTER_COMPONENT(fastfiles::component) diff --git a/src/client/component/fastfiles.hpp b/src/client/component/fastfiles.hpp new file mode 100644 index 0000000..8eb7bdd --- /dev/null +++ b/src/client/component/fastfiles.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include "game/game.hpp" + +namespace fastfiles +{ + std::string get_current_fastfile(); + + void enum_assets(game::XAssetType type, const std::function& callback, bool include_override); +} diff --git a/src/client/component/filesystem.cpp b/src/client/component/filesystem.cpp new file mode 100644 index 0000000..367f6c0 --- /dev/null +++ b/src/client/component/filesystem.cpp @@ -0,0 +1,272 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" +#include "dvars.hpp" + +#include "filesystem.hpp" +#include "game_module.hpp" +#include "console.hpp" + +#include +#include +#include + +namespace filesystem +{ + namespace + { + bool initialized = false; + + bool custom_path_registered = false; + + std::deque& get_search_paths_internal() + { + static std::deque search_paths{}; + return search_paths; + } + + std::string get_binary_directory() + { + const auto dir = game_module::get_host_module().get_folder(); + return utils::string::replace(dir, "/", "\\"); + } + + void register_custom_path_stub(const char* path, const char* dir) + { + if (!custom_path_registered) + { + custom_path_registered = true; + + const auto launcher_dir = get_binary_directory(); + game::FS_AddLocalizedGameDirectory(launcher_dir.data(), "data"); + } + + game::FS_AddLocalizedGameDirectory(path, dir); + } + + void fs_startup_stub(const char* gamename) + { + console::info("[FS] Startup\n"); + + custom_path_registered = false; + + game::FS_Startup(gamename); + } + + bool can_insert_path(const std::filesystem::path& path) + { + const auto& paths = get_search_paths_internal(); + return std::ranges::none_of(paths.cbegin(), paths.cend(), [path](const auto& elem) + { + return elem == path; + }); + } + + void startup() + { + register_path("s1"); + register_path(get_binary_directory() + "\\data"); + + // game's search paths + register_path("devraw"); + register_path("devraw_shared"); + register_path("raw_shared"); + register_path("raw"); + register_path("main"); + } + + void check_for_startup() + { + if (!initialized) + { + initialized = true; + startup(); + } + } + } + + file::file(std::string name) + : name_(std::move(name)) + { + char* buffer{}; + const auto size = game::FS_ReadFile(this->name_.data(), &buffer); + + if (size >= 0 && buffer) + { + this->valid_ = true; + this->buffer_.append(buffer, size); + game::FS_FreeFile(buffer); + } + } + + bool file::exists() const + { + return this->valid_; + } + + const std::string& file::get_buffer() const + { + return this->buffer_; + } + + const std::string& file::get_name() const + { + return this->name_; + } + + std::string read_file(const std::string& path) + { + check_for_startup(); + + for (const auto& search_path : get_search_paths_internal()) + { + const auto path_ = search_path / path; + if (utils::io::file_exists(path_.generic_string())) + { + return utils::io::read_file(path_.generic_string()); + } + } + + return {}; + } + + bool read_file(const std::string& path, std::string* data, std::string* real_path) + { + check_for_startup(); + + for (const auto& search_path : get_search_paths_internal()) + { + const auto path_ = search_path / path; + if (utils::io::read_file(path_.generic_string(), data)) + { + if (real_path != nullptr) + { + *real_path = path_.generic_string(); + } + + return true; + } + } + + return false; + } + + bool find_file(const std::string& path, std::string* real_path) + { + check_for_startup(); + + for (const auto& search_path : get_search_paths_internal()) + { + const auto path_ = search_path / path; + if (utils::io::file_exists(path_.generic_string())) + { + *real_path = path_.generic_string(); + return true; + } + } + + return false; + } + + bool exists(const std::string& path) + { + check_for_startup(); + + for (const auto& search_path : get_search_paths_internal()) + { + const auto path_ = search_path / path; + if (utils::io::file_exists(path_.generic_string())) + { + return true; + } + } + + return false; + } + + void register_path(const std::filesystem::path& path) + { + if (can_insert_path(path)) + { + console::info("[FS] Registering path '%s'\n", path.generic_string().data()); + get_search_paths_internal().push_front(path); + } + } + + void unregister_path(const std::filesystem::path& path) + { + if (!initialized) + { + return; + } + + auto& search_paths = get_search_paths_internal(); + for (auto i = search_paths.begin(); i != search_paths.end();) + { + if (*i == path) + { + console::info("[FS] Unregistering path '%s'\n", path.generic_string().data()); + i = search_paths.erase(i); + } + else + { + ++i; + } + } + } + + std::vector get_search_paths() + { + std::vector paths{}; + + for (const auto& path : get_search_paths_internal()) + { + paths.push_back(path.generic_string()); + } + + return paths; + } + + std::vector get_search_paths_rev() + { + std::vector paths{}; + const auto& search_paths = get_search_paths_internal(); + + for (auto i = search_paths.rbegin(); i != search_paths.rend(); ++i) + { + paths.push_back(i->generic_string()); + } + + return paths; + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + // Set fs_basegame + dvars::override::register_string("fs_basegame", "s1", game::DVAR_FLAG_WRITE); + + if (game::environment::is_sp()) + { + utils::hook::call(0x140360A74, fs_startup_stub); + + utils::hook::call(0x140361FE0, register_custom_path_stub); + utils::hook::call(0x140362000, register_custom_path_stub); + utils::hook::call(0x14036203F, register_custom_path_stub); + } + else + { + utils::hook::call(0x1404AE192, fs_startup_stub); + utils::hook::call(0x1404AE5C3, fs_startup_stub); + + utils::hook::call(0x1404AEFD0, register_custom_path_stub); + utils::hook::call(0x1404AEFF0, register_custom_path_stub); + utils::hook::call(0x1404AF02F, register_custom_path_stub); + } + } + }; +} + +REGISTER_COMPONENT(filesystem::component) diff --git a/src/client/component/filesystem.hpp b/src/client/component/filesystem.hpp new file mode 100644 index 0000000..f085210 --- /dev/null +++ b/src/client/component/filesystem.hpp @@ -0,0 +1,30 @@ +#pragma once + +namespace filesystem +{ + class file + { + public: + file(std::string name); + + [[nodiscard]] bool exists() const; + [[nodiscard]] const std::string& get_buffer() const; + [[nodiscard]] const std::string& get_name() const; + + private: + bool valid_ = false; + std::string name_; + std::string buffer_; + }; + + std::string read_file(const std::string& path); + bool read_file(const std::string& path, std::string* data, std::string* real_path = nullptr); + bool find_file(const std::string& path, std::string* real_path); + bool exists(const std::string& path); + + void register_path(const std::filesystem::path& path); + void unregister_path(const std::filesystem::path& path); + + std::vector get_search_paths(); + std::vector get_search_paths_rev(); +} diff --git a/src/client/component/fps.cpp b/src/client/component/fps.cpp new file mode 100644 index 0000000..8edd2ed --- /dev/null +++ b/src/client/component/fps.cpp @@ -0,0 +1,186 @@ +#include +#include "loader/component_loader.hpp" + +#include "scheduler.hpp" +#include "fps.hpp" +#include "localized_strings.hpp" + +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include +#include + +namespace fps +{ + namespace + { + const game::dvar_t* cg_drawFPS; + const game::dvar_t* cg_drawPing; + + float fps_color_good[4] = {0.6f, 1.0f, 0.0f, 1.0f}; + float fps_color_ok[4] = {1.0f, 0.7f, 0.3f, 1.0f}; + float fps_color_bad[4] = {1.0f, 0.3f, 0.3f, 1.0f}; + + //float origin_color[4] = { 1.0f, 0.67f, 0.13f, 1.0f }; + float ping_color[4] = {1.0f, 1.0f, 1.0f, 0.65f}; + + struct cg_perf_data + { + std::chrono::time_point perf_start; + std::int32_t current_ms{}; + std::int32_t previous_ms{}; + std::int32_t frame_ms{}; + std::int32_t history[32]{}; + std::int32_t count{}; + std::int32_t index{}; + std::int32_t instant{}; + std::int32_t total{}; + float average{}; + float variance{}; + std::int32_t min{}; + std::int32_t max{}; + }; + + cg_perf_data cg_perf = cg_perf_data(); + + void perf_calc_fps(cg_perf_data* data, const std::int32_t value) + { + data->history[data->index % 32] = value; + data->instant = value; + data->min = std::numeric_limits::max(); + data->max = 0; + data->average = 0.0f; + data->variance = 0.0f; + data->total = 0; + + for (auto i = 0; i < data->count; ++i) + { + const std::int32_t idx = (data->index - i) % 32; + + if (idx < 0) + { + break; + } + + data->total += data->history[idx]; + + if (data->min > data->history[idx]) + { + data->min = data->history[idx]; + } + + if (data->max < data->history[idx]) + { + data->max = data->history[idx]; + } + } + + data->average = static_cast(data->total) / static_cast(data->count); + ++data->index; + } + + void perf_update() + { + cg_perf.count = 32; + + cg_perf.current_ms = static_cast(std::chrono::duration_cast( + std::chrono::high_resolution_clock::now() - cg_perf.perf_start).count()); + cg_perf.frame_ms = cg_perf.current_ms - cg_perf.previous_ms; + cg_perf.previous_ms = cg_perf.current_ms; + + perf_calc_fps(&cg_perf, cg_perf.frame_ms); + + utils::hook::invoke(SELECT_VALUE(0x1404F6A90, 0x14062C540)); + } + + void cg_draw_fps() + { + if (cg_drawFPS && cg_drawFPS->current.integer > 0) + { + const auto fps = get_fps(); + + auto* font = game::R_RegisterFont("fonts/consolefont"); + if (!font) return; + + const auto* const fps_string = utils::string::va("%i", fps); + + const auto scale = 1.0f; + + const auto x = (game::ScrPlace_GetViewPlacement()->realViewportSize[0] - 10.0f) - game::R_TextWidth( + fps_string, std::numeric_limits::max(), font) * scale; + + const auto y = font->pixelHeight * 1.2f; + + const auto fps_color = fps >= 60 ? fps_color_good : (fps >= 30 ? fps_color_ok : fps_color_bad); + game::R_AddCmdDrawText(fps_string, std::numeric_limits::max(), font, x, y, scale, scale, 0.0f, fps_color, 6); + } + } + + void cg_draw_ping() + { + if (cg_drawPing->current.integer > 0 && game::CL_IsCgameInitialized()) + { + auto* font = game::R_RegisterFont("fonts/consolefont"); + if (!font) return; + + auto* const ping_string = utils::string::va("Ping: %i", *game::mp::ping); + + const auto scale = 1.0f; + + const auto x = (game::ScrPlace_GetViewPlacement()->realViewportSize[0] - 375.0f) - game::R_TextWidth( + ping_string, std::numeric_limits::max(), font) * scale; + + const auto y = font->pixelHeight * 1.2f; + + game::R_AddCmdDrawText(ping_string, std::numeric_limits::max(), font, x, y, scale, scale, 0.0f, ping_color, 6); + } + } + + const game::dvar_t* cg_draw_fps_register_stub(const char* dvar_name, const char** value_list, const int default_index, unsigned int /*flags*/, const char* description) + { + cg_drawFPS = game::Dvar_RegisterEnum(dvar_name, value_list, default_index, game::DVAR_FLAG_SAVED, description); + return cg_drawFPS; + } + } + + int get_fps() + { + return static_cast(static_cast(1000.0f / + static_cast(cg_perf.average)) + 9.313225746154785e-10); + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_dedi()) + { + return; + } + + // fps setup + cg_perf.perf_start = std::chrono::high_resolution_clock::now(); + utils::hook::call(SELECT_VALUE(0x140144D41, 0x140213B27), &perf_update); + + // change cg_drawfps flags to saved + utils::hook::call(SELECT_VALUE(0x1400EF951, 0x1401A4B8E), &cg_draw_fps_register_stub); + + // fix ping value + utils::hook::nop(0x140213031, 2); + + scheduler::loop(cg_draw_fps, scheduler::pipeline::renderer); + if (game::environment::is_mp()) + { + cg_drawPing = game::Dvar_RegisterInt("cg_drawPing", 0, 0, 1, game::DVAR_FLAG_SAVED, "Draw ping"); + scheduler::loop(cg_draw_ping, scheduler::pipeline::renderer); + } + + game::Dvar_RegisterBool("cg_infobar_ping", false, game::DVAR_FLAG_SAVED, "Show server latency"); + game::Dvar_RegisterBool("cg_infobar_fps", false, game::DVAR_FLAG_SAVED, "Show FPS counter"); + } + }; +} + +REGISTER_COMPONENT(fps::component) diff --git a/src/client/component/fps.hpp b/src/client/component/fps.hpp new file mode 100644 index 0000000..74f937d --- /dev/null +++ b/src/client/component/fps.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace fps +{ + int get_fps(); +} \ No newline at end of file diff --git a/src/client/component/game_console.cpp b/src/client/component/game_console.cpp new file mode 100644 index 0000000..61c2bde --- /dev/null +++ b/src/client/component/game_console.cpp @@ -0,0 +1,780 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include "command.hpp" +#include "console.hpp" +#include "scheduler.hpp" +#include "game_console.hpp" + +#include +#include +#include + +#include "version.hpp" + +#define console_font game::R_RegisterFont("fonts/consolefont") +#define material_white game::Material_RegisterHandle("white") + +namespace game_console +{ + namespace + { + struct console_globals + { + float x{}; + float y{}; + float left_x{}; + float font_height{}; + bool may_auto_complete{}; + char auto_complete_choice[64]{}; + int info_line_count{}; + }; + + using output_queue = std::deque; + + struct ingame_console + { + char buffer[256]{}; + int cursor{}; + int font_height{}; + int visible_line_count{}; + int visible_pixel_width{}; + float screen_min[2]{}; //left & top + float screen_max[2]{}; //right & bottom + console_globals globals{}; + bool output_visible{}; + int display_line_offset{}; + int line_count{}; + utils::concurrency::container output{}; + }; + + ingame_console con{}; + + std::int32_t history_index = -1; + std::deque history{}; + + std::string fixed_input{}; + std::vector matches{}; + + float color_white[4] = {1.0f, 1.0f, 1.0f, 1.0f}; + float color_s1[4] = {1.0f, 0.90f, 0.0f, 1.0f}; + + void clear() + { + strncpy_s(con.buffer, "", sizeof(con.buffer)); + con.cursor = 0; + + fixed_input = ""; + matches.clear(); + } + + void print_internal(const std::string& data) + { + con.output.access([&](output_queue& output) + { + if (con.visible_line_count > 0 + && con.display_line_offset == (output.size() - con.visible_line_count)) + { + con.display_line_offset++; + } + output.push_back(data); + if (output.size() > 512) + { + output.pop_front(); + } + }); + } + + void toggle_console() + { + clear(); + + con.output_visible = false; + *game::keyCatchers ^= 1; + } + + void toggle_console_output() + { + con.output_visible = con.output_visible == 0; + } + + void check_resize() + { + con.screen_min[0] = 6.0f; + con.screen_min[1] = 6.0f; + con.screen_max[0] = game::ScrPlace_GetViewPlacement()->realViewportSize[0] - 6.0f; + con.screen_max[1] = game::ScrPlace_GetViewPlacement()->realViewportSize[1] - 6.0f; + + if (console_font) + { + con.font_height = console_font->pixelHeight; + con.visible_line_count = static_cast((con.screen_max[1] - con.screen_min[1] - (con.font_height * 2) + ) - + 24.0f) / con.font_height; + con.visible_pixel_width = static_cast(((con.screen_max[0] - con.screen_min[0]) - 10.0f) - 18.0f); + } + else + { + con.font_height = 0; + con.visible_line_count = 0; + con.visible_pixel_width = 0; + } + } + + void draw_box(const float x, const float y, const float w, const float h, float* color) + { + game::vec4_t dark_color; + + dark_color[0] = color[0] * 0.5f; + dark_color[1] = color[1] * 0.5f; + dark_color[2] = color[2] * 0.5f; + dark_color[3] = color[3]; + + game::R_AddCmdDrawStretchPic(x, y, w, h, 0.0f, 0.0f, 0.0f, 0.0f, color, material_white); + game::R_AddCmdDrawStretchPic(x, y, 2.0f, h, 0.0f, 0.0f, 0.0f, 0.0f, dark_color, material_white); + game::R_AddCmdDrawStretchPic((x + w) - 2.0f, y, 2.0f, h, 0.0f, 0.0f, 0.0f, 0.0f, dark_color, + material_white); + game::R_AddCmdDrawStretchPic(x, y, w, 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, dark_color, material_white); + game::R_AddCmdDrawStretchPic(x, (y + h) - 2.0f, w, 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, dark_color, + material_white); + } + + void draw_input_box(const int lines, float* color) + { + draw_box( + con.globals.x - 6.0f, + con.globals.y - 6.0f, + (con.screen_max[0] - con.screen_min[0]) - ((con.globals.x - 6.0f) - con.screen_min[0]), + (lines * con.globals.font_height) + 12.0f, + color); + } + + void draw_input_text_and_over(const char* str, float* color) + { + game::R_AddCmdDrawText(str, 0x7FFFFFFF, console_font, con.globals.x, + con.globals.y + con.globals.font_height, 1, + 1, 0, color, 0); + con.globals.x = game::R_TextWidth(str, 0, console_font) + con.globals.x + 6.0f; + } + + void draw_hint_box(const int lines, float* color, [[maybe_unused]] float offset_x = 0.0f, + [[maybe_unused]] float offset_y = 0.0f) + { + const auto _h = lines * con.globals.font_height + 12.0f; + const auto _y = con.globals.y - 3.0f + con.globals.font_height + 12.0f; + const auto _w = (con.screen_max[0] - con.screen_min[0]) - ((con.globals.x - 6.0f) - con.screen_min[0]); + + draw_box(con.globals.x - 6.0f, _y, _w, _h, color); + } + + void draw_hint_text(const int line, const char* text, float* color, const float offset = 0.0f) + { + const auto _y = con.globals.font_height + con.globals.y + (con.globals.font_height * (line + 1)) + 15.0f; + + game::R_AddCmdDrawText(text, 0x7FFFFFFF, console_font, con.globals.x + offset, _y, 1.0f, 1.0f, 0.0f, color, + 0); + } + + void draw_input() + { + con.globals.font_height = static_cast(console_font->pixelHeight); + con.globals.x = con.screen_min[0] + 6.0f; + con.globals.y = con.screen_min[1] + 6.0f; + con.globals.left_x = con.screen_min[0] + 6.0f; + + draw_input_box(1, dvars::con_inputBoxColor->current.vector); + draw_input_text_and_over("s1-mod: " VERSION ">", color_s1); + + con.globals.left_x = con.globals.x; + con.globals.auto_complete_choice[0] = 0; + + game::R_AddCmdDrawTextWithCursor(con.buffer, 0x7FFFFFFF, console_font, con.globals.x, + con.globals.y + con.globals.font_height, 1.0f, 1.0f, 0.0f, color_white, 0, + con.cursor, '|'); + + // check if using a prefixed '/' or not + const auto input = con.buffer[1] && (con.buffer[0] == '/' || con.buffer[0] == '\\') + ? std::string(con.buffer).substr(1) + : std::string(con.buffer); + + if (!input.length()) + { + return; + } + + if (input != fixed_input) + { + matches.clear(); + + if (input.find(" ") != std::string::npos) + { + find_matches(input.substr(0, input.find(" ")), matches, true); + } + else + { + find_matches(input, matches, false); + } + + fixed_input = input; + } + + con.globals.may_auto_complete = false; + if (matches.size() > 24) + { + draw_hint_box(1, dvars::con_inputHintBoxColor->current.vector); + draw_hint_text(0, utils::string::va("%i matches (too many to show here)", matches.size()), + dvars::con_inputDvarMatchColor->current.vector); + } + else if (matches.size() == 1) + { + auto* const dvar = game::Dvar_FindVar(matches[0].data()); + const auto line_count = dvar ? 2 : 1; + + draw_hint_box(line_count, dvars::con_inputHintBoxColor->current.vector); + draw_hint_text(0, matches[0].data(), + dvar + ? dvars::con_inputDvarMatchColor->current.vector + : dvars::con_inputCmdMatchColor->current.vector); + + if (dvar) + { + const auto offset = (con.screen_max[0] - con.globals.x) / 2.5f; + + draw_hint_text(0, game::Dvar_ValueToString(dvar, dvar->current), + dvars::con_inputDvarValueColor->current.vector, offset); + draw_hint_text(1, " default", dvars::con_inputDvarInactiveValueColor->current.vector); + draw_hint_text(1, game::Dvar_ValueToString(dvar, dvar->reset), + dvars::con_inputDvarInactiveValueColor->current.vector, offset); + } + + strncpy_s(con.globals.auto_complete_choice, matches[0].data(), 64); + con.globals.may_auto_complete = true; + } + else if (matches.size() > 1) + { + draw_hint_box(static_cast(matches.size()), dvars::con_inputHintBoxColor->current.vector); + + const auto offset = (con.screen_max[0] - con.globals.x) / 2.5f; + + for (size_t i = 0; i < matches.size(); i++) + { + auto* const dvar = game::Dvar_FindVar(matches[i].data()); + + draw_hint_text(static_cast(i), matches[i].data(), + dvar + ? dvars::con_inputDvarMatchColor->current.vector + : dvars::con_inputCmdMatchColor->current.vector); + + if (dvar) + { + draw_hint_text(static_cast(i), game::Dvar_ValueToString(dvar, dvar->current), + dvars::con_inputDvarValueColor->current.vector, offset); + } + } + + strncpy_s(con.globals.auto_complete_choice, matches[0].data(), 64); + con.globals.may_auto_complete = true; + } + } + + void draw_output_scrollbar(const float x, float y, const float width, const float height, output_queue& output) + { + const auto _x = (x + width) - 10.0f; + draw_box(_x, y, 10.0f, height, dvars::con_outputBarColor->current.vector); + + auto _height = height; + if (output.size() > con.visible_line_count) + { + const auto percentage = static_cast(con.visible_line_count) / output.size(); + _height *= percentage; + + const auto remainingSpace = height - _height; + const auto percentageAbove = static_cast(con.display_line_offset) / (output.size() - con. + visible_line_count); + + y = y + (remainingSpace * percentageAbove); + } + + draw_box(_x, y, 10.0f, _height, dvars::con_outputSliderColor->current.vector); + } + + void draw_output_text(const float x, float y, output_queue& output) + { + const auto offset = output.size() >= con.visible_line_count + ? 0.0f + : (con.font_height * (con.visible_line_count - output.size())); + + for (auto i = 0; i < con.visible_line_count; i++) + { + y = console_font->pixelHeight + y; + + const auto index = i + con.display_line_offset; + if (index >= output.size()) + { + break; + } + + game::R_AddCmdDrawText(output.at(index).data(), 0x7FFF, console_font, x, y + offset, 1.0f, 1.0f, + 0.0f, color_white, 0); + } + } + + void draw_output_window() + { + con.output.access([](output_queue& output) + { + draw_box(con.screen_min[0], con.screen_min[1] + 32.0f, con.screen_max[0] - con.screen_min[0], + (con.screen_max[1] - con.screen_min[1]) - 32.0f, dvars::con_outputWindowColor->current.vector); + + const auto x = con.screen_min[0] + 6.0f; + const auto y = (con.screen_min[1] + 32.0f) + 6.0f; + const auto width = (con.screen_max[0] - con.screen_min[0]) - 12.0f; + const auto height = ((con.screen_max[1] - con.screen_min[1]) - 32.0f) - 12.0f; + + game::R_AddCmdDrawText(game::Dvar_FindVar("version")->current.string, 0x7FFFFFFF, console_font, x, + ((height - 12.0f) + y) + console_font->pixelHeight, 1.0f, 1.0f, 0.0f, color_s1, + 0); + + draw_output_scrollbar(x, y, width, height, output); + draw_output_text(x, y, output); + }); + } + + void draw_console() + { + check_resize(); + + if (*game::keyCatchers & 1) + { + if (!(*game::keyCatchers & 1)) + { + con.output_visible = false; + } + + if (con.output_visible) + { + draw_output_window(); + } + + draw_input(); + } + } + } + + void print_internal(const char* fmt, ...) + { + char va_buffer[0x200]{}; + + va_list ap; + va_start(ap, fmt); + vsprintf_s(va_buffer, fmt, ap); + va_end(ap); + + const auto formatted = std::string(va_buffer); + const auto lines = utils::string::split(formatted, '\n'); + + for (const auto& line : lines) + { + print_internal(line); + } + } + + void print(const int type, const std::string& data) + { + try + { + if (game::environment::is_dedi()) + { + return; + } + } + catch (std::exception&) + { + return; + } + + const auto lines = utils::string::split(data, '\n'); + for (const auto& line : lines) + { + print_internal(type == console::con_type_info ? line : "^"s.append(std::to_string(type)).append(line)); + } + } + + bool console_char_event(const int local_client_num, const int key) + { + if (key == game::keyNum_t::K_GRAVE || key == game::keyNum_t::K_TILDE) + { + return false; + } + + if (*game::keyCatchers & 1) + { + if (key == game::keyNum_t::K_TAB) // tab (auto complete) + { + if (con.globals.may_auto_complete) + { + const auto first_char = con.buffer[0]; + + clear(); + + if (first_char == '\\' || first_char == '/') + { + con.buffer[0] = first_char; + con.buffer[1] = '\0'; + } + + strncat_s(con.buffer, con.globals.auto_complete_choice, 64); + con.cursor = static_cast(std::string(con.buffer).length()); + + if (con.cursor != 254) + { + con.buffer[con.cursor++] = ' '; + con.buffer[con.cursor] = '\0'; + } + } + } + + if (key == 'v' - 'a' + 1) // paste + { + const auto clipboard = utils::string::get_clipboard_data(); + if (clipboard.empty()) + { + return false; + } + + for (size_t i = 0; i < clipboard.length(); i++) + { + console_char_event(local_client_num, clipboard[i]); + } + + return false; + } + + if (key == 'c' - 'a' + 1) // clear + { + clear(); + con.line_count = 0; + con.display_line_offset = 0; + con.output.access([](output_queue& output) + { + output.clear(); + }); + history_index = -1; + history.clear(); + + return false; + } + + if (key == 'h' - 'a' + 1) // backspace + { + if (con.cursor > 0) + { + memmove(con.buffer + con.cursor - 1, con.buffer + con.cursor, + strlen(con.buffer) + 1 - con.cursor); + con.cursor--; + } + + return false; + } + + if (key < 32) + { + return false; + } + + if (con.cursor == 256 - 1) + { + return false; + } + + memmove(con.buffer + con.cursor + 1, con.buffer + con.cursor, strlen(con.buffer) + 1 - con.cursor); + con.buffer[con.cursor] = static_cast(key); + con.cursor++; + + if (con.cursor == strlen(con.buffer) + 1) + { + con.buffer[con.cursor] = 0; + } + } + + return true; + } + + bool console_key_event(const int local_client_num, const int key, const int down) + { + if (key == game::keyNum_t::K_F10) + { + if (game::mp::svs_clients[local_client_num].header.state >= 1) + { + return false; + } + + game::Cmd_ExecuteSingleCommand(local_client_num, 0, "lui_open menu_systemlink_join\n"); + } + + if (key == game::keyNum_t::K_GRAVE || key == game::keyNum_t::K_TILDE) + { + if (!down) + { + return false; + } + + if (game::playerKeys[local_client_num].keys[game::keyNum_t::K_SHIFT].down) + { + if (!(*game::keyCatchers & 1)) + toggle_console(); + + toggle_console_output(); + return false; + } + + toggle_console(); + + return false; + } + + if (*game::keyCatchers & 1) + { + if (down) + { + if (key == game::keyNum_t::K_UPARROW) + { + if (++history_index >= history.size()) + { + history_index = static_cast(history.size()) - 1; + } + + clear(); + + if (history_index != -1) + { + strncpy_s(con.buffer, history.at(history_index).c_str(), sizeof(con.buffer)); + con.cursor = static_cast(strlen(con.buffer)); + } + } + else if (key == game::keyNum_t::K_DOWNARROW) + { + if (--history_index < -1) + { + history_index = -1; + } + + clear(); + + if (history_index != -1) + { + strncpy_s(con.buffer, history.at(history_index).c_str(), sizeof(con.buffer)); + con.cursor = static_cast(strlen(con.buffer)); + } + } + + if (key == game::keyNum_t::K_RIGHTARROW) + { + if (con.cursor < strlen(con.buffer)) + { + con.cursor++; + } + + return false; + } + + if (key == game::keyNum_t::K_LEFTARROW) + { + if (con.cursor > 0) + { + con.cursor--; + } + + return false; + } + + //scroll through output + if (key == game::keyNum_t::K_MWHEELUP || key == game::keyNum_t::K_PGUP) + { + con.output.access([](output_queue& output) + { + if (output.size() > con.visible_line_count && con.display_line_offset > 0) + { + con.display_line_offset--; + } + }); + } + else if (key == game::keyNum_t::K_MWHEELDOWN || key == game::keyNum_t::K_PGDN) + { + con.output.access([](output_queue& output) + { + if (output.size() > con.visible_line_count + && con.display_line_offset < (output.size() - con.visible_line_count)) + { + con.display_line_offset++; + } + }); + } + + if (key == game::keyNum_t::K_ENTER) + { + game::Cbuf_AddText(0, utils::string::va("%s \n", fixed_input.data())); + + if (history_index != -1) + { + const auto itr = history.begin() + history_index; + + if (*itr == con.buffer) + { + history.erase(history.begin() + history_index); + } + } + + history.push_front(con.buffer); + + console::info("]%s\n", con.buffer); + + if (history.size() > 10) + { + history.erase(history.begin() + 10); + } + + history_index = -1; + + clear(); + } + } + } + + return true; + } + + bool match_compare(const std::string& input, const std::string& text, const bool exact) + { + if (exact && text == input) return true; + if (!exact && text.find(input) != std::string::npos) return true; + return false; + } + + void find_matches(std::string input, std::vector& suggestions, const bool exact) + { + input = utils::string::to_lower(input); + + for (auto i = 0; i < *game::dvarCount; i++) + { + if (game::sortedDvars[i] && game::sortedDvars[i]->name) + { + auto name = utils::string::to_lower(game::sortedDvars[i]->name); + if (game_console::match_compare(input, name, exact)) + { + suggestions.emplace_back(game::sortedDvars[i]->name); + } + + if (exact && suggestions.size() > 1) + { + return; + } + } + } + + auto* cmd = *game::cmd_functions; + while (cmd) + { + if (cmd->name) + { + auto name = utils::string::to_lower(cmd->name); + if (game_console::match_compare(input, name, exact)) + { + suggestions.emplace_back(cmd->name); + } + + if (exact && suggestions.size() > 1) + { + return; + } + } + cmd = cmd->next; + } + } + + class component final : public component_interface + { + public: + void post_load() override + { + if (game::environment::is_dedi()) + { + return; + } + + scheduler::loop(draw_console, scheduler::pipeline::renderer); + } + + void post_unpack() override + { + if (game::environment::is_dedi()) + { + return; + } + + // initialize our structs + con.cursor = 0; + con.visible_line_count = 0; + con.output_visible = false; + con.display_line_offset = 0; + con.line_count = 0; + strncpy_s(con.buffer, "", sizeof(con.buffer)); + + con.globals.x = 0.0f; + con.globals.y = 0.0f; + con.globals.left_x = 0.0f; + con.globals.font_height = 0.0f; + con.globals.may_auto_complete = false; + con.globals.info_line_count = 0; + strncpy_s(con.globals.auto_complete_choice, "", 64); + + // add clear command + command::add("clear", [&]() + { + clear(); + con.line_count = 0; + con.display_line_offset = 0; + con.output.access([](output_queue& output) + { + output.clear(); + }); + history_index = -1; + history.clear(); + }); + + // add our dvars + dvars::con_inputBoxColor = game::Dvar_RegisterVec4("con_inputBoxColor", 0.2f, 0.2f, 0.2f, 0.9f, 0.0f, 1.0f, + game::DVAR_FLAG_SAVED, + "color of console input box"); + dvars::con_inputHintBoxColor = game::Dvar_RegisterVec4("con_inputHintBoxColor", 0.3f, 0.3f, 0.3f, 1.0f, + 0.0f, 1.0f, + game::DVAR_FLAG_SAVED, "color of console input hint box"); + dvars::con_outputBarColor = game::Dvar_RegisterVec4("con_outputBarColor", 0.5f, 0.5f, 0.5f, 0.6f, 0.0f, + 1.0f, game::DVAR_FLAG_SAVED, + "color of console output bar"); + dvars::con_outputSliderColor = game::Dvar_RegisterVec4("con_outputSliderColor", 1.0f, 0.8f, 0.0f, 1.0f, + 0.0f, 1.0f, + game::DVAR_FLAG_SAVED, "color of console output slider"); + dvars::con_outputWindowColor = game::Dvar_RegisterVec4("con_outputWindowColor", 0.25f, 0.25f, 0.25f, 0.85f, + 0.0f, + 1.0f, game::DVAR_FLAG_SAVED, "color of console output window"); + dvars::con_inputDvarMatchColor = game::Dvar_RegisterVec4("con_inputDvarMatchColor", 1.0f, 1.0f, 0.8f, 1.0f, + 0.0f, + 1.0f, game::DVAR_FLAG_SAVED, "color of console matched dvar"); + dvars::con_inputDvarValueColor = game::Dvar_RegisterVec4("con_inputDvarValueColor", 1.0f, 1.0f, 0.8f, 1.0f, + 0.0f, + 1.0f, game::DVAR_FLAG_SAVED, "color of console matched dvar value"); + dvars::con_inputDvarInactiveValueColor = game::Dvar_RegisterVec4( + "con_inputDvarInactiveValueColor", 0.8f, 0.8f, + 0.8f, 1.0f, 0.0f, 1.0f, game::DVAR_FLAG_SAVED, + "color of console inactive dvar value"); + dvars::con_inputCmdMatchColor = game::Dvar_RegisterVec4("con_inputCmdMatchColor", 0.80f, 0.80f, 1.0f, 1.0f, + 0.0f, + 1.0f, game::DVAR_FLAG_SAVED, "color of console matched command"); + } + }; +} + +REGISTER_COMPONENT(game_console::component) diff --git a/src/client/component/game_console.hpp b/src/client/component/game_console.hpp new file mode 100644 index 0000000..e941917 --- /dev/null +++ b/src/client/component/game_console.hpp @@ -0,0 +1,12 @@ +#pragma once + +namespace game_console +{ + void print(int type, const std::string& data); + + bool console_char_event(int local_client_num, int key); + bool console_key_event(int local_client_num, int key, int down); + + bool match_compare(const std::string& input, const std::string& text, const bool exact); + void find_matches(std::string input, std::vector& suggestions, const bool exact); +} diff --git a/src/client/component/game_log.cpp b/src/client/component/game_log.cpp new file mode 100644 index 0000000..b205183 --- /dev/null +++ b/src/client/component/game_log.cpp @@ -0,0 +1,116 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include "scheduler.hpp" +#include "scripting.hpp" +#include "console.hpp" +#include "game_log.hpp" + +#include "gsc/script_extension.hpp" + +#include +#include +#include + +namespace game_log +{ + namespace + { + void gscr_log_print() + { + char buf[1024]{}; + std::size_t out_chars = 0; + + for (auto i = 0u; i < game::Scr_GetNumParam(); ++i) + { + const auto* value = game::Scr_GetString(i); + const auto len = std::strlen(value); + + out_chars += len; + if (out_chars >= sizeof(buf)) + { + break; + } + + strncat_s(buf, value, _TRUNCATE); + } + + g_log_printf("%s", buf); + } + } + + void g_log_printf(const char* fmt, ...) + { + const auto* log = dvars::g_log->current.string; + if (*log == '\0') + { + return; + } + + char buffer[0x400]{}; + + va_list ap; + va_start(ap, fmt); + + vsnprintf_s(buffer, _TRUNCATE, fmt, ap); + + va_end(ap); + + const auto time = *game::level_time / 1000; + utils::io::write_file(log, utils::string::va("%3i:%i%i %s", + time / 60, + time % 60 / 10, + time % 60 % 10, + buffer + ), true); + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) + { + return; + } + + gsc::override_function("logprint", &gscr_log_print); + + scheduler::once([] + { + dvars::g_log = game::Dvar_RegisterString("g_log", "logs/games_mp.log", game::DVAR_FLAG_NONE, "Log file name"); + }, scheduler::pipeline::main); + + scripting::on_init([] + { + console::info("------- Game Initialization -------\n"); + console::info("gamename: S1\n"); + console::info("gamedate: " __DATE__ "\n"); + + const auto* log = dvars::g_log->current.string; + if (*log == '\0') + { + console::info("Not logging to disk.\n"); + return; + } + + console::info("Logging to disk: '%s'.\n", log); + g_log_printf("------------------------------------------------------------\n"); + g_log_printf("InitGame\n"); + }); + + scripting::on_shutdown([](int free_scripts) + { + console::info("==== ShutdownGame (%d) ====\n", free_scripts); + + g_log_printf("ShutdownGame:\n"); + g_log_printf("------------------------------------------------------------\n"); + }); + } + }; +} + +REGISTER_COMPONENT(game_log::component) diff --git a/src/client/component/game_log.hpp b/src/client/component/game_log.hpp new file mode 100644 index 0000000..4135e71 --- /dev/null +++ b/src/client/component/game_log.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace game_log +{ + void g_log_printf(const char* fmt, ...); +} diff --git a/src/client/component/game_module.cpp b/src/client/component/game_module.cpp new file mode 100644 index 0000000..bd98462 --- /dev/null +++ b/src/client/component/game_module.cpp @@ -0,0 +1,118 @@ +#include +#include "loader/component_loader.hpp" +#include "game_module.hpp" + +#include + +namespace game_module +{ + namespace + { + utils::hook::detour handle_a_hook; + utils::hook::detour handle_w_hook; + utils::hook::detour handle_ex_a_hook; + utils::hook::detour handle_ex_w_hook; + utils::hook::detour file_name_a_hook; + utils::hook::detour file_name_w_hook; + + HMODULE __stdcall get_module_handle_a(const LPCSTR module_name) + { + if (!module_name) + { + return get_game_module(); + } + + return handle_a_hook.invoke(module_name); + } + + HMODULE __stdcall get_module_handle_w(const LPWSTR module_name) + { + if (!module_name) + { + return get_game_module(); + } + + return handle_w_hook.invoke(module_name); + } + + BOOL __stdcall get_module_handle_ex_a(const DWORD flags, const LPCSTR module_name, HMODULE* hmodule) + { + if (!module_name) + { + *hmodule = get_game_module(); + return TRUE; + } + + return handle_ex_a_hook.invoke(flags, module_name, hmodule); + } + + BOOL __stdcall get_module_handle_ex_w(const DWORD flags, const LPCWSTR module_name, HMODULE* hmodule) + { + if (!module_name) + { + *hmodule = get_game_module(); + return TRUE; + } + + return handle_ex_w_hook.invoke(flags, module_name, hmodule); + } + + DWORD __stdcall get_module_file_name_a(HMODULE hmodule, const LPSTR filename, const DWORD size) + { + if (!hmodule) + { + hmodule = get_game_module(); + } + + return file_name_a_hook.invoke(hmodule, filename, size); + } + + DWORD __stdcall get_module_file_name_w(HMODULE hmodule, const LPWSTR filename, const DWORD size) + { + if (!hmodule) + { + hmodule = get_game_module(); + } + + return file_name_w_hook.invoke(hmodule, filename, size); + } + + void hook_module_resolving() + { + handle_a_hook.create(&GetModuleHandleA, &get_module_handle_a); + handle_w_hook.create(&GetModuleHandleW, &get_module_handle_w); + handle_ex_w_hook.create(&GetModuleHandleExA, &get_module_handle_ex_a); + handle_ex_w_hook.create(&GetModuleHandleExW, &get_module_handle_ex_w); + file_name_a_hook.create(&GetModuleFileNameA, &get_module_file_name_a); + file_name_w_hook.create(&GetModuleFileNameW, &get_module_file_name_w); + } + } + + utils::nt::library get_game_module() + { + static utils::nt::library game{HMODULE(0x140000000)}; + return game; + } + + utils::nt::library get_host_module() + { + static utils::nt::library host{}; + return host; + } + + class component final : public component_interface + { + public: + void post_start() override + { + get_host_module(); + } + + void post_load() override + { + hook_module_resolving(); + } + }; +} + +REGISTER_COMPONENT(game_module::component) diff --git a/src/client/component/game_module.hpp b/src/client/component/game_module.hpp new file mode 100644 index 0000000..35a39f7 --- /dev/null +++ b/src/client/component/game_module.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include + +namespace game_module +{ + utils::nt::library get_game_module(); + utils::nt::library get_host_module(); +} diff --git a/src/client/component/gameplay.cpp b/src/client/component/gameplay.cpp new file mode 100644 index 0000000..1ac5649 --- /dev/null +++ b/src/client/component/gameplay.cpp @@ -0,0 +1,206 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include + +namespace gameplay +{ + namespace + { + utils::hook::detour pm_weapon_use_ammo_hook; + + int stuck_in_client_stub(game::mp::gentity_s* entity) + { + if (dvars::g_playerEjection->current.enabled) + { + return utils::hook::invoke(0x1402DA310, entity); // StuckInClient + } + + return 0; + } + + void cm_transformed_capsule_trace_stub(game::trace_t* results, const float* start, const float* end, + game::Bounds* bounds, game::Bounds* capsule, int contents, const float* origin, const float* angles) + { + if (dvars::g_playerCollision->current.enabled) + { + utils::hook::invoke(0x1403AB1C0, + results, start, end, bounds, capsule, contents, origin, angles); // CM_TransformedCapsuleTrace + } + } + + const auto pm_bouncing_stub_mp = utils::hook::assemble([](utils::hook::assembler& a) + { + const auto no_bounce = a.newLabel(); + const auto loc_14014DF48 = a.newLabel(); + + a.push(rax); + + a.mov(rax, qword_ptr(reinterpret_cast(&dvars::pm_bouncing))); + a.mov(al, byte_ptr(rax, 0x10)); + a.cmp(byte_ptr(rbp, -0x2D), al); + + a.pop(rax); + a.jz(no_bounce); + a.jmp(0x14014DFB0); + + a.bind(no_bounce); + a.cmp(dword_ptr(rsp, 0x70), 0); + a.jnz(loc_14014DF48); + a.jmp(0x14014DFA2); + + a.bind(loc_14014DF48); + a.jmp(0x14014DF48); + }); + + void pm_weapon_use_ammo_stub(game::playerState_s* ps, game::Weapon weapon, + bool is_alternate, int amount, game::PlayerHandIndex hand) + { + if (!dvars::player_sustainAmmo->current.enabled) + { + pm_weapon_use_ammo_hook.invoke(ps, weapon, is_alternate, amount, hand); + } + } + + const auto client_end_frame_stub = utils::hook::assemble([](utils::hook::assembler& a) + { + a.push(rax); + + a.mov(rax, qword_ptr(reinterpret_cast(&dvars::g_gravity))); + a.mov(eax, dword_ptr(rax, 0x10)); + a.mov(word_ptr(rbx, 0x36), ax); + + a.pop(rax); + + // Game code hook skipped + a.mov(eax, dword_ptr(rbx, 0x5084)); + a.mov(rdi, rcx); + + a.jmp(0x1402D5A6A); + }); + + const auto client_think_real_stub = utils::hook::assemble([](utils::hook::assembler& a) + { + a.push(rax); + + a.mov(rax, qword_ptr(reinterpret_cast(&dvars::g_speed))); + a.mov(eax, dword_ptr(rax, 0x10)); + a.mov(word_ptr(rbx, 0x38), ax); + + a.pop(rax); + + // Game code hook skipped + a.movzx(eax, word_ptr(rbx, 0x3C)); + a.add(eax, dword_ptr(rbx, 0x48)); + + a.jmp(0x1402D6A9C); + }); + + const auto jump_push_off_ladder = utils::hook::assemble([](utils::hook::assembler& a) + { + a.push(rax); + + a.mov(rax, qword_ptr(reinterpret_cast(&dvars::jump_ladderPushVel))); + a.mulss(xmm7, dword_ptr(rax, 0x10)); + a.mulss(xmm6, dword_ptr(rax, 0x10)); + + a.pop(rax); + + a.jmp(0x1401358C3); + }); + + void jump_start_stub(game::pmove_t* pm, game::pml_t* pml, float /*height*/) + { + utils::hook::invoke(0x140135A90, pm, pml, dvars::jump_height->current.value); + } + + void pm_player_trace_stub(game::pmove_t* pm, game::trace_t* results, const float* start, + const float* end, const game::Bounds* bounds, int pass_entity_num, int content_mask) + { + utils::hook::invoke(0x14014A420, pm, results, start, end, bounds, pass_entity_num, content_mask); + + if (dvars::g_elevators->current.enabled) + { + results->startsolid = false; + } + } + + void pm_trace_stub(const game::pmove_t* pm, game::trace_t* results, const float* start, + const float* end, const game::Bounds* bounds, int pass_entity_num, int content_mask) + { + utils::hook::invoke(0x14014A610, pm, results, start, end, bounds, pass_entity_num, content_mask); + + if (dvars::g_elevators->current.enabled) + { + results->allsolid = false; + } + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + dvars::player_sustainAmmo = game::Dvar_RegisterBool("player_sustainAmmo", false, + game::DVAR_FLAG_REPLICATED, "Firing weapon will not decrease clip ammo"); + pm_weapon_use_ammo_hook.create(SELECT_VALUE(0x1403DD050, 0x140162B20), &pm_weapon_use_ammo_stub); + + if (game::environment::is_sp()) return; + + // Implement player ejection dvar + dvars::g_playerEjection = game::Dvar_RegisterBool("g_playerEjection", true, game::DVAR_FLAG_REPLICATED, + "Flag whether player ejection is on or off"); + utils::hook::call(0x1402D5E4A, stuck_in_client_stub); + + // Implement player collision dvar + dvars::g_playerCollision = game::Dvar_RegisterBool("g_playerCollision", true, game::DVAR_FLAG_REPLICATED, + "Flag whether player collision is on or off"); + utils::hook::call(0x1404563DA, cm_transformed_capsule_trace_stub); // SV_ClipMoveToEntity + utils::hook::call(0x1401F7F8F, cm_transformed_capsule_trace_stub); // CG_ClipMoveToEntity + + // Implement bouncing dvar + utils::hook::jump(0x14014DF91, pm_bouncing_stub_mp, true); + dvars::pm_bouncing = game::Dvar_RegisterBool("pm_bouncing", false, + game::DVAR_FLAG_REPLICATED, "Enable bouncing"); + + // Change jump_slowdownEnable dvar flags to just "replicated" + utils::hook::set(0x140135992, game::DVAR_FLAG_REPLICATED); + + // Choosing the following min/max because the game would truncate larger values + dvars::g_gravity = game::Dvar_RegisterInt("g_gravity", 800, std::numeric_limits::min(), + std::numeric_limits::max(), game::DVAR_FLAG_REPLICATED, "Gravity in inches per second per second"); + utils::hook::jump(0x1402D5A5D, client_end_frame_stub, true); + utils::hook::nop(0x1402D5A69, 1); // Nop skipped opcode + + // Choosing the following min/max because the game would truncate larger values + dvars::g_speed = game::Dvar_RegisterInt("g_speed", 190, + std::numeric_limits::min(), std::numeric_limits::max(), game::DVAR_FLAG_REPLICATED, "Player speed"); + utils::hook::jump(0x1402D6A8C, client_think_real_stub, true); + utils::hook::nop(0x1402D6A98, 4); // Nop skipped opcodes + + dvars::jump_height = game::Dvar_RegisterFloat("jump_height", 39.0f, + 0.0f, 1000.0f, game::DVAR_FLAG_REPLICATED, "The maximum height of a player's jump"); + utils::hook::call(0x1401352FF, jump_start_stub); + + dvars::jump_ladderPushVel = game::Dvar_RegisterFloat("jump_ladderPushVel", 128.0f, + 0.0f, 1024.0f, game::DVAR_FLAG_REPLICATED, "The velocity of a jump off of a ladder"); + utils::hook::jump(0x1401358B3, jump_push_off_ladder, true); + utils::hook::nop(0x1401358BF, 4); // Nop skipped opcodes + + dvars::g_elevators = game::Dvar_RegisterBool("g_elevators", false, + game::DVAR_FLAG_REPLICATED, "Enable elevators"); + utils::hook::call(0x140146134, pm_player_trace_stub); + utils::hook::call(0x14014619B, pm_player_trace_stub); + + // Allow player to stand from prone/ducked + utils::hook::call(0x140142AF6, pm_trace_stub); + utils::hook::call(0x140142A1B, pm_trace_stub); + utils::hook::call(0x14014298D, pm_trace_stub); + } + }; +} + +REGISTER_COMPONENT(gameplay::component) diff --git a/src/client/component/gsc/script_error.cpp b/src/client/component/gsc/script_error.cpp new file mode 100644 index 0000000..867c003 --- /dev/null +++ b/src/client/component/gsc/script_error.cpp @@ -0,0 +1,339 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "script_extension.hpp" +#include "script_error.hpp" + +#include "component/scripting.hpp" + +#include +#include + +using namespace utils::string; + +namespace gsc +{ + namespace + { + utils::hook::detour scr_emit_function_hook; + + unsigned int current_filename = 0; + + std::string unknown_function_error; + + // Array count confirmed at 0x1409BE0D0 + std::array var_typename = + { + "undefined", + "object", + "string", + "localized string", + "vector", + "float", + "int", + "codepos", + "precodepos", + "function", + "builtin function", + "builtin method", + "stack", + "animation", + "pre animation", + "thread", + "thread", + "thread", + "thread", + "struct", + "removed entity", + "entity", + "array", + "removed thread", + "", + "thread list", + "endon list", + }; + + void scr_emit_function_stub(unsigned int filename, unsigned int thread_name, char* code_pos) + { + current_filename = filename; + scr_emit_function_hook.invoke(filename, thread_name, code_pos); + } + + std::string get_filename_name() + { + const auto filename_str = game::SL_ConvertToString(static_cast(current_filename)); + const auto id = std::atoi(filename_str); + if (!id) + { + return filename_str; + } + + return scripting::get_token(id); + } + + void get_unknown_function_error(const char* code_pos) + { + const auto function = find_function(code_pos); + if (function.has_value()) + { + const auto& pos = function.value(); + unknown_function_error = std::format( + "while processing function '{}' in script '{}':\nunknown script '{}'", pos.first, pos.second, scripting::current_file + ); + } + else + { + unknown_function_error = std::format("unknown script '{}'", scripting::current_file); + } + } + + void get_unknown_function_error(unsigned int thread_name) + { + const auto filename = get_filename_name(); + const auto name = scripting::get_token(thread_name); + + unknown_function_error = std::format( + "while processing script '{}':\nunknown function '{}::{}'", scripting::current_file, filename, name + ); + } + + void compile_error_stub(const char* code_pos, [[maybe_unused]] const char* msg) + { + get_unknown_function_error(code_pos); + game::Com_Error(game::ERR_DROP, "script link error\n%s", unknown_function_error.data()); + } + + unsigned int find_variable_stub(unsigned int parent_id, unsigned int thread_name) + { + const auto res = game::FindVariable(parent_id, thread_name); + if (!res) + { + get_unknown_function_error(thread_name); + game::Com_Error(game::ERR_DROP, "script link error\n%s", unknown_function_error.data()); + } + + return res; + } + + unsigned int scr_get_object(unsigned int index) + { + if (index < game::scr_VmPub->outparamcount) + { + auto* value = game::scr_VmPub->top - index; + if (value->type == game::VAR_POINTER) + { + return value->u.pointerValue; + } + + scr_error(va("Type %s is not an object", var_typename[value->type])); + } + + scr_error(va("Parameter %u does not exist", index + 1)); + return 0; + } + + unsigned int scr_get_const_string(unsigned int index) + { + if (index < game::scr_VmPub->outparamcount) + { + auto* value = game::scr_VmPub->top - index; + if (game::Scr_CastString(value)) + { + assert(value->type == game::VAR_STRING); + return value->u.stringValue; + } + + game::Scr_ErrorInternal(); + } + + scr_error(va("Parameter %u does not exist", index + 1)); + return 0; + } + + unsigned int scr_get_const_istring(unsigned int index) + { + if (index < game::scr_VmPub->outparamcount) + { + auto* value = game::scr_VmPub->top - index; + if (value->type == game::VAR_ISTRING) + { + return value->u.stringValue; + } + + scr_error(va("Type %s is not a localized string", var_typename[value->type])); + } + + scr_error(va("Parameter %u does not exist", index + 1)); + return 0; + } + + void scr_validate_localized_string_ref(int parm_index, const char* token, int token_len) + { + assert(token); + assert(token_len >= 0); + + if (token_len < 2) + { + return; + } + + for (auto char_iter = 0; char_iter < token_len; ++char_iter) + { + if (!std::isalnum(static_cast(token[char_iter])) && token[char_iter] != '_') + { + scr_error(va("Illegal localized string reference: %s must contain only alpha-numeric characters and underscores", token)); + } + } + } + + void scr_get_vector(unsigned int index, float* vector_value) + { + if (index < game::scr_VmPub->outparamcount) + { + auto* value = game::scr_VmPub->top - index; + if (value->type == game::VAR_VECTOR) + { + std::memcpy(vector_value, value->u.vectorValue, sizeof(std::float_t[3])); + return; + } + + scr_error(va("Type %s is not a vector", var_typename[value->type])); + } + + scr_error(va("Parameter %u does not exist", index + 1)); + } + + int scr_get_int(unsigned int index) + { + if (index < game::scr_VmPub->outparamcount) + { + auto* value = game::scr_VmPub->top - index; + if (value->type == game::VAR_INTEGER) + { + return value->u.intValue; + } + + scr_error(va("Type %s is not an int", var_typename[value->type])); + } + + scr_error(va("Parameter %u does not exist", index + 1)); + return 0; + } + + float scr_get_float(unsigned int index) + { + if (index < game::scr_VmPub->outparamcount) + { + auto* value = game::scr_VmPub->top - index; + if (value->type == game::VAR_FLOAT) + { + return value->u.floatValue; + } + + if (value->type == game::VAR_INTEGER) + { + return static_cast(value->u.intValue); + } + + scr_error(va("Type %s is not a float", var_typename[value->type])); + } + + scr_error(va("Parameter %u does not exist", index + 1)); + return 0.0f; + } + + int scr_get_pointer_type(unsigned int index) + { + if (index < game::scr_VmPub->outparamcount) + { + if ((game::scr_VmPub->top - index)->type == game::VAR_POINTER) + { + return static_cast(game::GetObjectType((game::scr_VmPub->top - index)->u.uintValue)); + } + + scr_error(va("Type %s is not an object", var_typename[(game::scr_VmPub->top - index)->type])); + } + + scr_error(va("Parameter %u does not exist", index + 1)); + return 0; + } + + int scr_get_type(unsigned int index) + { + if (index < game::scr_VmPub->outparamcount) + { + return (game::scr_VmPub->top - index)->type; + } + + scr_error(va("Parameter %u does not exist", index + 1)); + return 0; + } + + const char* scr_get_type_name(unsigned int index) + { + if (index < game::scr_VmPub->outparamcount) + { + return var_typename[(game::scr_VmPub->top - index)->type]; + } + + scr_error(va("Parameter %u does not exist", index + 1)); + return nullptr; + } + } + + std::optional> find_function(const char* pos) + { + for (const auto& file : scripting::script_function_table_sort) + { + for (auto i = file.second.begin(); i != file.second.end() && std::next(i) != file.second.end(); ++i) + { + const auto next = std::next(i); + if (pos >= i->second && pos < next->second) + { + return {std::make_pair(i->first, file.first)}; + } + } + } + + return {}; + } + + class error final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) + { + return; + } + + scr_emit_function_hook.create(0x1403ED900, &scr_emit_function_stub); + + utils::hook::call(0x1403ED894, compile_error_stub); // LinkFile + utils::hook::call(0x1403ED8E8, compile_error_stub); // LinkFile + utils::hook::call(0x1403ED9DB, find_variable_stub); // Scr_EmitFunction + + // Restore basic error messages for commonly used scr functions + utils::hook::jump(0x1403F8990, scr_get_object); + utils::hook::jump(0x1403F8510, scr_get_const_string); + utils::hook::jump(0x1403F82F0, scr_get_const_istring); + utils::hook::jump(0x140327870, scr_validate_localized_string_ref); + utils::hook::jump(0x1403F8EC0, scr_get_vector); + utils::hook::jump(0x1403F88D0, scr_get_int); + utils::hook::jump(0x1403F8820, scr_get_float); + + utils::hook::jump(0x1403F8BA0, scr_get_pointer_type); + utils::hook::jump(0x1403F8D70, scr_get_type); + utils::hook::jump(0x1403F8DE0, scr_get_type_name); + } + + void pre_destroy() override + { + scr_emit_function_hook.clear(); + } + }; +} + +REGISTER_COMPONENT(gsc::error) diff --git a/src/client/component/gsc/script_error.hpp b/src/client/component/gsc/script_error.hpp new file mode 100644 index 0000000..284af43 --- /dev/null +++ b/src/client/component/gsc/script_error.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace gsc +{ + std::optional> find_function(const char* pos); +} diff --git a/src/client/component/gsc/script_extension.cpp b/src/client/component/gsc/script_extension.cpp new file mode 100644 index 0000000..5b0e3a2 --- /dev/null +++ b/src/client/component/gsc/script_extension.cpp @@ -0,0 +1,288 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" +#include "game/scripting/functions.hpp" + +#include + +#include "component/console.hpp" +#include "component/command.hpp" + +#include "script_error.hpp" +#include "script_extension.hpp" +#include "script_loading.hpp" + +#include + +namespace gsc +{ + std::uint16_t function_id_start = 0x2DF; + void* func_table[0x1000]; + + const game::dvar_t* developer_script = nullptr; + + namespace + { + #define RVA(ptr) static_cast(reinterpret_cast(ptr) - 0x140000000) + + struct gsc_error : public std::runtime_error + { + using std::runtime_error::runtime_error; + }; + + std::unordered_map functions; + + bool force_error_print = false; + std::optional gsc_error_msg; + + std::unordered_map builtin_funcs_overrides; + + utils::hook::detour scr_register_function_hook; + + unsigned int scr_get_function_stub(const char** p_name, int* type) + { + const auto result = utils::hook::invoke(0x1403318B0, p_name, type); + + for (const auto& [name, func] : functions) + { + game::Scr_RegisterFunction(func, 0, name); + } + + return result; + } + + void execute_custom_function(game::BuiltinFunction function) + { + auto error = false; + + try + { + function(); + } + catch (const std::exception& ex) + { + error = true; + force_error_print = true; + gsc_error_msg = ex.what(); + } + + if (error) + { + game::Scr_ErrorInternal(); + } + } + + void vm_call_builtin_function(const std::uint32_t index) + { + const auto func = reinterpret_cast(scripting::get_function_by_index(index)); + + const auto custom = functions.contains(static_cast(index)); + if (!custom) + { + func(); + } + else + { + execute_custom_function(func); + } + } + + void builtin_call_error(const std::string& error) + { + const auto pos = game::scr_function_stack->pos; + const auto function_id = *reinterpret_cast(reinterpret_cast(pos - 2)); + + if (function_id > 0x1000) + { + console::warn("in call to builtin method \"%s\"%s", gsc_ctx->meth_name(function_id).data(), error.data()); + } + else + { + console::warn("in call to builtin function \"%s\"%s", gsc_ctx->func_name(function_id).data(), error.data()); + } + } + + std::optional get_opcode_name(const std::uint8_t opcode) + { + try + { + const auto index = gsc_ctx->opcode_enum(opcode); + return {gsc_ctx->opcode_name(index)}; + } + catch (...) + { + return {}; + } + } + + void print_callstack() + { + for (auto frame = game::scr_VmPub->function_frame; frame != game::scr_VmPub->function_frame_start; --frame) + { + const auto pos = frame == game::scr_VmPub->function_frame ? game::scr_function_stack->pos : frame->fs.pos; + const auto function = find_function(frame->fs.pos); + + if (function.has_value()) + { + console::warn("\tat function \"%s\" in file \"%s.gsc\"\n", function.value().first.data(), function.value().second.data()); + } + else + { + console::warn("\tat unknown location %p\n", pos); + } + } + } + + void vm_error_stub(int mark_pos) + { + if (!developer_script->current.enabled && !force_error_print) + { + utils::hook::invoke(0x1404B6790, mark_pos); + return; + } + + console::warn("******* script runtime error ********\n"); + const auto opcode_id = *reinterpret_cast(0x148806768); + + const std::string error = gsc_error_msg.has_value() ? std::format(": {}", gsc_error_msg.value()) : std::string(); + + if ((opcode_id >= 0x1A && opcode_id <= 0x20) || (opcode_id >= 0xA9 && opcode_id <= 0xAF)) + { + builtin_call_error(error); + } + else + { + const auto opcode = get_opcode_name(opcode_id); + if (opcode.has_value()) + { + console::warn("while processing instruction %s%s\n", opcode.value().data(), error.data()); + } + else + { + console::warn("while processing instruction 0x%X%s\n", opcode_id, error.data()); + } + } + + force_error_print = false; + gsc_error_msg = {}; + + print_callstack(); + console::warn("************************************\n"); + utils::hook::invoke(0x1404B6790, mark_pos); + } + + void scr_register_function_stub(void* func, int type, unsigned int name) + { + if (const auto itr = builtin_funcs_overrides.find(name); itr != builtin_funcs_overrides.end()) + { + func = itr->second; + } + + scr_register_function_hook.invoke(func, type, name); + } + + void scr_print() + { + for (auto i = 0u; i < game::Scr_GetNumParam(); ++i) + { + console::info("%s", game::Scr_GetString(i)); + } + } + + void scr_print_ln() + { + for (auto i = 0u; i < game::Scr_GetNumParam(); ++i) + { + console::info("%s", game::Scr_GetString(i)); + } + + console::info("\n"); + } + + void assert_cmd() + { + if (!game::Scr_GetInt(0)) + { + scr_error("Assert fail"); + } + } + + void assert_ex_cmd() + { + if (!game::Scr_GetInt(0)) + { + scr_error(utils::string::va("Assert fail: %s", game::Scr_GetString(1))); + } + } + + void assert_msg_cmd() + { + scr_error(utils::string::va("Assert fail: %s", game::Scr_GetString(0))); + } + } + + void scr_error(const char* error) + { + force_error_print = true; + gsc_error_msg = error; + + game::Scr_ErrorInternal(); + } + + void override_function(const std::string& name, game::BuiltinFunction func) + { + const auto id = gsc_ctx->func_id(name); + builtin_funcs_overrides.emplace(id, func); + } + + void add_function(const std::string& name, game::BuiltinFunction function) + { + ++function_id_start; + functions[function_id_start] = function; + gsc_ctx->func_add(name, function_id_start); + } + + class extension final : public component_interface + { + public: + void post_unpack() override + { + scr_register_function_hook.create(game::Scr_RegisterFunction, &scr_register_function_stub); + + override_function("print", &scr_print); + override_function("println", &scr_print_ln); + + utils::hook::set(SELECT_VALUE(0x1403115BC, 0x1403EDAEC), 0x1000); // Scr_RegisterFunction + + utils::hook::set(SELECT_VALUE(0x1403115C2 + 4, 0x1403EDAF2 + 4), RVA(&func_table)); // Scr_RegisterFunction + utils::hook::set(SELECT_VALUE(0x14031F097 + 3, 0x1403FB7F7 + 3), RVA(&func_table)); // VM_Execute_0 + utils::hook::inject(SELECT_VALUE(0x140311964 + 3, 0x1403EDEE4 + 3), &func_table); // Scr_BeginLoadScripts + + if (game::environment::is_sp()) + { + return; + } + + developer_script = game::Dvar_RegisterBool("developer_script", false, game::DVAR_FLAG_NONE, "Enable developer script comments"); + + utils::hook::nop(0x1403FB7F7 + 5, 2); + utils::hook::call(0x1403FB7F7, vm_call_builtin_function); + + utils::hook::call(0x1403FCAB0, vm_error_stub); // LargeLocalResetToMark + + utils::hook::call(0x1403EDF1F, scr_get_function_stub); + + override_function("assert", &assert_cmd); + override_function("assertex", &assert_ex_cmd); + override_function("assertmsg", &assert_msg_cmd); + + add_function("executecommand", [] + { + const auto* cmd = game::Scr_GetString(0); + command::execute(cmd); + }); + } + }; +} + +REGISTER_COMPONENT(gsc::extension) diff --git a/src/client/component/gsc/script_extension.hpp b/src/client/component/gsc/script_extension.hpp new file mode 100644 index 0000000..bdd44ff --- /dev/null +++ b/src/client/component/gsc/script_extension.hpp @@ -0,0 +1,12 @@ +#pragma once + +namespace gsc +{ + extern void* func_table[0x1000]; + + extern const game::dvar_t* developer_script; + + void scr_error(const char* error); + void override_function(const std::string& name, game::BuiltinFunction func); + void add_function(const std::string& name, game::BuiltinFunction function); +} diff --git a/src/client/component/gsc/script_loading.cpp b/src/client/component/gsc/script_loading.cpp new file mode 100644 index 0000000..5f3bd65 --- /dev/null +++ b/src/client/component/gsc/script_loading.cpp @@ -0,0 +1,396 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include +#include +#include +#include + +#include "component/filesystem.hpp" +#include "component/console.hpp" +#include "component/scripting.hpp" +#include "component/fastfiles.hpp" + +#include "script_loading.hpp" + +namespace gsc +{ + std::unique_ptr gsc_ctx; + + namespace + { + std::unordered_map main_handles; + std::unordered_map init_handles; + + std::unordered_map loaded_scripts; + utils::memory::allocator script_allocator; + + const game::dvar_t* developer_script; + + void clear() + { + main_handles.clear(); + init_handles.clear(); + loaded_scripts.clear(); + script_allocator.clear(); + } + + bool read_raw_script_file(const std::string& name, std::string* data) + { + if (filesystem::read_file(name, data)) + { + return true; + } + + // This will prevent 'fake' GSC raw files from being compiled. + // They are parsed by the game's own parser later as they are special files. + if (name.starts_with("maps/createfx") || name.starts_with("maps/createart") || + (name.starts_with("maps/mp") && name.ends_with("_fx.gsc"))) + { +#ifdef _DEBUG + console::info("Refusing to compile rawfile '%s\n", name.data()); +#endif + return false; + } + + const auto* name_str = name.data(); + if (game::DB_XAssetExists(game::ASSET_TYPE_RAWFILE, name_str) && + !game::DB_IsXAssetDefault(game::ASSET_TYPE_RAWFILE, name_str)) + { + const auto asset = game::DB_FindXAssetHeader(game::ASSET_TYPE_RAWFILE, name.data(), false); + const auto len = game::DB_GetRawFileLen(asset.rawfile); + data->resize(len); + game::DB_GetRawBuffer(asset.rawfile, data->data(), len); + if (len > 0) + { + data->pop_back(); + } + + return true; + } + + return false; + } + + game::ScriptFile* load_custom_script(const char* file_name, const std::string& real_name) + { + if (const auto itr = loaded_scripts.find(real_name); itr != loaded_scripts.end()) + { + return itr->second; + } + + try + { + auto& compiler = gsc_ctx->compiler(); + auto& assembler = gsc_ctx->assembler(); + + std::string source_buffer{}; + if (!read_raw_script_file(real_name + ".gsc", &source_buffer)) + { + return nullptr; + } + + std::vector data; + data.assign(source_buffer.begin(), source_buffer.end()); + + const auto assembly_ptr = compiler.compile(real_name, data); + // Pair of two buffers. First is the byte code and second is the stack + const auto output_script = assembler.assemble(*assembly_ptr); + + const auto script_file_ptr = static_cast(script_allocator.allocate(sizeof(game::ScriptFile))); + script_file_ptr->name = file_name; + + script_file_ptr->bytecodeLen = static_cast(std::get<0>(output_script).size); + script_file_ptr->len = static_cast(std::get<1>(output_script).size); + + const auto byte_code_size = static_cast(std::get<0>(output_script).size + 1); + const auto stack_size = static_cast(std::get<1>(output_script).size + 1); + + script_file_ptr->buffer = static_cast(script_allocator.allocate(stack_size)); + std::memcpy(const_cast(script_file_ptr->buffer), std::get<1>(output_script).data, std::get<1>(output_script).size); + + script_file_ptr->bytecode = static_cast(game::PMem_AllocFromSource_NoDebug(byte_code_size, 4, 1, 5)); + std::memcpy(script_file_ptr->bytecode, std::get<0>(output_script).data, std::get<0>(output_script).size); + + script_file_ptr->compressedLen = 0; + + loaded_scripts[real_name] = script_file_ptr; + + return script_file_ptr; + } + catch (const std::exception& ex) + { + console::error("*********** script compile error *************\n"); + console::error("failed to compile '%s':\n%s", real_name.data(), ex.what()); + console::error("**********************************************\n"); + return nullptr; + } + } + + std::string get_script_file_name(const std::string& name) + { + const auto id = gsc_ctx->token_id(name); + if (!id) + { + return name; + } + + return std::to_string(id); + } + + std::pair> read_compiled_script_file(const std::string& name, const std::string& real_name) + { + const auto* script_file = game::DB_FindXAssetHeader(game::ASSET_TYPE_SCRIPTFILE, name.data(), false).scriptfile; + if (!script_file) + { + throw std::runtime_error(std::format("Could not load scriptfile '{}'", real_name)); + } + + console::info("Decompiling scriptfile '%s'\n", real_name.data()); + + const auto len = script_file->compressedLen; + const std::string stack{script_file->buffer, static_cast(len)}; + + const auto decompressed_stack = utils::compression::zlib::decompress(stack); + + std::vector stack_data; + stack_data.assign(decompressed_stack.begin(), decompressed_stack.end()); + + return {{script_file->bytecode, static_cast(script_file->bytecodeLen)}, stack_data}; + } + + void load_script(const std::string& name) + { + if (!game::Scr_LoadScript(name.data())) + { + return; + } + + const auto main_handle = game::Scr_GetFunctionHandle(name.data(), gsc_ctx->token_id("main")); + const auto init_handle = game::Scr_GetFunctionHandle(name.data(), gsc_ctx->token_id("init")); + + if (main_handle) + { + console::info("Loaded '%s::main'\n", name.data()); + main_handles[name] = main_handle; + } + + if (init_handle) + { + console::info("Loaded '%s::init'\n", name.data()); + init_handles[name] = init_handle; + } + } + + void load_scripts(const std::filesystem::path& root_dir) + { + const std::filesystem::path script_dir = root_dir / "scripts"; + if (!utils::io::directory_exists(script_dir.generic_string())) + { + return; + } + + const auto scripts = utils::io::list_files(script_dir.generic_string()); + for (const auto& script : scripts) + { + if (!script.ends_with(".gsc")) + { + continue; + } + + std::filesystem::path path(script); + const auto relative = path.lexically_relative(root_dir).generic_string(); + const auto base_name = relative.substr(0, relative.size() - 4); + + load_script(base_name); + } + } + + int db_is_x_asset_default(game::XAssetType type, const char* name) + { + if (loaded_scripts.contains(name)) + { + return 0; + } + + return game::DB_IsXAssetDefault(type, name); + } + + void gscr_post_load_scripts_stub() + { + utils::hook::invoke(0x140323F20); + + if (game::VirtualLobby_Loaded()) + { + return; + } + + clear(); + + fastfiles::enum_assets(game::ASSET_TYPE_RAWFILE, [](const game::XAssetHeader header) + { + const std::string name = header.rawfile->name; + + if (name.ends_with(".gsc") && name.starts_with("scripts/")) + { + // Remove .gsc from the file name as it will be re-added by the game later + const auto base_name = name.substr(0, name.size() - 4); + load_script(base_name); + } + }, true); + + for (const auto& path : filesystem::get_search_paths()) + { + load_scripts(path); + } + } + + void db_get_raw_buffer_stub(const game::RawFile* rawfile, char* buf, const int size) + { + if (rawfile->len > 0 && rawfile->compressedLen == 0) + { + std::memset(buf, 0, size); + std::memcpy(buf, rawfile->buffer, std::min(rawfile->len, size)); + return; + } + + game::DB_GetRawBuffer(rawfile, buf, size); + } + + void g_load_structs_stub() + { + if (!game::VirtualLobby_Loaded()) + { + for (auto& function_handle : main_handles) + { + console::info("Executing '%s::main'\n", function_handle.first.data()); + const auto thread = game::Scr_ExecThread(static_cast(function_handle.second), 0); + game::RemoveRefToObject(thread); + } + } + + utils::hook::invoke(0x1403380D0); + } + + void scr_load_level_stub() + { + utils::hook::invoke(0x140325B90); + + if (game::VirtualLobby_Loaded()) + { + return; + } + + for (auto& function_handle : init_handles) + { + console::info("Executing '%s::init'\n", function_handle.first.data()); + const auto thread = game::Scr_ExecThread(static_cast(function_handle.second), 0); + game::RemoveRefToObject(thread); + } + } + + void scr_begin_load_scripts_stub() + { + const auto comp_mode = developer_script->current.enabled ? + xsk::gsc::build::dev : + xsk::gsc::build::prod; + + gsc_ctx->init(comp_mode, []([[maybe_unused]] auto const* ctx, const auto& included_path) -> std::pair> + { + const auto script_name = std::filesystem::path(included_path).replace_extension().string(); + + std::string file_buffer; + if (!read_raw_script_file(included_path, &file_buffer) || file_buffer.empty()) + { + const auto name = get_script_file_name(script_name); + if (game::DB_XAssetExists(game::ASSET_TYPE_SCRIPTFILE, name.data())) + { + return read_compiled_script_file(name, script_name); + } + + throw std::runtime_error(std::format("Could not load gsc file '{}'", script_name)); + } + + std::vector script_data; + script_data.assign(file_buffer.begin(), file_buffer.end()); + + return {{}, script_data}; + }); + + utils::hook::invoke(SELECT_VALUE(0x1403118E0, 0x1403EDE60)); + } + + void scr_end_load_scripts_stub() + { + // Cleanup the compiler + gsc_ctx->cleanup(); + + utils::hook::invoke(SELECT_VALUE(0x140243780, 0x1403EDF90)); + } + } + + game::ScriptFile* find_script(game::XAssetType type, const char* name, int allow_create_default) + { + std::string real_name = name; + const auto id = static_cast(std::strtol(name, nullptr, 10)); + if (id) + { + real_name = gsc_ctx->token_name(id); + } + + auto* script = load_custom_script(name, real_name); + if (script) + { + return script; + } + + return game::DB_FindXAssetHeader(type, name, allow_create_default).scriptfile; + } + + class loading final : public component_interface + { + public: + void post_load() override + { + gsc_ctx = std::make_unique(); + } + + void post_unpack() override + { + // Load our scripts with an uncompressed stack + utils::hook::call(SELECT_VALUE(0x14031ABB0, 0x1403F7380), db_get_raw_buffer_stub); + + utils::hook::call(SELECT_VALUE(0x1403309E9, 0x1403309E9), scr_begin_load_scripts_stub); // GScr_LoadScripts + utils::hook::call(SELECT_VALUE(0x14023DA84, 0x140330B9C), scr_end_load_scripts_stub); // GScr_LoadScripts + + developer_script = game::Dvar_RegisterBool("developer_script", false, game::DVAR_FLAG_NONE, "Enable developer script comments"); + + if (game::environment::is_sp()) + { + return; + } + + // ProcessScript + utils::hook::call(0x1403F7317, find_script); + utils::hook::call(0x1403F7327, db_is_x_asset_default); + + // GScr_LoadScripts + utils::hook::call(0x140330B97, gscr_post_load_scripts_stub); + + // Exec script handles + utils::hook::call(0x1402F71AE, g_load_structs_stub); + utils::hook::call(0x1402F71C7, scr_load_level_stub); + + scripting::on_shutdown([](int free_scripts) + { + if (free_scripts) + { + clear(); + } + }); + } + }; +} + +REGISTER_COMPONENT(gsc::loading) diff --git a/src/client/component/gsc/script_loading.hpp b/src/client/component/gsc/script_loading.hpp new file mode 100644 index 0000000..da9c4cd --- /dev/null +++ b/src/client/component/gsc/script_loading.hpp @@ -0,0 +1,9 @@ +#pragma once +#include + +namespace gsc +{ + extern std::unique_ptr gsc_ctx; + + game::ScriptFile* find_script(game::XAssetType type, const char* name, int allow_create_default); +} diff --git a/src/client/component/input.cpp b/src/client/component/input.cpp new file mode 100644 index 0000000..632686c --- /dev/null +++ b/src/client/component/input.cpp @@ -0,0 +1,59 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "game_console.hpp" +#include "server_list.hpp" + +#include + +namespace input +{ + namespace + { + utils::hook::detour cl_char_event_hook; + utils::hook::detour cl_key_event_hook; + + void cl_char_event_stub(const int local_client_num, const int key) + { + if (!game_console::console_char_event(local_client_num, key)) + { + return; + } + + cl_char_event_hook.invoke(local_client_num, key); + } + + void cl_key_event_stub(const int local_client_num, const int key, const signed int down, const int arg4) + { + if (!game_console::console_key_event(local_client_num, key, down)) + { + return; + } + + if (game::environment::is_mp() && !server_list::sl_key_event(key, down)) + { + return; + } + + cl_key_event_hook.invoke(local_client_num, key, down, arg4); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_dedi()) + { + return; + } + + cl_char_event_hook.create(SELECT_VALUE(0x14013E7B0, 0x140206690), cl_char_event_stub); + cl_key_event_hook.create(SELECT_VALUE(0x14013EB20, 0x140206900), cl_key_event_stub); + } + }; +} + +REGISTER_COMPONENT(input::component) diff --git a/src/client/component/localized_strings.cpp b/src/client/component/localized_strings.cpp new file mode 100644 index 0000000..98475eb --- /dev/null +++ b/src/client/component/localized_strings.cpp @@ -0,0 +1,52 @@ +#include +#include "loader/component_loader.hpp" +#include "localized_strings.hpp" +#include +#include +#include +#include "game/game.hpp" + +namespace localized_strings +{ + namespace + { + utils::hook::detour seh_string_ed_get_string_hook; + + using localized_map = std::unordered_map; + utils::concurrency::container localized_overrides; + + const char* seh_string_ed_get_string(const char* reference) + { + return localized_overrides.access([&](const localized_map& map) + { + const auto entry = map.find(reference); + if (entry != map.end()) + { + return utils::string::va("%s", entry->second.data()); + } + + return seh_string_ed_get_string_hook.invoke(reference); + }); + } + } + + void override(const std::string& key, const std::string& value) + { + localized_overrides.access([&](localized_map& map) + { + map[key] = value; + }); + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + // Change some localized strings + seh_string_ed_get_string_hook.create(SELECT_VALUE(0x140339CF0, 0x140474FC0), &seh_string_ed_get_string); + } + }; +} + +REGISTER_COMPONENT(localized_strings::component) diff --git a/src/client/component/localized_strings.hpp b/src/client/component/localized_strings.hpp new file mode 100644 index 0000000..47c4389 --- /dev/null +++ b/src/client/component/localized_strings.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace localized_strings +{ + void override(const std::string& key, const std::string& value); +} diff --git a/src/client/component/logger.cpp b/src/client/component/logger.cpp new file mode 100644 index 0000000..68306e8 --- /dev/null +++ b/src/client/component/logger.cpp @@ -0,0 +1,172 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "party.hpp" +#include "console.hpp" + +#include + +namespace logger +{ + namespace + { + utils::hook::detour com_error_hook; + + game::dvar_t* logger_dev = nullptr; + + void print_error(const char* msg, ...) + { + char buffer[2048]{}; + va_list ap; + + va_start(ap, msg); + vsnprintf_s(buffer, _TRUNCATE, msg, ap); + va_end(ap); + + console::error("%s", buffer); + } + + void print_com_error(int, const char* msg, ...) + { + char buffer[2048]{}; + va_list ap; + + va_start(ap, msg); + vsnprintf_s(buffer, _TRUNCATE, msg, ap); + va_end(ap); + + console::error("%s", buffer); + } + + void com_error_stub(const int error, const char* msg, ...) + { + char buffer[2048]{}; + va_list ap; + + va_start(ap, msg); + vsnprintf_s(buffer, _TRUNCATE, msg, ap); + va_end(ap); + + console::error("Error: %s\n", buffer); + + party::clear_sv_motd(); // clear sv_motd on error if it exists + + com_error_hook.invoke(error, "%s", buffer); + } + + void print_warning(const char* msg, ...) + { + char buffer[2048]{}; + va_list ap; + + va_start(ap, msg); + vsnprintf_s(buffer, _TRUNCATE, msg, ap); + va_end(ap); + + console::warn("%s", buffer); + } + + void print(const char* msg, ...) + { + char buffer[2048]{}; + va_list ap; + + va_start(ap, msg); + vsnprintf_s(buffer, _TRUNCATE, msg, ap); + va_end(ap); + + console::info("%s", buffer); + } + + void print_dev(const char* msg, ...) + { + if (!logger_dev->current.enabled) + { + return; + } + + char buffer[2048]{}; + va_list ap; + + va_start(ap, msg); + vsnprintf_s(buffer, _TRUNCATE, msg, ap); + va_end(ap); + + console::info("%s", buffer); + } + + // nullsub_56 + void nullsub_56() + { + utils::hook::call(0x1400D2572, print_warning); + utils::hook::call(0x1400D257E, print_warning); + utils::hook::call(0x1400D2586, print_warning); + utils::hook::call(0x1400D2592, print_warning); + + utils::hook::call(0x1400D2B7D, print_warning); + utils::hook::call(0x1400D2B89, print_warning); + utils::hook::call(0x1400D2B91, print_warning); + utils::hook::call(0x1400D2B9D, print_warning); + + utils::hook::call(0x1400D78ED, print_warning); + utils::hook::call(0x1400D78F9, print_warning); + utils::hook::call(0x1400D7901, print_warning); + utils::hook::call(0x1400D790D, print_warning); + + utils::hook::call(0x1400D84F8, print_warning); + utils::hook::call(0x1400D850C, print_warning); + + utils::hook::call(0x1400D8C08, print_warning); + utils::hook::call(0x1400D8C28, print_warning); + utils::hook::call(0x1400D8C34, print_warning); + + utils::hook::call(0x1400D8CD8, print_warning); + utils::hook::call(0x1400D8CF8, print_warning); + utils::hook::call(0x1400D8D04, print_warning); + utils::hook::call(0x1400D8D1D, print_warning); + + utils::hook::call(0x1400DAE67, print_warning); + utils::hook::call(0x1400DB019, print_warning); + } + + // sub_1400E7420 + void sub_1400E7420() + { + utils::hook::call(0x1400CEC1C, print_warning); + utils::hook::call(0x1400D218E, print_warning); + utils::hook::call(0x1400D2319, print_warning); + utils::hook::call(0x1400D65BC, print_dev); + utils::hook::call(0x1400D7C94, print_dev); + utils::hook::call(0x1400DAB6A, print_dev); + utils::hook::call(0x1400DB9BC, print_dev); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_mp()) + { + nullsub_56(); + sub_1400E7420(); + + // Make havok script's print function actually print + utils::hook::jump(0x140701A1C, print); + } + + if (!game::environment::is_sp()) + { + utils::hook::call(0x1404D8543, print_com_error); + } + + com_error_hook.create(game::Com_Error, com_error_stub); + + logger_dev = game::Dvar_RegisterBool("logger_dev", false, game::DVAR_FLAG_SAVED, "Print dev stuff"); + } + }; +} + +REGISTER_COMPONENT(logger::component) diff --git a/src/client/component/lui.cpp b/src/client/component/lui.cpp new file mode 100644 index 0000000..7aa9a9e --- /dev/null +++ b/src/client/component/lui.cpp @@ -0,0 +1,60 @@ +#include +#include "loader/component_loader.hpp" + +#include "game/game.hpp" + +#include "command.hpp" +#include "console.hpp" + +#include + +namespace lui +{ + class component final : public component_interface + { + public: + void post_unpack() override + { + if (!game::environment::is_mp()) return; + + // Don't show create cod account popup + utils::hook::set(0x1400EAD12, 0); + +#ifdef _DEBUG + // Enable development menus (causes issues in sp) + utils::hook::set(SELECT_VALUE(0x1400B4ABC, 0x140109FAC), 1); +#endif + + command::add("lui_open", [](const command::params& params) + { + if (params.size() <= 1) + { + console::info("usage: lui_open \n"); + return; + } + + game::LUI_OpenMenu(0, params[1], 0, 0, 0); + }); + + command::add("lui_open_popup", [](const command::params& params) + { + if (params.size() <= 1) + { + console::info("usage: lui_open_popup \n"); + return; + } + + game::LUI_OpenMenu(0, params[1], 1, 0, 0); + }); + + command::add("runMenuScript", [](const command::params& params) + { + const auto args_str = params.join(1); + const auto* args = args_str.data(); + game::UI_RunMenuScript(0, &args); + }); + } + }; +} + +REGISTER_COMPONENT(lui::component) diff --git a/src/client/component/map_rotation.cpp b/src/client/component/map_rotation.cpp new file mode 100644 index 0000000..832985d --- /dev/null +++ b/src/client/component/map_rotation.cpp @@ -0,0 +1,306 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "command.hpp" +#include "console.hpp" +#include "scheduler.hpp" +#include "map_rotation.hpp" + +#include +#include + +namespace map_rotation +{ + namespace + { + rotation_data dedicated_rotation; + + const game::dvar_t* sv_map_rotation; + const game::dvar_t* sv_map_rotation_current; + const game::dvar_t* sv_random_map_rotation; + + void set_gametype(const std::string& gametype) + { + assert(!gametype.empty()); + + auto* g_gametype = game::Dvar_FindVar("g_gametype"); + game::Dvar_SetString(g_gametype, gametype.data()); + } + + void launch_map(const std::string& mapname) + { + assert(!mapname.empty()); + + command::execute(utils::string::va("map %s", mapname.data()), false); + } + + void launch_default_map() + { + auto* mapname = game::Dvar_FindVar("mapname"); + if (mapname && std::strcmp(mapname->current.string, "mp_vlobby_room") != 0) + { + launch_map(mapname->current.string); + } + else + { + if (game::Com_GetCurrentCoDPlayMode() == game::CODPLAYMODE_ZOMBIES) + { + launch_map("mp_zombie_lab"); + } + else + { + launch_map("mp_venus"); + } + } + } + + void apply_rotation(rotation_data& rotation) + { + assert(!rotation.empty()); + + std::size_t i = 0; + while (i < rotation.get_entries_size()) + { + const auto& entry = rotation.get_next_entry(); + if (entry.first == "map"s) + { + console::info("Loading new map: '%s'\n", entry.second.data()); + if (!game::SV_MapExists(entry.second.data())) + { + console::info("map_rotation: '%s' map doesn't exist!\n", entry.second.data()); + launch_default_map(); + return; + } + + launch_map(entry.second); + + // Map was found so we exit the loop + break; + } + + if (entry.first == "gametype"s) + { + console::info("Applying new gametype: '%s'\n", entry.second.data()); + set_gametype(entry.second); + } + + ++i; + } + + if (i == rotation.get_entries_size()) + { + console::error("Map rotation does not contain any map. Restarting\n"); + launch_default_map(); + } + } + + void load_rotation(const std::string& data) + { + static auto loaded = false; + if (loaded) + { + return; + } + + loaded = true; + try + { + dedicated_rotation.parse(data); + } + catch (const std::exception& ex) + { + console::error("%s: %s contains invalid data!\n", ex.what(), sv_map_rotation->name); + } +#ifdef _DEBUG + console::info("dedicated_rotation size after parsing is '%zu'", dedicated_rotation.get_entries_size()); +#endif + } + + void load_map_rotation() + { + const std::string map_rotation = sv_map_rotation->current.string; + if (!map_rotation.empty()) + { +#ifdef _DEBUG + console::info("%s is not empty. Parsing...\n", sv_map_rotation->name); +#endif + load_rotation(map_rotation); + } + } + + void apply_map_rotation_current(const std::string& data) + { + assert(!data.empty()); + + rotation_data rotation_current; + + try + { + rotation_current.parse(data); + } + catch (const std::exception& ex) + { + console::error("%s: %s contains invalid data!\n", ex.what(), sv_map_rotation_current->name); + } + + game::Dvar_SetString(sv_map_rotation_current, ""); + + if (rotation_current.empty()) + { + console::warn("%s is empty or contains invalid data\n", sv_map_rotation_current->name); + launch_default_map(); + return; + } + + apply_rotation(rotation_current); + } + + void randomize_map_rotation() + { + if (sv_random_map_rotation->current.enabled) + { + console::info("Randomizing the map rotation\n"); + dedicated_rotation.randomize(); + } + } + + void perform_map_rotation() + { + if (game::Live_SyncOnlineDataFlags(0) != 0) + { + scheduler::on_game_initialized(perform_map_rotation, scheduler::pipeline::main, 1s); + return; + } + + console::info("Rotating map...\n"); + + // This takes priority because of backwards compatibility + const std::string map_rotation_current = sv_map_rotation_current->current.string; + if (!map_rotation_current.empty()) + { +#ifdef _DEBUG + console::info("Applying %s\n", sv_map_rotation_current->name); +#endif + apply_map_rotation_current(map_rotation_current); + return; + } + + load_map_rotation(); + if (dedicated_rotation.empty()) + { + console::warn("%s is empty or contains invalid data. Restarting map\n", sv_map_rotation->name); + launch_default_map(); + return; + } + + randomize_map_rotation(); + + apply_rotation(dedicated_rotation); + } + + void trigger_map_rotation() + { + scheduler::schedule([] + { + if (game::CL_IsCgameInitialized()) + { + return scheduler::cond_continue; + } + + command::execute("map_rotate", false); + return scheduler::cond_end; + }, scheduler::pipeline::main, 1s); + } + + } + + rotation_data::rotation_data() + : index_(0) + { + } + + void rotation_data::randomize() + { + std::random_device rd; + std::mt19937 gen(rd()); + + std::ranges::shuffle(this->rotation_entries_, gen); + } + + void rotation_data::add_entry(const std::string& key, const std::string& value) + { + this->rotation_entries_.emplace_back(std::make_pair(key, value)); + } + + bool rotation_data::contains(const std::string& key, const std::string& value) const + { + return std::ranges::any_of(this->rotation_entries_, [&](const auto& entry) + { + return entry.first == key && entry.second == value; + }); + } + + bool rotation_data::empty() const noexcept + { + return this->rotation_entries_.empty(); + } + + std::size_t rotation_data::get_entries_size() const noexcept + { + return this->rotation_entries_.size(); + } + + rotation_data::rotation_entry& rotation_data::get_next_entry() + { + const auto index = this->index_; + ++this->index_ %= this->rotation_entries_.size(); + return this->rotation_entries_.at(index); + } + + void rotation_data::parse(const std::string& data) + { + const auto tokens = utils::string::split(data, ' '); + for (std::size_t i = 0; !tokens.empty() && i < (tokens.size() - 1); i += 2) + { + const auto& key = tokens[i]; + const auto& value = tokens[i + 1]; + + if (key == "map"s || key == "gametype"s) + { + this->add_entry(key, value); + } + else + { + throw map_rotation_parse_error(); + } + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (!game::environment::is_dedi()) + { + return; + } + + scheduler::once([] + { + sv_map_rotation = game::Dvar_RegisterString("sv_mapRotation", "", game::DVAR_FLAG_NONE, ""); + sv_map_rotation_current = game::Dvar_RegisterString("sv_mapRotationCurrent", "", game::DVAR_FLAG_NONE, ""); + }, scheduler::pipeline::main); + + sv_random_map_rotation = game::Dvar_RegisterBool("sv_randomMapRotation", false, game::DVAR_FLAG_NONE, "Randomize map rotation"); + + command::add("map_rotate", &perform_map_rotation); + + // Hook GScr_ExitLevel + utils::hook::jump(0x14032E490, &trigger_map_rotation); + } + }; +} + +REGISTER_COMPONENT(map_rotation::component) diff --git a/src/client/component/map_rotation.hpp b/src/client/component/map_rotation.hpp new file mode 100644 index 0000000..c1620c8 --- /dev/null +++ b/src/client/component/map_rotation.hpp @@ -0,0 +1,34 @@ +#pragma once + +namespace map_rotation +{ + struct map_rotation_parse_error : public std::exception + { + [[nodiscard]] const char* what() const noexcept override { return "Map Rotation Parse Erro"; } + }; + + class rotation_data + { + public: + using rotation_entry = std::pair; + + rotation_data(); + + void randomize(); + + // In case a new way to enrich the map rotation is added (other than sv_mapRotation) + // this method should be called to add a new entry (gamemode/map & value) + void add_entry(const std::string& key, const std::string& value); + + [[nodiscard]] bool contains(const std::string& key, const std::string& value) const; + [[nodiscard]] bool empty() const noexcept; + [[nodiscard]] std::size_t get_entries_size() const noexcept; + [[nodiscard]] rotation_entry& get_next_entry(); + + void parse(const std::string& data); + + private: + std::vector rotation_entries_; + std::size_t index_; + }; +} diff --git a/src/client/component/network.cpp b/src/client/component/network.cpp new file mode 100644 index 0000000..e813a1d --- /dev/null +++ b/src/client/component/network.cpp @@ -0,0 +1,287 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "command.hpp" +#include "network.hpp" +#include "console.hpp" +#include "dvars.hpp" + +#include +#include + +namespace network +{ + namespace + { + std::unordered_map& get_callbacks() + { + static std::unordered_map callbacks{}; + return callbacks; + } + + bool handle_command(game::netadr_s* address, const char* command, game::msg_t* message) + { + const auto cmd_string = utils::string::to_lower(command); + auto& callbacks = get_callbacks(); + const auto handler = callbacks.find(cmd_string); + const auto offset = cmd_string.size() + 5; + if (message->cursize < offset || handler == callbacks.end()) + { + return false; + } + + const std::string data(message->data + offset, message->cursize - offset); + + handler->second(*address, data); + return true; + } + + void handle_command_stub(utils::hook::assembler& a) + { + const auto return_unhandled = a.newLabel(); + + a.pushad64(); + + a.mov(r8, rsi); // message + a.mov(rdx, rdi); // command + a.mov(rcx, r14); // netaddr + + a.call_aligned(handle_command); + + a.test(al, al); + a.jz(return_unhandled); + + // Command handled + a.popad64(); + a.mov(al, 1); + a.jmp(0x14020AA10); + + a.bind(return_unhandled); + a.popad64(); + a.jmp(0x14020A19A); + } + + int net_compare_base_address(const game::netadr_s* a1, const game::netadr_s* a2) + { + if (a1->type == a2->type) + { + switch (a1->type) + { + case game::netadrtype_t::NA_BOT: + case game::netadrtype_t::NA_LOOPBACK: + return a1->port == a2->port; + + case game::netadrtype_t::NA_IP: + return !memcmp(a1->ip, a2->ip, 4); + case game::netadrtype_t::NA_BROADCAST: + return true; + default: + break; + } + } + + return false; + } + + int net_compare_address(const game::netadr_s* a1, const game::netadr_s* a2) + { + return net_compare_base_address(a1, a2) && a1->port == a2->port; + } + + void reconnect_migratated_client(void*, game::netadr_s* from, const int, const int, const char*, + const char*, bool) + { + // This happens when a client tries to rejoin after being recently disconnected, OR by a duplicated guid + // We don't want this to do anything. It decides to crash seemingly randomly + // Rather than try and let the player in, just tell them they are a duplicate player and reject connection + game::NET_OutOfBandPrint(game::NS_SERVER, from, "error\nYou are already connected to the server."); + } + } + + void on(const std::string& command, const callback& callback) + { + get_callbacks()[utils::string::to_lower(command)] = callback; + } + + int dw_send_to_stub(const int size, const char* src, game::netadr_s* a3) + { + sockaddr s = {}; + game::NetadrToSockadr(a3, &s); + return sendto(*game::query_socket, src, size, 0, &s, 16) >= 0; + } + + void send(const game::netadr_s& address, const std::string& command, const std::string& data, const char separator) + { + std::string packet = "\xFF\xFF\xFF\xFF"; + packet.append(command); + packet.push_back(separator); + packet.append(data); + + send_data(address, packet); + } + + void send_data(const game::netadr_s& address, const std::string& data) + { + auto size = static_cast(data.size()); + if (address.type == game::NA_LOOPBACK) + { + // TODO: Fix this for loopback + if (size > 1280) + { + console::error("Packet was too long. Truncated!\n"); + size = 1280; + } + + game::NET_SendLoopPacket(game::NS_CLIENT1, size, data.data(), &address); + } + else + { + game::Sys_SendPacket(size, data.data(), &address); + } + } + + bool are_addresses_equal(const game::netadr_s& a, const game::netadr_s& b) + { + return net_compare_address(&a, &b); + } + + const char* net_adr_to_string(const game::netadr_s& a) + { + if (a.type == game::netadrtype_t::NA_LOOPBACK) + { + return "loopback"; + } + + if (a.type == game::netadrtype_t::NA_BOT) + { + return "bot"; + } + + if (a.type == game::netadrtype_t::NA_IP || a.type == game::netadrtype_t::NA_BROADCAST) + { + if (a.port) + { + return utils::string::va("%u.%u.%u.%u:%u", a.ip[0], a.ip[1], a.ip[2], a.ip[3], htons(a.port)); + } + + return utils::string::va("%u.%u.%u.%u", a.ip[0], a.ip[1], a.ip[2], a.ip[3]); + } + + return "bad"; + } + + game::dvar_t* register_netport_stub(const char* dvarName, int value, int min, int max, unsigned int flags, + const char* description) + { + auto dvar = game::Dvar_RegisterInt("net_port", 27016, 0, 0xFFFFu, game::DVAR_FLAG_LATCHED, "Network port"); + + // read net_port from command line + command::read_startup_variable("net_port"); + + return dvar; + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + { + if (game::environment::is_sp()) + { + return; + } + + // redirect dw_sendto to raw socket + //utils::hook::jump(0x1404D850A, reinterpret_cast(0x1404D849A)); + utils::hook::call(0x1404D851F, dw_send_to_stub); + utils::hook::jump(game::Sys_SendPacket, dw_send_to_stub); + + // intercept command handling + utils::hook::jump(0x14020A175, utils::hook::assemble(handle_command_stub), true); + + // handle xuid without secure connection + utils::hook::nop(0x14043FFF8, 6); + + utils::hook::jump(0x1403DA700, net_compare_address); + utils::hook::jump(0x1403DA750, net_compare_base_address); + + // don't establish secure conenction + utils::hook::set(0x140232BBD, 0xEB); + utils::hook::set(0x140232C9A, 0xEB); + utils::hook::set(0x140232F8D, 0xEB); + utils::hook::set(0x14020862F, 0xEB); + + // ignore unregistered connection + utils::hook::jump(0x140439EA9, reinterpret_cast(0x140439E28)); + utils::hook::set(0x140439E9E, 0xEB); + + // disable xuid verification + utils::hook::set(0x140022319, 0xEB); + utils::hook::set(0x140022334, 0xEB); + + // disable xuid verification + utils::hook::nop(0x14043CC4C, 2); + utils::hook::set(0x14043CCA8, 0xEB); + + // ignore configstring mismatch + utils::hook::set(0x140211610, 0xEB); + + // ignore dw handle in SV_PacketEvent + utils::hook::set(0x140442F6D, 0xEB); + utils::hook::call(0x140442F61, &net_compare_address); + + // ignore dw handle in SV_FindClientByAddress + utils::hook::set(0x14044256D, 0xEB); + utils::hook::call(0x140442561, &net_compare_address); + + // ignore dw handle in SV_DirectConnect + utils::hook::set(0x140439BA8, 0xEB); + utils::hook::set(0x140439DA5, 0xEB); + utils::hook::call(0x140439B9B, &net_compare_address); + utils::hook::call(0x140439D98, &net_compare_address); + + // increase cl_maxpackets + dvars::override::register_int("cl_maxpackets", 1000, 1, 1000, game::DVAR_FLAG_SAVED); + + // increase snaps + dvars::override::register_int("sv_remote_client_snapshot_msec", 33, 33, 100, game::DVAR_FLAG_NONE); + + // ignore impure client + utils::hook::jump(0x14043AC0D, reinterpret_cast(0x14043ACA3)); + + // don't send checksum + utils::hook::set(0x1404D84C0, 0); + utils::hook::set(0x1404D8519, 0); + + // don't read checksum + utils::hook::jump(0x1404D842B, 0x1404D8453); + + // don't try to reconnect client + utils::hook::call(0x140439D4D, reconnect_migratated_client); + utils::hook::nop(0x140439D28, 4); // this crashes when reconnecting for some reason + + // allow server owner to modify net_port before the socket bind + utils::hook::call(0x1404D7A3D, register_netport_stub); + utils::hook::call(0x1404D7E28, register_netport_stub); + + // increase allowed packet size + const auto max_packet_size = 0x20000; + utils::hook::set(0x1403DADE6, max_packet_size); + utils::hook::set(0x1403DAE20, max_packet_size); + utils::hook::set(0x1403DAD14, max_packet_size); + utils::hook::set(0x1403DAD35, max_packet_size); + + // ignore built in "print" oob command and add in our own + utils::hook::set(0x14020A723, 0xEB); + on("print", [](const game::netadr_s&, const std::string& data) + { + console::info("%s", data.data()); + }); + } + } + }; +} + +REGISTER_COMPONENT(network::component) diff --git a/src/client/component/network.hpp b/src/client/component/network.hpp new file mode 100644 index 0000000..4e6ae49 --- /dev/null +++ b/src/client/component/network.hpp @@ -0,0 +1,47 @@ +#pragma once + +namespace network +{ + using callback = std::function; + + void on(const std::string& command, const callback& callback); + void send(const game::netadr_s& address, const std::string& command, const std::string& data = {}, char separator = ' '); + void send_data(const game::netadr_s& address, const std::string& data); + + bool are_addresses_equal(const game::netadr_s& a, const game::netadr_s& b); + + const char* net_adr_to_string(const game::netadr_s& a); +} + +inline bool operator==(const game::netadr_s& a, const game::netadr_s& b) +{ + return network::are_addresses_equal(a, b); // +} + +inline bool operator!=(const game::netadr_s& a, const game::netadr_s& b) +{ + return !(a == b); // +} + +namespace std +{ + template <> + struct equal_to + { + using result_type = bool; + + bool operator()(const game::netadr_s& lhs, const game::netadr_s& rhs) const + { + return network::are_addresses_equal(lhs, rhs); + } + }; + + template <> + struct hash + { + size_t operator()(const game::netadr_s& x) const noexcept + { + return hash()(*reinterpret_cast(&x.ip[0])) ^ hash()(x.port); + } + }; +} diff --git a/src/client/component/notifies.cpp b/src/client/component/notifies.cpp new file mode 100644 index 0000000..6a449d9 --- /dev/null +++ b/src/client/component/notifies.cpp @@ -0,0 +1,208 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "command.hpp" +#include "scheduler.hpp" +#include "notifies.hpp" +#include "scripting.hpp" +#include "game_log.hpp" + +#include + +namespace notifies +{ + bool hook_enabled = true; + + namespace + { + struct gsc_hook + { + const char* target_pos{}; + }; + + std::unordered_map vm_execute_hooks; + utils::hook::detour scr_player_killed_hook; + utils::hook::detour scr_player_damage_hook; + + char empty_function[2] = {0x32, 0x34}; // CHECK_CLEAR_PARAMS, END + const char* target_function = nullptr; + + + + void client_command_stub(const int client_num) + { + if (game::mp::g_entities[client_num].client == nullptr) + { + return; + } + + command::params_sv params; + + if (params[0] == "say"s || params[0] == "say_team"s) + { + std::string message(params.join(1)); + + auto msg_index = 0; + if (message[msg_index] == '\x1F') + { + msg_index = 1; + } + + auto hidden = false; + if (message[msg_index] == '/') + { + hidden = true; + + if (msg_index == 1) + { + // Overwrite / with \x1F only if present + message[msg_index] = message[msg_index - 1]; + } + // Skip over the first character + message.erase(message.begin()); + } + + scheduler::once([params, message, msg_index, client_num] + { + const auto* guid = game::SV_GetGuid(client_num); + const auto* name = game::mp::svs_clients[client_num].name; + + game_log::g_log_printf("%s;%s;%i;%s;%s\n", + params[0], + guid, + client_num, + name, + message.data() + ); + + }, scheduler::pipeline::server); + + if (hidden) + { + return; + } + } + + // ClientCommand + utils::hook::invoke(0x1402E98F0, client_num); + } + + unsigned int local_id_to_entity(unsigned int local_id) + { + const auto variable = game::scr_VarGlob->objectVariableValue[local_id]; + return variable.u.f.next; + } + + bool execute_vm_hook(const char* pos) + { + if (!vm_execute_hooks.contains(pos)) + { + hook_enabled = true; + return false; + } + + if (!hook_enabled && pos > reinterpret_cast(vm_execute_hooks.size())) + { + hook_enabled = true; + return false; + } + + const auto hook = vm_execute_hooks[pos]; + target_function = hook.target_pos; + + return true; + } + + void vm_execute_stub(utils::hook::assembler& a) + { + const auto replace = a.newLabel(); + const auto end = a.newLabel(); + + a.pushad64(); + + a.mov(rcx, r14); + a.call_aligned(execute_vm_hook); + + a.cmp(al, 0); + a.jne(replace); + + a.popad64(); + a.jmp(end); + + a.bind(end); + + a.movzx(r15d, byte_ptr(r14)); + a.inc(r14); + a.lea(eax, dword_ptr(r15, -0x17)); + a.mov(dword_ptr(rbp, 0x68), r15d); + + a.jmp(0x1403FA143); + + a.bind(replace); + + a.popad64(); + a.mov(rax, qword_ptr(reinterpret_cast(&target_function))); + a.mov(r14, rax); + a.jmp(end); + } + } + + void clear_callbacks() + { + vm_execute_hooks.clear(); + } + + void enable_vm_execute_hook() + { + hook_enabled = true; + } + + void disable_vm_execute_hook() + { + hook_enabled = false; + } + + void set_gsc_hook(const char* source, const char* target) + { + gsc_hook hook; + hook.target_pos = target; + vm_execute_hooks[source] = hook; + } + + void clear_hook(const char* pos) + { + vm_execute_hooks.erase(pos); + } + + std::size_t get_hook_count() + { + return vm_execute_hooks.size(); + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) + { + return; + } + + utils::hook::call(0x14043A9AD, client_command_stub); + + utils::hook::jump(0x1403FA134, utils::hook::assemble(vm_execute_stub), true); + + scripting::on_shutdown([](bool free_scripts) + { + if (free_scripts) + { + vm_execute_hooks.clear(); + } + }); + } + }; +} + +REGISTER_COMPONENT(notifies::component) diff --git a/src/client/component/notifies.hpp b/src/client/component/notifies.hpp new file mode 100644 index 0000000..0016693 --- /dev/null +++ b/src/client/component/notifies.hpp @@ -0,0 +1,15 @@ +#pragma once + +namespace notifies +{ + extern bool hook_enabled; + + void set_gsc_hook(const char* source, const char* target); + void clear_hook(const char* pos); + std::size_t get_hook_count(); + + void clear_callbacks(); + + void enable_vm_execute_hook(); + void disable_vm_execute_hook(); +} diff --git a/src/client/component/party.cpp b/src/client/component/party.cpp new file mode 100644 index 0000000..5e06767 --- /dev/null +++ b/src/client/component/party.cpp @@ -0,0 +1,638 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "party.hpp" +#include "console.hpp" +#include "command.hpp" +#include "network.hpp" +#include "scheduler.hpp" +#include "server_list.hpp" + +#include "steam/steam.hpp" + +#include +#include +#include +#include + +#include + +namespace party +{ + namespace + { + struct + { + game::netadr_s host{}; + std::string challenge{}; + bool hostDefined{false}; + } connect_state; + + std::string sv_motd; + + int sv_maxclients; + + void perform_game_initialization() + { + command::execute("onlinegame 1", true); + command::execute("xstartprivateparty", true); + command::execute("xblive_privatematch 1", true); + command::execute("startentitlements", true); + } + + void connect_to_party(const game::netadr_s& target, const std::string& mapname, const std::string& gametype) + { + if (game::environment::is_sp()) + { + return; + } + + if (game::Live_SyncOnlineDataFlags(0) != 0) + { + // initialize the game after onlinedataflags is 32 (workaround) + if (game::Live_SyncOnlineDataFlags(0) == 32) + { + scheduler::once([=]() + { + command::execute("xstartprivateparty", true); + command::execute("disconnect", true); // 32 -> 0 + + connect_to_party(target, mapname, gametype); + }, scheduler::pipeline::main, 1s); + return; + } + else + { + scheduler::once([=]() + { + connect_to_party(target, mapname, gametype); + }, scheduler::pipeline::main, 1s); + return; + } + } + + perform_game_initialization(); + + // exit from virtuallobby + reinterpret_cast(0x14020EB90)(); + + // CL_ConnectFromParty + char session_info[0x100] = {}; + reinterpret_cast(0x140209360)( + 0, session_info, &target, mapname.data(), gametype.data()); + } + + std::string get_dvar_string(const std::string& dvar) + { + const auto* dvar_value = game::Dvar_FindVar(dvar.data()); + if (dvar_value && dvar_value->current.string) + { + return {dvar_value->current.string}; + } + + return {}; + } + + bool get_dvar_bool(const std::string& dvar) + { + const auto* dvar_value = game::Dvar_FindVar(dvar.data()); + if (dvar_value && dvar_value->current.enabled) + { + return dvar_value->current.enabled; + } + + return false; + } + + void didyouknow_stub(const char* dvar_name, const char* string) + { + if (!party::sv_motd.empty()) + { + string = party::sv_motd.data(); + } + + // This function either does Dvar_SetString or Dvar_RegisterString for the given dvar + reinterpret_cast(0x1404C39B0)(dvar_name, string); + } + + void disconnect_stub() + { + if (!game::VirtualLobby_Loaded()) + { + if (game::CL_IsCgameInitialized()) + { + game::CL_ForwardCommandToServer(0, "disconnect"); + game::CL_WritePacket(0); + } + + game::CL_Disconnect(0); + } + } + + utils::hook::detour cl_disconnect_hook; + + void cl_disconnect_stub(int a1) + { + clear_sv_motd(); + cl_disconnect_hook.invoke(a1); + } + + const auto drop_reason_stub = utils::hook::assemble([](utils::hook::assembler& a) + { + a.mov(rdx, rdi); + a.mov(ecx, 2); + a.jmp(0x140209DD9); + }); + } + + void clear_sv_motd() + { + sv_motd.clear(); + } + + int get_client_num_by_name(const std::string& name) + { + for (auto i = 0; !name.empty() && i < *game::mp::svs_numclients; ++i) + { + if (game::mp::g_entities[i].client) + { + char client_name[16] = {0}; + strncpy_s(client_name, game::mp::g_entities[i].client->name, sizeof(client_name)); + game::I_CleanStr(client_name); + + if (client_name == name) + { + return i; + } + } + } + return -1; + } + + void reset_connect_state() + { + connect_state = {}; + } + + int get_client_count() + { + auto count = 0; + for (auto i = 0; i < *game::mp::svs_numclients; ++i) + { + if (game::mp::svs_clients[i].header.state >= 1) + { + ++count; + } + } + + return count; + } + + int get_bot_count() + { + auto count = 0; + for (auto i = 0; i < *game::mp::svs_numclients; ++i) + { + if (game::mp::svs_clients[i].header.state >= 1 && + game::SV_BotIsBot(i)) + { + ++count; + } + } + + return count; + } + + game::netadr_s& get_target() + { + return connect_state.host; + } + + void connect(const game::netadr_s& target) + { + if (game::environment::is_sp()) + { + return; + } + + command::execute("lui_open_popup popup_acceptinginvite", false); + + connect_state.host = target; + connect_state.challenge = utils::cryptography::random::get_challenge(); + connect_state.hostDefined = true; + + network::send(target, "getInfo", connect_state.challenge); + } + + void start_map(const std::string& mapname) + { + if (game::Live_SyncOnlineDataFlags(0) > 32) + { + scheduler::once([=]() + { + command::execute("map " + mapname, false); + }, scheduler::pipeline::main, 1s); + } + else + { + if (!game::SV_MapExists(mapname.data())) + { + console::info("Map '%s' doesn't exist.\n", mapname.data()); + return; + } + + auto* current_mapname = game::Dvar_FindVar("mapname"); + if (current_mapname && utils::string::to_lower(current_mapname->current.string) == + utils::string::to_lower(mapname) && (game::SV_Loaded() && !game::VirtualLobby_Loaded())) + { + console::info("Restarting map: %s\n", mapname.data()); + command::execute("map_restart", false); + return; + } + + if (!game::environment::is_dedi()) + { + if (game::SV_Loaded()) + { + const auto* args = "Leave"; + game::UI_RunMenuScript(0, &args); + } + + perform_game_initialization(); + } + + console::info("Starting map: %s\n", mapname.data()); + + auto* gametype = game::Dvar_FindVar("g_gametype"); + if (gametype && gametype->current.string) + { + command::execute(utils::string::va("ui_gametype %s", gametype->current.string), true); + } + command::execute(utils::string::va("ui_mapname %s", mapname.data()), true); + + /*auto* maxclients = game::Dvar_FindVar("sv_maxclients"); + if (maxclients) + { + command::execute(utils::string::va("ui_maxclients %i", maxclients->current.integer), true); + command::execute(utils::string::va("party_maxplayers %i", maxclients->current.integer), true); + }*/ + + const auto* args = "StartServer"; + game::UI_RunMenuScript(0, &args); + } + } + + int server_client_count() + { + return sv_maxclients; + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) + { + return; + } + + // hook disconnect command function + utils::hook::jump(0x14020A010, disconnect_stub); + + // detour CL_Disconnect to clear motd + cl_disconnect_hook.create(0x140209EC0, cl_disconnect_stub); + + if (game::environment::is_mp()) + { + // show custom drop reason + utils::hook::nop(0x140209D5C, 13); + utils::hook::jump(0x140209D5C, drop_reason_stub, true); + } + // enable custom kick reason in GScr_KickPlayer + utils::hook::set(0x14032ED80, 0xEB); + + command::add("map", [](const command::params& argument) + { + if (argument.size() != 2) + { + return; + } + + start_map(argument[1]); + }); + + command::add("map_restart", []() + { + if (!game::SV_Loaded() || game::VirtualLobby_Loaded()) + { + return; + } + *reinterpret_cast(0x1488692B0) = 1; // sv_map_restart + *reinterpret_cast(0x1488692B4) = 1; // sv_loadScripts + *reinterpret_cast(0x1488692B8) = 0; // sv_migrate + reinterpret_cast(0x140437460)(0); // SV_CheckLoadGame + }); + + command::add("fast_restart", []() + { + if (game::SV_Loaded() && !game::VirtualLobby_Loaded()) + { + game::SV_FastRestart(0); + } + }); + + command::add("reconnect", [](const command::params& argument) + { + if (!connect_state.hostDefined) + { + console::info("Cannot connect to server.\n"); + return; + } + + if (game::CL_IsCgameInitialized()) + { + command::execute("disconnect"); + command::execute("reconnect"); + } + else + { + connect(connect_state.host); + } + }); + + command::add("connect", [](const command::params& argument) + { + if (argument.size() != 2) + { + return; + } + + game::netadr_s target{}; + if (game::NET_StringToAdr(argument[1], &target)) + { + connect(target); + } + }); + + command::add("kickClient", [](const command::params& params) + { + if (params.size() < 2) + { + console::info("usage: kickClient , (optional)\n"); + return; + } + + if (!game::SV_Loaded() || game::VirtualLobby_Loaded()) + { + return; + } + + std::string reason; + if (params.size() > 2) + { + reason = params.join(2); + } + if (reason.empty()) + { + reason = "EXE_PLAYERKICKED"; + } + + const auto client_num = atoi(params.get(1)); + if (client_num < 0 || client_num >= *game::mp::svs_numclients) + { + return; + } + + scheduler::once([client_num, reason]() + { + game::SV_KickClientNum(client_num, reason.data()); + }, scheduler::pipeline::server); + }); + + command::add("kick", [](const command::params& params) + { + if (params.size() < 2) + { + console::info("usage: kick , (optional)\n"); + return; + } + + if (!game::SV_Loaded() || game::VirtualLobby_Loaded()) + { + return; + } + + std::string reason; + if (params.size() > 2) + { + reason = params.join(2); + } + if (reason.empty()) + { + reason = "EXE_PLAYERKICKED"; + } + + const std::string name = params.get(1); + if (name == "all"s) + { + for (auto i = 0; i < *game::mp::svs_numclients; ++i) + { + scheduler::once([i, reason] + { + game::SV_KickClientNum(i, reason.data()); + }, scheduler::pipeline::server); + } + return; + } + + const auto client_num = get_client_num_by_name(name); + if (client_num < 0 || client_num >= *game::mp::svs_numclients) + { + return; + } + + scheduler::once([client_num, reason]() + { + game::SV_KickClientNum(client_num, reason.data()); + }, scheduler::pipeline::server); + }); + + scheduler::once([]() + { + game::Dvar_RegisterString("sv_sayName", "console", game::DvarFlags::DVAR_FLAG_NONE, + "The name to pose as for 'say' commands"); + }, scheduler::pipeline::main); + + command::add("tell", [](const command::params& params) + { + if (params.size() < 3) + { + return; + } + + const auto client_num = atoi(params.get(1)); + const auto message = params.join(2); + const auto* const name = game::Dvar_FindVar("sv_sayName")->current.string; + + game::SV_GameSendServerCommand(client_num, game::SV_CMD_CAN_IGNORE, + utils::string::va("%c \"%s: %s\"", 84, name, message.data())); + printf("%s -> %i: %s\n", name, client_num, message.data()); + }); + + command::add("tellraw", [](const command::params& params) + { + if (params.size() < 3) + { + return; + } + + const auto client_num = atoi(params.get(1)); + const auto message = params.join(2); + + game::SV_GameSendServerCommand(client_num, game::SV_CMD_CAN_IGNORE, + utils::string::va("%c \"%s\"", 84, message.data())); + printf("%i: %s\n", client_num, message.data()); + }); + + command::add("say", [](const command::params& params) + { + if (params.size() < 2) + { + return; + } + + const auto message = params.join(1); + const auto* const name = game::Dvar_FindVar("sv_sayName")->current.string; + + game::SV_GameSendServerCommand( + -1, game::SV_CMD_CAN_IGNORE, utils::string::va("%c \"%s: %s\"", 84, name, message.data())); + printf("%s: %s\n", name, message.data()); + }); + + command::add("sayraw", [](const command::params& params) + { + if (params.size() < 2) + { + return; + } + + const auto message = params.join(1); + + game::SV_GameSendServerCommand(-1, game::SV_CMD_CAN_IGNORE, + utils::string::va("%c \"%s\"", 84, message.data())); + printf("%s\n", message.data()); + }); + + utils::hook::call(0x14048811C, didyouknow_stub); // allow custom didyouknow based on sv_motd + + network::on("getInfo", [](const game::netadr_s& target, const std::string& data) + { + utils::info_string info{}; + info.set("challenge", data); + info.set("gamename", "S1"); + info.set("hostname", get_dvar_string("sv_hostname")); + info.set("gametype", get_dvar_string("g_gametype")); + info.set("sv_motd", get_dvar_string("sv_motd")); + info.set("xuid", utils::string::va("%llX", steam::SteamUser()->GetSteamID().bits)); + info.set("mapname", get_dvar_string("mapname")); + info.set("isPrivate", get_dvar_string("g_password").empty() ? "0" : "1"); + info.set("clients", std::to_string(get_client_count())); + info.set("bots", std::to_string(get_bot_count())); + info.set("sv_maxclients", std::to_string(*game::mp::svs_numclients)); + info.set("protocol", std::to_string(PROTOCOL)); + info.set("playmode", utils::string::va("%i", game::Com_GetCurrentCoDPlayMode())); + info.set("sv_running", std::to_string(get_dvar_bool("sv_running"))); + info.set("dedicated", std::to_string(get_dvar_bool("dedicated"))); + info.set("shortversion", SHORTVERSION); + + network::send(target, "infoResponse", info.build(), '\n'); + }); + + if (game::environment::is_dedi()) + { + return; + } + + network::on("infoResponse", [](const game::netadr_s& target, const std::string& data) + { + const utils::info_string info(data); + server_list::handle_info_response(target, info); + + if (connect_state.host != target) + { + return; + } + + if (info.get("challenge") != connect_state.challenge) + { + const auto* error_msg = "Invalid challenge."; + console::error("%s\n", error_msg); + game::Com_Error(game::ERR_DROP, "%s", error_msg); + return; + } + + const auto gamename = info.get("gamename"); + if (gamename != "S1"s) + { + const auto* error_msg = "Invalid gamename."; + console::error("%s\n", error_msg); + game::Com_Error(game::ERR_DROP, "%s", error_msg); + return; + } + + const auto playmode = info.get("playmode"); + if (std::atoi(playmode.data()) != game::Com_GetCurrentCoDPlayMode()) + { + const auto* error_msg = "Invalid playmode."; + console::error("%s\n", error_msg); + game::Com_Error(game::ERR_DROP, "%s", error_msg); + return; + } + + const auto sv_running = info.get("sv_running"); + if (sv_running != "1"s) + { + const auto* error_msg = "Server not running."; + console::error("%s\n", error_msg); + game::Com_Error(game::ERR_DROP, "%s", error_msg); + return; + } + + const auto mapname = info.get("mapname"); + if (mapname.empty()) + { + const auto* error_msg = "Invalid map."; + console::error("%s\n", error_msg); + game::Com_Error(game::ERR_DROP, "%s", error_msg); + return; + } + + const auto gametype = info.get("gametype"); + if (gametype.empty()) + { + const auto* error_msg = "Invalid gametype."; + console::error("%s\n", error_msg); + game::Com_Error(game::ERR_DROP, "%s", error_msg); + return; + } + + sv_motd = info.get("sv_motd"); + + try + { + sv_maxclients = std::stoi(info.get("sv_maxclients")); + } + catch([[maybe_unused]] const std::exception& ex) + { + sv_maxclients = 1; + } + + connect_to_party(target, mapname, gametype); + }); + } + }; +} + +REGISTER_COMPONENT(party::component) diff --git a/src/client/component/party.hpp b/src/client/component/party.hpp new file mode 100644 index 0000000..4c45014 --- /dev/null +++ b/src/client/component/party.hpp @@ -0,0 +1,19 @@ +#pragma once + +namespace party +{ + void reset_connect_state(); + + void connect(const game::netadr_s& target); + void start_map(const std::string& mapname); + + void clear_sv_motd(); + int server_client_count(); + + [[nodiscard]] int get_client_num_by_name(const std::string& name); + + [[nodiscard]] int get_client_count(); + [[nodiscard]] int get_bot_count(); + + [[nodiscard]] game::netadr_s& get_target(); +} diff --git a/src/client/component/patches.cpp b/src/client/component/patches.cpp new file mode 100644 index 0000000..6408da2 --- /dev/null +++ b/src/client/component/patches.cpp @@ -0,0 +1,322 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include "command.hpp" +#include "console.hpp" +#include "dvars.hpp" +#include "fastfiles.hpp" +#include "filesystem.hpp" +#include "scheduler.hpp" + +#include +#include + +#include + +namespace patches +{ + namespace + { + utils::hook::detour live_get_local_client_name_hook; + + const char* live_get_local_client_name() + { + return game::Dvar_FindVar("name")->current.string; + } + + utils::hook::detour sv_kick_client_num_hook; + + void sv_kick_client_num(const int client_num, const char* reason) + { + // Don't kick bot to equalize team balance. + if (reason == "EXE_PLAYERKICKED_BOT_BALANCE"s) + { + return; + } + return sv_kick_client_num_hook.invoke(client_num, reason); + } + + std::string get_login_username() + { + char username[UNLEN + 1]; + DWORD username_len = UNLEN + 1; + if (!GetUserNameA(username, &username_len)) + { + return "Unknown Soldier"; + } + + return std::string{username, username_len - 1}; + } + + utils::hook::detour com_register_dvars_hook; + + void com_register_dvars_stub() + { + if (game::environment::is_mp()) + { + // Make name save + game::Dvar_RegisterString("name", get_login_username().data(), game::DVAR_FLAG_SAVED, "Player name."); + + // Disable data validation error popup + game::Dvar_RegisterInt("data_validation_allow_drop", 0, 0, 0, game::DVAR_FLAG_NONE, ""); + } + + return com_register_dvars_hook.invoke(); + } + + game::dvar_t* register_com_maxfps_stub(const char* name, int /*value*/, int /*min*/, int /*max*/, const unsigned int /*flags*/, const char* description) + { + return game::Dvar_RegisterInt(name, 0, 0, 1000, game::DVAR_FLAG_SAVED, description); + } + + game::dvar_t* register_cg_fov_stub(const char* name, float value, float min, float /*max*/, const unsigned int /*flags*/, const char* description) + { + return game::Dvar_RegisterFloat(name, value, min, 160, game::DVAR_FLAG_SAVED, description); + } + + game::dvar_t* register_fovscale_stub(const char* name, float /*value*/, float /*min*/, float /*max*/, unsigned int /*flags*/, const char* desc) + { + return game::Dvar_RegisterFloat(name, 1.0f, 0.2f, 5.0f, game::DVAR_FLAG_SAVED, desc); + } + + int dvar_command_patch() // game makes this return an int and compares with eax instead of al -_- + { + const command::params args{}; + + if (args.size() <= 0) + return 0; + + auto* dvar = game::Dvar_FindVar(args.get(0)); + if (dvar) + { + if (args.size() == 1) + { + const auto* const current = game::Dvar_ValueToString(dvar, dvar->current); + const auto* const reset = game::Dvar_ValueToString(dvar, dvar->reset); + console::info("\"%s\" is: \"%s^7\" default: \"%s^7\"\n", dvar->name, current, reset); + console::info(" %s\n", dvars::dvar_get_domain(dvar->type, dvar->domain).data()); + } + else + { + char command[0x1000] = {0}; + game::Dvar_GetCombinedString(command, 1); + game::Dvar_SetCommand(args.get(0), command); + } + + return 1; + } + + return 0; + } + + char* db_read_raw_file_stub(const char* filename, char* buf, const int size) + { + std::string file_name = filename; + if (file_name.find(".cfg") == std::string::npos) + { + file_name.append(".cfg"); + } + + const auto file = filesystem::file(file_name); + if (file.exists()) + { + snprintf(buf, size, "%s\n", file.get_buffer().data()); + return buf; + } + + return game::DB_ReadRawFile(filename, buf, size); + } + + void aim_assist_add_to_target_list(void* a1, void* a2) + { + if (!dvars::aimassist_enabled->current.enabled) + return; + + game::AimAssist_AddToTargetList(a1, a2); + } + + void missing_content_error_stub(int /*mode*/, const char* /*message*/) + { + game::Com_Error(game::ERR_DROP, utils::string::va("MISSING FILE\n%s.ff", fastfiles::get_current_fastfile().data())); + } + + void bsp_sys_error_stub(const char* error, const char* arg1) + { + if (game::environment::is_dedi()) + { + game::Sys_Error(error, arg1); + } + else + { + scheduler::once([]() + { + command::execute("reconnect"); + }, scheduler::pipeline::main, 1s); + game::Com_Error(game::ERR_DROP, error, arg1); + } + } + + void set_client_dvar_from_server_stub(void* a1, void* a2, const char* dvar, const char* value) + { + if (utils::string::to_lower(dvar) == "cg_fov") + { + return; + } + + // CG_SetClientDvarFromServer + reinterpret_cast(0x1401BF0A0)(a1, a2, dvar, value); + } + + utils::hook::detour cmd_lui_notify_server_hook; + void cmd_lui_notify_server_stub(game::mp::gentity_s* ent) + { + command::params_sv params{}; + const auto menu_id = atoi(params.get(1)); + const auto client = &game::mp::svs_clients[ent->s.number]; + + // 22 => "end_game" + if (menu_id == 22 && client->header.remoteAddress.type != game::NA_LOOPBACK) + { + return; + } + + cmd_lui_notify_server_hook.invoke(ent); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + // Increment ref-count on these + LoadLibraryA("PhysXDevice64.dll"); + LoadLibraryA("PhysXUpdateLoader64.dll"); + + // Register dvars + com_register_dvars_hook.create(SELECT_VALUE(0x1402F86F0, 0x1403CF7F0), &com_register_dvars_stub); + + // Unlock fps in main menu + utils::hook::set(SELECT_VALUE(0x140144F5B, 0x140213C3B), 0xEB); + + // Unlock com_maxfps + utils::hook::call(SELECT_VALUE(0x1402F8726, 0x1403CF8CA), register_com_maxfps_stub); + + // Unlock cg_fov + utils::hook::call(SELECT_VALUE(0x1400EF830, 0x140014F66), register_cg_fov_stub); + + // Unlock cg_fovscale + utils::hook::call(SELECT_VALUE(0x140227599, 0x140014F9B), register_fovscale_stub); + + // Patch Dvar_Command to print out values how CoD4 does it + utils::hook::jump(SELECT_VALUE(0x1402FB4C0, 0x1403D31C0), dvar_command_patch); + + // Show missing fastfiles + utils::hook::call(SELECT_VALUE(0x1401817AF, 0x1402742A8), missing_content_error_stub); + + // Allow executing custom cfg files with the "exec" command + utils::hook::call(SELECT_VALUE(0x1402EE225, 0x1403AF7CD), db_read_raw_file_stub); + + // Fix mouse lag + utils::hook::nop(SELECT_VALUE(0x14038FAFF, 0x1404DB1AF), 6); + scheduler::loop([]() + { + SetThreadExecutionState(ES_DISPLAY_REQUIRED); + }, scheduler::pipeline::main); + + // Allow kbam input when gamepad is enabled + utils::hook::nop(SELECT_VALUE(0x14013EF83, 0x140206DB3), 2); + utils::hook::nop(SELECT_VALUE(0x14013CBAC, 0x140204710), 6); + + if (game::environment::is_sp()) + { + patch_sp(); + } + else + { + patch_mp(); + } + } + + static void patch_mp() + { + // Use name dvar + live_get_local_client_name_hook.create(0x1404D47F0, &live_get_local_client_name); + + // Patch SV_KickClientNum + sv_kick_client_num_hook.create(0x1404377A0, &sv_kick_client_num); + + // block changing name in-game + utils::hook::set(0x140438850, 0xC3); + + // patch "Couldn't find the bsp for this map." error to not be fatal in mp + utils::hook::call(0x14026E63B, bsp_sys_error_stub); + + // client side aim assist dvar + dvars::aimassist_enabled = game::Dvar_RegisterBool("aimassist_enabled", true, game::DVAR_FLAG_SAVED, "Enables aim assist for controllers"); + utils::hook::call(0x140003609, aim_assist_add_to_target_list); + + // isProfanity + utils::hook::set(0x14023BDC0, 0xC3C033); + + // disable emblems + dvars::override::register_int("emblems_active", 0, 0, 0, game::DVAR_FLAG_NONE); + utils::hook::set(0x140479590, 0xC3); // don't register commands + + // disable elite_clan + dvars::override::register_int("elite_clan_active", 0, 0, 0, game::DVAR_FLAG_NONE); + utils::hook::set(0x14054AB20, 0xC3); // don't register commands + + // disable codPointStore + dvars::override::register_int("codPointStore_enabled", 0, 0, 0, game::DVAR_FLAG_NONE); + + // don't register every replicated dvar as a network dvar + utils::hook::nop(0x1403534BE, 5); // dvar_foreach + + // Patch "Server is on a different version" + utils::hook::inject(0x1404398B2, VERSION); + + // prevent servers overriding our fov + utils::hook::call(0x1401BB782, set_client_dvar_from_server_stub); + utils::hook::nop(0x1403D1195, 5); + utils::hook::nop(0x1400FAE36, 5); + utils::hook::set(0x14019B9B9, 0xEB); + + // some anti tamper thing that kills performance + dvars::override::register_int("dvl", 0, 0, 0, game::DVAR_FLAG_READ); + + // unlock safeArea_* + utils::hook::jump(0x140219F5E, 0x140219F67); + utils::hook::jump(0x140219F80, 0x140219F8E); + dvars::override::register_float("safeArea_adjusted_horizontal", 1, 0, 1, game::DVAR_FLAG_SAVED); + dvars::override::register_float("safeArea_adjusted_vertical", 1, 0, 1, game::DVAR_FLAG_SAVED); + dvars::override::register_float("safeArea_horizontal", 1, 0, 1, game::DVAR_FLAG_SAVED); + dvars::override::register_float("safeArea_vertical", 1, 0, 1, game::DVAR_FLAG_SAVED); + + // move chat position on the screen above menu splashes + dvars::override::register_vector2("cg_hudChatPosition", 5, 170, 0, 640, game::DVAR_FLAG_SAVED); + + // allow servers to check for new packages more often + dvars::override::register_int("sv_network_fps", 1000, 20, 1000, game::DVAR_FLAG_SAVED); + + // Massively increate timeouts + dvars::override::register_int("cl_timeout", 90, 90, 1800, game::DVAR_FLAG_NONE); // Seems unused + dvars::override::register_int("sv_timeout", 90, 90, 1800, game::DVAR_FLAG_NONE); // 30 - 0 - 1800 + dvars::override::register_int("cl_connectTimeout", 120, 120, 1800, game::DVAR_FLAG_NONE); // Seems unused + dvars::override::register_int("sv_connectTimeout", 120, 120, 1800, game::DVAR_FLAG_NONE); // 60 - 0 - 1800 + + game::Dvar_RegisterInt("scr_game_spectatetype", 1, 0, 99, game::DVAR_FLAG_REPLICATED, ""); + + // Prevent clients from ending the game as non host by sending 'end_game' lui notification + cmd_lui_notify_server_hook.create(0x1402E9390, cmd_lui_notify_server_stub); + } + + static void patch_sp() + { + } + }; +} + +REGISTER_COMPONENT(patches::component) diff --git a/src/client/component/ranked.cpp b/src/client/component/ranked.cpp new file mode 100644 index 0000000..238215b --- /dev/null +++ b/src/client/component/ranked.cpp @@ -0,0 +1,46 @@ +#include +#include "loader/component_loader.hpp" + +#include "dvars.hpp" + +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include +#include + +namespace ranked +{ + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) + { + return; + } + + if (game::environment::is_mp()) + { + dvars::override::register_bool("xblive_privatematch", false, game::DVAR_FLAG_REPLICATED); + } + + if (game::environment::is_dedi() && !utils::flags::has_flag("unranked")) + { + dvars::override::register_bool("xblive_privatematch", false, game::DVAR_FLAG_REPLICATED | game::DVAR_FLAG_WRITE); + + // Some dvar used in gsc + game::Dvar_RegisterBool("force_ranking", true, game::DVAR_FLAG_WRITE, "Force ranking"); + } + + // Always run bots, even if xblive_privatematch is 0 + utils::hook::set(0x14013A0C0, 0xC301B0); // BG_BotSystemEnabled + utils::hook::set(0x140139A60, 0xC301B0); // BG_AISystemEnabled + utils::hook::set(0x14013A080, 0xC301B0); // BG_BotFastFileEnabled + utils::hook::set(0x14013A200, 0xC301B0); // BG_BotsUsingTeamDifficulty + } + }; +} + +REGISTER_COMPONENT(ranked::component) diff --git a/src/client/component/rcon.cpp b/src/client/component/rcon.cpp new file mode 100644 index 0000000..12ca20d --- /dev/null +++ b/src/client/component/rcon.cpp @@ -0,0 +1,213 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "command.hpp" +#include "console.hpp" +#include "network.hpp" +#include "scheduler.hpp" + +#include +#include + +namespace rcon +{ + namespace + { + bool is_redirecting_ = false; + game::netadr_s redirect_target_ = {}; + std::recursive_mutex redirect_lock; + + void setup_redirect(const game::netadr_s& target) + { + std::lock_guard $(redirect_lock); + + is_redirecting_ = true; + redirect_target_ = target; + } + + void clear_redirect() + { + std::lock_guard $(redirect_lock); + + is_redirecting_ = false; + redirect_target_ = {}; + } + + void send_rcon_command(const std::string& password, const std::string& data) + { + // If you are the server, don't bother with rcon and just execute the command + if (game::Dvar_FindVar("sv_running")->current.enabled) + { + game::Cbuf_AddText(0, data.data()); + return; + } + + if (password.empty()) + { + console::info("You must login first to use RCON\n"); + return; + } + + if (*reinterpret_cast(0x1417E1690) >= 5) //clientUIActive.connectionState >= CA_CONNECTED + { + const auto target = *reinterpret_cast(0x141C7A8FC); + const auto buffer = password + " " + data; + network::send(target, "rcon", buffer); + } + else + { + console::warn("You need to be connected to a server!\n"); + } + } + + std::string build_status_buffer() + { + const auto sv_maxclients = game::Dvar_FindVar("sv_maxclients"); + const auto mapname = game::Dvar_FindVar("mapname"); + + std::string buffer{}; + buffer.append(utils::string::va("map: %s\n", mapname->current.string)); + buffer.append( + "num score bot ping guid name address qport\n"); + buffer.append( + "--- ----- --- ---- -------------------------------- ---------------- --------------------- -----\n"); + + for (int i = 0; i < sv_maxclients->current.integer; i++) + { + const auto client = &game::mp::svs_clients[i]; + + char clean_name[32] = { 0 }; + strncpy_s(clean_name, client->name, sizeof(clean_name)); + game::I_CleanStr(clean_name); + + if (client->header.state >= 1) + { + buffer.append(utils::string::va("%3i %5i %3s %s %32s %16s %21s %5i\n", + i, + game::G_GetClientScore(i), + game::SV_BotIsBot(i) ? "Yes" : "No", + (client->header.state == 2) + ? "CNCT" + : (client->header.state == 1) + ? "ZMBI" + : utils::string::va("%4i", game::SV_GetClientPing(i)), + game::SV_GetGuid(i), + clean_name, + network::net_adr_to_string(client->header.remoteAddress), + client->header.remoteAddress.port) + ); + } + } + + return buffer; + } + } + + bool message_redirect(const std::string& message) + { + std::lock_guard $(redirect_lock); + + if (is_redirecting_) + { + network::send(redirect_target_, "print", message); + return true; + } + + return false; + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) + { + return; + } + + scheduler::once([]() + { + game::Dvar_RegisterString("rcon_password", "", game::DvarFlags::DVAR_FLAG_NONE, + "The password for remote console"); + }, scheduler::pipeline::main); + + command::add("status", []() + { + const auto sv_running = game::Dvar_FindVar("sv_running"); + if (game::VirtualLobby_Loaded() || !sv_running || !sv_running->current.enabled) + { + console::error("Server is not running\n"); + return; + } + + auto status_buffer = build_status_buffer(); + console::info(status_buffer.data()); + }); + + if (!game::environment::is_dedi()) + { + command::add("rcon", [&](const command::params& params) + { + static std::string rcon_password{}; + + if (params.size() < 2) return; + + const auto operation = params.get(1); + if (operation == "login"s) + { + if (params.size() < 3) return; + + rcon_password = params.get(2); + } + else if (operation == "logout"s) + { + rcon_password.clear(); + } + else + { + send_rcon_command(rcon_password, params.join(1)); + } + }); + } + else + { + network::on("rcon", [](const game::netadr_s& addr, const std::string_view& data) + { + const auto message = std::string{data}; + const auto pos = message.find_first_of(" "); + if (pos == std::string::npos) + { + console::info("Invalid RCon request from %s\n", network::net_adr_to_string(addr)); + return; + } + + const auto password = message.substr(0, pos); + const auto command = message.substr(pos + 1); + const auto rcon_password = game::Dvar_FindVar("rcon_password"); + if (command.empty() || !rcon_password || !rcon_password->current.string || !strlen( + rcon_password->current.string)) + { + return; + } + + setup_redirect(addr); + + if (password != rcon_password->current.string) + { + console::error("Invalid rcon password\n"); + } + else + { + command::execute(command, true); + } + + clear_redirect(); + }); + } + } + }; +} + +REGISTER_COMPONENT(rcon::component) diff --git a/src/client/component/rcon.hpp b/src/client/component/rcon.hpp new file mode 100644 index 0000000..2a6c23c --- /dev/null +++ b/src/client/component/rcon.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace rcon +{ + bool message_redirect(const std::string& message); +} diff --git a/src/client/component/redirect.cpp b/src/client/component/redirect.cpp new file mode 100644 index 0000000..2b4abd9 --- /dev/null +++ b/src/client/component/redirect.cpp @@ -0,0 +1,83 @@ +#include +#include "loader/component_loader.hpp" +#include "game_module.hpp" +#include +#include + +namespace redirect +{ + namespace + { + void launch_complementary_game(const bool singleplayer, const std::string& mode = "") + { + const auto self = game_module::get_host_module(); + + STARTUPINFOA startup_info; + PROCESS_INFORMATION process_info; + + ZeroMemory(&startup_info, sizeof(startup_info)); + ZeroMemory(&process_info, sizeof(process_info)); + startup_info.cb = sizeof(startup_info); + + auto* arguments = const_cast(utils::string::va("%s%s%s", self.get_path().data(), + (singleplayer ? " -singleplayer" : " -multiplayer"), + (mode.empty() ? "" : (" +"s + mode).data()))); + CreateProcessA(self.get_path().data(), arguments, nullptr, nullptr, false, NULL, nullptr, nullptr, + &startup_info, &process_info); + + if (process_info.hThread && process_info.hThread != INVALID_HANDLE_VALUE) + { + CloseHandle(process_info.hThread); + } + + if (process_info.hProcess && process_info.hProcess != INVALID_HANDLE_VALUE) + { + CloseHandle(process_info.hProcess); + } + } + + HINSTANCE shell_execute_a(const HWND hwnd, const LPCSTR operation, const LPCSTR file, const LPCSTR parameters, + const LPCSTR directory, const INT show_cmd) + { + if (utils::string::starts_with(file, "steam://run/209650/")) + { + launch_complementary_game(true); + return HINSTANCE(33); + } + else if (utils::string::starts_with(file, "steam://run/209660/")) + { + std::string mode(file); + mode.erase(0, 20); + if (!mode.empty()) + { + mode = utils::string::replace(mode, "%2b", ""); // '+' + mode = utils::string::replace(mode, "%2", " "); // ' ' + } + + launch_complementary_game(false, mode); + return HINSTANCE(33); + } + + return ShellExecuteA(hwnd, operation, file, parameters, directory, show_cmd); + } + } + + class component final : public component_interface + { + public: + void* load_import(const std::string& library, const std::string& function) override + { + if (library == "SHELL32.dll") + { + if (function == "ShellExecuteA") + { + return shell_execute_a; + } + } + + return nullptr; + } + }; +} + +REGISTER_COMPONENT(redirect::component) diff --git a/src/client/component/renderer.cpp b/src/client/component/renderer.cpp new file mode 100644 index 0000000..709095a --- /dev/null +++ b/src/client/component/renderer.cpp @@ -0,0 +1,82 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include + +namespace renderer +{ + namespace + { + utils::hook::detour r_init_draw_method_hook; + utils::hook::detour r_update_front_end_dvar_options_hook; + + int get_fullbright_technique() + { + switch (dvars::r_fullbright->current.integer) + { + case 3: + return 13; + case 2: + return 25; + default: + return game::TECHNIQUE_UNLIT; + } + } + + void gfxdrawmethod() + { + game::gfxDrawMethod->drawScene = game::GFX_DRAW_SCENE_STANDARD; + game::gfxDrawMethod->baseTechType = dvars::r_fullbright->current.enabled ? get_fullbright_technique() : game::TECHNIQUE_LIT; + game::gfxDrawMethod->emissiveTechType = dvars::r_fullbright->current.enabled ? get_fullbright_technique() : game::TECHNIQUE_EMISSIVE; + game::gfxDrawMethod->forceTechType = dvars::r_fullbright->current.enabled ? get_fullbright_technique() : 182; + } + + void r_init_draw_method_stub() + { + gfxdrawmethod(); + } + + bool r_update_front_end_dvar_options_stub() + { + if (dvars::r_fullbright->modified) + { + game::Dvar_ClearModified(dvars::r_fullbright); + game::R_SyncRenderThread(); + + gfxdrawmethod(); + } + + return r_update_front_end_dvar_options_hook.invoke(); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_dedi()) + { + return; + } + + dvars::r_fullbright = game::Dvar_RegisterInt("r_fullbright", 0, 0, 3, game::DVAR_FLAG_SAVED, "Toggles rendering without lighting"); + + r_init_draw_method_hook.create(SELECT_VALUE(0x14046C150, 0x140588B00), &r_init_draw_method_stub); + r_update_front_end_dvar_options_hook.create(SELECT_VALUE(0x1404A5330, 0x1405C3AE0), &r_update_front_end_dvar_options_stub); + + // use "saved" flags for "r_normalMap" + utils::hook::set(SELECT_VALUE(0x14047E0B8, 0x14059AD71), game::DVAR_FLAG_SAVED); + + // use "saved" flags for "r_specularMap" + utils::hook::set(SELECT_VALUE(0x14047E0DA, 0x14059AD99), game::DVAR_FLAG_SAVED); + + // use "saved" flags for "r_specOccMap" + utils::hook::set(SELECT_VALUE(0x14047E0FC, 0x14059ADC1), game::DVAR_FLAG_SAVED); + } + }; +} + +REGISTER_COMPONENT(renderer::component) diff --git a/src/client/component/resources.cpp b/src/client/component/resources.cpp new file mode 100644 index 0000000..7f9b5a2 --- /dev/null +++ b/src/client/component/resources.cpp @@ -0,0 +1,70 @@ +#include +#include "loader/component_loader.hpp" +#include + +namespace resources +{ + namespace + { + HICON icon; + HANDLE splash, logo; + + HANDLE WINAPI load_image_a(const HINSTANCE handle, LPCSTR name, const UINT type, const int c_x, const int c_y, + const UINT load) + { + const utils::nt::library self; + if (!IS_INTRESOURCE(name) && name == "logo.bmp"s) return logo; + if (self.get_handle() == handle && name == LPCSTR(0x64)) return splash; + + return LoadImageA(handle, name, type, c_x, c_y, load); + } + + HICON WINAPI load_icon_a(const HINSTANCE handle, const LPCSTR name) + { + const utils::nt::library self; + if (self.get_handle() == handle && name == LPCSTR(2)) return icon; + + return LoadIconA(handle, name); + } + } + + class component final : public component_interface + { + public: + ~component() override + { + if (icon) DestroyIcon(icon); + if (logo) DeleteObject(logo); + if (splash) DeleteObject(splash); + } + + void post_start() override + { + const utils::nt::library self; + + icon = LoadIconA(self.get_handle(), MAKEINTRESOURCEA(ID_ICON)); + logo = LoadImageA(self.get_handle(), MAKEINTRESOURCEA(IMAGE_LOGO), 0, 0, 0, LR_COPYFROMRESOURCE); + splash = LoadImageA(self.get_handle(), MAKEINTRESOURCEA(IMAGE_SPLASH), 0, 0, 0, LR_COPYFROMRESOURCE); + } + + void* load_import(const std::string& library, const std::string& function) override + { + if (library == "USER32.dll") + { + if (function == "LoadIconA") + { + return load_icon_a; + } + + if (function == "LoadImageA") + { + return load_image_a; + } + } + + return nullptr; + } + }; +} + +REGISTER_COMPONENT(resources::component) diff --git a/src/client/component/scheduler.cpp b/src/client/component/scheduler.cpp new file mode 100644 index 0000000..6ae75ba --- /dev/null +++ b/src/client/component/scheduler.cpp @@ -0,0 +1,197 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "scheduler.hpp" + +#include +#include +#include + +namespace scheduler +{ + namespace + { + struct task + { + std::function handler{}; + std::chrono::milliseconds interval{}; + std::chrono::high_resolution_clock::time_point last_call{}; + }; + + using task_list = std::vector; + + class task_pipeline + { + public: + void add(task&& task) + { + new_callbacks_.access([&task](task_list& tasks) + { + tasks.emplace_back(std::move(task)); + }); + } + + void execute() + { + callbacks_.access([&](task_list& tasks) + { + this->merge_callbacks(); + + for (auto i = tasks.begin(); i != tasks.end();) + { + const auto now = std::chrono::high_resolution_clock::now(); + const auto diff = now - i->last_call; + + if (diff < i->interval) + { + ++i; + continue; + } + + i->last_call = now; + + const auto res = i->handler(); + if (res == cond_end) + { + i = tasks.erase(i); + } + else + { + ++i; + } + } + }); + } + + private: + utils::concurrency::container new_callbacks_; + utils::concurrency::container callbacks_; + + void merge_callbacks() + { + callbacks_.access([&](task_list& tasks) + { + new_callbacks_.access([&](task_list& new_tasks) + { + tasks.insert(tasks.end(), std::move_iterator(new_tasks.begin()), std::move_iterator(new_tasks.end())); + new_tasks = {}; + }); + }); + } + }; + + volatile bool kill = false; + std::thread thread; + task_pipeline pipelines[pipeline::count]; + utils::hook::detour r_end_frame_hook; + + void execute(const pipeline type) + { + assert(type >= 0 && type < pipeline::count); + pipelines[type].execute(); + } + + void r_end_frame_stub() + { + execute(pipeline::renderer); + r_end_frame_hook.invoke(); + } + + void server_frame_stub() + { + game::G_Glass_Update(); + execute(pipeline::server); + } + + void main_frame_stub() + { + execute(pipeline::main); + game::Com_Frame_Try_Block_Function(); + } + } + + void schedule(const std::function& callback, const pipeline type, + const std::chrono::milliseconds delay) + { + assert(type >= 0 && type < pipeline::count); + + task task; + task.handler = callback; + task.interval = delay; + task.last_call = std::chrono::high_resolution_clock::now(); + + pipelines[type].add(std::move(task)); + } + + void loop(const std::function& callback, const pipeline type, + const std::chrono::milliseconds delay) + { + schedule([callback]() + { + callback(); + return cond_continue; + }, type, delay); + } + + void once(const std::function& callback, const pipeline type, + const std::chrono::milliseconds delay) + { + schedule([callback]() + { + callback(); + return cond_end; + }, type, delay); + } + + void on_game_initialized(const std::function& callback, const pipeline type, + const std::chrono::milliseconds delay) + { + schedule([=]() + { + const auto dw_init = game::environment::is_sp() ? true : game::Live_SyncOnlineDataFlags(0) == 0; + if (dw_init && game::Sys_IsDatabaseReady2()) + { + once(callback, type, delay); + return cond_end; + } + + return cond_continue; + }, pipeline::main); + } + + class component final : public component_interface + { + public: + void post_start() override + { + thread = utils::thread::create_named_thread("Async Scheduler", []() + { + while (!kill) + { + execute(pipeline::async); + std::this_thread::sleep_for(10ms); + } + }); + } + + void post_unpack() override + { + r_end_frame_hook.create(SELECT_VALUE(0x1404A3E20, 0x1405C25B0), r_end_frame_stub); + + utils::hook::call(SELECT_VALUE(0x1402F7DC2, 0x1403CEEE2), main_frame_stub); + utils::hook::call(SELECT_VALUE(0x140228647, 0x1402F8879), server_frame_stub); + } + + void pre_destroy() override + { + kill = true; + if (thread.joinable()) + { + thread.join(); + } + } + }; +} + +REGISTER_COMPONENT(scheduler::component) diff --git a/src/client/component/scheduler.hpp b/src/client/component/scheduler.hpp new file mode 100644 index 0000000..1e0de7a --- /dev/null +++ b/src/client/component/scheduler.hpp @@ -0,0 +1,33 @@ +#pragma once + +namespace scheduler +{ + enum pipeline + { + // Asynchronuous pipeline, disconnected from the game + async = 0, + + // The game's rendering pipeline + renderer, + + // The game's server thread + server, + + // The game's main thread + main, + + count, + }; + + static const bool cond_continue = false; + static const bool cond_end = true; + + void schedule(const std::function& callback, pipeline type = pipeline::async, + std::chrono::milliseconds delay = 0ms); + void loop(const std::function& callback, pipeline type = pipeline::async, + std::chrono::milliseconds delay = 0ms); + void once(const std::function& callback, pipeline type = pipeline::async, + std::chrono::milliseconds delay = 0ms); + void on_game_initialized(const std::function& callback, pipeline type = pipeline::async, + std::chrono::milliseconds delay = 0ms); +} diff --git a/src/client/component/scripting.cpp b/src/client/component/scripting.cpp new file mode 100644 index 0000000..d4579c0 --- /dev/null +++ b/src/client/component/scripting.cpp @@ -0,0 +1,193 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "game/scripting/functions.hpp" + +#include "scheduler.hpp" +#include "scripting.hpp" + +#include "gsc/script_loading.hpp" + +#include + +namespace scripting +{ + std::unordered_map> script_function_table; + std::unordered_map>> script_function_table_sort; + std::unordered_map> script_function_table_rev; + + std::string current_file; + + namespace + { + utils::hook::detour vm_notify_hook; + utils::hook::detour scr_load_level_hook; + utils::hook::detour g_shutdown_game_hook; + + utils::hook::detour scr_set_thread_position_hook; + utils::hook::detour process_script_hook; + utils::hook::detour sl_get_canonical_string_hook; + + std::string current_script_file; + std::uint32_t current_file_id = 0; + + std::unordered_map canonical_string_table; + + std::vector> shutdown_callbacks; + std::vector> init_callbacks; + + void scr_load_level_stub() + { + scr_load_level_hook.invoke(); + if (!game::VirtualLobby_Loaded()) + { + for (const auto& callback : init_callbacks) + { + callback(); + } + } + } + + void g_shutdown_game_stub(const int free_scripts) + { + if (free_scripts) + { + script_function_table_sort.clear(); + script_function_table.clear(); + script_function_table_rev.clear(); + canonical_string_table.clear(); + } + + for (const auto& callback : shutdown_callbacks) + { + callback(free_scripts); + } + + return g_shutdown_game_hook.invoke(free_scripts); + } + + void process_script_stub(const char* filename) + { + current_script_file = filename; + + const auto file_id = atoi(filename); + if (file_id) + { + current_file_id = static_cast(file_id); + } + else + { + current_file_id = 0; + current_file = filename; + } + + process_script_hook.invoke(filename); + } + + void add_function_sort(unsigned int id, const char* pos) + { + std::string filename = current_file; + if (current_file_id) + { + filename = get_token(current_file_id); + } + + if (!script_function_table_sort.contains(filename)) + { + const auto script = gsc::find_script(game::ASSET_TYPE_SCRIPTFILE, current_script_file.data(), false); + if (script) + { + const auto* end = &script->bytecode[script->bytecodeLen]; + script_function_table_sort[filename].emplace_back("__end__", reinterpret_cast(end)); + } + } + + const auto name = scripting::get_token(id); + auto& itr = script_function_table_sort[filename]; + itr.insert(itr.end() - 1, {name, pos}); + } + + void add_function(const std::string& file, unsigned int id, const char* pos) + { + const auto name = get_token(id); + script_function_table[file][name] = pos; + script_function_table_rev[pos] = {file, name}; + } + + void scr_set_thread_position_stub(unsigned int thread_name, const char* code_pos) + { + add_function_sort(thread_name, code_pos); + + if (current_file_id) + { + const auto name = get_token(current_file_id); + add_function(name, thread_name, code_pos); + } + else + { + add_function(current_file, thread_name, code_pos); + } + + scr_set_thread_position_hook.invoke(thread_name, code_pos); + } + + unsigned int sl_get_canonical_string_stub(const char* str) + { + const auto result = sl_get_canonical_string_hook.invoke(str); + canonical_string_table[result] = str; + return result; + } + } + + std::string get_token(unsigned int id) + { + if (const auto itr = canonical_string_table.find(id); itr != canonical_string_table.end()) + { + return itr->second; + } + + return find_token(id); + } + + void on_shutdown(const std::function& callback) + { + shutdown_callbacks.push_back(callback); + } + + void on_init(const std::function& callback) + { + init_callbacks.push_back(callback); + } + + std::optional get_canonical_string(const unsigned int id) + { + if (const auto itr = canonical_string_table.find(id); itr != canonical_string_table.end()) + { + return {itr->second}; + } + + return {}; + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + // SP address is wrong, but should be ok + scr_load_level_hook.create(SELECT_VALUE(0x140005260, 0x140325B90), &scr_load_level_stub); + g_shutdown_game_hook.create(SELECT_VALUE(0x140228BA0, 0x1402F8C10), &g_shutdown_game_stub); + + scr_set_thread_position_hook.create(SELECT_VALUE(0x1403115E0, 0x1403EDB10), &scr_set_thread_position_stub); + process_script_hook.create(SELECT_VALUE(0x14031AB30, 0x1403F7300), &process_script_stub); + sl_get_canonical_string_hook.create(game::SL_GetCanonicalString, &sl_get_canonical_string_stub); + + scheduler::loop([] + { + }, scheduler::pipeline::server); + } + }; +} + +REGISTER_COMPONENT(scripting::component) diff --git a/src/client/component/scripting.hpp b/src/client/component/scripting.hpp new file mode 100644 index 0000000..c841903 --- /dev/null +++ b/src/client/component/scripting.hpp @@ -0,0 +1,16 @@ +#pragma once + +namespace scripting +{ + extern std::unordered_map> script_function_table; + extern std::unordered_map>> script_function_table_sort; + extern std::unordered_map> script_function_table_rev; + + extern std::string current_file; + + void on_shutdown(const std::function& callback); + void on_init(const std::function& callback); + + std::optional get_canonical_string(unsigned int id); + std::string get_token(unsigned int id); +} diff --git a/src/client/component/security.cpp b/src/client/component/security.cpp new file mode 100644 index 0000000..b0bb0e9 --- /dev/null +++ b/src/client/component/security.cpp @@ -0,0 +1,77 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "console.hpp" + +#include + +namespace security +{ + namespace + { + void set_cached_playerdata_stub(const int localclient, const int index1, const int index2) + { + if (index1 >= 0 && index1 < 18 && index2 >= 0 && index2 < 42) + { + reinterpret_cast(0x140536A60)(localclient, index1, index2); + } + } + + void remap_cached_entities(game::mp::cachedSnapshot_t& snapshot) + { + static bool printed = false; + if(snapshot.num_clients > 1200 && !printed) + { + printed = true; + console::info("Too many entities (%d)... remapping!\n", snapshot.num_clients); + } + + snapshot.num_clients = std::min(snapshot.num_clients, 1200); + } + + void remap_cached_entities_stub(utils::hook::assembler& a) + { + a.pushad64(); + + a.mov(rcx, rbx); + a.call_aligned(remap_cached_entities); + + a.popad64(); + a.jmp(0x14044DE51); + } + + void sv_execute_client_message_stub(game::mp::client_t* client, game::msg_t* msg) + { + if ((client->reliableSequence - client->reliableAcknowledge) < 0) + { + client->reliableAcknowledge = client->reliableSequence; + console::info("Negative reliableAcknowledge from %s - cl->reliableSequence is %i, reliableAcknowledge is %i\n", + client->name, client->reliableSequence, client->reliableAcknowledge); + return; + } + + utils::hook::invoke(0x14043AA90, client, msg); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) return; + + // Patch vulnerability in PlayerCards_SetCachedPlayerData + utils::hook::call(0x1401BB909, set_cached_playerdata_stub); + + // Patch entity overflow + utils::hook::jump(0x14044DE3A, assemble(remap_cached_entities_stub), true); + + // It is possible to make the server hang if left unchecked + utils::hook::call(0x140443051, sv_execute_client_message_stub); + } + }; +} + +REGISTER_COMPONENT(security::component) diff --git a/src/client/component/server_list.cpp b/src/client/component/server_list.cpp new file mode 100644 index 0000000..587f5b4 --- /dev/null +++ b/src/client/component/server_list.cpp @@ -0,0 +1,433 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include "server_list.hpp" +#include "localized_strings.hpp" +#include "network.hpp" +#include "scheduler.hpp" +#include "party.hpp" + +#include +#include +#include + +namespace server_list +{ + namespace + { + const int server_limit = 14; + + struct server_info + { + // gotta add more to this + int clients; + int max_clients; + int bots; + int ping; + std::string host_name; + std::string map_name; + std::string game_type; + game::CodPlayMode play_mode; + char in_game; + game::netadr_s address; + }; + + struct + { + game::netadr_s address{}; + volatile bool requesting = false; + std::unordered_map queued_servers{}; + } master_state; + + std::mutex mutex; + std::vector servers; + + size_t server_list_page = 0; + volatile bool update_server_list = false; + std::chrono::high_resolution_clock::time_point last_scroll{}; + + size_t get_page_count() + { + const auto count = servers.size() / server_limit; + return count + (servers.size() % server_limit > 0); + } + + size_t get_page_base_index() + { + return server_list_page * server_limit; + } + + void refresh_server_list() + { + { + std::lock_guard _(mutex); + servers.clear(); + master_state.queued_servers.clear(); + server_list_page = 0; + } + + party::reset_connect_state(); + + if (get_master_server(master_state.address)) + { + master_state.requesting = true; + network::send(master_state.address, "getservers", utils::string::va("S1 %i full empty", PROTOCOL)); + } + } + + void join_server(int, int, const int index) + { + std::lock_guard _(mutex); + + const auto i = static_cast(index) + get_page_base_index(); + if (i < servers.size()) + { + static auto last_index = ~0ull; + if (last_index != i) + { + last_index = i; + } + else + { + printf("Connecting to (%d - %zu): %s\n", index, i, servers[i].host_name.data()); + party::connect(servers[i].address); + } + } + } + + void trigger_refresh() + { + update_server_list = true; + } + + int ui_feeder_count() + { + std::lock_guard _(mutex); + if (update_server_list) + { + update_server_list = false; + return 0; + } + const auto count = static_cast(servers.size()); + const auto index = get_page_base_index(); + const auto diff = count - index; + return diff > server_limit ? server_limit : static_cast(diff); + } + + const char* ui_feeder_item_text(int /*localClientNum*/, void* /*a2*/, void* /*a3*/, const int index, + const int column) + { + std::lock_guard _(mutex); + + const auto i = get_page_base_index() + index; + + if (i >= servers.size()) + { + return ""; + } + + if (column == 0) + { + return servers[i].host_name.empty() ? "" : utils::string::va("%s", servers[i].host_name.data()); + } + + if (column == 1) + { + return servers[i].map_name.empty() ? "" : utils::string::va("%s", servers[i].map_name.data()); + } + + if (column == 2) + { + return servers[i].game_type.empty() ? "" : utils::string::va("%s", servers[i].game_type.data()); + } + + if (column == 3) + { + return utils::string::va("%d/%d [%d]", servers[i].clients, servers[i].max_clients, + servers[i].bots); + } + + if (column == 4) + { + return servers[i].ping ? utils::string::va("%d", servers[i].ping) : ""; + } + + return ""; + } + + void sort_serverlist() + { + std::ranges::stable_sort(servers, [](const server_info& a, const server_info& b) + { + if (a.clients == b.clients) + { + return a.ping < b.ping; + } + + return a.clients > b.clients; + }); + } + + void insert_server(server_info&& server) + { + std::lock_guard _(mutex); + servers.emplace_back(std::move(server)); + sort_serverlist(); + trigger_refresh(); + } + + void do_frame_work() + { + auto& queue = master_state.queued_servers; + if (queue.empty()) + { + return; + } + + std::lock_guard _(mutex); + + size_t queried_servers = 0; + const size_t query_limit = 3; + + for (auto i = queue.begin(); i != queue.end();) + { + if (i->second) + { + const auto now = game::Sys_Milliseconds(); + if (now - i->second > 10'000) + { + i = queue.erase(i); + continue; + } + } + else if (queried_servers++ < query_limit) + { + i->second = game::Sys_Milliseconds(); + network::send(i->first, "getInfo", utils::cryptography::random::get_challenge()); + } + + ++i; + } + } + + bool is_server_list_open() + { + return game::Menu_IsMenuOpenAndVisible(0, "menu_systemlink_join"); + } + + bool is_scrolling_disabled() + { + return update_server_list || (std::chrono::high_resolution_clock::now() - last_scroll) < 500ms; + } + + bool scroll_down() + { + if (!is_server_list_open()) + { + return false; + } + + if (!is_scrolling_disabled() && server_list_page + 1 < get_page_count()) + { + last_scroll = std::chrono::high_resolution_clock::now(); + ++server_list_page; + trigger_refresh(); + } + + return true; + } + + bool scroll_up() + { + if (!is_server_list_open()) + { + return false; + } + + if (!is_scrolling_disabled() && server_list_page > 0) + { + last_scroll = std::chrono::high_resolution_clock::now(); + --server_list_page; + trigger_refresh(); + } + + return true; + } + + void resize_host_name(std::string& name) + { + name = utils::string::split(name, '\n').front(); + + game::Font_s* font; + if (game::Com_GetCurrentCoDPlayMode() == game::CODPLAYMODE_ZOMBIES) + { + font = game::R_RegisterFont("fonts/zmBodyFont"); + } + else + { + font = game::R_RegisterFont("fonts/bodyFont"); + } + auto text_size = game::UI_TextWidth(name.data(), 32, font, 1.0f); + + while (text_size > 450) + { + text_size = game::UI_TextWidth(name.data(), 32, font, 1.0f); + name.pop_back(); + } + } + + void lui_open_menu_stub(int /*controllerIndex*/, const char* /*menu*/, int /*a3*/, int /*a4*/, + unsigned int /*a5*/) + { + refresh_server_list(); + game::Cmd_ExecuteSingleCommand(0, 0, "lui_open menu_systemlink_join\n"); + } + } + + bool sl_key_event(const int key, const int down) + { + if (down) + { + if (key == game::keyNum_t::K_MWHEELUP) + { + return !scroll_up(); + } + + if (key == game::keyNum_t::K_MWHEELDOWN) + { + return !scroll_down(); + } + } + + return true; + } + + bool get_master_server(game::netadr_s& address) + { + return game::NET_StringToAdr("server.alterware.dev:20810", &address); + } + + void handle_info_response(const game::netadr_s& address, const utils::info_string& info) + { + // Don't show servers that aren't dedicated! + const auto dedicated = info.get("dedicated"); + if (dedicated != "1"s) + { + return; + } + + // Don't show servers that aren't running! + const auto sv_running = info.get("sv_running"); + if (sv_running != "1"s) + { + return; + } + + // Only handle servers of the same playmode! + const auto playmode = static_cast(std::atoi(info.get("playmode").data())); + if (game::Com_GetCurrentCoDPlayMode() != playmode) + { + return; + } + + int start_time{}; + const auto now = game::Sys_Milliseconds(); + + { + std::lock_guard _(mutex); + const auto entry = master_state.queued_servers.find(address); + + if (entry == master_state.queued_servers.end() || !entry->second) + { + return; + } + + start_time = entry->second; + master_state.queued_servers.erase(entry); + } + + server_info server{}; + server.address = address; + server.host_name = info.get("hostname"); + server.map_name = game::UI_GetMapDisplayName(info.get("mapname").data()); + server.game_type = game::UI_GetGameTypeDisplayName(info.get("gametype").data()); + server.play_mode = playmode; + server.clients = std::atoi(info.get("clients").data()); + server.max_clients = std::atoi(info.get("sv_maxclients").data()); + server.bots = std::atoi(info.get("bots").data()); + server.ping = std::min(now - start_time, 999); + + server.in_game = 1; + + resize_host_name(server.host_name); + + insert_server(std::move(server)); + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (!game::environment::is_mp()) return; + + // replace UI_RunMenuScript call in LUI_CoD_LuaCall_RefreshServerList to our refresh_servers + utils::hook::call(0x1400F5AA1, &refresh_server_list); + utils::hook::call(0x1400F5F26, &join_server); + utils::hook::nop(0x1400F5F45, 5); + + // do feeder stuff + utils::hook::call(0x1400F5B55, &ui_feeder_count); + utils::hook::call(0x1400F5D35, &ui_feeder_item_text); + + scheduler::loop(do_frame_work, scheduler::pipeline::main); + + network::on("getServersResponse", [](const game::netadr_s& target, const std::string_view& data) + { + { + std::lock_guard _(mutex); + if (!master_state.requesting || master_state.address != target) + { + return; + } + + master_state.requesting = false; + + std::optional start{}; + for (size_t i = 0; i + 6 < data.size(); ++i) + { + if (data[i + 6] == '\\') + { + start.emplace(i); + break; + } + } + + if (!start.has_value()) + { + return; + } + + for (auto i = start.value(); i + 6 < data.size(); i += 7) + { + if (data[i + 6] != '\\') + { + break; + } + + game::netadr_s address{}; + address.type = game::NA_IP; + address.localNetID = game::NS_CLIENT1; + memcpy(&address.ip[0], data.data() + i + 0, 4); + memcpy(&address.port, data.data() + i + 4, 2); + + master_state.queued_servers[address] = 0; + } + } + }); + } + }; +} + +REGISTER_COMPONENT(server_list::component) diff --git a/src/client/component/server_list.hpp b/src/client/component/server_list.hpp new file mode 100644 index 0000000..09f62b2 --- /dev/null +++ b/src/client/component/server_list.hpp @@ -0,0 +1,10 @@ +#pragma once +#include + +namespace server_list +{ + bool get_master_server(game::netadr_s& address); + void handle_info_response(const game::netadr_s& address, const utils::info_string& info); + + bool sl_key_event(int key, int down); +} diff --git a/src/client/component/slowmotion.cpp b/src/client/component/slowmotion.cpp new file mode 100644 index 0000000..6af2946 --- /dev/null +++ b/src/client/component/slowmotion.cpp @@ -0,0 +1,53 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" + +#include +#include + +namespace slowmotion +{ + namespace + { + void scr_cmd_set_slow_motion() + { + if (game::Scr_GetNumParam() < 1) + { + return; + } + + int duration = 1000; + float end = 1.0f; + const float start = game::Scr_GetFloat(0); + + if (game::Scr_GetNumParam() >= 2) + { + end = game::Scr_GetFloat(1u); + } + + if (game::Scr_GetNumParam() >= 3) + { + duration = static_cast(game::Scr_GetFloat(2u) * 1000.0f); + } + + game::SV_SetConfigstring(10, utils::string::va("%i %i %g %g", *game::mp::gameTime, duration, start, end)); + game::Com_SetSlowMotion(start, end, duration); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (!game::environment::is_dedi()) + { + return; + } + + utils::hook::jump(0x14030EF90, scr_cmd_set_slow_motion); + } + }; +} + +REGISTER_COMPONENT(slowmotion::component) diff --git a/src/client/component/splash.cpp b/src/client/component/splash.cpp new file mode 100644 index 0000000..becd17b --- /dev/null +++ b/src/client/component/splash.cpp @@ -0,0 +1,141 @@ +#include +#include "loader/component_loader.hpp" +#include "game/game.hpp" +#include "game_module.hpp" + +#include +#include + +namespace splash +{ + class component final : public component_interface + { + public: + void post_start() override + { + const utils::nt::library self; + image_ = LoadImageA(self, MAKEINTRESOURCE(IMAGE_SPLASH), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); + } + + void post_load() override + { + if (game::environment::is_dedi()) + { + return; + } + + this->show(); + } + + void post_unpack() override + { + // Disable native splash screen + utils::hook::nop(SELECT_VALUE(0x14038D88C, 0x1404D74E3), 5); + utils::hook::jump(SELECT_VALUE(0x14038ECD0, 0x1404D8A70), destroy_stub); + utils::hook::jump(SELECT_VALUE(0x14038ED10, 0x1404D8AB0), destroy_stub); + } + + void pre_destroy() override + { + this->destroy(); + + MSG msg; + while (this->window_ && IsWindow(this->window_)) + { + if (PeekMessageA(&msg, nullptr, NULL, NULL, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + else + { + std::this_thread::sleep_for(1ms); + } + } + + this->window_ = nullptr; + } + + private: + HWND window_{}; + HANDLE image_{}; + + static void destroy_stub() + { + component_loader::get()->destroy(); + } + + void destroy() const + { + if (this->window_ && IsWindow(this->window_)) + { + ShowWindow(this->window_, SW_HIDE); + DestroyWindow(this->window_); + UnregisterClassA("s1-mod Splash Screen", utils::nt::library{}); + } + } + + void show() + { + WNDCLASSA wnd_class; + + const auto self = game_module::get_host_module(); + + wnd_class.style = CS_DROPSHADOW; + wnd_class.cbClsExtra = 0; + wnd_class.cbWndExtra = 0; + wnd_class.lpszMenuName = nullptr; + wnd_class.lpfnWndProc = DefWindowProcA; + wnd_class.hInstance = self; + wnd_class.hIcon = LoadIconA(self, reinterpret_cast(102)); + wnd_class.hCursor = LoadCursorA(nullptr, IDC_APPSTARTING); + wnd_class.hbrBackground = reinterpret_cast(6); + wnd_class.lpszClassName = "s1-mod Splash Screen"; + + if (RegisterClassA(&wnd_class)) + { + const auto x_pixels = GetSystemMetrics(SM_CXFULLSCREEN); + const auto y_pixels = GetSystemMetrics(SM_CYFULLSCREEN); + + if (image_) + { + this->window_ = CreateWindowExA(WS_EX_APPWINDOW, "s1-mod Splash Screen", "s1-mod", + WS_POPUP | WS_SYSMENU, + (x_pixels - 320) / 2, (y_pixels - 100) / 2, 320, 100, nullptr, + nullptr, + self, nullptr); + + if (this->window_) + { + auto* const image_window = CreateWindowExA(0, "Static", nullptr, WS_CHILD | WS_VISIBLE | 0xEu, + 0, 0, + 320, 100, this->window_, nullptr, self, nullptr); + if (image_window) + { + RECT rect; + SendMessageA(image_window, 0x172u, 0, reinterpret_cast(image_)); + GetWindowRect(image_window, &rect); + + const int width = rect.right - rect.left; + rect.left = (x_pixels - width) / 2; + + const int height = rect.bottom - rect.top; + rect.top = (y_pixels - height) / 2; + + rect.right = rect.left + width; + rect.bottom = rect.top + height; + AdjustWindowRect(&rect, WS_CHILD | WS_VISIBLE | 0xEu, 0); + SetWindowPos(this->window_, nullptr, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, SWP_NOZORDER); + + ShowWindow(this->window_, SW_SHOW); + UpdateWindow(this->window_); + } + } + } + } + } + }; +} + +REGISTER_COMPONENT(splash::component) diff --git a/src/client/component/stats.cpp b/src/client/component/stats.cpp new file mode 100644 index 0000000..bccac67 --- /dev/null +++ b/src/client/component/stats.cpp @@ -0,0 +1,128 @@ +#include +#include "loader/component_loader.hpp" + +#include "game/game.hpp" + +#include "command.hpp" +#include "console.hpp" + +#include + +namespace stats +{ + namespace + { + game::dvar_t* cg_unlock_all_items; + + utils::hook::detour is_item_unlocked_hook; + utils::hook::detour is_item_unlocked_hook2; + utils::hook::detour is_item_unlocked_hook3; + + int is_item_unlocked_stub(void* a1, void* a2, void* a3) + { + if (cg_unlock_all_items->current.enabled) + { + return 0; + } + + return is_item_unlocked_hook.invoke(a1, a2, a3); + } + + int is_item_unlocked_stub2(void* a1, void* a2, void* a3, void* a4, void* a5) + { + if (cg_unlock_all_items->current.enabled) + { + return 0; + } + + return is_item_unlocked_hook2.invoke(a1, a2, a3, a4, a5); + } + + int is_item_unlocked_stub3(void* a1) + { + if (cg_unlock_all_items->current.enabled) + { + return 0; + } + + return is_item_unlocked_hook3.invoke(a1); + } + + int is_item_unlocked() + { + return 0; // 0 == yes + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_sp()) + { + return; + } + + if (game::environment::is_dedi()) + { + // unlock all items + utils::hook::jump(0x1403BD790, is_item_unlocked); // LiveStorage_IsItemUnlockedFromTable_LocalClient + utils::hook::jump(0x1403BD290, is_item_unlocked); // LiveStorage_IsItemUnlockedFromTable + utils::hook::jump(0x1403BAF60, is_item_unlocked); // idk ( unlocks loot etc ) + } + else + { + // unlock all items + cg_unlock_all_items = game::Dvar_RegisterBool("cg_unlockall_items", false, game::DVAR_FLAG_SAVED, "Whether items should be locked based on the player's stats or always unlocked."); + game::Dvar_RegisterBool("cg_unlockall_classes", false, game::DVAR_FLAG_SAVED, "Whether classes should be locked based on the player's stats or always unlocked."); + + is_item_unlocked_hook.create(0x1403BD790, is_item_unlocked_stub); // LiveStorage_IsItemUnlockedFromTable_LocalClient + is_item_unlocked_hook2.create(0x1403BD290, is_item_unlocked_stub2); // LiveStorage_IsItemUnlockedFromTable + is_item_unlocked_hook3.create(0x1403BAF60, is_item_unlocked_stub3); // idk (unlocks loot etc) + } + + command::add("setPlayerDataInt", [](const command::params& params) + { + if (params.size() < 2) + { + console::info("usage: setPlayerDataInt , \n"); + return; + } + + // SL_FindString + const auto lookup_string = game::SL_FindString(params.get(1)); + const auto value = atoi(params.get(2)); + + // SetPlayerDataInt + reinterpret_cast(0x1403BF550)( + 0, lookup_string, value, 0); + }); + + command::add("getPlayerDataInt", [](const command::params& params) + { + if (params.size() < 2) + { + console::info("usage: getPlayerDataInt \n"); + return; + } + + // SL_FindString + const auto lookup_string = game::SL_FindString(params.get(1)); + + // GetPlayerDataInt + const auto result = reinterpret_cast(0x1403BE860)( + 0, lookup_string, 0); + console::info("%d\n", result); + }); + + command::add("unlockstats", []() + { + command::execute("setPlayerDataInt prestige 30"); + command::execute("setPlayerDataInt experience 1002100"); + }); + } + }; +} + +REGISTER_COMPONENT(stats::component) diff --git a/src/client/component/steam_proxy.cpp b/src/client/component/steam_proxy.cpp new file mode 100644 index 0000000..00115d9 --- /dev/null +++ b/src/client/component/steam_proxy.cpp @@ -0,0 +1,208 @@ +#include +#include "loader/component_loader.hpp" +#include "scheduler.hpp" + +#include +#include +#include + +#include "game/game.hpp" + +#include "steam/interface.hpp" +#include "steam/steam.hpp" + +namespace steam_proxy +{ + namespace + { + enum class ownership_state + { + success, + unowned, + nosteam, + error, + }; + + ownership_state state_; + + utils::binary_resource runner_file(RUNNER, "s1-mod-runner.exe"); + } + + class component final : public component_interface + { + public: + void post_load() override + { + if (game::environment::is_dedi()) + { + return; + } + + this->load_client(); + this->clean_up_on_error(); + +#ifndef DEV_BUILD + try + { + const std::string mod_name = "\xF0\x9F\x92\x8E" " s1-mod: "; + state_ = this->start_mod(mod_name + game::environment::get_string(), game::environment::is_sp() ? 209650 : 209660); + } + catch (const std::exception& ex) + { + state_ = ownership_state::error; + printf("Steam: %s\n", ex.what()); + } +#endif + } + + void pre_destroy() override + { + if (this->steam_client_module_) + { + if (this->steam_pipe_) + { + if (this->global_user_) + { + this->steam_client_module_.invoke("Steam_ReleaseUser", this->steam_pipe_, this->global_user_); + } + + this->steam_client_module_.invoke("Steam_BReleaseSteamPipe", this->steam_pipe_); + } + } + } + + const utils::nt::library& get_overlay_module() const + { + return steam_overlay_module_; + } + + private: + utils::nt::library steam_client_module_{}; + utils::nt::library steam_overlay_module_{}; + + steam::interface client_engine_{}; + steam::interface client_user_{}; + steam::interface client_utils_{}; + + void* steam_pipe_ = nullptr; + void* global_user_ = nullptr; + + void* load_client_engine() const + { + if (!this->steam_client_module_) return nullptr; + + for (auto i = 1; i < 1000; ++i) + { + const auto* name = utils::string::va("CLIENTENGINE_INTERFACE_VERSION%03i", i); + auto* const client_engine = this->steam_client_module_.invoke("CreateInterface", name, nullptr); + if (client_engine) return client_engine; + } + + return nullptr; + } + + void load_client() + { + const std::filesystem::path steam_path = steam::SteamAPI_GetSteamInstallPath(); + if (steam_path.empty()) return; + + utils::nt::library::load(steam_path / "tier0_s64.dll"); + utils::nt::library::load(steam_path / "vstdlib_s64.dll"); + this->steam_overlay_module_ = utils::nt::library::load(steam_path / "gameoverlayrenderer64.dll"); + this->steam_client_module_ = utils::nt::library::load(steam_path / "steamclient64.dll"); + if (!this->steam_client_module_) return; + + this->client_engine_ = load_client_engine(); + if (!this->client_engine_) return; + + this->steam_pipe_ = this->steam_client_module_.invoke("Steam_CreateSteamPipe"); + this->global_user_ = this->steam_client_module_.invoke("Steam_ConnectToGlobalUser", this->steam_pipe_); + this->client_user_ = this->client_engine_.invoke(8, this->steam_pipe_, this->global_user_); + // GetIClientUser + this->client_utils_ = this->client_engine_.invoke(14, this->steam_pipe_); // GetIClientUtils + } + + ownership_state start_mod(const std::string& title, const size_t app_id) + { + __try + { + return this->start_mod_unsafe(title, app_id); + } + __except (EXCEPTION_EXECUTE_HANDLER) + { + this->do_cleanup(); + return ownership_state::error; + } + } + + ownership_state start_mod_unsafe(const std::string& title, size_t app_id) + { + if (!this->client_utils_ || !this->client_user_) + { + return ownership_state::nosteam; + } + + if (!this->client_user_.invoke("BIsSubscribedApp", app_id)) + { +#ifdef _DEBUG + app_id = 480; // Spacewar +#else + return ownership_state::unowned; +#endif + } + + this->client_utils_.invoke("SetAppIDForCurrentPipe", app_id, false); + + char our_directory[MAX_PATH]{}; + GetCurrentDirectoryA(sizeof(our_directory), our_directory); + + const auto path = runner_file.get_extracted_file(); + const auto* cmdline = utils::string::va("\"%s\" -proc %d", path.data(), GetCurrentProcessId()); + + steam::game_id game_id; + game_id.raw.type = 1; // k_EGameIDTypeGameMod + game_id.raw.app_id = app_id & 0xFFFFFF; + + const auto* mod_id = "s1-mod"; + game_id.raw.mod_id = *reinterpret_cast(mod_id) | 0x80000000; + + this->client_user_.invoke("SpawnProcess", path.data(), cmdline, our_directory, + &game_id.bits, title.data(), 0, 0, 0); + + return ownership_state::success; + } + + void do_cleanup() + { + this->client_engine_ = nullptr; + this->client_user_ = nullptr; + this->client_utils_ = nullptr; + + this->steam_pipe_ = nullptr; + this->global_user_ = nullptr; + + this->steam_client_module_ = utils::nt::library{nullptr}; + } + + void clean_up_on_error() + { + scheduler::schedule([this]() + { + if (this->steam_client_module_ + && this->steam_pipe_ + && this->global_user_ + && this->steam_client_module_.invoke("Steam_BConnected", this->global_user_, this->steam_pipe_) + && this->steam_client_module_.invoke("Steam_BLoggedOn", this->global_user_, this->steam_pipe_) + ) + { + return scheduler::cond_continue; + } + + this->do_cleanup(); + return scheduler::cond_end; + }); + } + }; +} + +REGISTER_COMPONENT(steam_proxy::component) diff --git a/src/client/component/survival.cpp b/src/client/component/survival.cpp new file mode 100644 index 0000000..01aa763 --- /dev/null +++ b/src/client/component/survival.cpp @@ -0,0 +1,46 @@ +#include +#include "loader/component_loader.hpp" +#include + +namespace survival +{ + namespace + { + const char* get_commandline_stub() + { + static std::string commandline{}; + if (commandline.empty()) + { + commandline = GetCommandLineA(); + + const auto real_mode = game::environment::get_real_mode(); + if (real_mode == launcher::mode::survival) + { + commandline += " +survival 01"; + } + else if (real_mode == launcher::mode::zombies) + { + commandline += " +zombiesMode 01"; + } + } + + return commandline.data(); + } + } + + class component final : public component_interface + { + public: + void* load_import(const std::string& library, const std::string& function) override + { + if (function == "GetCommandLineA") + { + return get_commandline_stub; + } + + return nullptr; + } + }; +} + +REGISTER_COMPONENT(survival::component) diff --git a/src/client/component/system_check.cpp b/src/client/component/system_check.cpp new file mode 100644 index 0000000..e428a8c --- /dev/null +++ b/src/client/component/system_check.cpp @@ -0,0 +1,100 @@ +#include +#include "loader/component_loader.hpp" +#include "system_check.hpp" + +#include "game/game.hpp" + +#include +#include + +namespace system_check +{ + namespace + { + std::string read_zone(const std::string& name) + { + std::string data{}; + if (utils::io::read_file(name, &data)) + { + return data; + } + + if (utils::io::read_file("zone/" + name, &data)) + { + return data; + } + + return {}; + } + + std::string hash_zone(const std::string& name) + { + const auto data = read_zone(name); + return utils::cryptography::sha256::compute(data, true); + } + + bool verify_hashes(const std::unordered_map& zone_hashes) + { + for (const auto& zone_hash : zone_hashes) + { + const auto hash = hash_zone(zone_hash.first); + if (hash != zone_hash.second) + { + return false; + } + } + + return true; + } + + bool is_system_valid() + { + static std::unordered_map mp_zone_hashes = + { + {"patch_common_mp.ff", "23B15B4EF0AC9B52B3C6F9F681290B25B6B24B49F17238076A3D7F3CCEF9A0E1"}, + }; + + static std::unordered_map sp_zone_hashes = + { + // Steam doesn't necessarily deliver this file :( + //{"patch_common.ff", "4624A974C6C7F8BECD9C343E7951722D8378889AC08ED4F2B22459B171EC553C"}, + {"patch_common_zm_mp.ff", "DA16B546B7233BBC4F48E1E9084B49218CB9271904EA7120A0EB4CB8723C19CF"}, + }; + + return verify_hashes(mp_zone_hashes) && (game::environment::is_dedi() || verify_hashes(sp_zone_hashes)); + } + + void verify_binary_version() + { + const auto value = *reinterpret_cast(0x140001337); + if (value != 0x24AFEB05 && value != 0x1D860F04) + { + throw std::runtime_error("Unsupported Call of Duty: Advanced Warfare version"); + } + } + } + + bool is_valid() + { + static auto valid = is_system_valid(); + return valid; + } + + class component final : public component_interface + { + public: + void post_load() override + { + verify_binary_version(); + + if (!is_valid()) + { + game::show_error("Your game files are outdated or unsupported.\n" + "Please get the latest officially supported Call of Duty: Advanced Warfare files, or you will get random crashes and issues.", + "Invalid game files!"); + } + } + }; +} + +REGISTER_COMPONENT(system_check::component) diff --git a/src/client/component/system_check.hpp b/src/client/component/system_check.hpp new file mode 100644 index 0000000..4813846 --- /dev/null +++ b/src/client/component/system_check.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace system_check +{ + bool is_valid(); +} diff --git a/src/client/component/thread_names.cpp b/src/client/component/thread_names.cpp new file mode 100644 index 0000000..84b5fa7 --- /dev/null +++ b/src/client/component/thread_names.cpp @@ -0,0 +1,60 @@ +#include +#include "loader/component_loader.hpp" + +#include "scheduler.hpp" + +#include "game/game.hpp" + +#include + +namespace thread_names +{ + namespace + { + void set_thread_names() + { + static std::unordered_map thread_names = + { + {game::THREAD_CONTEXT_MAIN, "Main"}, + {game::THREAD_CONTEXT_BACKEND, "Backend"}, // Renderer + {game::THREAD_CONTEXT_WORKER0, "Worker0"}, + {game::THREAD_CONTEXT_WORKER1, "Worker1"}, + {game::THREAD_CONTEXT_WORKER2, "Worker2"}, + {game::THREAD_CONTEXT_WORKER3, "Worker3"}, + {game::THREAD_CONTEXT_WORKER4, "Worker4"}, + {game::THREAD_CONTEXT_WORKER5, "Worker5"}, + {game::THREAD_CONTEXT_WORKER6, "Worker6"}, + {game::THREAD_CONTEXT_WORKER7, "Worker7"}, + {game::THREAD_CONTEXT_SERVER, "Server"}, + {game::THREAD_CONTEXT_CINEMATIC, "Cinematic"}, + {game::THREAD_CONTEXT_DATABASE, "Database"}, + {game::THREAD_CONTEXT_STREAM, "Stream"}, + {game::THREAD_CONTEXT_SNDSTREAMPACKETCALLBACK, "Snd stream packet callback"}, + {game::THREAD_CONTEXT_STATS_WRITE, "Stats write"}, + }; + + for (const auto& thread_name : thread_names) + { + const auto id = game::threadIds[thread_name.first]; + if (id) + { + utils::thread::set_name(id, thread_name.second); + } + } + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + set_thread_names(); + scheduler::once(set_thread_names, scheduler::pipeline::main); + scheduler::once(set_thread_names, scheduler::pipeline::renderer); + scheduler::once(set_thread_names, scheduler::pipeline::server); + } + }; +} + +REGISTER_COMPONENT(thread_names::component) diff --git a/src/client/component/ui_scripting.cpp b/src/client/component/ui_scripting.cpp new file mode 100644 index 0000000..c2e9393 --- /dev/null +++ b/src/client/component/ui_scripting.cpp @@ -0,0 +1,363 @@ +#include +#include "loader/component_loader.hpp" + +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include "command.hpp" + +#include "localized_strings.hpp" +#include "console.hpp" +#include "game_module.hpp" +#include "fps.hpp" + +#include "game/ui_scripting/execution.hpp" + +#include "ui_scripting.hpp" + +#include +#include + +namespace ui_scripting +{ + namespace + { + std::unordered_map> converted_functions; + + utils::hook::detour hks_start_hook; + utils::hook::detour hks_shutdown_hook; + utils::hook::detour hks_package_require_hook; + + struct script + { + std::string name; + std::string root; + }; + + struct globals + { + std::string in_require_script; + std::vector + + + diff --git a/src/client/resources/splash.bmp b/src/client/resources/splash.bmp new file mode 100644 index 0000000000000000000000000000000000000000..522db95bf1cc1aabad625e8be41448d2810fe284 GIT binary patch literal 1105976 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
  • 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 z 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

    Zm8r(=4-bxtQP9ENdjURnQIEyx( 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

    O0Y}kU-MgG?)Z_bcKEiHJ33dwz-B^^ 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
    NvMgMW+>Xu7M+b$%4 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�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 literal 0 HcmV?d00001 diff --git a/src/client/std_include.cpp b/src/client/std_include.cpp new file mode 100644 index 0000000..efe6cd6 --- /dev/null +++ b/src/client/std_include.cpp @@ -0,0 +1,32 @@ +#include + +#pragma comment(linker, "/base:0x160000000") + +extern "C" +{ + __declspec(dllexport) DWORD NvOptimusEnablement = 1; + __declspec(dllexport) DWORD AmdPowerXpressRequestHighPerformance = 1; +}; + +extern "C" +{ + int s_read_arc4random(void*, size_t) + { + return -1; + } + + int s_read_getrandom(void*, size_t) + { + return -1; + } + + int s_read_urandom(void*, size_t) + { + return -1; + } + + int s_read_ltm_rng(void*, size_t) + { + return -1; + } +} diff --git a/src/client/std_include.hpp b/src/client/std_include.hpp new file mode 100644 index 0000000..4ba2eb3 --- /dev/null +++ b/src/client/std_include.hpp @@ -0,0 +1,99 @@ +#pragma once + +#define BINARY_PAYLOAD_SIZE 0x12000000 + +#pragma warning(push) +#pragma warning(disable: 4100) +#pragma warning(disable: 4127) +#pragma warning(disable: 4244) +#pragma warning(disable: 4458) +#pragma warning(disable: 4702) +#pragma warning(disable: 4996) +#pragma warning(disable: 5054) + +#define WIN32_LEAN_AND_MEAN + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// min and max is required by gdi, therefore NOMINMAX won't work +#ifdef max +#undef max +#endif + +#ifdef min +#undef min +#endif + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#pragma warning(pop) +#pragma warning(disable: 4100) + +#pragma comment(lib, "Crypt32.lib") +#pragma comment(lib, "iphlpapi.lib") +#pragma comment(lib, "dbghelp.lib") +#pragma comment(lib, "ntdll.lib") +#pragma comment(lib, "urlmon.lib" ) +#pragma comment(lib, "ws2_32.lib") + +#include "resource.hpp" + +using namespace std::literals; diff --git a/src/client/steam/interface.cpp b/src/client/steam/interface.cpp new file mode 100644 index 0000000..75ca922 --- /dev/null +++ b/src/client/steam/interface.cpp @@ -0,0 +1,98 @@ +#include +#include "interface.hpp" + +#include +#include + +namespace steam +{ + interface::interface() : interface(nullptr) + { + } + + interface::interface(void* interface_ptr) : interface_ptr_(static_cast(interface_ptr)) + { + } + + interface::operator bool() const + { + return this->interface_ptr_ != nullptr; + } + + void* interface::find_method(const std::string& name) + { + const auto method_entry = this->methods_.find(name); + if (method_entry != this->methods_.end()) + { + return method_entry->second; + } + + return this->search_method(name); + } + + void* interface::search_method(const std::string& name) + { + if (!utils::memory::is_bad_read_ptr(this->interface_ptr_)) + { + auto vftbl = *this->interface_ptr_; + + while (!utils::memory::is_bad_read_ptr(vftbl) && !utils::memory::is_bad_code_ptr(*vftbl)) + { + const auto ptr = *vftbl; + const auto result = this->analyze_method(ptr); + if (!result.empty()) + { + this->methods_[result] = ptr; + + if (result == name) + { + return ptr; + } + } + + ++vftbl; + } + } + + return {}; + } + + std::string interface::analyze_method(const void* method_ptr) + { + if (utils::memory::is_bad_code_ptr(method_ptr)) return {}; + + ud_t ud; + ud_init(&ud); + ud_set_mode(&ud, 64); + ud_set_pc(&ud, uint64_t(method_ptr)); + ud_set_input_buffer(&ud, static_cast(method_ptr), INT32_MAX); + + while (true) + { + ud_disassemble(&ud); + + if (ud_insn_mnemonic(&ud) == UD_Iret) + { + break; + } + + if (ud_insn_mnemonic(&ud) == UD_Ilea) + { + const auto* operand = ud_insn_opr(&ud, 1); + if (operand && operand->type == UD_OP_MEM && operand->base == UD_R_RIP) + { + auto* operand_ptr = reinterpret_cast(ud_insn_len(&ud) + ud_insn_off(&ud) + operand->lval. + sdword); + if (!utils::memory::is_bad_read_ptr(operand_ptr) && utils::memory::is_rdata_ptr(operand_ptr)) + { + return operand_ptr; + } + } + } + + if (*reinterpret_cast(ud.pc) == 0xCC) break; // int 3 + } + + return {}; + } +} diff --git a/src/client/steam/interface.hpp b/src/client/steam/interface.hpp new file mode 100644 index 0000000..c118c80 --- /dev/null +++ b/src/client/steam/interface.hpp @@ -0,0 +1,85 @@ +#pragma once + +#ifdef interface +#undef interface +#endif + +namespace steam +{ + struct raw_steam_id final + { + unsigned int account_id : 32; + unsigned int account_instance : 20; + unsigned int account_type : 4; + int universe : 8; + }; + + typedef union + { + raw_steam_id raw; + unsigned long long bits; + } steam_id; + +#pragma pack( push, 1 ) + struct raw_game_id final + { + unsigned int app_id : 24; + unsigned int type : 8; + unsigned int mod_id : 32; + }; + + typedef union + { + raw_game_id raw; + unsigned long long bits; + } game_id; +#pragma pack( pop ) + + class interface final + { + public: + + interface(); + interface(void* interface_ptr); + + operator bool() const; + + template + T invoke(const std::string& method_name, Args ... args) + { + if (!this->interface_ptr_) + { + throw std::runtime_error("Invalid interface pointer"); + } + + const auto method = this->find_method(method_name); + if (!method) + { + throw std::runtime_error("Unable to find method: " + method_name); + } + + return static_cast(method)(this->interface_ptr_, args...); + } + + template + T invoke(const size_t table_entry, Args ... args) + { + if (!this->interface_ptr_) + { + throw std::runtime_error("Invalid interface pointer"); + } + + return static_cast((*this->interface_ptr_)[table_entry])( + this->interface_ptr_, args...); + } + + private: + void*** interface_ptr_; + std::unordered_map methods_; + + void* find_method(const std::string& name); + void* search_method(const std::string& name); + + std::string analyze_method(const void* method_ptr); + }; +} diff --git a/src/client/steam/interfaces/apps.cpp b/src/client/steam/interfaces/apps.cpp new file mode 100644 index 0000000..44350e5 --- /dev/null +++ b/src/client/steam/interfaces/apps.cpp @@ -0,0 +1,104 @@ +#include +#include "../steam.hpp" + +namespace steam +{ + bool apps::BIsSubscribed() + { + return true; + } + + bool apps::BIsLowViolence() + { + return false; + } + + bool apps::BIsCybercafe() + { + return false; + } + + bool apps::BIsVACBanned() + { + return false; + } + + const char* apps::GetCurrentGameLanguage() + { + return "english"; + } + + const char* apps::GetAvailableGameLanguages() + { + return "english"; + } + + bool apps::BIsSubscribedApp(unsigned int appID) + { + return true; + } + + bool apps::BIsDlcInstalled(unsigned int appID) + { + return true; + } + + unsigned int apps::GetEarliestPurchaseUnixTime(unsigned int nAppID) + { + return 0; + } + + bool apps::BIsSubscribedFromFreeWeekend() + { + return false; + } + + int apps::GetDLCCount() + { + return 0; + } + + bool apps::BGetDLCDataByIndex(int iDLC, unsigned int* pAppID, bool* pbAvailable, char* pchName, + int cchNameBufferSize) + { + return false; + } + + void apps::InstallDLC(unsigned int nAppID) + { + } + + void apps::UninstallDLC(unsigned int nAppID) + { + } + + void apps::RequestAppProofOfPurchaseKey(unsigned int nAppID) + { + } + + bool apps::GetCurrentBetaName(char* pchName, int cchNameBufferSize) + { + strncpy_s(pchName, cchNameBufferSize, "public", cchNameBufferSize); + return true; + } + + bool apps::MarkContentCorrupt(bool bMissingFilesOnly) + { + return false; + } + + unsigned int apps::GetInstalledDepots(int* pvecDepots, unsigned int cMaxDepots) + { + return 0; + } + + unsigned int apps::GetAppInstallDir(unsigned int appID, char* pchFolder, unsigned int cchFolderBufferSize) + { + return 0; + } + + bool apps::BIsAppInstalled(unsigned int appID) + { + return false; + } +} \ No newline at end of file diff --git a/src/client/steam/interfaces/apps.hpp b/src/client/steam/interfaces/apps.hpp new file mode 100644 index 0000000..0729808 --- /dev/null +++ b/src/client/steam/interfaces/apps.hpp @@ -0,0 +1,32 @@ +#pragma once + +namespace steam +{ + class apps + { + public: + ~apps() = default; + + virtual bool BIsSubscribed(); + virtual bool BIsLowViolence(); + virtual bool BIsCybercafe(); + virtual bool BIsVACBanned(); + virtual const char* GetCurrentGameLanguage(); + virtual const char* GetAvailableGameLanguages(); + virtual bool BIsSubscribedApp(unsigned int appID); + virtual bool BIsDlcInstalled(unsigned int appID); + virtual unsigned int GetEarliestPurchaseUnixTime(unsigned int nAppID); + virtual bool BIsSubscribedFromFreeWeekend(); + virtual int GetDLCCount(); + virtual bool BGetDLCDataByIndex(int iDLC, unsigned int* pAppID, bool* pbAvailable, char* pchName, + int cchNameBufferSize); + virtual void InstallDLC(unsigned int nAppID); + virtual void UninstallDLC(unsigned int nAppID); + virtual void RequestAppProofOfPurchaseKey(unsigned int nAppID); + virtual bool GetCurrentBetaName(char* pchName, int cchNameBufferSize); + virtual bool MarkContentCorrupt(bool bMissingFilesOnly); + virtual unsigned int GetInstalledDepots(int* pvecDepots, unsigned int cMaxDepots); + virtual unsigned int GetAppInstallDir(unsigned int appID, char* pchFolder, unsigned int cchFolderBufferSize); + virtual bool BIsAppInstalled(unsigned int appID); + }; +} diff --git a/src/client/steam/interfaces/friends.cpp b/src/client/steam/interfaces/friends.cpp new file mode 100644 index 0000000..5f3d5ab --- /dev/null +++ b/src/client/steam/interfaces/friends.cpp @@ -0,0 +1,313 @@ +#include +#include "../steam.hpp" + +namespace steam +{ + const char* friends::GetPersonaName() + { + return "1337"; + } + + unsigned long long friends::SetPersonaName(const char* pchPersonaName) + { + return 0; + } + + int friends::GetPersonaState() + { + return 1; + } + + int friends::GetFriendCount(int eFriendFlags) + { + return 0; + } + + steam_id friends::GetFriendByIndex(int iFriend, int iFriendFlags) + { + return steam_id(); + } + + int friends::GetFriendRelationship(steam_id steamIDFriend) + { + return 0; + } + + int friends::GetFriendPersonaState(steam_id steamIDFriend) + { + return 0; + } + + const char* friends::GetFriendPersonaName(steam_id steamIDFriend) + { + return ""; + } + + bool friends::GetFriendGamePlayed(steam_id steamIDFriend, void* pFriendGameInfo) + { + return false; + } + + const char* friends::GetFriendPersonaNameHistory(steam_id steamIDFriend, int iPersonaName) + { + return ""; + } + + bool friends::HasFriend(steam_id steamIDFriend, int eFriendFlags) + { + return false; + } + + int friends::GetClanCount() + { + return 0; + } + + steam_id friends::GetClanByIndex(int iClan) + { + return steam_id(); + } + + const char* friends::GetClanName(steam_id steamIDClan) + { + return "3arc"; + } + + const char* friends::GetClanTag(steam_id steamIDClan) + { + return this->GetClanName(steamIDClan); + } + + bool friends::GetClanActivityCounts(steam_id steamID, int* pnOnline, int* pnInGame, int* pnChatting) + { + return false; + } + + unsigned long long friends::DownloadClanActivityCounts(steam_id groupIDs[], int nIds) + { + return 0; + } + + int friends::GetFriendCountFromSource(steam_id steamIDSource) + { + return 0; + } + + steam_id friends::GetFriendFromSourceByIndex(steam_id steamIDSource, int iFriend) + { + return steam_id(); + } + + bool friends::IsUserInSource(steam_id steamIDUser, steam_id steamIDSource) + { + return false; + } + + void friends::SetInGameVoiceSpeaking(steam_id steamIDUser, bool bSpeaking) + { + } + + void friends::ActivateGameOverlay(const char* pchDialog) + { + } + + void friends::ActivateGameOverlayToUser(const char* pchDialog, steam_id steamID) + { + } + + void friends::ActivateGameOverlayToWebPage(const char* pchURL) + { + } + + void friends::ActivateGameOverlayToStore(unsigned int nAppID, unsigned int eFlag) + { + } + + void friends::SetPlayedWith(steam_id steamIDUserPlayedWith) + { + } + + void friends::ActivateGameOverlayInviteDialog(steam_id steamIDLobby) + { + } + + int friends::GetSmallFriendAvatar(steam_id steamIDFriend) + { + return 0; + } + + int friends::GetMediumFriendAvatar(steam_id steamIDFriend) + { + return 0; + } + + int friends::GetLargeFriendAvatar(steam_id steamIDFriend) + { + return 0; + } + + bool friends::RequestUserInformation(steam_id steamIDUser, bool bRequireNameOnly) + { + return false; + } + + unsigned long long friends::RequestClanOfficerList(steam_id steamIDClan) + { + return 0; + } + + steam_id friends::GetClanOwner(steam_id steamIDClan) + { + return steam_id(); + } + + int friends::GetClanOfficerCount(steam_id steamIDClan) + { + return 0; + } + + steam_id friends::GetClanOfficerByIndex(steam_id steamIDClan, int iOfficer) + { + return steam_id(); + } + + int friends::GetUserRestrictions() + { + return 0; + } + + bool friends::SetRichPresence(const char* pchKey, const char* pchValue) + { + return true; + } + + void friends::ClearRichPresence() + { + } + + const char* friends::GetFriendRichPresence(steam_id steamIDFriend, const char* pchKey) + { + return ""; + } + + int friends::GetFriendRichPresenceKeyCount(steam_id steamIDFriend) + { + return 0; + } + + const char* friends::GetFriendRichPresenceKeyByIndex(steam_id steamIDFriend, int iKey) + { + return "a"; + } + + void friends::RequestFriendRichPresence(steam_id steamIDFriend) + { + } + + bool friends::InviteUserToGame(steam_id steamIDFriend, const char* pchConnectString) + { + return false; + } + + int friends::GetCoplayFriendCount() + { + return 0; + } + + steam_id friends::GetCoplayFriend(int iCoplayFriend) + { + return steam_id(); + } + + int friends::GetFriendCoplayTime(steam_id steamIDFriend) + { + return 0; + } + + unsigned int friends::GetFriendCoplayGame(steam_id steamIDFriend) + { + return 0; + } + + unsigned long long friends::JoinClanChatRoom(steam_id steamIDClan) + { + return 0; + } + + bool friends::LeaveClanChatRoom(steam_id steamIDClan) + { + return false; + } + + int friends::GetClanChatMemberCount(steam_id steamIDClan) + { + return 0; + } + + steam_id friends::GetChatMemberByIndex(steam_id steamIDClan, int iUser) + { + return steam_id(); + } + + bool friends::SendClanChatMessage(steam_id steamIDClanChat, const char* pchText) + { + return false; + } + + int friends::GetClanChatMessage(steam_id steamIDClanChat, int iMessage, void* prgchText, int cchTextMax, + unsigned int* peChatEntryType, steam_id* pSteamIDChatter) + { + return 0; + } + + bool friends::IsClanChatAdmin(steam_id steamIDClanChat, steam_id steamIDUser) + { + return false; + } + + bool friends::IsClanChatWindowOpenInSteam(steam_id steamIDClanChat) + { + return false; + } + + bool friends::OpenClanChatWindowInSteam(steam_id steamIDClanChat) + { + return false; + } + + bool friends::CloseClanChatWindowInSteam(steam_id steamIDClanChat) + { + return false; + } + + bool friends::SetListenForFriendsMessages(bool bInterceptEnabled) + { + return false; + } + + bool friends::ReplyToFriendMessage(steam_id steamIDFriend, const char* pchMsgToSend) + { + return false; + } + + int friends::GetFriendMessage(steam_id steamIDFriend, int iMessageID, void* pvData, int cubData, + unsigned int* peChatEntryType) + { + return 0; + } + + unsigned long long friends::GetFollowerCount(steam_id steamID) + { + return 0; + } + + unsigned long long friends::IsFollowing(steam_id steamID) + { + return 0; + } + + unsigned long long friends::EnumerateFollowingList(unsigned int unStartIndex) + { + return 0; + } +} diff --git a/src/client/steam/interfaces/friends.hpp b/src/client/steam/interfaces/friends.hpp new file mode 100644 index 0000000..f7cb2a2 --- /dev/null +++ b/src/client/steam/interfaces/friends.hpp @@ -0,0 +1,76 @@ +#pragma once + +namespace steam +{ + class friends + { + public: + ~friends() = default; + + virtual const char* GetPersonaName(); + virtual unsigned long long SetPersonaName(const char* pchPersonaName); + virtual int GetPersonaState(); + virtual int GetFriendCount(int eFriendFlags); + virtual steam_id GetFriendByIndex(int iFriend, int iFriendFlags); + virtual int GetFriendRelationship(steam_id steamIDFriend); + virtual int GetFriendPersonaState(steam_id steamIDFriend); + virtual const char* GetFriendPersonaName(steam_id steamIDFriend); + virtual bool GetFriendGamePlayed(steam_id steamIDFriend, void* pFriendGameInfo); + virtual const char* GetFriendPersonaNameHistory(steam_id steamIDFriend, int iPersonaName); + virtual bool HasFriend(steam_id steamIDFriend, int eFriendFlags); + virtual int GetClanCount(); + virtual steam_id GetClanByIndex(int iClan); + virtual const char* GetClanName(steam_id steamIDClan); + virtual const char* GetClanTag(steam_id steamIDClan); + virtual bool GetClanActivityCounts(steam_id steamID, int* pnOnline, int* pnInGame, int* pnChatting); + virtual unsigned long long DownloadClanActivityCounts(steam_id groupIDs[], int nIds); + virtual int GetFriendCountFromSource(steam_id steamIDSource); + virtual steam_id GetFriendFromSourceByIndex(steam_id steamIDSource, int iFriend); + virtual bool IsUserInSource(steam_id steamIDUser, steam_id steamIDSource); + virtual void SetInGameVoiceSpeaking(steam_id steamIDUser, bool bSpeaking); + virtual void ActivateGameOverlay(const char* pchDialog); + virtual void ActivateGameOverlayToUser(const char* pchDialog, steam_id steamID); + virtual void ActivateGameOverlayToWebPage(const char* pchURL); + virtual void ActivateGameOverlayToStore(unsigned int nAppID, unsigned int eFlag); + virtual void SetPlayedWith(steam_id steamIDUserPlayedWith); + virtual void ActivateGameOverlayInviteDialog(steam_id steamIDLobby); + virtual int GetSmallFriendAvatar(steam_id steamIDFriend); + virtual int GetMediumFriendAvatar(steam_id steamIDFriend); + virtual int GetLargeFriendAvatar(steam_id steamIDFriend); + virtual bool RequestUserInformation(steam_id steamIDUser, bool bRequireNameOnly); + virtual unsigned long long RequestClanOfficerList(steam_id steamIDClan); + virtual steam_id GetClanOwner(steam_id steamIDClan); + virtual int GetClanOfficerCount(steam_id steamIDClan); + virtual steam_id GetClanOfficerByIndex(steam_id steamIDClan, int iOfficer); + virtual int GetUserRestrictions(); + virtual bool SetRichPresence(const char* pchKey, const char* pchValue); + virtual void ClearRichPresence(); + virtual const char* GetFriendRichPresence(steam_id steamIDFriend, const char* pchKey); + virtual int GetFriendRichPresenceKeyCount(steam_id steamIDFriend); + virtual const char* GetFriendRichPresenceKeyByIndex(steam_id steamIDFriend, int iKey); + virtual void RequestFriendRichPresence(steam_id steamIDFriend); + virtual bool InviteUserToGame(steam_id steamIDFriend, const char* pchConnectString); + virtual int GetCoplayFriendCount(); + virtual steam_id GetCoplayFriend(int iCoplayFriend); + virtual int GetFriendCoplayTime(steam_id steamIDFriend); + virtual unsigned int GetFriendCoplayGame(steam_id steamIDFriend); + virtual unsigned long long JoinClanChatRoom(steam_id steamIDClan); + virtual bool LeaveClanChatRoom(steam_id steamIDClan); + virtual int GetClanChatMemberCount(steam_id steamIDClan); + virtual steam_id GetChatMemberByIndex(steam_id steamIDClan, int iUser); + virtual bool SendClanChatMessage(steam_id steamIDClanChat, const char* pchText); + virtual int GetClanChatMessage(steam_id steamIDClanChat, int iMessage, void* prgchText, int cchTextMax, + unsigned int* peChatEntryType, steam_id* pSteamIDChatter); + virtual bool IsClanChatAdmin(steam_id steamIDClanChat, steam_id steamIDUser); + virtual bool IsClanChatWindowOpenInSteam(steam_id steamIDClanChat); + virtual bool OpenClanChatWindowInSteam(steam_id steamIDClanChat); + virtual bool CloseClanChatWindowInSteam(steam_id steamIDClanChat); + virtual bool SetListenForFriendsMessages(bool bInterceptEnabled); + virtual bool ReplyToFriendMessage(steam_id steamIDFriend, const char* pchMsgToSend); + virtual int GetFriendMessage(steam_id steamIDFriend, int iMessageID, void* pvData, int cubData, + unsigned int* peChatEntryType); + virtual unsigned long long GetFollowerCount(steam_id steamID); + virtual unsigned long long IsFollowing(steam_id steamID); + virtual unsigned long long EnumerateFollowingList(unsigned int unStartIndex); + }; +} diff --git a/src/client/steam/interfaces/game_server.cpp b/src/client/steam/interfaces/game_server.cpp new file mode 100644 index 0000000..11e7a79 --- /dev/null +++ b/src/client/steam/interfaces/game_server.cpp @@ -0,0 +1,204 @@ +#include +#include "../steam.hpp" + +namespace steam +{ + bool game_server::InitGameServer(unsigned int unGameIP, unsigned short unGamePort, unsigned short usQueryPort, + unsigned int unServerFlags, unsigned int nAppID, const char* pchVersion) + { + return true; + } + + void game_server::SetProduct(const char* pchProductName) + { + } + + void game_server::SetGameDescription(const char* pchGameDescription) + { + } + + void game_server::SetModDir(const char* pchModDir) + { + } + + void game_server::SetDedicatedServer(bool bDedicatedServer) + { + } + + void game_server::LogOn(const char* pszAccountName, const char* pszPassword) + { + } + + void game_server::LogOnAnonymous() + { + auto* const retvals = calloc(1, 1); + const auto result = callbacks::register_call(); + callbacks::return_call(retvals, 0, 101, result); + } + + void game_server::LogOff() + { + } + + bool game_server::BLoggedOn() + { + return true; + } + + bool game_server::BSecure() + { + return false; + } + + steam_id game_server::GetSteamID() + { + return SteamUser()->GetSteamID(); + } + + bool game_server::WasRestartRequested() + { + return false; + } + + void game_server::SetMaxPlayerCount(int cPlayersMax) + { + } + + void game_server::SetBotPlayerCount(int cBotPlayers) + { + } + + void game_server::SetServerName(const char* pszServerName) + { + } + + void game_server::SetMapName(const char* pszMapName) + { + } + + void game_server::SetPasswordProtected(bool bPasswordProtected) + { + } + + void game_server::SetSpectatorPort(unsigned short unSpectatorPort) + { + } + + void game_server::SetSpectatorServerName(const char* pszSpectatorServerName) + { + } + + void game_server::ClearAllKeyValues() + { + } + + void game_server::SetKeyValue(const char* pKey, const char* pValue) + { + } + + void game_server::SetGameTags(const char* pchGameTags) + { + } + + void game_server::SetGameData(const char* pchGameData) + { + } + + void game_server::SetRegion(const char* pchRegionName) + { + } + + int game_server::SendUserConnectAndAuthenticate(unsigned int unIPClient, const void* pvAuthBlob, + unsigned int cubAuthBlobSize, steam_id* pSteamIDUser) + { + return 0; + } + + steam_id game_server::CreateUnauthenticatedUserConnection() + { + return SteamUser()->GetSteamID(); + } + + void game_server::SendUserDisconnect(steam_id steamIDUser) + { + } + + bool game_server::BUpdateUserData(steam_id steamIDUser, const char* pchPlayerName, unsigned int uScore) + { + return false; + } + + int game_server::GetAuthSessionTicket(void* pTicket, int cbMaxTicket, unsigned int* pcbTicket) + { + return 0; + } + + int game_server::BeginAuthSession(const void* pAuthTicket, int cbAuthTicket, steam_id steamID) + { + return 0; + } + + void game_server::EndAuthSession(steam_id steamID) + { + } + + void game_server::CancelAuthTicket(int hAuthTicket) + { + } + + int game_server::UserHasLicenseForApp(steam_id steamID, unsigned int appID) + { + return 0; + } + + bool game_server::RequestUserGroupStatus(steam_id steamIDUser, steam_id steamIDGroup) + { + return false; + } + + void game_server::GetGameplayStats() + { + } + + unsigned long long game_server::GetServerReputation() + { + return 0; + } + + unsigned int game_server::GetPublicIP() + { + return 0; + } + + bool game_server::HandleIncomingPacket(const void* pData, int cbData, unsigned int srcIP, unsigned short srcPort) + { + return false; + } + + int game_server::GetNextOutgoingPacket(void* pOut, int cbMaxOut, unsigned int* pNetAdr, unsigned short* pPort) + { + return 0; + } + + void game_server::EnableHeartbeats(bool bActive) + { + } + + void game_server::SetHeartbeatInterval(int iHeartbeatInterval) + { + } + + void game_server::ForceHeartbeat() + { + } + + unsigned long long game_server::AssociateWithClan(steam_id clanID) + { + return 0; + } + + unsigned long long game_server::ComputeNewPlayerCompatibility(steam_id steamID) + { + return 0; + } +} diff --git a/src/client/steam/interfaces/game_server.hpp b/src/client/steam/interfaces/game_server.hpp new file mode 100644 index 0000000..3f7f7c7 --- /dev/null +++ b/src/client/steam/interfaces/game_server.hpp @@ -0,0 +1,57 @@ +#pragma once + +namespace steam +{ + class game_server + { + public: + ~game_server() = default; + + virtual bool InitGameServer(unsigned int unGameIP, unsigned short unGamePort, unsigned short usQueryPort, + unsigned int unServerFlags, unsigned int nAppID, const char* pchVersion); + virtual void SetProduct(const char* pchProductName); + virtual void SetGameDescription(const char* pchGameDescription); + virtual void SetModDir(const char* pchModDir); + virtual void SetDedicatedServer(bool bDedicatedServer); + virtual void LogOn(const char* pszAccountName, const char* pszPassword); + virtual void LogOnAnonymous(); + virtual void LogOff(); + virtual bool BLoggedOn(); + virtual bool BSecure(); + virtual steam_id GetSteamID(); + virtual bool WasRestartRequested(); + virtual void SetMaxPlayerCount(int cPlayersMax); + virtual void SetBotPlayerCount(int cBotPlayers); + virtual void SetServerName(const char* pszServerName); + virtual void SetMapName(const char* pszMapName); + virtual void SetPasswordProtected(bool bPasswordProtected); + virtual void SetSpectatorPort(unsigned short unSpectatorPort); + virtual void SetSpectatorServerName(const char* pszSpectatorServerName); + virtual void ClearAllKeyValues(); + virtual void SetKeyValue(const char* pKey, const char* pValue); + virtual void SetGameTags(const char* pchGameTags); + virtual void SetGameData(const char* pchGameData); + virtual void SetRegion(const char* pchRegionName); + virtual int SendUserConnectAndAuthenticate(unsigned int unIPClient, const void* pvAuthBlob, + unsigned int cubAuthBlobSize, steam_id* pSteamIDUser); + virtual steam_id CreateUnauthenticatedUserConnection(); + virtual void SendUserDisconnect(steam_id steamIDUser); + virtual bool BUpdateUserData(steam_id steamIDUser, const char* pchPlayerName, unsigned int uScore); + virtual int GetAuthSessionTicket(void* pTicket, int cbMaxTicket, unsigned int* pcbTicket); + virtual int BeginAuthSession(const void* pAuthTicket, int cbAuthTicket, steam_id steamID); + virtual void EndAuthSession(steam_id steamID); + virtual void CancelAuthTicket(int hAuthTicket); + virtual int UserHasLicenseForApp(steam_id steamID, unsigned int appID); + virtual bool RequestUserGroupStatus(steam_id steamIDUser, steam_id steamIDGroup); + virtual void GetGameplayStats(); + virtual unsigned long long GetServerReputation(); + virtual unsigned int GetPublicIP(); + virtual bool HandleIncomingPacket(const void* pData, int cbData, unsigned int srcIP, unsigned short srcPort); + virtual int GetNextOutgoingPacket(void* pOut, int cbMaxOut, unsigned int* pNetAdr, unsigned short* pPort); + virtual void EnableHeartbeats(bool bActive); + virtual void SetHeartbeatInterval(int iHeartbeatInterval); + virtual void ForceHeartbeat(); + virtual unsigned long long AssociateWithClan(steam_id clanID); + virtual unsigned long long ComputeNewPlayerCompatibility(steam_id steamID); + }; +} diff --git a/src/client/steam/interfaces/matchmaking.cpp b/src/client/steam/interfaces/matchmaking.cpp new file mode 100644 index 0000000..8b8dec7 --- /dev/null +++ b/src/client/steam/interfaces/matchmaking.cpp @@ -0,0 +1,230 @@ +#include +#include "../steam.hpp" + +namespace steam +{ + int matchmaking::GetFavoriteGameCount() + { + return 0; + } + + bool matchmaking::GetFavoriteGame(int iGame, unsigned int* pnAppID, unsigned int* pnIP, unsigned short* pnConnPort, + unsigned short* pnQueryPort, unsigned int* punFlags, + unsigned int* pRTime32LastPlayedOnServer) + { + return false; + } + + int matchmaking::AddFavoriteGame(unsigned int nAppID, unsigned int nIP, unsigned short nConnPort, + unsigned short nQueryPort, unsigned int unFlags, + unsigned int rTime32LastPlayedOnServer) + { + return 0; + } + + bool matchmaking::RemoveFavoriteGame(unsigned int nAppID, unsigned int nIP, unsigned short nConnPort, + unsigned short nQueryPort, unsigned int unFlags) + { + return false; + } + + unsigned long long matchmaking::RequestLobbyList() + { + return 0; + } + + void matchmaking::AddRequestLobbyListStringFilter(const char* pchKeyToMatch, const char* pchValueToMatch, + int eComparisonType) + { + } + + void matchmaking::AddRequestLobbyListNumericalFilter(const char* pchKeyToMatch, int nValueToMatch, + int eComparisonType) + { + } + + void matchmaking::AddRequestLobbyListNearValueFilter(const char* pchKeyToMatch, int nValueToBeCloseTo) + { + } + + void matchmaking::AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable) + { + } + + void matchmaking::AddRequestLobbyListDistanceFilter(int eLobbyDistanceFilter) + { + } + + void matchmaking::AddRequestLobbyListResultCountFilter(int cMaxResults) + { + } + + void matchmaking::AddRequestLobbyListCompatibleMembersFilter(steam_id steamID) + { + } + + steam_id matchmaking::GetLobbyByIndex(int iLobby) + { + steam_id id; + + id.raw.account_id = SteamUser()->GetSteamID().raw.account_id; + id.raw.universe = 1; + id.raw.account_type = 8; + id.raw.account_instance = 0x40000; + + return id; + } + + unsigned long long matchmaking::CreateLobby(int eLobbyType, int cMaxMembers) + { + const auto result = callbacks::register_call(); + auto retvals = static_cast(calloc(1, sizeof(lobby_created))); + //::Utils::Memory::AllocateArray(); + steam_id id; + + id.raw.account_id = SteamUser()->GetSteamID().raw.account_id; + id.raw.universe = 1; + id.raw.account_type = 8; + id.raw.account_instance = 0x40000; + + retvals->m_e_result = 1; + retvals->m_ul_steam_id_lobby = id; + + callbacks::return_call(retvals, sizeof(lobby_created), lobby_created::callback_id, result); + + matchmaking::JoinLobby(id); + + return result; + } + + unsigned long long matchmaking::JoinLobby(steam_id steamIDLobby) + { + const auto result = callbacks::register_call(); + auto* retvals = static_cast(calloc(1, sizeof(lobby_enter))); + //::Utils::Memory::AllocateArray(); + retvals->m_b_locked = false; + retvals->m_e_chat_room_enter_response = 1; + retvals->m_rgf_chat_permissions = 0xFFFFFFFF; + retvals->m_ul_steam_id_lobby = steamIDLobby; + + callbacks::return_call(retvals, sizeof(lobby_enter), lobby_enter::callback_id, result); + + return result; + } + + void matchmaking::LeaveLobby(steam_id steamIDLobby) + { + } + + bool matchmaking::InviteUserToLobby(steam_id steamIDLobby, steam_id steamIDInvitee) + { + return true; + } + + int matchmaking::GetNumLobbyMembers(steam_id steamIDLobby) + { + return 1; + } + + steam_id matchmaking::GetLobbyMemberByIndex(steam_id steamIDLobby, int iMember) + { + return SteamUser()->GetSteamID(); + } + + const char* matchmaking::GetLobbyData(steam_id steamIDLobby, const char* pchKey) + { + return ""; + } + + bool matchmaking::SetLobbyData(steam_id steamIDLobby, const char* pchKey, const char* pchValue) + { + return true; + } + + int matchmaking::GetLobbyDataCount(steam_id steamIDLobby) + { + return 0; + } + + bool matchmaking::GetLobbyDataByIndex(steam_id steamIDLobby, int iLobbyData, char* pchKey, int cchKeyBufferSize, + char* pchValue, int cchValueBufferSize) + { + return true; + } + + bool matchmaking::DeleteLobbyData(steam_id steamIDLobby, const char* pchKey) + { + return true; + } + + const char* matchmaking::GetLobbyMemberData(steam_id steamIDLobby, steam_id steamIDUser, const char* pchKey) + { + return ""; + } + + void matchmaking::SetLobbyMemberData(steam_id steamIDLobby, const char* pchKey, const char* pchValue) + { + } + + bool matchmaking::SendLobbyChatMsg(steam_id steamIDLobby, const void* pvMsgBody, int cubMsgBody) + { + return true; + } + + int matchmaking::GetLobbyChatEntry(steam_id steamIDLobby, int iChatID, steam_id* pSteamIDUser, void* pvData, + int cubData, int* peChatEntryType) + { + return 0; + } + + bool matchmaking::RequestLobbyData(steam_id steamIDLobby) + { + return true; + } + + void matchmaking::SetLobbyGameServer(steam_id steamIDLobby, unsigned int unGameServerIP, + unsigned short unGameServerPort, steam_id steamIDGameServer) + { + } + + bool matchmaking::GetLobbyGameServer(steam_id steamIDLobby, unsigned int* punGameServerIP, + unsigned short* punGameServerPort, steam_id* psteamIDGameServer) + { + return true; + } + + bool matchmaking::SetLobbyMemberLimit(steam_id steamIDLobby, int cMaxMembers) + { + return true; + } + + int matchmaking::GetLobbyMemberLimit(steam_id steamIDLobby) + { + return 0; + } + + bool matchmaking::SetLobbyType(steam_id steamIDLobby, int eLobbyType) + { + return true; + } + + bool matchmaking::SetLobbyJoinable(steam_id steamIDLobby, bool bLobbyJoinable) + { + return true; + } + + steam_id matchmaking::GetLobbyOwner(steam_id steamIDLobby) + { + return SteamUser()->GetSteamID(); + } + + bool matchmaking::SetLobbyOwner(steam_id steamIDLobby, steam_id steamIDNewOwner) + { + return true; + } + + bool matchmaking::SetLinkedLobby(steam_id steamIDLobby, steam_id steamIDLobby2) + { + return true; + } +} diff --git a/src/client/steam/interfaces/matchmaking.hpp b/src/client/steam/interfaces/matchmaking.hpp new file mode 100644 index 0000000..8892321 --- /dev/null +++ b/src/client/steam/interfaces/matchmaking.hpp @@ -0,0 +1,79 @@ +#pragma once + +namespace steam +{ + struct lobby_created final + { + enum { callback_id = 513 }; + + int m_e_result; + int m_pad; + steam_id m_ul_steam_id_lobby; + }; + + struct lobby_enter final + { + enum { callback_id = 504 }; + + steam_id m_ul_steam_id_lobby; + int m_rgf_chat_permissions; + bool m_b_locked; + int m_e_chat_room_enter_response; + }; + + class matchmaking + { + public: + ~matchmaking() = default; + + virtual int GetFavoriteGameCount(); + virtual bool GetFavoriteGame(int iGame, unsigned int* pnAppID, unsigned int* pnIP, unsigned short* pnConnPort, + unsigned short* pnQueryPort, unsigned int* punFlags, + unsigned int* pRTime32LastPlayedOnServer); + virtual int AddFavoriteGame(unsigned int nAppID, unsigned int nIP, unsigned short nConnPort, + unsigned short nQueryPort, unsigned int unFlags, + unsigned int rTime32LastPlayedOnServer); + virtual bool RemoveFavoriteGame(unsigned int nAppID, unsigned int nIP, unsigned short nConnPort, + unsigned short nQueryPort, unsigned int unFlags); + virtual unsigned long long RequestLobbyList(); + virtual void AddRequestLobbyListStringFilter(const char* pchKeyToMatch, const char* pchValueToMatch, + int eComparisonType); + virtual void AddRequestLobbyListNumericalFilter(const char* pchKeyToMatch, int nValueToMatch, + int eComparisonType); + virtual void AddRequestLobbyListNearValueFilter(const char* pchKeyToMatch, int nValueToBeCloseTo); + virtual void AddRequestLobbyListFilterSlotsAvailable(int nSlotsAvailable); + virtual void AddRequestLobbyListDistanceFilter(int eLobbyDistanceFilter); + virtual void AddRequestLobbyListResultCountFilter(int cMaxResults); + virtual void AddRequestLobbyListCompatibleMembersFilter(steam_id steamID); + virtual steam_id GetLobbyByIndex(int iLobby); + virtual unsigned long long CreateLobby(int eLobbyType, int cMaxMembers); + virtual unsigned long long JoinLobby(steam_id steamIDLobby); + virtual void LeaveLobby(steam_id steamIDLobby); + virtual bool InviteUserToLobby(steam_id steamIDLobby, steam_id steamIDInvitee); + virtual int GetNumLobbyMembers(steam_id steamIDLobby); + virtual steam_id GetLobbyMemberByIndex(steam_id steamIDLobby, int iMember); + virtual const char* GetLobbyData(steam_id steamIDLobby, const char* pchKey); + virtual bool SetLobbyData(steam_id steamIDLobby, const char* pchKey, const char* pchValue); + virtual int GetLobbyDataCount(steam_id steamIDLobby); + virtual bool GetLobbyDataByIndex(steam_id steamIDLobby, int iLobbyData, char* pchKey, int cchKeyBufferSize, + char* pchValue, int cchValueBufferSize); + virtual bool DeleteLobbyData(steam_id steamIDLobby, const char* pchKey); + virtual const char* GetLobbyMemberData(steam_id steamIDLobby, steam_id steamIDUser, const char* pchKey); + virtual void SetLobbyMemberData(steam_id steamIDLobby, const char* pchKey, const char* pchValue); + virtual bool SendLobbyChatMsg(steam_id steamIDLobby, const void* pvMsgBody, int cubMsgBody); + virtual int GetLobbyChatEntry(steam_id steamIDLobby, int iChatID, steam_id* pSteamIDUser, void* pvData, + int cubData, int* peChatEntryType); + virtual bool RequestLobbyData(steam_id steamIDLobby); + virtual void SetLobbyGameServer(steam_id steamIDLobby, unsigned int unGameServerIP, + unsigned short unGameServerPort, steam_id steamIDGameServer); + virtual bool GetLobbyGameServer(steam_id steamIDLobby, unsigned int* punGameServerIP, + unsigned short* punGameServerPort, steam_id* psteamIDGameServer); + virtual bool SetLobbyMemberLimit(steam_id steamIDLobby, int cMaxMembers); + virtual int GetLobbyMemberLimit(steam_id steamIDLobby); + virtual bool SetLobbyType(steam_id steamIDLobby, int eLobbyType); + virtual bool SetLobbyJoinable(steam_id steamIDLobby, bool bLobbyJoinable); + virtual steam_id GetLobbyOwner(steam_id steamIDLobby); + virtual bool SetLobbyOwner(steam_id steamIDLobby, steam_id steamIDNewOwner); + virtual bool SetLinkedLobby(steam_id steamIDLobby, steam_id steamIDLobby2); + }; +} diff --git a/src/client/steam/interfaces/networking.cpp b/src/client/steam/interfaces/networking.cpp new file mode 100644 index 0000000..d0ee6e0 --- /dev/null +++ b/src/client/steam/interfaces/networking.cpp @@ -0,0 +1,121 @@ +#include +#include "../steam.hpp" + +namespace steam +{ + bool networking::SendP2PPacket(steam_id steamIDRemote, const void* pubData, unsigned int cubData, int eP2PSendType) + { + return false; + } + + bool networking::IsP2PPacketAvailable(unsigned int* pcubMsgSize, int idk) + { + return false; + } + + bool networking::ReadP2PPacket(void* pubDest, unsigned int cubDest, unsigned int* pcubMsgSize, + steam_id* psteamIDRemote) + { + return false; + } + + bool networking::AcceptP2PSessionWithUser(steam_id steamIDRemote) + { + return false; + } + + bool networking::CloseP2PSessionWithUser(steam_id steamIDRemote) + { + return false; + } + + bool networking::CloseP2PChannelWithUser(steam_id steamIDRemote, int iVirtualPort) + { + return false; + } + + bool networking::GetP2PSessionState(steam_id steamIDRemote, void* pConnectionState) + { + return false; + } + + bool networking::AllowP2PPacketRelay(bool bAllow) + { + return false; + } + + unsigned int networking::CreateListenSocket(int nVirtualP2PPort, unsigned int nIP, unsigned short nPort, + bool bAllowUseOfPacketRelay) + { + return NULL; + } + + unsigned int networking::CreateP2PConnectionSocket(steam_id steamIDTarget, int nVirtualPort, int nTimeoutSec, + bool bAllowUseOfPacketRelay) + { + return NULL; + } + + unsigned int networking::CreateConnectionSocket(unsigned int nIP, unsigned short nPort, int nTimeoutSec) + { + return NULL; + } + + bool networking::DestroySocket(unsigned int hSocket, bool bNotifyRemoteEnd) + { + return false; + } + + bool networking::DestroyListenSocket(unsigned int hSocket, bool bNotifyRemoteEnd) + { + return false; + } + + bool networking::SendDataOnSocket(unsigned int hSocket, void* pubData, unsigned int cubData, bool bReliable) + { + return false; + } + + bool networking::IsDataAvailableOnSocket(unsigned int hSocket, unsigned int* pcubMsgSize) + { + return false; + } + + bool networking::RetrieveDataFromSocket(unsigned int hSocket, void* pubDest, unsigned int cubDest, + unsigned int* pcubMsgSize) + { + return false; + } + + bool networking::IsDataAvailable(unsigned int hListenSocket, unsigned int* pcubMsgSize, unsigned int* phSocket) + { + return false; + } + + bool networking::RetrieveData(unsigned int hListenSocket, void* pubDest, unsigned int cubDest, + unsigned int* pcubMsgSize, unsigned int* phSocket) + { + return false; + } + + bool networking::GetSocketInfo(unsigned int hSocket, steam_id* pSteamIDRemote, int* peSocketStatus, + unsigned int* punIPRemote, unsigned short* punPortRemote) + { + return false; + } + + bool networking::GetListenSocketInfo(unsigned int hListenSocket, unsigned int* pnIP, unsigned short* pnPort) + { + return false; + } + + int networking::GetSocketConnectionType(unsigned int hSocket) + { + return 0; + } + + int networking::GetMaxPacketSize(unsigned int hSocket) + { + return 0; + } +} diff --git a/src/client/steam/interfaces/networking.hpp b/src/client/steam/interfaces/networking.hpp new file mode 100644 index 0000000..bb1b29d --- /dev/null +++ b/src/client/steam/interfaces/networking.hpp @@ -0,0 +1,39 @@ +#pragma once + +namespace steam +{ + class networking + { + public: + ~networking() = default; + + virtual bool SendP2PPacket(steam_id steamIDRemote, const void* pubData, unsigned int cubData, int eP2PSendType); + virtual bool IsP2PPacketAvailable(unsigned int* pcubMsgSize, int idk); + virtual bool ReadP2PPacket(void* pubDest, unsigned int cubDest, unsigned int* pcubMsgSize, + steam_id* psteamIDRemote); + virtual bool AcceptP2PSessionWithUser(steam_id steamIDRemote); + virtual bool CloseP2PSessionWithUser(steam_id steamIDRemote); + virtual bool CloseP2PChannelWithUser(steam_id steamIDRemote, int iVirtualPort); + virtual bool GetP2PSessionState(steam_id steamIDRemote, void* pConnectionState); + virtual bool AllowP2PPacketRelay(bool bAllow); + virtual unsigned int CreateListenSocket(int nVirtualP2PPort, unsigned int nIP, unsigned short nPort, + bool bAllowUseOfPacketRelay); + virtual unsigned int CreateP2PConnectionSocket(steam_id steamIDTarget, int nVirtualPort, int nTimeoutSec, + bool bAllowUseOfPacketRelay); + virtual unsigned int CreateConnectionSocket(unsigned int nIP, unsigned short nPort, int nTimeoutSec); + virtual bool DestroySocket(unsigned int hSocket, bool bNotifyRemoteEnd); + virtual bool DestroyListenSocket(unsigned int hSocket, bool bNotifyRemoteEnd); + virtual bool SendDataOnSocket(unsigned int hSocket, void* pubData, unsigned int cubData, bool bReliable); + virtual bool IsDataAvailableOnSocket(unsigned int hSocket, unsigned int* pcubMsgSize); + virtual bool RetrieveDataFromSocket(unsigned int hSocket, void* pubDest, unsigned int cubDest, + unsigned int* pcubMsgSize); + virtual bool IsDataAvailable(unsigned int hListenSocket, unsigned int* pcubMsgSize, unsigned int* phSocket); + virtual bool RetrieveData(unsigned int hListenSocket, void* pubDest, unsigned int cubDest, + unsigned int* pcubMsgSize, unsigned int* phSocket); + virtual bool GetSocketInfo(unsigned int hSocket, steam_id* pSteamIDRemote, int* peSocketStatus, + unsigned int* punIPRemote, unsigned short* punPortRemote); + virtual bool GetListenSocketInfo(unsigned int hListenSocket, unsigned int* pnIP, unsigned short* pnPort); + virtual int GetSocketConnectionType(unsigned int hSocket); + virtual int GetMaxPacketSize(unsigned int hSocket); + }; +} diff --git a/src/client/steam/interfaces/remote_storage.cpp b/src/client/steam/interfaces/remote_storage.cpp new file mode 100644 index 0000000..02bc968 --- /dev/null +++ b/src/client/steam/interfaces/remote_storage.cpp @@ -0,0 +1,283 @@ +#include +#include "../steam.hpp" + +namespace steam +{ + bool remote_storage::FileWrite(const char* pchFile, const void* pvData, int cubData) + { + return true; + } + + int remote_storage::FileRead(const char* pchFile, void* pvData, int cubDataToRead) + { + return 0; + } + + bool remote_storage::FileForget(const char* pchFile) + { + return true; + } + + bool remote_storage::FileDelete(const char* pchFile) + { + return true; + } + + unsigned long long remote_storage::FileShare(const char* pchFile) + { + return 0; + } + + bool remote_storage::SetSyncPlatforms(const char* pchFile, unsigned int eRemoteStoragePlatform) + { + return true; + } + + unsigned long long remote_storage::FileWriteStreamOpen(const char* pchFile) + { + return 0; + } + + int remote_storage::FileWriteStreamWriteChunk(unsigned long long hStream, const void* pvData, int cubData) + { + return 1; + } + + int remote_storage::FileWriteStreamClose(unsigned long long hStream) + { + return 1; + } + + int remote_storage::FileWriteStreamCancel(unsigned long long hStream) + { + return 1; + } + + bool remote_storage::FileExists(const char* pchFile) + { + return true; + } + + bool remote_storage::FilePersisted(const char* pchFile) + { + return true; + } + + int remote_storage::GetFileSize(const char* pchFile) + { + return 0; + } + + long long remote_storage::GetFileTimestamp(const char* pchFile) + { + return 0; + } + + unsigned remote_storage::GetSyncPlatforms(const char* pchFile) + { + return 0; + } + + int remote_storage::GetFileCount() + { + return 0; + } + + const char* remote_storage::GetFileNameAndSize(int iFile, int* pnFileSizeInBytes) + { + *pnFileSizeInBytes = 0; + return ""; + } + + bool remote_storage::GetQuota(int* pnTotalBytes, int* puAvailableBytes) + { + *pnTotalBytes = 0x10000000; + *puAvailableBytes = 0x10000000; + return false; + } + + bool remote_storage::IsCloudEnabledForAccount() + { + return false; + } + + bool remote_storage::IsCloudEnabledForApp() + { + return false; + } + + void remote_storage::SetCloudEnabledForApp(bool bEnabled) + { + } + + unsigned long long remote_storage::UGCDownload(unsigned long long hContent, unsigned int uUnk) + { + return 0; + } + + bool remote_storage::GetUGCDownloadProgress(unsigned long long hContent, unsigned int* puDownloadedBytes, + unsigned int* puTotalBytes) + { + return false; + } + + bool remote_storage::GetUGCDetails(unsigned long long hContent, unsigned int* pnAppID, char** ppchName, + int* pnFileSizeInBytes, steam_id* pSteamIDOwner) + { + return false; + } + + int remote_storage::UGCRead(unsigned long long hContent, void* pvData, int cubDataToRead, unsigned int uOffset) + { + return 0; + } + + int remote_storage::GetCachedUGCCount() + { + return 0; + } + + unsigned long long remote_storage::GetCachedUGCHandle(int iCachedContent) + { + return 0; + } + + unsigned long long remote_storage::PublishWorkshopFile(const char* pchFile, const char* pchPreviewFile, + unsigned int nConsumerAppId, const char* pchTitle, + const char* pchDescription, unsigned int eVisibility, + int* pTags, unsigned int eWorkshopFileType) + { + return 0; + } + + unsigned long long remote_storage::CreatePublishedFileUpdateRequest(unsigned long long unPublishedFileId) + { + return 0; + } + + bool remote_storage::UpdatePublishedFileFile(unsigned long long hUpdateRequest, const char* pchFile) + { + return false; + } + + bool remote_storage::UpdatePublishedFilePreviewFile(unsigned long long hUpdateRequest, const char* pchPreviewFile) + { + return false; + } + + bool remote_storage::UpdatePublishedFileTitle(unsigned long long hUpdateRequest, const char* pchTitle) + { + return false; + } + + bool remote_storage::UpdatePublishedFileDescription(unsigned long long hUpdateRequest, const char* pchDescription) + { + return false; + } + + bool remote_storage::UpdatePublishedFileVisibility(unsigned long long hUpdateRequest, unsigned int eVisibility) + { + return false; + } + + bool remote_storage::UpdatePublishedFileTags(unsigned long long hUpdateRequest, int* pTags) + { + return false; + } + + unsigned long long remote_storage::CommitPublishedFileUpdate(unsigned long long hUpdateRequest) + { + return 0; + } + + unsigned long long remote_storage::GetPublishedFileDetails(unsigned long long unPublishedFileId) + { + return 0; + } + + unsigned long long remote_storage::DeletePublishedFile(unsigned long long unPublishedFileId) + { + return 0; + } + + unsigned long long remote_storage::EnumerateUserPublishedFiles(unsigned int uStartIndex) + { + return 0; + } + + unsigned long long remote_storage::SubscribePublishedFile(unsigned long long unPublishedFileId) + { + return 0; + } + + unsigned long long remote_storage::EnumerateUserSubscribedFiles(unsigned int uStartIndex) + { + return 0; + } + + unsigned long long remote_storage::UnsubscribePublishedFile(unsigned long long unPublishedFileId) + { + return 0; + } + + bool remote_storage::UpdatePublishedFileSetChangeDescription(unsigned long long hUpdateRequest, + const char* cszDescription) + { + return false; + } + + unsigned long long remote_storage::GetPublishedItemVoteDetails(unsigned long long unPublishedFileId) + { + return 0; + } + + unsigned long long remote_storage::UpdateUserPublishedItemVote(unsigned long long unPublishedFileId, bool bVoteUp) + { + return 0; + } + + unsigned long long remote_storage::GetUserPublishedItemVoteDetails(unsigned long long unPublishedFileId) + { + return 0; + } + + unsigned long long remote_storage::EnumerateUserSharedWorkshopFiles(unsigned int nAppId, steam_id creatorSteamID, + unsigned int uStartIndex, int* pRequiredTags, + int* pExcludedTags) + { + return 0; + } + + unsigned long long remote_storage::PublishVideo(unsigned int eVideoProvider, const char* cszVideoAccountName, + const char* cszVideoIdentifier, const char* cszFileName, + unsigned int nConsumerAppId, const char* cszTitle, + const char* cszDescription, unsigned int eVisibility, int* pTags) + { + return 0; + } + + unsigned long long remote_storage::SetUserPublishedFileAction(unsigned long long unPublishedFileId, + unsigned int eAction) + { + return 0; + } + + unsigned long long remote_storage::EnumeratePublishedFilesByUserAction( + unsigned int eAction, unsigned int uStartIndex) + { + return 0; + } + + unsigned long long remote_storage::EnumeratePublishedWorkshopFiles(unsigned int eType, unsigned int uStartIndex, + unsigned int cDays, unsigned int cCount, + int* pTags, int* pUserTags) + { + return 0; + } + + unsigned long long remote_storage::UGCDownloadToLocation(unsigned long long hContent, const char* cszLocation, + unsigned int uUnk) + { + return 0; + } +} diff --git a/src/client/steam/interfaces/remote_storage.hpp b/src/client/steam/interfaces/remote_storage.hpp new file mode 100644 index 0000000..ec0d64e --- /dev/null +++ b/src/client/steam/interfaces/remote_storage.hpp @@ -0,0 +1,78 @@ +#pragma once + +namespace steam +{ + class remote_storage + { + public: + ~remote_storage() = default; + + virtual bool FileWrite(const char* pchFile, const void* pvData, int cubData); + virtual int FileRead(const char* pchFile, void* pvData, int cubDataToRead); + virtual bool FileForget(const char* pchFile); + virtual bool FileDelete(const char* pchFile); + virtual unsigned long long FileShare(const char* pchFile); + virtual bool SetSyncPlatforms(const char* pchFile, unsigned int eRemoteStoragePlatform); + virtual unsigned long long FileWriteStreamOpen(const char* pchFile); + virtual int FileWriteStreamWriteChunk(unsigned long long hStream, const void* pvData, int cubData); + virtual int FileWriteStreamClose(unsigned long long hStream); + virtual int FileWriteStreamCancel(unsigned long long hStream); + virtual bool FileExists(const char* pchFile); + virtual bool FilePersisted(const char* pchFile); + virtual int GetFileSize(const char* pchFile); + virtual long long GetFileTimestamp(const char* pchFile); + virtual unsigned int GetSyncPlatforms(const char* pchFile); + virtual int GetFileCount(); + virtual const char* GetFileNameAndSize(int iFile, int* pnFileSizeInBytes); + virtual bool GetQuota(int* pnTotalBytes, int* puAvailableBytes); + virtual bool IsCloudEnabledForAccount(); + virtual bool IsCloudEnabledForApp(); + virtual void SetCloudEnabledForApp(bool bEnabled); + virtual unsigned long long UGCDownload(unsigned long long hContent, unsigned int uUnk); + virtual bool GetUGCDownloadProgress(unsigned long long hContent, unsigned int* puDownloadedBytes, + unsigned int* puTotalBytes); + virtual bool GetUGCDetails(unsigned long long hContent, unsigned int* pnAppID, char** ppchName, + int* pnFileSizeInBytes, steam_id* pSteamIDOwner); + virtual int UGCRead(unsigned long long hContent, void* pvData, int cubDataToRead, unsigned int uOffset); + virtual int GetCachedUGCCount(); + virtual unsigned long long GetCachedUGCHandle(int iCachedContent); + virtual unsigned long long PublishWorkshopFile(const char* pchFile, const char* pchPreviewFile, + unsigned int nConsumerAppId, const char* pchTitle, + const char* pchDescription, unsigned int eVisibility, int* pTags, + unsigned int eWorkshopFileType); + virtual unsigned long long CreatePublishedFileUpdateRequest(unsigned long long unPublishedFileId); + virtual bool UpdatePublishedFileFile(unsigned long long hUpdateRequest, const char* pchFile); + virtual bool UpdatePublishedFilePreviewFile(unsigned long long hUpdateRequest, const char* pchPreviewFile); + virtual bool UpdatePublishedFileTitle(unsigned long long hUpdateRequest, const char* pchTitle); + virtual bool UpdatePublishedFileDescription(unsigned long long hUpdateRequest, const char* pchDescription); + virtual bool UpdatePublishedFileVisibility(unsigned long long hUpdateRequest, unsigned int eVisibility); + virtual bool UpdatePublishedFileTags(unsigned long long hUpdateRequest, int* pTags); + virtual unsigned long long CommitPublishedFileUpdate(unsigned long long hUpdateRequest); + virtual unsigned long long GetPublishedFileDetails(unsigned long long unPublishedFileId); + virtual unsigned long long DeletePublishedFile(unsigned long long unPublishedFileId); + virtual unsigned long long EnumerateUserPublishedFiles(unsigned int uStartIndex); + virtual unsigned long long SubscribePublishedFile(unsigned long long unPublishedFileId); + virtual unsigned long long EnumerateUserSubscribedFiles(unsigned int uStartIndex); + virtual unsigned long long UnsubscribePublishedFile(unsigned long long unPublishedFileId); + virtual bool UpdatePublishedFileSetChangeDescription(unsigned long long hUpdateRequest, + const char* cszDescription); + virtual unsigned long long GetPublishedItemVoteDetails(unsigned long long unPublishedFileId); + virtual unsigned long long UpdateUserPublishedItemVote(unsigned long long unPublishedFileId, bool bVoteUp); + virtual unsigned long long GetUserPublishedItemVoteDetails(unsigned long long unPublishedFileId); + virtual unsigned long long EnumerateUserSharedWorkshopFiles(unsigned int nAppId, steam_id creatorSteamID, + unsigned int uStartIndex, int* pRequiredTags, + int* pExcludedTags); + virtual unsigned long long PublishVideo(unsigned int eVideoProvider, const char* cszVideoAccountName, + const char* cszVideoIdentifier, const char* cszFileName, + unsigned int nConsumerAppId, const char* cszTitle, + const char* cszDescription, unsigned int eVisibility, int* pTags); + virtual unsigned long long SetUserPublishedFileAction(unsigned long long unPublishedFileId, + unsigned int eAction); + virtual unsigned long long EnumeratePublishedFilesByUserAction(unsigned int eAction, unsigned int uStartIndex); + virtual unsigned long long EnumeratePublishedWorkshopFiles(unsigned int eType, unsigned int uStartIndex, + unsigned int cDays, unsigned int cCount, int* pTags, + int* pUserTags); + virtual unsigned long long UGCDownloadToLocation(unsigned long long hContent, const char* cszLocation, + unsigned int uUnk); + }; +} diff --git a/src/client/steam/interfaces/user.cpp b/src/client/steam/interfaces/user.cpp new file mode 100644 index 0000000..752007b --- /dev/null +++ b/src/client/steam/interfaces/user.cpp @@ -0,0 +1,164 @@ +#include +#include "../steam.hpp" + +#include "component/auth.hpp" + +namespace steam +{ + namespace + { + std::string auth_ticket; + + steam_id generate_steam_id() + { + steam_id id{}; + id.bits = auth::get_guid(); + return id; + } + } + + int user::GetHSteamUser() + { + return NULL; + } + + bool user::LoggedOn() + { + return true; + } + + steam_id user::GetSteamID() + { + static auto id = generate_steam_id(); + return id; + } + + int user::InitiateGameConnection(void* pAuthBlob, int cbMaxAuthBlob, steam_id steamIDGameServer, + unsigned int unIPServer, unsigned short usPortServer, bool bSecure) + { + return 0; + } + + void user::TerminateGameConnection(unsigned int unIPServer, unsigned short usPortServer) + { + } + + void user::TrackAppUsageEvent(steam_id gameID, int eAppUsageEvent, const char* pchExtraInfo) + { + } + + bool user::GetUserDataFolder(char* pchBuffer, int cubBuffer) + { + return false; + } + + void user::StartVoiceRecording() + { + } + + void user::StopVoiceRecording() + { + } + + int user::GetAvailableVoice(unsigned int* pcbCompressed, unsigned int* pcbUncompressed, + unsigned int nUncompressedVoiceDesiredSampleRate) + { + return 0; + } + + int user::GetVoice(bool bWantCompressed, void* pDestBuffer, unsigned int cbDestBufferSize, + unsigned int* nBytesWritten, bool bWantUncompressed, void* pUncompressedDestBuffer, + unsigned int cbUncompressedDestBufferSize, unsigned int* nUncompressBytesWritten, + unsigned int nUncompressedVoiceDesiredSampleRate) + { + return 0; + } + + int user::DecompressVoice(void* pCompressed, unsigned int cbCompressed, void* pDestBuffer, + unsigned int cbDestBufferSize, unsigned int* nBytesWritten) + { + return 0; + } + + unsigned int user::GetVoiceOptimalSampleRate() + { + return 0; + } + + unsigned int user::GetAuthSessionTicket(void* pTicket, int cbMaxTicket, unsigned int* pcbTicket) + { + static uint32_t ticket = 0; + *pcbTicket = 1; + + const auto result = callbacks::register_call(); + auto* response = static_cast(calloc( + 1, sizeof(get_auth_session_ticket_response))); + response->m_h_auth_ticket = ++ticket; + response->m_e_result = 1; // k_EResultOK; + + callbacks::return_call(response, sizeof(get_auth_session_ticket_response), + get_auth_session_ticket_response::callback_id, result); + return response->m_h_auth_ticket; + } + + int user::BeginAuthSession(const void* pAuthTicket, int cbAuthTicket, steam_id steamID) + { + return 0; + } + + void user::EndAuthSession(steam_id steamID) + { + } + + void user::CancelAuthTicket(unsigned int hAuthTicket) + { + } + + unsigned int user::UserHasLicenseForApp(steam_id steamID, unsigned int appID) + { + return 0; + } + + bool user::BIsBehindNAT() + { + return false; + } + + void user::AdvertiseGame(steam_id steamIDGameServer, unsigned int unIPServer, unsigned short usPortServer) + { + } + + unsigned long long user::RequestEncryptedAppTicket(void* pUserData, int cbUserData) + { + const auto id = this->GetSteamID(); + + auth_ticket = "S1"; + auth_ticket.resize(32); + auth_ticket.append(static_cast(pUserData), 24); // key + auth_ticket.append(reinterpret_cast(&id.bits), sizeof(id.bits)); // user id + auth_ticket.append(&static_cast(pUserData)[24], 64); // user name + + // Create the call response + const auto result = callbacks::register_call(); + const auto retvals = static_cast(calloc(1, sizeof(encrypted_app_ticket_response))); + //::Utils::Memory::AllocateArray(); + retvals->m_e_result = 1; + + // Return the call response + callbacks::return_call(retvals, sizeof(encrypted_app_ticket_response), + encrypted_app_ticket_response::callback_id, result); + + return result; + } + + bool user::GetEncryptedAppTicket(void* pTicket, int cbMaxTicket, unsigned int* pcbTicket) + { + if (cbMaxTicket < 0 || auth_ticket.empty()) return false; + + const auto size = std::min(size_t(cbMaxTicket), auth_ticket.size()); + std::memcpy(pTicket, auth_ticket.data(), size); + *pcbTicket = static_cast(size); + + return true; + } +} diff --git a/src/client/steam/interfaces/user.hpp b/src/client/steam/interfaces/user.hpp new file mode 100644 index 0000000..07cd801 --- /dev/null +++ b/src/client/steam/interfaces/user.hpp @@ -0,0 +1,55 @@ +#pragma once + +namespace steam +{ + struct encrypted_app_ticket_response final + { + enum { callback_id = 154 }; + + int m_e_result; + }; + + struct get_auth_session_ticket_response + { + enum { callback_id = 163 }; + + unsigned int m_h_auth_ticket; + int m_e_result; + }; + + class user + { + public: + ~user() = default; + + virtual int GetHSteamUser(); + virtual bool LoggedOn(); + virtual steam_id GetSteamID(); + + virtual int InitiateGameConnection(void* pAuthBlob, int cbMaxAuthBlob, steam_id steamIDGameServer, + unsigned int unIPServer, unsigned short usPortServer, bool bSecure); + virtual void TerminateGameConnection(unsigned int unIPServer, unsigned short usPortServer); + virtual void TrackAppUsageEvent(steam_id gameID, int eAppUsageEvent, const char* pchExtraInfo = ""); + virtual bool GetUserDataFolder(char* pchBuffer, int cubBuffer); + virtual void StartVoiceRecording(); + virtual void StopVoiceRecording(); + virtual int GetAvailableVoice(unsigned int* pcbCompressed, unsigned int* pcbUncompressed, + unsigned int nUncompressedVoiceDesiredSampleRate); + virtual int GetVoice(bool bWantCompressed, void* pDestBuffer, unsigned int cbDestBufferSize, + unsigned int* nBytesWritten, bool bWantUncompressed, void* pUncompressedDestBuffer, + unsigned int cbUncompressedDestBufferSize, unsigned int* nUncompressBytesWritten, + unsigned int nUncompressedVoiceDesiredSampleRate); + virtual int DecompressVoice(void* pCompressed, unsigned int cbCompressed, void* pDestBuffer, + unsigned int cbDestBufferSize, unsigned int* nBytesWritten); + virtual unsigned int GetVoiceOptimalSampleRate(); + virtual unsigned int GetAuthSessionTicket(void* pTicket, int cbMaxTicket, unsigned int* pcbTicket); + virtual int BeginAuthSession(const void* pAuthTicket, int cbAuthTicket, steam_id steamID); + virtual void EndAuthSession(steam_id steamID); + virtual void CancelAuthTicket(unsigned int hAuthTicket); + virtual unsigned int UserHasLicenseForApp(steam_id steamID, unsigned int appID); + virtual bool BIsBehindNAT(); + virtual void AdvertiseGame(steam_id steamIDGameServer, unsigned int unIPServer, unsigned short usPortServer); + virtual unsigned long long RequestEncryptedAppTicket(void* pUserData, int cbUserData); + virtual bool GetEncryptedAppTicket(void* pTicket, int cbMaxTicket, unsigned int* pcbTicket); + }; +} diff --git a/src/client/steam/interfaces/user_stats.cpp b/src/client/steam/interfaces/user_stats.cpp new file mode 100644 index 0000000..13d4ccc --- /dev/null +++ b/src/client/steam/interfaces/user_stats.cpp @@ -0,0 +1,231 @@ +#include +#include "../steam.hpp" + +namespace steam +{ + bool user_stats::RequestCurrentStats() + { + return true; + } + + bool user_stats::GetStat(const char* pchName, int* pData) + { + return false; + } + + bool user_stats::GetStat(const char* pchName, float* pData) + { + return false; + } + + bool user_stats::SetStat(const char* pchName, int nData) + { + return false; + } + + bool user_stats::SetStat(const char* pchName, float fData) + { + return false; + } + + bool user_stats::UpdateAvgRateStat(const char* pchName, float flCountThisSession, double dSessionLength) + { + return false; + } + + bool user_stats::GetAchievement(const char* pchName, bool* pbAchieved) + { + return true; + } + + bool user_stats::SetAchievement(const char* pchName) + { + return true; + } + + bool user_stats::ClearAchievement(const char* pchName) + { + return true; + } + + bool user_stats::GetAchievementAndUnlockTime(const char* pchName, bool* pbAchieved, unsigned int* punUnlockTime) + { + return true; + } + + bool user_stats::StoreStats() + { + return true; + } + + int user_stats::GetAchievementIcon(const char* pchName) + { + return 0; + } + + const char* user_stats::GetAchievementDisplayAttribute(const char* pchName, const char* pchKey) + { + return ""; + } + + bool user_stats::IndicateAchievementProgress(const char* pchName, unsigned int nCurProgress, + unsigned int nMaxProgress) + { + return true; + } + + unsigned int user_stats::GetNumAchievements() + { + return 0; + } + + const char* user_stats::GetAchievementName(unsigned int iAchievement) + { + return ""; + } + + unsigned long long user_stats::RequestUserStats(steam_id steamIDUser) + { + return 0; + } + + bool user_stats::GetUserStat(steam_id steamIDUser, const char* pchName, int* pData) + { + return false; + } + + bool user_stats::GetUserStat(steam_id steamIDUser, const char* pchName, float* pData) + { + return false; + } + + bool user_stats::GetUserAchievement(steam_id steamIDUser, const char* pchName, bool* pbAchieved) + { + return true; + } + + bool user_stats::GetUserAchievementAndUnlockTime(steam_id steamIDUser, const char* pchName, bool* pbAchieved, + unsigned int* punUnlockTime) + { + return true; + } + + bool user_stats::ResetAllStats(bool bAchievementsToo) + { + return false; + } + + unsigned long long user_stats::FindOrCreateLeaderboard(const char* pchLeaderboardName, int eLeaderboardSortMethod, + int eLeaderboardDisplayType) + { + return 0; + } + + unsigned long long user_stats::FindLeaderboard(const char* pchLeaderboardName) + { + return 0; + } + + const char* user_stats::GetLeaderboardName(unsigned long long hSteamLeaderboard) + { + return ""; + } + + int user_stats::GetLeaderboardEntryCount(unsigned long long hSteamLeaderboard) + { + return 0; + } + + int user_stats::GetLeaderboardSortMethod(unsigned long long hSteamLeaderboard) + { + return 0; + } + + int user_stats::GetLeaderboardDisplayType(unsigned long long hSteamLeaderboard) + { + return 0; + } + + unsigned long long user_stats::DownloadLeaderboardEntries(unsigned long long hSteamLeaderboard, + int eLeaderboardDataRequest, int nRangeStart, + int nRangeEnd) + { + return 0; + } + + unsigned long long user_stats::DownloadLeaderboardEntriesForUsers(unsigned long long hSteamLeaderboard, + steam_id* prgUsers, int cUsers) + { + return 0; + } + + bool user_stats::GetDownloadedLeaderboardEntry(unsigned long long hSteamLeaderboardEntries, int index, + int* pLeaderboardEntry, int* pDetails, int cDetailsMax) + { + return false; + } + + unsigned long long user_stats::UploadLeaderboardScore(unsigned long long hSteamLeaderboard, + int eLeaderboardUploadScoreMethod, int nScore, + const int* pScoreDetails, int cScoreDetailsCount) + { + return 0; + } + + unsigned long long user_stats::AttachLeaderboardUGC(unsigned long long hSteamLeaderboard, unsigned long long hUGC) + { + return 0; + } + + unsigned long long user_stats::GetNumberOfCurrentPlayers() + { + return 0; + } + + unsigned long long user_stats::RequestGlobalAchievementPercentages() + { + return 0; + } + + int user_stats::GetMostAchievedAchievementInfo(char* pchName, unsigned int unNameBufLen, float* pflPercent, + bool* pbAchieved) + { + return 0; + } + + int user_stats::GetNextMostAchievedAchievementInfo(int iIteratorPrevious, char* pchName, unsigned int unNameBufLen, + float* pflPercent, bool* pbAchieved) + { + return 0; + } + + bool user_stats::GetAchievementAchievedPercent(const char* pchName, float* pflPercent) + { + return true; + } + + unsigned long long user_stats::RequestGlobalStats(int nHistoryDays) + { + return 0; + } + + bool user_stats::GetGlobalStat(const char* pchStatName, long long* pData) + { + return false; + } + + bool user_stats::GetGlobalStat(const char* pchStatName, double* pData) + { + return false; + } + + int user_stats::GetGlobalStatHistory(const char* pchStatName, long long* pData, unsigned int cubData) + { + return 0; + } + + int user_stats::GetGlobalStatHistory(const char* pchStatName, double* pData, unsigned int cubData) + { + return 0; + } +} diff --git a/src/client/steam/interfaces/user_stats.hpp b/src/client/steam/interfaces/user_stats.hpp new file mode 100644 index 0000000..c49c79d --- /dev/null +++ b/src/client/steam/interfaces/user_stats.hpp @@ -0,0 +1,65 @@ +#pragma once + +namespace steam +{ + class user_stats + { + public: + ~user_stats() = default; + + virtual bool RequestCurrentStats(); + virtual bool GetStat(const char* pchName, int* pData); + virtual bool GetStat(const char* pchName, float* pData); + virtual bool SetStat(const char* pchName, int nData); + virtual bool SetStat(const char* pchName, float fData); + virtual bool UpdateAvgRateStat(const char* pchName, float flCountThisSession, double dSessionLength); + virtual bool GetAchievement(const char* pchName, bool* pbAchieved); + virtual bool SetAchievement(const char* pchName); + virtual bool ClearAchievement(const char* pchName); + virtual bool GetAchievementAndUnlockTime(const char* pchName, bool* pbAchieved, unsigned int* punUnlockTime); + virtual bool StoreStats(); + virtual int GetAchievementIcon(const char* pchName); + virtual const char* GetAchievementDisplayAttribute(const char* pchName, const char* pchKey); + virtual bool IndicateAchievementProgress(const char* pchName, unsigned int nCurProgress, + unsigned int nMaxProgress); + virtual unsigned int GetNumAchievements(); + virtual const char* GetAchievementName(unsigned int iAchievement); + virtual unsigned long long RequestUserStats(steam_id steamIDUser); + virtual bool GetUserStat(steam_id steamIDUser, const char* pchName, int* pData); + virtual bool GetUserStat(steam_id steamIDUser, const char* pchName, float* pData); + virtual bool GetUserAchievement(steam_id steamIDUser, const char* pchName, bool* pbAchieved); + virtual bool GetUserAchievementAndUnlockTime(steam_id steamIDUser, const char* pchName, bool* pbAchieved, + unsigned int* punUnlockTime); + virtual bool ResetAllStats(bool bAchievementsToo); + virtual unsigned long long FindOrCreateLeaderboard(const char* pchLeaderboardName, int eLeaderboardSortMethod, + int eLeaderboardDisplayType); + virtual unsigned long long FindLeaderboard(const char* pchLeaderboardName); + virtual const char* GetLeaderboardName(unsigned long long hSteamLeaderboard); + virtual int GetLeaderboardEntryCount(unsigned long long hSteamLeaderboard); + virtual int GetLeaderboardSortMethod(unsigned long long hSteamLeaderboard); + virtual int GetLeaderboardDisplayType(unsigned long long hSteamLeaderboard); + virtual unsigned long long DownloadLeaderboardEntries(unsigned long long hSteamLeaderboard, + int eLeaderboardDataRequest, int nRangeStart, + int nRangeEnd); + virtual unsigned long long DownloadLeaderboardEntriesForUsers(unsigned long long hSteamLeaderboard, + steam_id* prgUsers, int cUsers); + virtual bool GetDownloadedLeaderboardEntry(unsigned long long hSteamLeaderboardEntries, int index, + int* pLeaderboardEntry, int* pDetails, int cDetailsMax); + virtual unsigned long long UploadLeaderboardScore(unsigned long long hSteamLeaderboard, + int eLeaderboardUploadScoreMethod, int nScore, + const int* pScoreDetails, int cScoreDetailsCount); + virtual unsigned long long AttachLeaderboardUGC(unsigned long long hSteamLeaderboard, unsigned long long hUGC); + virtual unsigned long long GetNumberOfCurrentPlayers(); + virtual unsigned long long RequestGlobalAchievementPercentages(); + virtual int GetMostAchievedAchievementInfo(char* pchName, unsigned int unNameBufLen, float* pflPercent, + bool* pbAchieved); + virtual int GetNextMostAchievedAchievementInfo(int iIteratorPrevious, char* pchName, unsigned int unNameBufLen, + float* pflPercent, bool* pbAchieved); + virtual bool GetAchievementAchievedPercent(const char* pchName, float* pflPercent); + virtual unsigned long long RequestGlobalStats(int nHistoryDays); + virtual bool GetGlobalStat(const char* pchStatName, long long* pData); + virtual bool GetGlobalStat(const char* pchStatName, double* pData); + virtual int GetGlobalStatHistory(const char* pchStatName, long long* pData, unsigned int cubData); + virtual int GetGlobalStatHistory(const char* pchStatName, double* pData, unsigned int cubData); + }; +} diff --git a/src/client/steam/interfaces/utils.cpp b/src/client/steam/interfaces/utils.cpp new file mode 100644 index 0000000..60339f9 --- /dev/null +++ b/src/client/steam/interfaces/utils.cpp @@ -0,0 +1,118 @@ +#include +#include "../steam.hpp" + +namespace steam +{ + unsigned int utils::GetSecondsSinceAppActive() + { + return 0; + } + + unsigned int utils::GetSecondsSinceComputerActive() + { + return (uint32_t)GetTickCount64() / 1000; + } + + int utils::GetConnectedUniverse() + { + return 1; + } + + unsigned int utils::GetServerRealTime() + { + return (uint32_t)time(NULL); + } + + const char* utils::GetIPCountry() + { + return "US"; + } + + bool utils::GetImageSize(int iImage, unsigned int* pnWidth, unsigned int* pnHeight) + { + return false; + } + + bool utils::GetImageRGBA(int iImage, unsigned char* pubDest, int nDestBufferSize) + { + return false; + } + + bool utils::GetCSERIPPort(unsigned int* unIP, unsigned short* usPort) + { + return false; + } + + unsigned char utils::GetCurrentBatteryPower() + { + return 255; + } + + unsigned int utils::GetAppID() + { + return 209660; + } + + void utils::SetOverlayNotificationPosition(int eNotificationPosition) + { + } + + bool utils::IsAPICallCompleted(unsigned long long hSteamAPICall, bool* pbFailed) + { + return false; + } + + int utils::GetAPICallFailureReason(unsigned long long hSteamAPICall) + { + return -1; + } + + bool utils::GetAPICallResult(unsigned long long hSteamAPICall, void* pCallback, int cubCallback, + int iCallbackExpected, bool* pbFailed) + { + return false; + } + + void utils::RunFrame() + { + } + + unsigned int utils::GetIPCCallCount() + { + return 0; + } + + void utils::SetWarningMessageHook(void (*pFunction)(int hpipe, const char* message)) + { + } + + bool utils::IsOverlayEnabled() + { + return false; + } + + bool utils::BOverlayNeedsPresent() + { + return false; + } + + unsigned long long utils::CheckFileSignature(const char* szFileName) + { + return 0; + } + + bool utils::ShowGamepadTextInput(int eInputMode, int eInputLineMode, const char* szText, unsigned int uMaxLength) + { + return false; + } + + unsigned int utils::GetEnteredGamepadTextLength() + { + return 0; + } + + bool utils::GetEnteredGamepadTextInput(char* pchValue, unsigned int cchValueMax) + { + return false; + } +} diff --git a/src/client/steam/interfaces/utils.hpp b/src/client/steam/interfaces/utils.hpp new file mode 100644 index 0000000..d42a27f --- /dev/null +++ b/src/client/steam/interfaces/utils.hpp @@ -0,0 +1,37 @@ +#pragma once + +namespace steam +{ + class utils + { + public: + ~utils() = default; + + virtual unsigned int GetSecondsSinceAppActive(); + virtual unsigned int GetSecondsSinceComputerActive(); + virtual int GetConnectedUniverse(); + virtual unsigned int GetServerRealTime(); + virtual const char* GetIPCountry(); + virtual bool GetImageSize(int iImage, unsigned int* pnWidth, unsigned int* pnHeight); + virtual bool GetImageRGBA(int iImage, unsigned char* pubDest, int nDestBufferSize); + virtual bool GetCSERIPPort(unsigned int* unIP, unsigned short* usPort); + virtual unsigned char GetCurrentBatteryPower(); + virtual unsigned int GetAppID(); + virtual void SetOverlayNotificationPosition(int eNotificationPosition); + virtual bool IsAPICallCompleted(unsigned long long hSteamAPICall, bool* pbFailed); + virtual int GetAPICallFailureReason(unsigned long long hSteamAPICall); + virtual bool GetAPICallResult(unsigned long long hSteamAPICall, void* pCallback, int cubCallback, + int iCallbackExpected, bool* pbFailed); + virtual void RunFrame(); + virtual unsigned int GetIPCCallCount(); + virtual void SetWarningMessageHook(void (*pFunction)(int hpipe, const char* message)); + virtual bool IsOverlayEnabled(); + virtual bool BOverlayNeedsPresent(); + virtual unsigned long long CheckFileSignature(const char* szFileName); + + virtual bool ShowGamepadTextInput(int eInputMode, int eInputLineMode, const char* szText, + unsigned int uMaxLength); + virtual unsigned int GetEnteredGamepadTextLength(); + virtual bool GetEnteredGamepadTextInput(char* pchValue, unsigned int cchValueMax); + }; +} diff --git a/src/client/steam/steam.cpp b/src/client/steam/steam.cpp new file mode 100644 index 0000000..b6fb0db --- /dev/null +++ b/src/client/steam/steam.cpp @@ -0,0 +1,238 @@ +#include +#include "steam.hpp" + +namespace steam +{ + uint64_t callbacks::call_id_ = 0; + std::recursive_mutex callbacks::mutex_; + std::map callbacks::calls_; + std::map callbacks::result_handlers_; + std::vector callbacks::results_; + std::vector callbacks::callback_list_; + + uint64_t callbacks::register_call() + { + std::lock_guard _(mutex_); + calls_[++call_id_] = false; + return call_id_; + } + + void callbacks::register_callback(base* handler, const int callback) + { + std::lock_guard _(mutex_); + handler->set_i_callback(callback); + callback_list_.push_back(handler); + } + + void callbacks::unregister_callback(base* handler) + { + std::lock_guard _(mutex_); + for (auto i = callback_list_.begin(); i != callback_list_.end();) + { + if (*i == handler) + { + i = callback_list_.erase(i); + } + else + { + ++i; + } + } + } + + void callbacks::register_call_result(const uint64_t call, base* result) + { + std::lock_guard _(mutex_); + result_handlers_[call] = result; + } + + void callbacks::unregister_call_result(const uint64_t call, base* /*result*/) + { + std::lock_guard _(mutex_); + const auto i = result_handlers_.find(call); + if (i != result_handlers_.end()) + { + result_handlers_.erase(i); + } + } + + void callbacks::return_call(void* data, const int size, const int type, const uint64_t call) + { + std::lock_guard _(mutex_); + + result result{}; + result.call = call; + result.data = data; + result.size = size; + result.type = type; + + calls_[call] = true; + + results_.emplace_back(result); + } + + void callbacks::run_callbacks() + { + std::lock_guard _(mutex_); + + for (const auto& result : results_) + { + if (result_handlers_.find(result.call) != result_handlers_.end()) + { + result_handlers_[result.call]->run(result.data, false, result.call); + } + + for (const auto& callback : callback_list_) + { + if (callback && callback->get_i_callback() == result.type) + { + callback->run(result.data, false, 0); + } + } + + if (result.data) + { + free(result.data); + } + } + + results_.clear(); + } + + extern "C" { + + bool SteamAPI_RestartAppIfNecessary() + { + return false; + } + + bool SteamAPI_Init() + { + return true; + } + + void SteamAPI_RegisterCallResult(callbacks::base* result, const uint64_t call) + { + callbacks::register_call_result(call, result); + } + + void SteamAPI_RegisterCallback(callbacks::base* handler, const int callback) + { + callbacks::register_callback(handler, callback); + } + + void SteamAPI_RunCallbacks() + { + callbacks::run_callbacks(); + } + + void SteamAPI_Shutdown() + { + } + + void SteamAPI_UnregisterCallResult(callbacks::base* result, const uint64_t call) + { + callbacks::unregister_call_result(call, result); + } + + void SteamAPI_UnregisterCallback(callbacks::base* handler) + { + callbacks::unregister_callback(handler); + } + + const char* SteamAPI_GetSteamInstallPath() + { + static std::string install_path{}; + if (!install_path.empty()) + { + return install_path.data(); + } + + HKEY reg_key; + if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\WOW6432Node\\Valve\\Steam", 0, KEY_QUERY_VALUE, + ®_key) == + ERROR_SUCCESS) + { + char path[MAX_PATH] = {0}; + DWORD length = sizeof(path); + RegQueryValueExA(reg_key, "InstallPath", nullptr, nullptr, reinterpret_cast(path), + &length); + RegCloseKey(reg_key); + + install_path = path; + } + + return install_path.data(); + } + + + bool SteamGameServer_Init() + { + return true; + } + + void SteamGameServer_RunCallbacks() + { + } + + void SteamGameServer_Shutdown() + { + } + + + friends* SteamFriends() + { + static friends friends; + return &friends; + } + + matchmaking* SteamMatchmaking() + { + static matchmaking matchmaking; + return &matchmaking; + } + + game_server* SteamGameServer() + { + static game_server game_server; + return &game_server; + } + + networking* SteamNetworking() + { + static networking networking; + return &networking; + } + + remote_storage* SteamRemoteStorage() + { + static remote_storage remote_storage; + return &remote_storage; + } + + user* SteamUser() + { + static user user; + return &user; + } + + utils* SteamUtils() + { + static utils utils; + return &utils; + } + + apps* SteamApps() + { + static apps apps; + return &apps; + } + + user_stats* SteamUserStats() + { + static user_stats user_stats; + return &user_stats; + } + + } +} diff --git a/src/client/steam/steam.hpp b/src/client/steam/steam.hpp new file mode 100644 index 0000000..3018921 --- /dev/null +++ b/src/client/steam/steam.hpp @@ -0,0 +1,121 @@ +#pragma once + +#define STEAM_EXPORT extern "C" __declspec(dllexport) + +struct raw_steam_id final +{ + unsigned int account_id : 32; + unsigned int account_instance : 20; + unsigned int account_type : 4; + int universe : 8; +}; + +typedef union +{ + raw_steam_id raw; + unsigned long long bits; +} steam_id; + +#pragma pack( push, 1 ) +struct raw_game_id final +{ + unsigned int app_id : 24; + unsigned int type : 8; + unsigned int mod_id : 32; +}; + +typedef union +{ + raw_game_id raw; + unsigned long long bits; +} game_id; +#pragma pack( pop ) + +#include "interfaces/apps.hpp" +#include "interfaces/user.hpp" +#include "interfaces/utils.hpp" +#include "interfaces/friends.hpp" +#include "interfaces/user_stats.hpp" +#include "interfaces/game_server.hpp" +#include "interfaces/networking.hpp" +#include "interfaces/matchmaking.hpp" +#include "interfaces/remote_storage.hpp" + +namespace steam +{ + class callbacks + { + public: + class base + { + public: + base() : flags_(0), callback_(0) + { + } + + virtual void run(void* pv_param) = 0; + virtual void run(void* pv_param, bool failure, uint64_t handle) = 0; + virtual int get_callback_size_bytes() = 0; + + int get_i_callback() const { return callback_; } + void set_i_callback(const int i_callback) { callback_ = i_callback; } + + protected: + ~base() = default; + + unsigned char flags_; + int callback_; + }; + + struct result final + { + void* data{}; + int size{}; + int type{}; + uint64_t call{}; + }; + + static uint64_t register_call(); + + static void register_callback(base* handler, int callback); + static void unregister_callback(base* handler); + + static void register_call_result(uint64_t call, base* result); + static void unregister_call_result(uint64_t call, base* result); + + static void return_call(void* data, int size, int type, uint64_t call); + static void run_callbacks(); + + private: + static uint64_t call_id_; + static std::recursive_mutex mutex_; + static std::map calls_; + static std::map result_handlers_; + static std::vector results_; + static std::vector callback_list_; + }; + + STEAM_EXPORT bool SteamAPI_RestartAppIfNecessary(); + STEAM_EXPORT bool SteamAPI_Init(); + STEAM_EXPORT void SteamAPI_RegisterCallResult(callbacks::base* result, uint64_t call); + STEAM_EXPORT void SteamAPI_RegisterCallback(callbacks::base* handler, int callback); + STEAM_EXPORT void SteamAPI_RunCallbacks(); + STEAM_EXPORT void SteamAPI_Shutdown(); + STEAM_EXPORT void SteamAPI_UnregisterCallResult(callbacks::base* result, const uint64_t call); + STEAM_EXPORT void SteamAPI_UnregisterCallback(callbacks::base* handler); + STEAM_EXPORT const char* SteamAPI_GetSteamInstallPath(); + + STEAM_EXPORT bool SteamGameServer_Init(); + STEAM_EXPORT void SteamGameServer_RunCallbacks(); + STEAM_EXPORT void SteamGameServer_Shutdown(); + + STEAM_EXPORT friends* SteamFriends(); + STEAM_EXPORT matchmaking* SteamMatchmaking(); + STEAM_EXPORT game_server* SteamGameServer(); + STEAM_EXPORT networking* SteamNetworking(); + STEAM_EXPORT remote_storage* SteamRemoteStorage(); + STEAM_EXPORT user* SteamUser(); + STEAM_EXPORT utils* SteamUtils(); + STEAM_EXPORT apps* SteamApps(); + STEAM_EXPORT user_stats* SteamUserStats(); +} diff --git a/src/common/utils/binary_resource.cpp b/src/common/utils/binary_resource.cpp new file mode 100644 index 0000000..eed83b0 --- /dev/null +++ b/src/common/utils/binary_resource.cpp @@ -0,0 +1,75 @@ +#include "binary_resource.hpp" + +#include +#include "nt.hpp" +#include "io.hpp" + +namespace utils +{ + namespace + { + std::string get_temp_folder() + { + char path[MAX_PATH] = {0}; + if (!GetTempPathA(sizeof(path), path)) + { + throw std::runtime_error("Unable to get temp path"); + } + + return path; + } + + std::string write_existing_temp_file(const std::string& file, const std::string& data, + const bool fatal_if_overwrite_fails) + { + const auto temp = get_temp_folder(); + auto file_path = temp + file; + + std::string current_data; + if (!io::read_file(file_path, ¤t_data)) + { + if (!io::write_file(file_path, data)) + { + throw std::runtime_error("Failed to write file: " + file_path); + } + + return file_path; + } + + if (current_data == data || io::write_file(file_path, data) || !fatal_if_overwrite_fails) + { + return file_path; + } + + throw std::runtime_error( + "Temporary file was already written, but differs. It can't be overwritten as it's still in use: " + + file_path); + } + } + + binary_resource::binary_resource(const int id, std::string file) + : filename_(std::move(file)) + { + this->resource_ = nt::load_resource(id); + + if (this->resource_.empty()) + { + throw std::runtime_error("Unable to load resource: " + std::to_string(id)); + } + } + + std::string binary_resource::get_extracted_file(const bool fatal_if_overwrite_fails) + { + if (this->path_.empty()) + { + this->path_ = write_existing_temp_file(this->filename_, this->resource_, fatal_if_overwrite_fails); + } + + return this->path_; + } + + const std::string& binary_resource::get_data() const + { + return this->resource_; + } +} diff --git a/src/common/utils/binary_resource.hpp b/src/common/utils/binary_resource.hpp new file mode 100644 index 0000000..da19af1 --- /dev/null +++ b/src/common/utils/binary_resource.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include + +namespace utils +{ + class binary_resource + { + public: + binary_resource(int id, std::string file); + + std::string get_extracted_file(bool fatal_if_overwrite_fails = false); + const std::string& get_data() const; + + private: + std::string resource_; + std::string filename_; + std::string path_; + }; +} diff --git a/src/common/utils/compression.cpp b/src/common/utils/compression.cpp new file mode 100644 index 0000000..1688cee --- /dev/null +++ b/src/common/utils/compression.cpp @@ -0,0 +1,169 @@ +#include "memory.hpp" +#include "compression.hpp" + +#include +#include + +#include + +#include "io.hpp" + +namespace utils::compression +{ + namespace zlib + { + namespace + { + class zlib_stream + { + public: + zlib_stream() + { + memset(&stream_, 0, sizeof(stream_)); + valid_ = inflateInit(&stream_) == Z_OK; + } + + zlib_stream(zlib_stream&&) = delete; + zlib_stream(const zlib_stream&) = delete; + zlib_stream& operator=(zlib_stream&&) = delete; + zlib_stream& operator=(const zlib_stream&) = delete; + + ~zlib_stream() + { + if (valid_) + { + inflateEnd(&stream_); + } + } + + z_stream& get() + { + return stream_; // + } + + bool is_valid() const + { + return valid_; + } + + private: + bool valid_{false}; + z_stream stream_{}; + }; + } + + std::string decompress(const std::string& data) + { + std::string buffer{}; + zlib_stream stream_container{}; + if (!stream_container.is_valid()) + { + return {}; + } + + int ret{}; + size_t offset = 0; + static thread_local uint8_t dest[CHUNK] = {0}; + auto& stream = stream_container.get(); + + do + { + const auto input_size = std::min(sizeof(dest), data.size() - offset); + stream.avail_in = static_cast(input_size); + stream.next_in = reinterpret_cast(data.data()) + offset; + offset += stream.avail_in; + + do + { + stream.avail_out = sizeof(dest); + stream.next_out = dest; + + ret = inflate(&stream, Z_NO_FLUSH); + if (ret != Z_OK && ret != Z_STREAM_END) + { + return {}; + } + + buffer.insert(buffer.end(), dest, dest + sizeof(dest) - stream.avail_out); + } + while (stream.avail_out == 0); + } + while (ret != Z_STREAM_END); + + return buffer; + } + + std::string compress(const std::string& data) + { + std::string result{}; + auto length = compressBound(static_cast(data.size())); + result.resize(length); + + if (compress2(reinterpret_cast(result.data()), &length, + reinterpret_cast(data.data()), static_cast(data.size()), + Z_BEST_COMPRESSION) != Z_OK) + { + return {}; + } + + result.resize(length); + return result; + } + } + + namespace zip + { + namespace + { + bool add_file(zipFile& zip_file, const std::string& filename, const std::string& data) + { + const auto zip_64 = data.size() > 0xffffffff ? 1 : 0; + if (ZIP_OK != zipOpenNewFileInZip64(zip_file, filename.data(), nullptr, nullptr, 0, nullptr, 0, nullptr, + Z_DEFLATED, Z_BEST_COMPRESSION, zip_64)) + { + return false; + } + + const auto _ = gsl::finally([&zip_file]() + { + zipCloseFileInZip(zip_file); + }); + + return ZIP_OK == zipWriteInFileInZip(zip_file, data.data(), static_cast(data.size())); + } + } + + void archive::add(std::string filename, std::string data) + { + this->files_[std::move(filename)] = std::move(data); + } + + bool archive::write(const std::string& filename, const std::string& comment) + { + // Hack to create the directory :3 + io::write_file(filename, {}); + io::remove_file(filename); + + auto* zip_file = zipOpen64(filename.data(), 0); + if (!zip_file) + { + return false; + } + + const auto _ = gsl::finally([&zip_file, &comment]() + { + zipClose(zip_file, comment.empty() ? nullptr : comment.data()); + }); + + for (const auto& file : this->files_) + { + if (!add_file(zip_file, file.first, file.second)) + { + return false; + } + } + + return true; + } + } +} diff --git a/src/common/utils/compression.hpp b/src/common/utils/compression.hpp new file mode 100644 index 0000000..dfe36ad --- /dev/null +++ b/src/common/utils/compression.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include +#include + +#define CHUNK 16384u + +namespace utils::compression +{ + namespace zlib + { + std::string compress(const std::string& data); + std::string decompress(const std::string& data); + } + + namespace zip + { + class archive + { + public: + void add(std::string filename, std::string data); + bool write(const std::string& filename, const std::string& comment = {}); + + private: + std::unordered_map files_; + }; + } +}; diff --git a/src/common/utils/concurrency.hpp b/src/common/utils/concurrency.hpp new file mode 100644 index 0000000..05c5d3a --- /dev/null +++ b/src/common/utils/concurrency.hpp @@ -0,0 +1,46 @@ +#pragma once + +#include + +namespace utils::concurrency +{ + template + class container + { + public: + template + R access(F&& accessor) const + { + std::lock_guard _{mutex_}; + return accessor(object_); + } + + template + R access(F&& accessor) + { + std::lock_guard _{mutex_}; + return accessor(object_); + } + + template + R access_with_lock(F&& accessor) const + { + std::unique_lock lock{mutex_}; + return accessor(object_, lock); + } + + template + R access_with_lock(F&& accessor) + { + std::unique_lock lock{mutex_}; + return accessor(object_, lock); + } + + T& get_raw() { return object_; } + const T& get_raw() const { return object_; } + + private: + mutable MutexType mutex_{}; + T object_{}; + }; +} diff --git a/src/common/utils/cryptography.cpp b/src/common/utils/cryptography.cpp new file mode 100644 index 0000000..2e2065a --- /dev/null +++ b/src/common/utils/cryptography.cpp @@ -0,0 +1,640 @@ +#include "string.hpp" +#include "cryptography.hpp" +#include "nt.hpp" +#include + +#undef max +using namespace std::string_literals; + +/// http://www.opensource.apple.com/source/CommonCrypto/CommonCrypto-55010/Source/libtomcrypt/doc/libTomCryptDoc.pdf + +namespace utils::cryptography +{ + namespace + { + struct __ + { + __() + { + ltc_mp = ltm_desc; + + register_cipher(&aes_desc); + register_cipher(&des3_desc); + + register_prng(&sprng_desc); + register_prng(&fortuna_desc); + register_prng(&yarrow_desc); + + register_hash(&sha1_desc); + register_hash(&sha256_desc); + register_hash(&sha512_desc); + } + } ___; + + [[maybe_unused]] const char* cs(const uint8_t* data) + { + return reinterpret_cast(data); + } + + [[maybe_unused]] char* cs(uint8_t* data) + { + return reinterpret_cast(data); + } + + [[maybe_unused]] const uint8_t* cs(const char* data) + { + return reinterpret_cast(data); + } + + [[maybe_unused]] uint8_t* cs(char* data) + { + return reinterpret_cast(data); + } + + [[maybe_unused]] unsigned long ul(const size_t value) + { + return static_cast(value); + } + + class prng + { + public: + prng(const ltc_prng_descriptor& descriptor, const bool autoseed = true) + : state_(std::make_unique()) + , descriptor_(descriptor) + { + this->id_ = register_prng(&descriptor); + if (this->id_ == -1) + { + throw std::runtime_error("PRNG "s + this->descriptor_.name + " could not be registered!"); + } + + if (autoseed) + { + this->auto_seed(); + } + else + { + this->descriptor_.start(this->state_.get()); + } + } + + ~prng() + { + this->descriptor_.done(this->state_.get()); + } + + prng_state* get_state() const + { + this->descriptor_.ready(this->state_.get()); + return this->state_.get(); + } + + int get_id() const + { + return this->id_; + } + + void add_entropy(const void* data, const size_t length) const + { + this->descriptor_.add_entropy(static_cast(data), ul(length), this->state_.get()); + } + + void read(void* data, const size_t length) const + { + this->descriptor_.read(static_cast(data), ul(length), this->get_state()); + } + + private: + int id_; + std::unique_ptr state_; + const ltc_prng_descriptor& descriptor_; + + void auto_seed() const + { + rng_make_prng(128, this->id_, this->state_.get(), nullptr); + + int i[4]; // uninitialized data + auto* i_ptr = &i; + this->add_entropy(reinterpret_cast(&i), sizeof(i)); + this->add_entropy(reinterpret_cast(&i_ptr), sizeof(i_ptr)); + + auto t = time(nullptr); + this->add_entropy(reinterpret_cast(&t), sizeof(t)); + } + }; + + const prng prng_(fortuna_desc); + } + + ecc::key::key() + { + ZeroMemory(&this->key_storage_, sizeof(this->key_storage_)); + } + + ecc::key::~key() + { + this->free(); + } + + ecc::key::key(key&& obj) noexcept + : key() + { + this->operator=(std::move(obj)); + } + + ecc::key::key(const key& obj) + : key() + { + this->operator=(obj); + } + + ecc::key& ecc::key::operator=(key&& obj) noexcept + { + if (this != &obj) + { + std::memmove(&this->key_storage_, &obj.key_storage_, sizeof(this->key_storage_)); + ZeroMemory(&obj.key_storage_, sizeof(obj.key_storage_)); + } + + return *this; + } + + ecc::key& ecc::key::operator=(const key& obj) + { + if (this != &obj && obj.is_valid()) + { + this->deserialize(obj.serialize(obj.key_storage_.type)); + } + + return *this; + } + + bool ecc::key::is_valid() const + { + return (!memory::is_set(&this->key_storage_, 0, sizeof(this->key_storage_))); + } + + ecc_key& ecc::key::get() + { + return this->key_storage_; + } + + const ecc_key& ecc::key::get() const + { + return this->key_storage_; + } + + std::string ecc::key::get_public_key() const + { + uint8_t buffer[512] = {0}; + unsigned long length = sizeof(buffer); + + if (ecc_ansi_x963_export(&this->key_storage_, buffer, &length) == CRYPT_OK) + { + return std::string(cs(buffer), length); + } + + return {}; + } + + void ecc::key::set(const std::string& pub_key_buffer) + { + this->free(); + + if (ecc_ansi_x963_import(cs(pub_key_buffer.data()), + ul(pub_key_buffer.size()), + &this->key_storage_) != CRYPT_OK) + { + ZeroMemory(&this->key_storage_, sizeof(this->key_storage_)); + } + } + + void ecc::key::deserialize(const std::string& key) + { + this->free(); + + if (ecc_import(cs(key.data()), ul(key.size()), + &this->key_storage_) != CRYPT_OK + ) + { + ZeroMemory(&this->key_storage_, sizeof(this->key_storage_)); + } + } + + std::string ecc::key::serialize(const int type) const + { + uint8_t buffer[4096] = {0}; + unsigned long length = sizeof(buffer); + + if (ecc_export(buffer, &length, type, &this->key_storage_) == CRYPT_OK) + { + return std::string(cs(buffer), length); + } + + return ""; + } + + void ecc::key::free() + { + if (this->is_valid()) + { + ecc_free(&this->key_storage_); + } + + ZeroMemory(&this->key_storage_, sizeof(this->key_storage_)); + } + + bool ecc::key::operator==(key& key) const + { + return (this->is_valid() && key.is_valid() && this->serialize(PK_PUBLIC) == key.serialize(PK_PUBLIC)); + } + + uint64_t ecc::key::get_hash() const + { + const auto hash = sha1::compute(this->get_public_key()); + if (hash.size() >= 8) + { + return *reinterpret_cast(hash.data()); + } + + return 0; + } + + ecc::key ecc::generate_key(const int bits) + { + key key; + ecc_make_key(prng_.get_state(), prng_.get_id(), bits / 8, &key.get()); + + return key; + } + + ecc::key ecc::generate_key(const int bits, const std::string& entropy) + { + key key{}; + const prng yarrow(yarrow_desc, false); + yarrow.add_entropy(entropy.data(), entropy.size()); + + ecc_make_key(yarrow.get_state(), yarrow.get_id(), bits / 8, &key.get()); + + return key; + } + + std::string ecc::sign_message(const key& key, const std::string& message) + { + if (!key.is_valid()) return ""; + + uint8_t buffer[512]; + unsigned long length = sizeof(buffer); + + ecc_sign_hash(cs(message.data()), ul(message.size()), buffer, &length, prng_.get_state(), prng_.get_id(), + &key.get()); + + return std::string(cs(buffer), length); + } + + bool ecc::verify_message(const key& key, const std::string& message, const std::string& signature) + { + if (!key.is_valid()) return false; + + auto result = 0; + return (ecc_verify_hash(cs(signature.data()), + ul(signature.size()), + cs(message.data()), + ul(message.size()), &result, + &key.get()) == CRYPT_OK && result != 0); + } + + bool ecc::encrypt(const key& key, std::string& data) + { + std::string out_data{}; + out_data.resize(std::max(ul(data.size() * 3), ul(0x100))); + + auto out_len = ul(out_data.size()); + auto crypt = [&]() + { + return ecc_encrypt_key(cs(data.data()), ul(data.size()), cs(out_data.data()), &out_len, + prng_.get_state(), prng_.get_id(), find_hash("sha512"), &key.get()); + }; + + auto res = crypt(); + + if (res == CRYPT_BUFFER_OVERFLOW) + { + out_data.resize(out_len); + res = crypt(); + } + + if (res != CRYPT_OK) + { + return false; + } + + out_data.resize(out_len); + data = std::move(out_data); + return true; + } + + bool ecc::decrypt(const key& key, std::string& data) + { + std::string out_data{}; + out_data.resize(std::max(ul(data.size() * 3), ul(0x100))); + + auto out_len = ul(out_data.size()); + auto crypt = [&]() + { + return ecc_decrypt_key(cs(data.data()), ul(data.size()), cs(out_data.data()), &out_len, &key.get()); + }; + + auto res = crypt(); + + if (res == CRYPT_BUFFER_OVERFLOW) + { + out_data.resize(out_len); + res = crypt(); + } + + if (res != CRYPT_OK) + { + return false; + } + + out_data.resize(out_len); + data = std::move(out_data); + return true; + } + + std::string rsa::encrypt(const std::string& data, const std::string& hash, const std::string& key) + { + rsa_key new_key; + rsa_import(cs(key.data()), ul(key.size()), &new_key); + const auto _ = gsl::finally([&]() + { + rsa_free(&new_key); + }); + + + std::string out_data{}; + out_data.resize(std::max(ul(data.size() * 3), ul(0x100))); + + auto out_len = ul(out_data.size()); + auto crypt = [&]() + { + return rsa_encrypt_key(cs(data.data()), ul(data.size()), cs(out_data.data()), &out_len, cs(hash.data()), + ul(hash.size()), prng_.get_state(), prng_.get_id(), find_hash("sha512"), &new_key); + }; + + auto res = crypt(); + + if (res == CRYPT_BUFFER_OVERFLOW) + { + out_data.resize(out_len); + res = crypt(); + } + + if (res == CRYPT_OK) + { + out_data.resize(out_len); + return out_data; + } + + return {}; + } + + std::string des3::encrypt(const std::string& data, const std::string& iv, const std::string& key) + { + std::string enc_data; + enc_data.resize(data.size()); + + symmetric_CBC cbc; + const auto des3 = find_cipher("3des"); + + cbc_start(des3, cs(iv.data()), cs(key.data()), static_cast(key.size()), 0, &cbc); + cbc_encrypt(cs(data.data()), cs(enc_data.data()), ul(data.size()), &cbc); + cbc_done(&cbc); + + return enc_data; + } + + std::string des3::decrypt(const std::string& data, const std::string& iv, const std::string& key) + { + std::string dec_data; + dec_data.resize(data.size()); + + symmetric_CBC cbc; + const auto des3 = find_cipher("3des"); + + cbc_start(des3, cs(iv.data()), cs(key.data()), static_cast(key.size()), 0, &cbc); + cbc_decrypt(cs(data.data()), cs(dec_data.data()), ul(data.size()), &cbc); + cbc_done(&cbc); + + return dec_data; + } + + std::string tiger::compute(const std::string& data, const bool hex) + { + return compute(cs(data.data()), data.size(), hex); + } + + std::string tiger::compute(const uint8_t* data, const size_t length, const bool hex) + { + uint8_t buffer[24] = {0}; + + hash_state state; + tiger_init(&state); + tiger_process(&state, data, ul(length)); + tiger_done(&state, buffer); + + std::string hash(cs(buffer), sizeof(buffer)); + if (!hex) return hash; + + return string::dump_hex(hash, ""); + } + + std::string aes::encrypt(const std::string& data, const std::string& iv, const std::string& key) + { + std::string enc_data; + enc_data.resize(data.size()); + + symmetric_CBC cbc; + const auto aes = find_cipher("aes"); + + cbc_start(aes, cs(iv.data()), cs(key.data()), + static_cast(key.size()), 0, &cbc); + cbc_encrypt(cs(data.data()), + cs(enc_data.data()), + ul(data.size()), &cbc); + cbc_done(&cbc); + + return enc_data; + } + + std::string aes::decrypt(const std::string& data, const std::string& iv, const std::string& key) + { + std::string dec_data; + dec_data.resize(data.size()); + + symmetric_CBC cbc; + const auto aes = find_cipher("aes"); + + cbc_start(aes, cs(iv.data()), cs(key.data()), + static_cast(key.size()), 0, &cbc); + cbc_decrypt(cs(data.data()), + cs(dec_data.data()), + ul(data.size()), &cbc); + cbc_done(&cbc); + + return dec_data; + } + + std::string hmac_sha1::compute(const std::string& data, const std::string& key) + { + std::string buffer; + buffer.resize(20); + + hmac_state state; + hmac_init(&state, find_hash("sha1"), cs(key.data()), ul(key.size())); + hmac_process(&state, cs(data.data()), static_cast(data.size())); + + auto out_len = ul(buffer.size()); + hmac_done(&state, cs(buffer.data()), &out_len); + + buffer.resize(out_len); + return buffer; + } + + std::string sha1::compute(const std::string& data, const bool hex) + { + return compute(cs(data.data()), data.size(), hex); + } + + std::string sha1::compute(const uint8_t* data, const size_t length, const bool hex) + { + uint8_t buffer[20] = {0}; + + hash_state state; + sha1_init(&state); + sha1_process(&state, data, ul(length)); + sha1_done(&state, buffer); + + std::string hash(cs(buffer), sizeof(buffer)); + if (!hex) return hash; + + return string::dump_hex(hash, ""); + } + + std::string sha256::compute(const std::string& data, const bool hex) + { + return compute(cs(data.data()), data.size(), hex); + } + + std::string sha256::compute(const uint8_t* data, const size_t length, const bool hex) + { + uint8_t buffer[32] = {0}; + + hash_state state; + sha256_init(&state); + sha256_process(&state, data, ul(length)); + sha256_done(&state, buffer); + + std::string hash(cs(buffer), sizeof(buffer)); + if (!hex) return hash; + + return string::dump_hex(hash, ""); + } + + std::string sha512::compute(const std::string& data, const bool hex) + { + return compute(cs(data.data()), data.size(), hex); + } + + std::string sha512::compute(const uint8_t* data, const size_t length, const bool hex) + { + uint8_t buffer[64] = {0}; + + hash_state state; + sha512_init(&state); + sha512_process(&state, data, ul(length)); + sha512_done(&state, buffer); + + std::string hash(cs(buffer), sizeof(buffer)); + if (!hex) return hash; + + return string::dump_hex(hash, ""); + } + + std::string base64::encode(const uint8_t* data, const size_t len) + { + std::string result; + result.resize((len + 2) * 2); + + auto out_len = ul(result.size()); + if (base64_encode(data, ul(len), result.data(), &out_len) != CRYPT_OK) + { + return {}; + } + + result.resize(out_len); + return result; + } + + std::string base64::encode(const std::string& data) + { + return base64::encode(cs(data.data()), static_cast(data.size())); + } + + std::string base64::decode(const std::string& data) + { + std::string result; + result.resize((data.size() + 2) * 2); + + auto out_len = ul(result.size()); + if (base64_decode(data.data(), ul(data.size()), cs(result.data()), &out_len) != CRYPT_OK) + { + return {}; + } + + result.resize(out_len); + return result; + } + + unsigned int jenkins_one_at_a_time::compute(const std::string& data) + { + return compute(data.data(), data.size()); + } + + unsigned int jenkins_one_at_a_time::compute(const char* key, const size_t len) + { + unsigned int hash, i; + for (hash = i = 0; i < len; ++i) + { + hash += key[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + return hash; + } + + uint32_t random::get_integer() + { + uint32_t result; + random::get_data(&result, sizeof(result)); + return result; + } + + std::string random::get_challenge() + { + std::string result; + result.resize(sizeof(uint32_t)); + random::get_data(result.data(), result.size()); + return string::dump_hex(result, ""); + } + + void random::get_data(void* data, const size_t size) + { + prng_.read(data, size); + } +} diff --git a/src/common/utils/cryptography.hpp b/src/common/utils/cryptography.hpp new file mode 100644 index 0000000..9538c5e --- /dev/null +++ b/src/common/utils/cryptography.hpp @@ -0,0 +1,118 @@ +#pragma once + +#include +#include + +namespace utils::cryptography +{ + namespace ecc + { + class key final + { + public: + key(); + ~key(); + + key(key&& obj) noexcept; + key(const key& obj); + key& operator=(key&& obj) noexcept; + key& operator=(const key& obj); + + bool is_valid() const; + + ecc_key& get(); + const ecc_key& get() const; + + std::string get_public_key() const; + + void set(const std::string& pub_key_buffer); + + void deserialize(const std::string& key); + + std::string serialize(int type = PK_PRIVATE) const; + + void free(); + + bool operator==(key& key) const; + + uint64_t get_hash() const; + + private: + ecc_key key_storage_{}; + }; + + key generate_key(int bits); + key generate_key(int bits, const std::string& entropy); + std::string sign_message(const key& key, const std::string& message); + bool verify_message(const key& key, const std::string& message, const std::string& signature); + + bool encrypt(const key& key, std::string& data); + bool decrypt(const key& key, std::string& data); + } + + namespace rsa + { + std::string encrypt(const std::string& data, const std::string& hash, const std::string& key); + } + + namespace des3 + { + std::string encrypt(const std::string& data, const std::string& iv, const std::string& key); + std::string decrypt(const std::string& data, const std::string& iv, const std::string& key); + } + + namespace tiger + { + std::string compute(const std::string& data, bool hex = false); + std::string compute(const uint8_t* data, size_t length, bool hex = false); + } + + namespace aes + { + std::string encrypt(const std::string& data, const std::string& iv, const std::string& key); + std::string decrypt(const std::string& data, const std::string& iv, const std::string& key); + } + + namespace hmac_sha1 + { + std::string compute(const std::string& data, const std::string& key); + } + + namespace sha1 + { + std::string compute(const std::string& data, bool hex = false); + std::string compute(const uint8_t* data, size_t length, bool hex = false); + } + + namespace sha256 + { + std::string compute(const std::string& data, bool hex = false); + std::string compute(const uint8_t* data, size_t length, bool hex = false); + } + + namespace sha512 + { + std::string compute(const std::string& data, bool hex = false); + std::string compute(const uint8_t* data, size_t length, bool hex = false); + } + + namespace base64 + { + std::string encode(const uint8_t* data, size_t len); + std::string encode(const std::string& data); + std::string decode(const std::string& data); + } + + namespace jenkins_one_at_a_time + { + unsigned int compute(const std::string& data); + unsigned int compute(const char* key, size_t len); + }; + + namespace random + { + uint32_t get_integer(); + std::string get_challenge(); + void get_data(void* data, size_t size); + } +} diff --git a/src/common/utils/flags.cpp b/src/common/utils/flags.cpp new file mode 100644 index 0000000..a90247a --- /dev/null +++ b/src/common/utils/flags.cpp @@ -0,0 +1,47 @@ +#include "flags.hpp" +#include "string.hpp" +#include "nt.hpp" + +#include + +namespace utils::flags +{ + void parse_flags(std::vector& flags) + { + int num_args; + auto* const argv = CommandLineToArgvW(GetCommandLineW(), &num_args); + + flags.clear(); + + if (argv) + { + for (auto i = 0; i < num_args; ++i) + { + std::wstring wide_flag(argv[i]); + if (wide_flag[0] == L'-') + { + wide_flag.erase(wide_flag.begin()); + const auto flag = string::convert(wide_flag); + flags.emplace_back(string::to_lower(flag)); + } + } + + LocalFree(argv); + } + } + + bool has_flag(const std::string& flag) + { + static auto parsed = false; + static std::vector enabled_flags; + + if (!parsed) + { + parse_flags(enabled_flags); + parsed = true; + } + + return std::ranges::any_of(enabled_flags.cbegin(), enabled_flags.cend(), + [flag](const auto& elem) { return elem == string::to_lower(flag); }); + } +} diff --git a/src/common/utils/flags.hpp b/src/common/utils/flags.hpp new file mode 100644 index 0000000..cf304b2 --- /dev/null +++ b/src/common/utils/flags.hpp @@ -0,0 +1,8 @@ +#pragma once + +#include + +namespace utils::flags +{ + bool has_flag(const std::string& flag); +} diff --git a/src/common/utils/hook.cpp b/src/common/utils/hook.cpp new file mode 100644 index 0000000..be05cb9 --- /dev/null +++ b/src/common/utils/hook.cpp @@ -0,0 +1,310 @@ +#include "hook.hpp" +#include "string.hpp" + +#include + +namespace utils::hook +{ + namespace + { + [[maybe_unused]] class _ + { + public: + _() + { + if (MH_Initialize() != MH_OK) + { + throw std::runtime_error("Failed to initialize MinHook"); + } + } + + ~_() + { + MH_Uninitialize(); + } + } __; + } + + void assembler::pushad64() + { + this->push(rax); + this->push(rcx); + this->push(rdx); + this->push(rbx); + this->push(rsp); + this->push(rbp); + this->push(rsi); + this->push(rdi); + + this->sub(rsp, 0x40); + } + + void assembler::popad64() + { + this->add(rsp, 0x40); + + this->pop(rdi); + this->pop(rsi); + this->pop(rbp); + this->pop(rsp); + this->pop(rbx); + this->pop(rdx); + this->pop(rcx); + this->pop(rax); + } + + void assembler::prepare_stack_for_call() + { + const auto reserve_callee_space = this->newLabel(); + const auto stack_unaligned = this->newLabel(); + + this->test(rsp, 0xF); + this->jnz(stack_unaligned); + + this->sub(rsp, 0x8); + this->push(rsp); + + this->push(rax); + this->mov(rax, ptr(rsp, 8, 8)); + this->add(rax, 0x8); + this->mov(ptr(rsp, 8, 8), rax); + this->pop(rax); + + this->jmp(reserve_callee_space); + + this->bind(stack_unaligned); + this->push(rsp); + + this->bind(reserve_callee_space); + this->sub(rsp, 0x40); + } + + void assembler::restore_stack_after_call() + { + this->lea(rsp, ptr(rsp, 0x40)); + this->pop(rsp); + } + + asmjit::Error assembler::call(void* target) + { + return Assembler::call(size_t(target)); + } + + asmjit::Error assembler::jmp(void* target) + { + return Assembler::jmp(size_t(target)); + } + + detour::detour(const size_t place, void* target) : detour(reinterpret_cast(place), target) + { + } + + detour::detour(void* place, void* target) + { + this->create(place, target); + } + + detour::~detour() + { + this->clear(); + } + + void detour::enable() const + { + MH_EnableHook(this->place_); + } + + void detour::disable() const + { + MH_DisableHook(this->place_); + } + + void detour::create(void* place, void* target) + { + this->clear(); + this->place_ = place; + + if (MH_CreateHook(this->place_, target, &this->original_) != MH_OK) + { + throw std::runtime_error(string::va("Unable to create hook at location: %p", this->place_)); + } + + this->enable(); + } + + void detour::create(const size_t place, void* target) + { + this->create(reinterpret_cast(place), target); + } + + void detour::clear() + { + if (this->place_) + { + MH_RemoveHook(this->place_); + } + + this->place_ = nullptr; + this->original_ = nullptr; + } + + void* detour::get_original() const + { + return this->original_; + } + + bool iat(const nt::library& library, const std::string& target_library, const std::string& process, void* stub) + { + if (!library.is_valid()) return false; + + auto* const ptr = library.get_iat_entry(target_library, process); + if (!ptr) return false; + + DWORD protect; + VirtualProtect(ptr, sizeof(*ptr), PAGE_EXECUTE_READWRITE, &protect); + + *ptr = stub; + + VirtualProtect(ptr, sizeof(*ptr), protect, &protect); + return true; + } + + void nop(void* place, const size_t length) + { + DWORD old_protect{}; + VirtualProtect(place, length, PAGE_EXECUTE_READWRITE, &old_protect); + + std::memset(place, 0x90, length); + + VirtualProtect(place, length, old_protect, &old_protect); + FlushInstructionCache(GetCurrentProcess(), place, length); + } + + void nop(const size_t place, const size_t length) + { + nop(reinterpret_cast(place), length); + } + + void copy(void* place, const void* data, const size_t length) + { + DWORD old_protect{}; + VirtualProtect(place, length, PAGE_EXECUTE_READWRITE, &old_protect); + + std::memmove(place, data, length); + + VirtualProtect(place, length, old_protect, &old_protect); + FlushInstructionCache(GetCurrentProcess(), place, length); + } + + void copy(const size_t place, const void* data, const size_t length) + { + copy(reinterpret_cast(place), data, length); + } + + bool is_relatively_far(const void* pointer, const void* data, const int offset) + { + const int64_t diff = size_t(data) - (size_t(pointer) + offset); + const auto small_diff = int32_t(diff); + return diff != int64_t(small_diff); + } + + void call(void* pointer, void* data) + { + if (is_relatively_far(pointer, data)) + { + throw std::runtime_error("Too far away to create 32bit relative branch"); + } + + auto* patch_pointer = PBYTE(pointer); + set(patch_pointer, 0xE8); + set(patch_pointer + 1, int32_t(size_t(data) - (size_t(pointer) + 5))); + } + + void call(const size_t pointer, void* data) + { + return call(reinterpret_cast(pointer), data); + } + + void call(const size_t pointer, const size_t data) + { + return call(pointer, reinterpret_cast(data)); + } + + void jump(void* pointer, void* data, const bool use_far) + { + static const unsigned char jump_data[] = { + 0x48, 0xb8, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0xff, 0xe0 + }; + + if (!use_far && is_relatively_far(pointer, data)) + { + throw std::runtime_error("Too far away to create 32bit relative branch"); + } + + auto* patch_pointer = PBYTE(pointer); + + if (use_far) + { + copy(patch_pointer, jump_data, sizeof(jump_data)); + copy(patch_pointer + 2, &data, sizeof(data)); + } + else + { + set(patch_pointer, 0xE9); + set(patch_pointer + 1, int32_t(size_t(data) - (size_t(pointer) + 5))); + } + } + + void jump(const size_t pointer, void* data, const bool use_far) + { + return jump(reinterpret_cast(pointer), data, use_far); + } + + void jump(const size_t pointer, const size_t data, const bool use_far) + { + return jump(pointer, reinterpret_cast(data), use_far); + } + + void* assemble(const std::function& asm_function) + { + static asmjit::JitRuntime runtime; + + asmjit::CodeHolder code; + code.init(runtime.environment()); + + assembler a(&code); + + asm_function(a); + + void* result = nullptr; + runtime.add(&result, &code); + + return result; + } + + void inject(void* pointer, const void* data) + { + if (is_relatively_far(pointer, data, 4)) + { + throw std::runtime_error("Too far away to create 32bit relative branch"); + } + + set(pointer, int32_t(size_t(data) - (size_t(pointer) + 4))); + } + + void inject(const size_t pointer, const void* data) + { + return inject(reinterpret_cast(pointer), data); + } + + void* follow_branch(void* address) + { + auto* const data = static_cast(address); + if (*data != 0xE8 && *data != 0xE9) + { + throw std::runtime_error("No branch instruction found"); + } + + return extract(data + 1); + } +} diff --git a/src/common/utils/hook.hpp b/src/common/utils/hook.hpp new file mode 100644 index 0000000..bb24f8c --- /dev/null +++ b/src/common/utils/hook.hpp @@ -0,0 +1,205 @@ +#pragma once +#include "signature.hpp" + +#include +#include + +using namespace asmjit::x86; + +namespace utils::hook +{ + namespace detail + { + template + std::vector get_iota_functions() + { + if constexpr (entries == 0) + { + std::vector functions; + return functions; + } + else + { + auto functions = get_iota_functions(); + functions.emplace_back([]() + { + return entries - 1; + }); + return functions; + } + } + } + + // Gets the pointer to the entry in the v-table. + // It seems otherwise impossible to get this. + // This is ugly as fuck and only safely works on x64 + // Example: + // ID3D11Device* device = ... + // auto entry = get_vtable_entry(device, &ID3D11Device::CreateTexture2D); + template + void** get_vtable_entry(Class* obj, T (Class::* entry)(Args ...)) + { + union + { + decltype(entry) func; + void* pointer; + }; + + func = entry; + + auto iota_functions = detail::get_iota_functions(); + auto* object = iota_functions.data(); + + using FakeFunc = size_t(__thiscall*)(void* self); + auto index = static_cast(pointer)(&object); + + void** obj_v_table = *reinterpret_cast(obj); + return &obj_v_table[index]; + } + + class assembler : public Assembler + { + public: + using Assembler::Assembler; + using Assembler::call; + using Assembler::jmp; + + void pushad64(); + void popad64(); + + void prepare_stack_for_call(); + void restore_stack_after_call(); + + template + void call_aligned(T&& target) + { + this->prepare_stack_for_call(); + this->call(std::forward(target)); + this->restore_stack_after_call(); + } + + asmjit::Error call(void* target); + asmjit::Error jmp(void* target); + }; + + class detour + { + public: + detour() = default; + detour(void* place, void* target); + detour(size_t place, void* target); + ~detour(); + + detour(detour&& other) noexcept + { + this->operator=(std::move(other)); + } + + detour& operator=(detour&& other) noexcept + { + if (this != &other) + { + this->~detour(); + + this->place_ = other.place_; + this->original_ = other.original_; + + other.place_ = nullptr; + other.original_ = nullptr; + } + + return *this; + } + + detour(const detour&) = delete; + detour& operator=(const detour&) = delete; + + void enable() const; + void disable() const; + + void create(void* place, void* target); + void create(size_t place, void* target); + void clear(); + + template + T* get() const + { + return static_cast(this->get_original()); + } + + template + T invoke(Args ... args) + { + return static_cast(this->get_original())(args...); + } + + [[nodiscard]] void* get_original() const; + + private: + void* place_{}; + void* original_{}; + }; + + bool iat(const nt::library& library, const std::string& target_library, const std::string& process, void* stub); + + void nop(void* place, size_t length); + void nop(size_t place, size_t length); + + void copy(void* place, const void* data, size_t length); + void copy(size_t place, const void* data, size_t length); + + bool is_relatively_far(const void* pointer, const void* data, int offset = 5); + + void call(void* pointer, void* data); + void call(size_t pointer, void* data); + void call(size_t pointer, size_t data); + + void jump(void* pointer, void* data, bool use_far = false); + void jump(size_t pointer, void* data, bool use_far = false); + void jump(size_t pointer, size_t data, bool use_far = false); + + void* assemble(const std::function& asm_function); + + void inject(void* pointer, const void* data); + void inject(size_t pointer, const void* data); + + template + T extract(void* address) + { + auto* const data = static_cast(address); + const auto offset = *reinterpret_cast(data); + return reinterpret_cast(data + offset + 4); + } + + void* follow_branch(void* address); + + template + static void set(void* place, T value) + { + DWORD old_protect; + VirtualProtect(place, sizeof(T), PAGE_EXECUTE_READWRITE, &old_protect); + + *static_cast(place) = value; + + VirtualProtect(place, sizeof(T), old_protect, &old_protect); + FlushInstructionCache(GetCurrentProcess(), place, sizeof(T)); + } + + template + static void set(const size_t place, T value) + { + return set(reinterpret_cast(place), value); + } + + template + static T invoke(size_t func, Args ... args) + { + return reinterpret_cast(func)(args...); + } + + template + static T invoke(void* func, Args ... args) + { + return static_cast(func)(args...); + } +} diff --git a/src/common/utils/http.cpp b/src/common/utils/http.cpp new file mode 100644 index 0000000..3cb5999 --- /dev/null +++ b/src/common/utils/http.cpp @@ -0,0 +1,48 @@ +#include "http.hpp" +#include "nt.hpp" +#include + +namespace utils::http +{ + std::optional get_data(const std::string& url) + { + CComPtr stream; + + if (FAILED(URLOpenBlockingStreamA(nullptr, url.data(), &stream, 0, nullptr))) + { + return {}; + } + + char buffer[0x1000]; + std::string result; + + HRESULT status{}; + + do + { + DWORD bytes_read = 0; + status = stream->Read(buffer, sizeof(buffer), &bytes_read); + + if (bytes_read > 0) + { + result.append(buffer, bytes_read); + } + } + while (SUCCEEDED(status) && status != S_FALSE); + + if (FAILED(status)) + { + return {}; + } + + return {result}; + } + + std::future> get_data_async(const std::string& url) + { + return std::async(std::launch::async, [url]() + { + return get_data(url); + }); + } +} diff --git a/src/common/utils/http.hpp b/src/common/utils/http.hpp new file mode 100644 index 0000000..65628a9 --- /dev/null +++ b/src/common/utils/http.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include +#include +#include + +namespace utils::http +{ + std::optional get_data(const std::string& url); + std::future> get_data_async(const std::string& url); +} diff --git a/src/common/utils/info_string.cpp b/src/common/utils/info_string.cpp new file mode 100644 index 0000000..229d0ef --- /dev/null +++ b/src/common/utils/info_string.cpp @@ -0,0 +1,65 @@ +#include "info_string.hpp" +#include "string.hpp" + +namespace utils +{ + info_string::info_string(const std::string& buffer) + { + this->parse(buffer); + } + + info_string::info_string(const std::string_view& buffer) + : info_string(std::string{buffer}) + { + } + + void info_string::set(const std::string& key, const std::string& value) + { + this->key_value_pairs_[key] = value; + } + + std::string info_string::get(const std::string& key) const + { + const auto value = this->key_value_pairs_.find(key); + if (value != this->key_value_pairs_.end()) + { + return value->second; + } + + return {}; + } + + void info_string::parse(std::string buffer) + { + if (buffer[0] == '\\') + { + buffer = buffer.substr(1); + } + + const auto key_values = string::split(buffer, '\\'); + for (size_t i = 0; !key_values.empty() && i < (key_values.size() - 1); i += 2) + { + const auto& key = key_values[i]; + const auto& value = key_values[i + 1]; + + if (!this->key_value_pairs_.contains(key)) + { + this->key_value_pairs_[key] = value; + } + } + } + + std::string info_string::build() const + { + std::string info_string; + for (const auto& [key, val] : this->key_value_pairs_) + { + info_string.append("\\"); + info_string.append(key); + info_string.append("\\"); + info_string.append(val); + } + + return info_string; + } +} diff --git a/src/common/utils/info_string.hpp b/src/common/utils/info_string.hpp new file mode 100644 index 0000000..369038f --- /dev/null +++ b/src/common/utils/info_string.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include +#include + +namespace utils +{ + class info_string + { + public: + info_string() = default; + explicit info_string(const std::string& buffer); + explicit info_string(const std::string_view& buffer); + + void set(const std::string& key, const std::string& value); + std::string get(const std::string& key) const; + std::string build() const; + + private: + std::unordered_map key_value_pairs_{}; + + void parse(std::string buffer); + }; +} diff --git a/src/common/utils/io.cpp b/src/common/utils/io.cpp new file mode 100644 index 0000000..24624de --- /dev/null +++ b/src/common/utils/io.cpp @@ -0,0 +1,125 @@ +#include "io.hpp" +#include "nt.hpp" +#include + +namespace utils::io +{ + bool remove_file(const std::string& file) + { + return DeleteFileA(file.data()) == TRUE; + } + + bool move_file(const std::string& src, const std::string& target) + { + return MoveFileA(src.data(), target.data()) == TRUE; + } + + bool file_exists(const std::string& file) + { + return std::ifstream(file).good(); + } + + bool write_file(const std::string& file, const std::string& data, const bool append) + { + const auto pos = file.find_last_of("/\\"); + if (pos != std::string::npos) + { + create_directory(file.substr(0, pos)); + } + + std::ofstream stream( + file, std::ios::binary | std::ofstream::out | (append ? std::ofstream::app : 0)); + + if (stream.is_open()) + { + stream.write(data.data(), static_cast(data.size())); + stream.close(); + return true; + } + + return false; + } + + std::string read_file(const std::string& file) + { + std::string data; + read_file(file, &data); + return data; + } + + bool read_file(const std::string& file, std::string* data) + { + if (!data) return false; + data->clear(); + + if (file_exists(file)) + { + std::ifstream stream(file, std::ios::binary); + if (!stream.is_open()) return false; + + stream.seekg(0, std::ios::end); + const std::streamsize size = stream.tellg(); + stream.seekg(0, std::ios::beg); + + if (size > -1) + { + data->resize(static_cast(size)); + stream.read(data->data(), size); + stream.close(); + return true; + } + } + + return false; + } + + size_t file_size(const std::string& file) + { + if (file_exists(file)) + { + std::ifstream stream(file, std::ios::binary); + + if (stream.good()) + { + stream.seekg(0, std::ios::end); + return static_cast(stream.tellg()); + } + } + + return 0; + } + + bool create_directory(const std::string& directory) + { + return std::filesystem::create_directories(directory); + } + + bool directory_exists(const std::string& directory) + { + return std::filesystem::is_directory(directory); + } + + bool directory_is_empty(const std::string& directory) + { + return std::filesystem::is_empty(directory); + } + + std::vector list_files(const std::string& directory) + { + std::vector files; + + for (auto& file : std::filesystem::directory_iterator(directory)) + { + files.push_back(file.path().generic_string()); + } + + return files; + } + + void copy_folder(const std::filesystem::path& src, const std::filesystem::path& target) + { + std::filesystem::copy(src, target, + std::filesystem::copy_options::overwrite_existing | + std::filesystem::copy_options::recursive); + } +} diff --git a/src/common/utils/io.hpp b/src/common/utils/io.hpp new file mode 100644 index 0000000..ab4ebaa --- /dev/null +++ b/src/common/utils/io.hpp @@ -0,0 +1,21 @@ +#pragma once + +#include +#include +#include + +namespace utils::io +{ + bool remove_file(const std::string& file); + bool move_file(const std::string& src, const std::string& target); + bool file_exists(const std::string& file); + bool write_file(const std::string& file, const std::string& data, bool append = false); + bool read_file(const std::string& file, std::string* data); + std::string read_file(const std::string& file); + size_t file_size(const std::string& file); + bool create_directory(const std::string& directory); + bool directory_exists(const std::string& directory); + bool directory_is_empty(const std::string& directory); + std::vector list_files(const std::string& directory); + void copy_folder(const std::filesystem::path& src, const std::filesystem::path& target); +} diff --git a/src/common/utils/memory.cpp b/src/common/utils/memory.cpp new file mode 100644 index 0000000..e71ca10 --- /dev/null +++ b/src/common/utils/memory.cpp @@ -0,0 +1,162 @@ +#include "memory.hpp" +#include "nt.hpp" + +namespace utils +{ + memory::allocator memory::mem_allocator_; + + memory::allocator::~allocator() + { + this->clear(); + } + + void memory::allocator::clear() + { + std::lock_guard _(this->mutex_); + + for (const auto& data : this->pool_) + { + memory::free(data); + } + + this->pool_.clear(); + } + + void memory::allocator::free(void* data) + { + std::lock_guard _(this->mutex_); + + const auto j = std::find(this->pool_.begin(), this->pool_.end(), data); + if (j != this->pool_.end()) + { + memory::free(data); + this->pool_.erase(j); + } + } + + void memory::allocator::free(const void* data) + { + this->free(const_cast(data)); + } + + void* memory::allocator::allocate(const size_t length) + { + std::lock_guard _(this->mutex_); + + auto* data = memory::allocate(length); + this->pool_.push_back(data); + return data; + } + + bool memory::allocator::empty() const + { + return this->pool_.empty(); + } + + char* memory::allocator::duplicate_string(const std::string& string) + { + std::lock_guard _(this->mutex_); + + auto* data = memory::duplicate_string(string); + this->pool_.push_back(data); + return data; + } + + void* memory::allocate(const size_t length) + { + return std::calloc(length, 1); + } + + char* memory::duplicate_string(const std::string& string) + { + auto* new_string = allocate_array(string.size() + 1); + std::memcpy(new_string, string.data(), string.size()); + return new_string; + } + + void memory::free(void* data) + { + std::free(data); + } + + void memory::free(const void* data) + { + free(const_cast(data)); + } + + bool memory::is_set(const void* mem, const char chr, const size_t length) + { + const auto mem_arr = static_cast(mem); + + for (size_t i = 0; i < length; ++i) + { + if (mem_arr[i] != chr) + { + return false; + } + } + + return true; + } + + bool memory::is_bad_read_ptr(const void* ptr) + { + MEMORY_BASIC_INFORMATION mbi = {}; + if (VirtualQuery(ptr, &mbi, sizeof(mbi))) + { + const DWORD mask = (PAGE_READONLY | PAGE_READWRITE | PAGE_WRITECOPY | PAGE_EXECUTE_READ | + PAGE_EXECUTE_READWRITE | PAGE_EXECUTE_WRITECOPY); + auto b = !(mbi.Protect & mask); + // check the page is not a guard page + if (mbi.Protect & (PAGE_GUARD | PAGE_NOACCESS)) b = true; + + return b; + } + return true; + } + + bool memory::is_bad_code_ptr(const void* ptr) + { + MEMORY_BASIC_INFORMATION mbi = {}; + if (VirtualQuery(ptr, &mbi, sizeof(mbi))) + { + const DWORD mask = (PAGE_EXECUTE_READ | PAGE_EXECUTE_READWRITE | PAGE_EXECUTE_WRITECOPY); + auto b = !(mbi.Protect & mask); + // check the page is not a guard page + if (mbi.Protect & (PAGE_GUARD | PAGE_NOACCESS)) b = true; + + return b; + } + return true; + } + + bool memory::is_rdata_ptr(void* pointer) + { + const std::string rdata = ".rdata"; + const auto pointer_lib = utils::nt::library::get_by_address(pointer); + + for (const auto& section : pointer_lib.get_section_headers()) + { + const auto size = sizeof(section->Name); + char name[size + 1]; + name[size] = 0; + std::memcpy(name, section->Name, size); + + if (name == rdata) + { + const auto target = size_t(pointer); + const size_t source_start = size_t(pointer_lib.get_ptr()) + section->PointerToRawData; + const size_t source_end = source_start + section->SizeOfRawData; + + return target >= source_start && target <= source_end; + } + } + + return false; + } + + memory::allocator* memory::get_allocator() + { + return &memory::mem_allocator_; + } +} diff --git a/src/common/utils/memory.hpp b/src/common/utils/memory.hpp new file mode 100644 index 0000000..0448894 --- /dev/null +++ b/src/common/utils/memory.hpp @@ -0,0 +1,75 @@ +#pragma once + +#include +#include + +namespace utils +{ + class memory final + { + public: + class allocator final + { + public: + ~allocator(); + + void clear(); + + void free(void* data); + + void free(const void* data); + + void* allocate(size_t length); + + template + T* allocate() + { + return this->allocate_array(1); + } + + template + T* allocate_array(const size_t count = 1) + { + return static_cast(this->allocate(count * sizeof(T))); + } + + bool empty() const; + + char* duplicate_string(const std::string& string); + + private: + std::mutex mutex_; + std::vector pool_; + }; + + static void* allocate(size_t length); + + template + static T* allocate() + { + return allocate_array(1); + } + + template + static T* allocate_array(const size_t count = 1) + { + return static_cast(allocate(count * sizeof(T))); + } + + static char* duplicate_string(const std::string& string); + + static void free(void* data); + static void free(const void* data); + + static bool is_set(const void* mem, char chr, size_t length); + + static bool is_bad_read_ptr(const void* ptr); + static bool is_bad_code_ptr(const void* ptr); + static bool is_rdata_ptr(void* ptr); + + static allocator* get_allocator(); + + private: + static allocator mem_allocator_; + }; +} diff --git a/src/common/utils/nt.cpp b/src/common/utils/nt.cpp new file mode 100644 index 0000000..13ae0c1 --- /dev/null +++ b/src/common/utils/nt.cpp @@ -0,0 +1,276 @@ +#include "nt.hpp" + +namespace utils::nt +{ + library library::load(const std::string& name) + { + return library(LoadLibraryA(name.data())); + } + + library library::load(const std::filesystem::path& path) + { + return library::load(path.generic_string()); + } + + library library::get_by_address(void* address) + { + HMODULE handle = nullptr; + GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, + static_cast(address), &handle); + return library(handle); + } + + library::library() + { + this->module_ = GetModuleHandleA(nullptr); + } + + library::library(const std::string& name) + { + this->module_ = GetModuleHandleA(name.data()); + } + + library::library(const HMODULE handle) + { + this->module_ = handle; + } + + bool library::operator==(const library& obj) const + { + return this->module_ == obj.module_; + } + + library::operator bool() const + { + return this->is_valid(); + } + + library::operator HMODULE() const + { + return this->get_handle(); + } + + PIMAGE_NT_HEADERS library::get_nt_headers() const + { + if (!this->is_valid()) return nullptr; + return reinterpret_cast(this->get_ptr() + this->get_dos_header()->e_lfanew); + } + + PIMAGE_DOS_HEADER library::get_dos_header() const + { + return reinterpret_cast(this->get_ptr()); + } + + PIMAGE_OPTIONAL_HEADER library::get_optional_header() const + { + if (!this->is_valid()) return nullptr; + return &this->get_nt_headers()->OptionalHeader; + } + + std::vector library::get_section_headers() const + { + std::vector headers; + + auto nt_headers = this->get_nt_headers(); + auto section = IMAGE_FIRST_SECTION(nt_headers); + + for (uint16_t i = 0; i < nt_headers->FileHeader.NumberOfSections; ++i, ++section) + { + if (section) headers.push_back(section); + } + + return headers; + } + + std::uint8_t* library::get_ptr() const + { + return reinterpret_cast(this->module_); + } + + void library::unprotect() const + { + if (!this->is_valid()) return; + + DWORD protection; + VirtualProtect(this->get_ptr(), this->get_optional_header()->SizeOfImage, PAGE_EXECUTE_READWRITE, + &protection); + } + + size_t library::get_relative_entry_point() const + { + if (!this->is_valid()) return 0; + return this->get_nt_headers()->OptionalHeader.AddressOfEntryPoint; + } + + void* library::get_entry_point() const + { + if (!this->is_valid()) return nullptr; + return this->get_ptr() + this->get_relative_entry_point(); + } + + bool library::is_valid() const + { + return this->module_ != nullptr && this->get_dos_header()->e_magic == IMAGE_DOS_SIGNATURE; + } + + std::string library::get_name() const + { + if (!this->is_valid()) return {}; + + auto path = this->get_path(); + const auto pos = path.find_last_of("/\\"); + if (pos == std::string::npos) return path; + + return path.substr(pos + 1); + } + + std::string library::get_path() const + { + if (!this->is_valid()) return {}; + + char name[MAX_PATH] = {0}; + GetModuleFileNameA(this->module_, name, sizeof name); + + return name; + } + + std::string library::get_folder() const + { + if (!this->is_valid()) return {}; + + const auto path = std::filesystem::path(this->get_path()); + return path.parent_path().generic_string(); + } + + void library::free() + { + if (this->is_valid()) + { + FreeLibrary(this->module_); + this->module_ = nullptr; + } + } + + HMODULE library::get_handle() const + { + return this->module_; + } + + void** library::get_iat_entry(const std::string& module_name, const std::string& proc_name) const + { + return this->get_iat_entry(module_name, proc_name.data()); + } + + void** library::get_iat_entry(const std::string& module_name, const char* proc_name) const + { + if (!this->is_valid()) return nullptr; + + const library other_module(module_name); + if (!other_module.is_valid()) return nullptr; + + auto* const target_function = other_module.get_proc(proc_name); + if (!target_function) return nullptr; + + const auto* header = this->get_optional_header(); + if (!header) return nullptr; + + auto* import_descriptor = reinterpret_cast(this->get_ptr() + header->DataDirectory + [IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress); + + while (import_descriptor->Name) + { + if (!_stricmp(reinterpret_cast(this->get_ptr() + import_descriptor->Name), module_name.data())) + { + auto* original_thunk_data = reinterpret_cast(import_descriptor-> + OriginalFirstThunk + this->get_ptr()); + auto* thunk_data = reinterpret_cast(import_descriptor->FirstThunk + this-> + get_ptr()); + + while (original_thunk_data->u1.AddressOfData) + { + if (thunk_data->u1.Function == reinterpret_cast(target_function)) + { + return reinterpret_cast(&thunk_data->u1.Function); + } + + const size_t ordinal_number = original_thunk_data->u1.AddressOfData & 0xFFFFFFF; + + if (ordinal_number <= 0xFFFF) + { + auto* proc = GetProcAddress(other_module.module_, reinterpret_cast(ordinal_number)); + if (reinterpret_cast(proc) == target_function) + { + return reinterpret_cast(&thunk_data->u1.Function); + } + } + + ++original_thunk_data; + ++thunk_data; + } + + //break; + } + + ++import_descriptor; + } + + return nullptr; + } + + bool is_wine() + { + static const auto has_wine_export = []() -> bool + { + const library ntdll("ntdll.dll"); + return ntdll.get_proc("wine_get_version"); + }(); + + return has_wine_export; + } + + void raise_hard_exception() + { + int data = false; + const library ntdll("ntdll.dll"); + ntdll.invoke_pascal("RtlAdjustPrivilege", 19, true, false, &data); + ntdll.invoke_pascal("NtRaiseHardError", 0xC000007B, 0, nullptr, nullptr, 6, &data); + } + + std::string load_resource(const int id) + { + auto* const res = FindResourceA(library(), MAKEINTRESOURCE(id), RT_RCDATA); + if (!res) return {}; + + auto* const handle = LoadResource(nullptr, res); + if (!handle) return {}; + + return std::string(LPSTR(LockResource(handle)), SizeofResource(nullptr, res)); + } + + void relaunch_self() + { + const library self; + + STARTUPINFOA startup_info; + PROCESS_INFORMATION process_info; + + ZeroMemory(&startup_info, sizeof(startup_info)); + ZeroMemory(&process_info, sizeof(process_info)); + startup_info.cb = sizeof(startup_info); + + char current_dir[MAX_PATH]; + GetCurrentDirectoryA(sizeof(current_dir), current_dir); + auto* const command_line = GetCommandLineA(); + + CreateProcessA(self.get_path().data(), command_line, nullptr, nullptr, false, NULL, nullptr, current_dir, + &startup_info, &process_info); + + if (process_info.hThread && process_info.hThread != INVALID_HANDLE_VALUE) CloseHandle(process_info.hThread); + if (process_info.hProcess && process_info.hProcess != INVALID_HANDLE_VALUE) CloseHandle(process_info.hProcess); + } + + void terminate(const uint32_t code) + { + TerminateProcess(GetCurrentProcess(), code); + } +} diff --git a/src/common/utils/nt.hpp b/src/common/utils/nt.hpp new file mode 100644 index 0000000..c0e903d --- /dev/null +++ b/src/common/utils/nt.hpp @@ -0,0 +1,120 @@ +#pragma once + +#define WIN32_LEAN_AND_MEAN +#include + +// min and max is required by gdi, therefore NOMINMAX won't work +#ifdef max +#undef max +#endif + +#ifdef min +#undef min +#endif + +#include +#include +#include + +namespace utils::nt +{ + class library final + { + public: + static library load(const std::string& name); + static library load(const std::filesystem::path& path); + static library get_by_address(void* address); + + library(); + explicit library(const std::string& name); + explicit library(HMODULE handle); + + library(const library& a) : module_(a.module_) + { + } + + bool operator!=(const library& obj) const { return !(*this == obj); }; + bool operator==(const library& obj) const; + + operator bool() const; + operator HMODULE() const; + + void unprotect() const; + void* get_entry_point() const; + size_t get_relative_entry_point() const; + + bool is_valid() const; + std::string get_name() const; + std::string get_path() const; + std::string get_folder() const; + std::uint8_t* get_ptr() const; + void free(); + + HMODULE get_handle() const; + + template + T get_proc(const std::string& process) const + { + if (!this->is_valid()) T{}; + return reinterpret_cast(GetProcAddress(this->module_, process.data())); + } + + template + T get_proc(const char* name) const + { + if (!this->is_valid()) T{}; + return reinterpret_cast(GetProcAddress(this->module_, name)); + } + + template + std::function get(const std::string& process) const + { + if (!this->is_valid()) return std::function(); + return static_cast(this->get_proc(process)); + } + + template + T invoke(const std::string& process, Args ... args) const + { + auto method = this->get(process); + if (method) return method(args...); + return T(); + } + + template + T invoke_pascal(const std::string& process, Args ... args) const + { + auto method = this->get(process); + if (method) return method(args...); + return T(); + } + + template + T invoke_this(const std::string& process, void* this_ptr, Args ... args) const + { + auto method = this->get(this_ptr, process); + if (method) return method(args...); + return T(); + } + + std::vector get_section_headers() const; + + PIMAGE_NT_HEADERS get_nt_headers() const; + PIMAGE_DOS_HEADER get_dos_header() const; + PIMAGE_OPTIONAL_HEADER get_optional_header() const; + + void** get_iat_entry(const std::string& module_name, const std::string& proc_name) const; + void** get_iat_entry(const std::string& module_name, const char* name) const; + + private: + HMODULE module_; + }; + + bool is_wine(); + + __declspec(noreturn) void raise_hard_exception(); + std::string load_resource(int id); + + void relaunch_self(); + __declspec(noreturn) void terminate(uint32_t code = 0); +} diff --git a/src/common/utils/signature.cpp b/src/common/utils/signature.cpp new file mode 100644 index 0000000..9bb8c62 --- /dev/null +++ b/src/common/utils/signature.cpp @@ -0,0 +1,212 @@ +#include "signature.hpp" +#include +#include + +#include + +namespace utils::hook +{ + void signature::load_pattern(const std::string& pattern) + { + this->mask_.clear(); + this->pattern_.clear(); + + uint8_t nibble = 0; + auto has_nibble = false; + + for (auto val : pattern) + { + if (val == ' ') continue; + if (val == '?') + { + this->mask_.push_back(val); + this->pattern_.push_back(0); + } + else + { + if ((val < '0' || val > '9') && (val < 'A' || val > 'F') && (val < 'a' || val > 'f')) + { + throw std::runtime_error("Invalid pattern"); + } + + char str[] = {val, 0}; + const auto current_nibble = static_cast(strtol(str, nullptr, 16)); + + if (!has_nibble) + { + has_nibble = true; + nibble = current_nibble; + } + else + { + has_nibble = false; + const uint8_t byte = current_nibble | (nibble << 4); + + this->mask_.push_back('x'); + this->pattern_.push_back(byte); + } + } + } + + while (!this->mask_.empty() && this->mask_.back() == '?') + { + this->mask_.pop_back(); + this->pattern_.pop_back(); + } + + if (this->has_sse_support()) + { + while (this->pattern_.size() < 16) + { + this->pattern_.push_back(0); + } + } + + if (has_nibble) + { + throw std::runtime_error("Invalid pattern"); + } + } + + std::vector signature::process_range(uint8_t* start, const size_t length) const + { + if (this->has_sse_support()) return this->process_range_vectorized(start, length); + return this->process_range_linear(start, length); + } + + std::vector signature::process_range_linear(uint8_t* start, const size_t length) const + { + std::vector result; + + for (size_t i = 0; i < length; ++i) + { + const auto address = start + i; + + size_t j = 0; + for (; j < this->mask_.size(); ++j) + { + if (this->mask_[j] != '?' && this->pattern_[j] != address[j]) + { + break; + } + } + + if (j == this->mask_.size()) + { + result.push_back(size_t(address)); + } + } + + return result; + } + + std::vector signature::process_range_vectorized(uint8_t* start, const size_t length) const + { + std::vector result; + __declspec(align(16)) char desired_mask[16] = {0}; + + for (size_t i = 0; i < this->mask_.size(); i++) + { + desired_mask[i / 8] |= (this->mask_[i] == '?' ? 0 : 1) << i % 8; + } + + const auto mask = _mm_load_si128(reinterpret_cast(desired_mask)); + const auto comparand = _mm_loadu_si128(reinterpret_cast(this->pattern_.data())); + + for (size_t i = 0; i < length; ++i) + { + const auto address = start + i; + const auto value = _mm_loadu_si128(reinterpret_cast(address)); + const auto comparison = _mm_cmpestrm(value, 16, comparand, static_cast(this->mask_.size()), + _SIDD_CMP_EQUAL_EACH); + + const auto matches = _mm_and_si128(mask, comparison); + const auto equivalence = _mm_xor_si128(mask, matches); + + if (_mm_test_all_zeros(equivalence, equivalence)) + { + result.push_back(size_t(address)); + } + } + + return result; + } + + signature::signature_result signature::process() const + { + const auto range = this->length_ - this->mask_.size(); + const auto cores = std::max(1u, std::thread::hardware_concurrency()); + + if (range <= cores * 10ull) return this->process_serial(); + return this->process_parallel(); + } + + signature::signature_result signature::process_serial() const + { + const auto sub = this->has_sse_support() ? 16 : this->mask_.size(); + return {this->process_range(this->start_, this->length_ - sub)}; + } + + signature::signature_result signature::process_parallel() const + { + const auto sub = this->has_sse_support() ? 16 : this->mask_.size(); + const auto range = this->length_ - sub; + const auto cores = std::max(1u, std::thread::hardware_concurrency() / 2); + // Only use half of the available cores + const auto grid = range / cores; + + std::mutex mutex; + std::vector result; + std::vector threads; + + for (auto i = 0u; i < cores; ++i) + { + const auto start = this->start_ + (grid * i); + const auto length = (i + 1 == cores) ? (this->start_ + this->length_ - sub) - start : grid; + threads.emplace_back([&, start, length]() + { + auto local_result = this->process_range(start, length); + if (local_result.empty()) return; + + std::lock_guard _(mutex); + for (const auto& address : local_result) + { + result.push_back(address); + } + }); + } + + for (auto& t : threads) + { + if (t.joinable()) + { + t.join(); + } + } + + std::sort(result.begin(), result.end()); + return {std::move(result)}; + } + + bool signature::has_sse_support() const + { + if (this->mask_.size() <= 16) + { + int cpu_id[4]; + __cpuid(cpu_id, 0); + + if (cpu_id[0] >= 1) + { + __cpuidex(cpu_id, 1, 0); + return (cpu_id[2] & (1 << 20)) != 0; + } + } + + return false; + } +} + +utils::hook::signature::signature_result operator"" _sig(const char* str, const size_t len) +{ + return utils::hook::signature(std::string(str, len)).process(); +} diff --git a/src/common/utils/signature.hpp b/src/common/utils/signature.hpp new file mode 100644 index 0000000..a372832 --- /dev/null +++ b/src/common/utils/signature.hpp @@ -0,0 +1,73 @@ +#pragma once +#include "nt.hpp" +#include + +namespace utils::hook +{ + class signature final + { + public: + class signature_result + { + public: + signature_result(std::vector&& matches) : matches_(std::move(matches)) + { + } + + [[nodiscard]] uint8_t* get(const size_t index) const + { + if (index >= this->count()) + { + throw std::runtime_error("Invalid index"); + } + + return reinterpret_cast(this->matches_[index]); + } + + [[nodiscard]] size_t count() const + { + return this->matches_.size(); + } + + private: + std::vector matches_; + }; + + explicit signature(const std::string& pattern, const nt::library library = {}) + : signature(pattern, library.get_ptr(), library.get_optional_header()->SizeOfImage) + { + } + + signature(const std::string& pattern, void* start, void* end) + : signature(pattern, start, size_t(end) - size_t(start)) + { + } + + signature(const std::string& pattern, void* start, const size_t length) + : start_(static_cast(start)), length_(length) + { + this->load_pattern(pattern); + } + + signature_result process() const; + + private: + std::string mask_; + std::basic_string pattern_; + + uint8_t* start_; + size_t length_; + + void load_pattern(const std::string& pattern); + + signature_result process_parallel() const; + signature_result process_serial() const; + std::vector process_range(uint8_t* start, size_t length) const; + std::vector process_range_linear(uint8_t* start, size_t length) const; + std::vector process_range_vectorized(uint8_t* start, size_t length) const; + + bool has_sse_support() const; + }; +} + +utils::hook::signature::signature_result operator"" _sig(const char* str, size_t len); diff --git a/src/common/utils/smbios.cpp b/src/common/utils/smbios.cpp new file mode 100644 index 0000000..a3282c2 --- /dev/null +++ b/src/common/utils/smbios.cpp @@ -0,0 +1,94 @@ +#include "smbios.hpp" +#include "memory.hpp" + +#define WIN32_LEAN_AND_MEAN +#include +#include + +namespace utils::smbios +{ + namespace + { +#pragma warning(push) +#pragma warning(disable: 4200) + struct RawSMBIOSData + { + BYTE Used20CallingMethod; + BYTE SMBIOSMajorVersion; + BYTE SMBIOSMinorVersion; + BYTE DmiRevision; + DWORD Length; + BYTE SMBIOSTableData[]; + }; + + typedef struct + { + BYTE type; + BYTE length; + WORD handle; + } dmi_header; +#pragma warning(pop) + + std::vector get_smbios_data() + { + DWORD size = 0; + std::vector data{}; + + size = GetSystemFirmwareTable('RSMB', 0, nullptr, size); + data.resize(size); + GetSystemFirmwareTable('RSMB', 0, data.data(), size); + + return data; + } + + std::string parse_uuid(const uint8_t* data) + { + if (utils::memory::is_set(data, 0, 16) || utils::memory::is_set(data, -1, 16)) + { + return {}; + } + + char uuid[16] = {0}; + *reinterpret_cast(uuid + 0) = + _byteswap_ulong(*reinterpret_cast(data + 0)); + *reinterpret_cast(uuid + 4) = + _byteswap_ushort(*reinterpret_cast(data + 4)); + *reinterpret_cast(uuid + 6) = + _byteswap_ushort(*reinterpret_cast(data + 6)); + memcpy(uuid + 8, data + 8, 8); + + return std::string(uuid, sizeof(uuid)); + } + } + + std::string get_uuid() + { + auto smbios_data = get_smbios_data(); + auto* raw_data = reinterpret_cast(smbios_data.data()); + + auto* data = raw_data->SMBIOSTableData; + for (DWORD i = 0; i + sizeof(dmi_header) < raw_data->Length;) + { + auto* header = reinterpret_cast(data + i); + if (header->length < 4) + { + return {}; + } + + if (header->type == 0x01 && header->length >= 0x19) + { + return parse_uuid(data + i + 0x8); + } + + i += header->length; + while ((i + 1) < raw_data->Length && *reinterpret_cast(data + i) != 0) + { + ++i; + } + + i += 2; + } + + return {}; + } +} diff --git a/src/common/utils/smbios.hpp b/src/common/utils/smbios.hpp new file mode 100644 index 0000000..bbd1939 --- /dev/null +++ b/src/common/utils/smbios.hpp @@ -0,0 +1,8 @@ +#pragma once + +#include + +namespace utils::smbios +{ + std::string get_uuid(); +} diff --git a/src/common/utils/string.cpp b/src/common/utils/string.cpp new file mode 100644 index 0000000..f8129d3 --- /dev/null +++ b/src/common/utils/string.cpp @@ -0,0 +1,179 @@ +#include "string.hpp" +#include +#include +#include + +#include "nt.hpp" + +namespace utils::string +{ + const char* va(const char* fmt, ...) + { + static thread_local va_provider<8, 256> provider; + + va_list ap; + va_start(ap, fmt); + + const char* result = provider.get(fmt, ap); + + va_end(ap); + return result; + } + + std::vector split(const std::string& s, const char delim) + { + std::stringstream ss(s); + std::string item; + std::vector elems; + + while (std::getline(ss, item, delim)) + { + elems.push_back(item); // elems.push_back(std::move(item)); // if C++11 (based on comment from @mchiasson) + } + + return elems; + } + + std::string to_lower(const std::string& text) + { + std::string result; + std::ranges::transform(text, std::back_inserter(result), [](const unsigned char input) + { + return static_cast(std::tolower(input)); + }); + + return result; + } + + std::string to_upper(const std::string& text) + { + std::string result; + std::ranges::transform(text, std::back_inserter(result), [](const unsigned char input) + { + return static_cast(std::toupper(input)); + }); + + return result; + } + + bool starts_with(const std::string& text, const std::string& substring) + { + return text.find(substring) == 0; + } + + bool ends_with(const std::string& text, const std::string& substring) + { + if (substring.size() > text.size()) return false; + return std::equal(substring.rbegin(), substring.rend(), text.rbegin()); + } + + std::string dump_hex(const std::string& data, const std::string& separator) + { + std::string result; + + for (unsigned int i = 0; i < data.size(); ++i) + { + if (i > 0) + { + result.append(separator); + } + + result.append(va("%02X", data[i] & 0xFF)); + } + + return result; + } + + std::string get_clipboard_data() + { + if (OpenClipboard(nullptr)) + { + std::string data; + + auto* const clipboard_data = GetClipboardData(1u); + if (clipboard_data) + { + auto* const cliptext = static_cast(GlobalLock(clipboard_data)); + if (cliptext) + { + data.append(cliptext); + GlobalUnlock(clipboard_data); + } + } + CloseClipboard(); + + return data; + } + return {}; + } + + void strip(const char* in, char* out, size_t max) + { + if (!in || !out) return; + + max--; + auto current = 0u; + while (*in != 0 && current < max) + { + const auto color_index = (*(in + 1) - 48) >= 0xC ? 7 : (*(in + 1) - 48); + + if (*in == '^' && (color_index != 7 || *(in + 1) == '7')) + { + ++in; + } + else + { + *out = *in; + ++out; + ++current; + } + + ++in; + } + + *out = '\0'; + } + + std::string convert(const std::wstring& wstr) + { + std::string result; + result.reserve(wstr.size()); + + for (const auto& chr : wstr) + { + result.push_back(static_cast(chr)); + } + + return result; + } + + std::wstring convert(const std::string& str) + { + std::wstring result; + result.reserve(str.size()); + + for (const auto& chr : str) + { + result.push_back(static_cast(chr)); + } + + return result; + } + + std::string replace(std::string str, const std::string& from, const std::string& to) + { + if (from.empty()) + { + return str; + } + + size_t start_pos = 0; + while ((start_pos = str.find(from, start_pos)) != std::string::npos) + { + str.replace(start_pos, from.length(), to); + start_pos += to.length(); + } + + return str; + } +} diff --git a/src/common/utils/string.hpp b/src/common/utils/string.hpp new file mode 100644 index 0000000..2757d2e --- /dev/null +++ b/src/common/utils/string.hpp @@ -0,0 +1,98 @@ +#pragma once +#include "memory.hpp" +#include + +template +constexpr auto ARRAY_COUNT(Type(&)[n]) { return n; } + +namespace utils::string +{ + template + class va_provider final + { + public: + static_assert(Buffers != 0 && MinBufferSize != 0, "Buffers and MinBufferSize mustn't be 0"); + + va_provider() : current_buffer_(0) + { + } + + char* get(const char* format, const va_list ap) + { + ++this->current_buffer_ %= ARRAY_COUNT(this->string_pool_); + auto entry = &this->string_pool_[this->current_buffer_]; + + if (!entry->size || !entry->buffer) + { + throw std::runtime_error("String pool not initialized"); + } + + while (true) + { + const int res = vsnprintf_s(entry->buffer, entry->size, _TRUNCATE, format, ap); + if (res > 0) break; // Success + if (res == 0) return nullptr; // Error + + entry->double_size(); + } + + return entry->buffer; + } + + private: + class entry final + { + public: + explicit entry(const size_t _size = MinBufferSize) : size(_size), buffer(nullptr) + { + if (this->size < MinBufferSize) this->size = MinBufferSize; + this->allocate(); + } + + ~entry() + { + if (this->buffer) memory::get_allocator()->free(this->buffer); + this->size = 0; + this->buffer = nullptr; + } + + void allocate() + { + if (this->buffer) memory::get_allocator()->free(this->buffer); + this->buffer = memory::get_allocator()->allocate_array(this->size + 1); + } + + void double_size() + { + this->size *= 2; + this->allocate(); + } + + size_t size; + char* buffer; + }; + + size_t current_buffer_; + entry string_pool_[Buffers]; + }; + + const char* va(const char* fmt, ...); + + std::vector split(const std::string& s, char delim); + + std::string to_lower(const std::string& text); + std::string to_upper(const std::string& text); + bool starts_with(const std::string& text, const std::string& substring); + bool ends_with(const std::string& text, const std::string& substring); + + std::string dump_hex(const std::string& data, const std::string& separator = " "); + + std::string get_clipboard_data(); + + void strip(const char* in, char* out, size_t max); + + std::string convert(const std::wstring& wstr); + std::wstring convert(const std::string& str); + + std::string replace(std::string str, const std::string& from, const std::string& to); +} diff --git a/src/common/utils/thread.cpp b/src/common/utils/thread.cpp new file mode 100644 index 0000000..7239b53 --- /dev/null +++ b/src/common/utils/thread.cpp @@ -0,0 +1,128 @@ +#include "thread.hpp" +#include "string.hpp" + +#include + +#include + +namespace utils::thread +{ + bool set_name(const HANDLE t, const std::string& name) + { + const nt::library kernel32("kernel32.dll"); + if (!kernel32) + { + return false; + } + + const auto set_description = kernel32.get_proc("SetThreadDescription"); + if (!set_description) + { + return false; + } + + return SUCCEEDED(set_description(t, string::convert(name).data())); + } + + bool set_name(const DWORD id, const std::string& name) + { + auto* const t = OpenThread(THREAD_SET_LIMITED_INFORMATION, FALSE, id); + if (!t) return false; + + const auto _ = gsl::finally([t]() + { + CloseHandle(t); + }); + + return set_name(t, name); + } + + bool set_name(std::thread& t, const std::string& name) + { + return set_name(t.native_handle(), name); + } + + bool set_name(const std::string& name) + { + return set_name(GetCurrentThread(), name); + } + + std::vector get_thread_ids() + { + auto* const h = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, GetCurrentProcessId()); + if (h == INVALID_HANDLE_VALUE) + { + return {}; + } + + const auto _ = gsl::finally([h]() + { + CloseHandle(h); + }); + + THREADENTRY32 entry{}; + entry.dwSize = sizeof(entry); + if (!Thread32First(h, &entry)) + { + return {}; + } + + std::vector ids{}; + + do + { + const auto check_size = entry.dwSize < FIELD_OFFSET(THREADENTRY32, th32OwnerProcessID) + + sizeof(entry.th32OwnerProcessID); + entry.dwSize = sizeof(entry); + + if (check_size && entry.th32OwnerProcessID == GetCurrentProcessId()) + { + ids.emplace_back(entry.th32ThreadID); + } + } + while (Thread32Next(h, &entry)); + + return ids; + } + + void for_each_thread(const std::function& callback) + { + const auto ids = get_thread_ids(); + + for (const auto& id : ids) + { + auto* const thread = OpenThread(THREAD_ALL_ACCESS, FALSE, id); + if (thread != nullptr) + { + const auto _ = gsl::finally([thread]() + { + CloseHandle(thread); + }); + + callback(thread); + } + } + } + + void suspend_other_threads() + { + for_each_thread([](const HANDLE thread) + { + if (GetThreadId(thread) != GetCurrentThreadId()) + { + SuspendThread(thread); + } + }); + } + + void resume_other_threads() + { + for_each_thread([](const HANDLE thread) + { + if (GetThreadId(thread) != GetCurrentThreadId()) + { + ResumeThread(thread); + } + }); + } +} diff --git a/src/common/utils/thread.hpp b/src/common/utils/thread.hpp new file mode 100644 index 0000000..4ea3598 --- /dev/null +++ b/src/common/utils/thread.hpp @@ -0,0 +1,25 @@ +#pragma once +#include +#include "nt.hpp" + +namespace utils::thread +{ + bool set_name(HANDLE t, const std::string& name); + bool set_name(DWORD id, const std::string& name); + bool set_name(std::thread& t, const std::string& name); + bool set_name(const std::string& name); + + template + std::thread create_named_thread(const std::string& name, Args&&... args) + { + auto t = std::thread(std::forward(args)...); + set_name(t, name); + return t; + } + + std::vector get_thread_ids(); + void for_each_thread(const std::function& callback); + + void suspend_other_threads(); + void resume_other_threads(); +} diff --git a/src/common/utils/toast.cpp b/src/common/utils/toast.cpp new file mode 100644 index 0000000..9ffd44d --- /dev/null +++ b/src/common/utils/toast.cpp @@ -0,0 +1,109 @@ +#include "toast.hpp" +#include "string.hpp" + +#pragma warning(push) +#pragma warning(disable: 6387) +#include +#pragma warning(pop) + +namespace utils +{ + namespace + { + bool initialize() + { + static bool initialized = false; + static bool success = false; + if (initialized) + { + return success; + } + + initialized = true; + auto* instance = WinToastLib::WinToast::instance(); + if (!instance) + { + success = false; + return success; + } + + instance->setAppName(L"s1-mod"); + instance->setAppUserModelId( + WinToastLib::WinToast::configureAUMI(L"AlterWare", L"s1-mod", L"", L"20201212")); + + WinToastLib::WinToast::WinToastError error; + success = instance->initialize(&error); + + return success; + } + + class toast_handler : public WinToastLib::IWinToastHandler + { + public: + void toastActivated() const override + { + } + + void toastActivated(const int /*actionIndex*/) const override + { + } + + void toastFailed() const override + { + } + + void toastDismissed(WinToastDismissalReason /*state*/) const override + { + } + }; + } + + toast::toast(const int64_t id) + : id_(id) + { + } + + toast::operator bool() const + { + return this->id_ >= 0; + } + + void toast::hide() const + { + if (this->operator bool()) + { + WinToastLib::WinToast::instance()->hideToast(this->id_); + } + } + + toast toast::show(const std::string& title, const std::string& text) + { + if (!initialize()) + { + return toast{-1}; + } + + WinToastLib::WinToastTemplate toast_template(WinToastLib::WinToastTemplate::Text02); + toast_template.setTextField(string::convert(title), WinToastLib::WinToastTemplate::FirstLine); + toast_template.setTextField(string::convert(text), WinToastLib::WinToastTemplate::SecondLine); + toast_template.setDuration(WinToastLib::WinToastTemplate::Long); + + return toast{WinToastLib::WinToast::instance()->showToast(toast_template, new toast_handler())}; + } + + toast toast::show(const std::string& title, const std::string& text, const std::string& image) + { + if (!initialize()) + { + return {-1}; + } + + WinToastLib::WinToastTemplate toast_template(WinToastLib::WinToastTemplate::ImageAndText02); + toast_template.setTextField(string::convert(title), WinToastLib::WinToastTemplate::FirstLine); + toast_template.setTextField(string::convert(text), WinToastLib::WinToastTemplate::SecondLine); + toast_template.setDuration(WinToastLib::WinToastTemplate::Long); + toast_template.setImagePath(string::convert(image)); + + return {WinToastLib::WinToast::instance()->showToast(toast_template, new toast_handler())}; + } +} diff --git a/src/common/utils/toast.hpp b/src/common/utils/toast.hpp new file mode 100644 index 0000000..739c5c8 --- /dev/null +++ b/src/common/utils/toast.hpp @@ -0,0 +1,19 @@ +#pragma once +#include + +namespace utils +{ + class toast + { + public: + static toast show(const std::string& title, const std::string& text); + static toast show(const std::string& title, const std::string& text, const std::string& image); + + operator bool() const; + void hide() const; + + private: + toast(int64_t id); + int64_t id_; + }; +} diff --git a/src/runner/debugger.cpp b/src/runner/debugger.cpp new file mode 100644 index 0000000..d58149b --- /dev/null +++ b/src/runner/debugger.cpp @@ -0,0 +1,95 @@ +#define WIN32_LEAN_AND_MEAN +#include +#include "debugger.hpp" + +namespace +{ + bool acquire_debug_privilege() + { + TOKEN_PRIVILEGES token_privileges; + ZeroMemory(&token_privileges, sizeof(token_privileges)); + token_privileges.PrivilegeCount = 1; + + HANDLE token; + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &token)) + { + return false; + } + + if (!LookupPrivilegeValue(nullptr, SE_DEBUG_NAME, &token_privileges.Privileges[0].Luid)) + { + CloseHandle(token); + return false; + } + + token_privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + + DWORD size; + if (!AdjustTokenPrivileges(token, FALSE, &token_privileges, 0, nullptr, &size)) + { + CloseHandle(token); + return false; + } + + return CloseHandle(token) != FALSE; + } +} + +debugger::debugger(const unsigned long process_id, const bool start) +{ + if (!start) + { + return; + } + + this->runner_ = std::thread([this, process_id]() + { + this->terminate_ = false; + this->run(process_id); + }); +} + +debugger::~debugger() +{ + this->terminate_ = true; + if (this->runner_.joinable()) + { + this->runner_.join(); + } +} + +void debugger::run(const unsigned long process_id) const +{ + acquire_debug_privilege(); + if (!DebugActiveProcess(process_id)) + { + return; + } + + SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL); + + DEBUG_EVENT event; + while (!this->terminate_ && WaitForDebugEvent(&event,INFINITE)) + { + if (event.dwDebugEventCode == EXCEPTION_DEBUG_EVENT) + { + ContinueDebugEvent(event.dwProcessId, event.dwThreadId, DBG_EXCEPTION_NOT_HANDLED); + continue; + } + + if (event.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT) + { + ContinueDebugEvent(event.dwProcessId, event.dwThreadId, DBG_CONTINUE); + break; + } + +#ifdef DEV_BUILD + if (event.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT) + { + OutputDebugStringA("Debugger attached!\n"); + } +#endif + + ContinueDebugEvent(event.dwProcessId, event.dwThreadId, DBG_CONTINUE); + } +} diff --git a/src/runner/debugger.hpp b/src/runner/debugger.hpp new file mode 100644 index 0000000..99d1073 --- /dev/null +++ b/src/runner/debugger.hpp @@ -0,0 +1,15 @@ +#pragma once +#include + +class debugger +{ +public: + debugger(unsigned long process_id, bool start); + ~debugger(); + +private: + volatile bool terminate_ = false; + std::thread runner_; + + void run(unsigned long process_id) const; +}; diff --git a/src/runner/resource.rc b/src/runner/resource.rc new file mode 100644 index 0000000..e9db75c --- /dev/null +++ b/src/runner/resource.rc @@ -0,0 +1,100 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "windows.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "#include ""windows.h""\r\n" + "\0" +END + +2 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "AlterWare" + VALUE "FileDescription", "Steam mod runner" + VALUE "FileVersion", "1.0.0.0" + VALUE "InternalName", "Runner" + VALUE "LegalCopyright", "All rights reserved." + VALUE "OriginalFilename", "runner.exe" + VALUE "ProductName", "runner" + VALUE "ProductVersion", "1.0.0.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +///////////////////////////////////////////////////////////////////////////// +// +// Binary Data +// + +102 ICON "../client/resources/icon.ico" + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/src/runner/runner.cpp b/src/runner/runner.cpp new file mode 100644 index 0000000..01c32d2 --- /dev/null +++ b/src/runner/runner.cpp @@ -0,0 +1,26 @@ +#define WIN32_LEAN_AND_MEAN +#include +#include + +#include "debugger.hpp" + +int __stdcall WinMain(HINSTANCE, HINSTANCE, PSTR, int) +{ + const auto* const command = "-proc "; + const char* parent_proc = strstr(GetCommandLineA(), command); + + if (parent_proc) + { + const auto pid = DWORD(atoi(parent_proc + strlen(command))); + auto* const process_handle = OpenProcess(SYNCHRONIZE, FALSE, pid); + if (process_handle) + { + //debugger _(pid, strstr(GetCommandLineA(), "-debug ") != nullptr); + WaitForSingleObject(process_handle, INFINITE); + CloseHandle(process_handle); + return 0; + } + } + + return 1; +} diff --git a/src/tlsdll/dllmain.cpp b/src/tlsdll/dllmain.cpp new file mode 100644 index 0000000..56d31a6 --- /dev/null +++ b/src/tlsdll/dllmain.cpp @@ -0,0 +1,7 @@ +#define TLS_PAYLOAD_SIZE 0x2000 +thread_local char tls_data[TLS_PAYLOAD_SIZE]; + +__declspec(dllexport) void* get_tls_data() +{ + return &tls_data[0]; +} diff --git a/src/tlsdll/resource.rc b/src/tlsdll/resource.rc new file mode 100644 index 0000000..dbd2de6 --- /dev/null +++ b/src/tlsdll/resource.rc @@ -0,0 +1,100 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "windows.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "#include ""windows.h""\r\n" + "\0" +END + +2 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "AlterWare" + VALUE "FileDescription", "TLS index allocation dll" + VALUE "FileVersion", "1.0.0.0" + VALUE "InternalName", "TLS DLL" + VALUE "LegalCopyright", "All rights reserved." + VALUE "OriginalFilename", "tlsdll.dll" + VALUE "ProductName", "tlsdll" + VALUE "ProductVersion", "1.0.0.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +///////////////////////////////////////////////////////////////////////////// +// +// Binary Data +// + +// Nothing here + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/tools/protoc.exe b/tools/protoc.exe new file mode 100644 index 0000000000000000000000000000000000000000..cc258a52cf54eed3ab2ddc2eae8cca389c37a9d2 GIT binary patch literal 3909120 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°Cd@q88r^Q~7`ZzGk#T%wCzVYWolpLlZm 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⩔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 z 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