diff --git a/Cargo.toml b/Cargo.toml index f10cea7..92cf54a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "consistenttime" -version = "0.1.0" +version = "0.2.0" authors = ["William Cody Laeder "] repository = "https://github.com/valarauca/consistenttime.git" homepage = "https://github.com/valarauca/consistenttime" diff --git a/README.md b/README.md index 56b7097..98777ff 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,7 @@ #constanttime -[Documentation](https://valarauca.github.io/consistenttime/consistenttime/index.html) +Welcome to the consistent time auditing branch. -A crate that supports _many_ constant time operations. The reference is [Go-Lang's crypto/subtile](https://golang.org/src/crypto/subtle/constant_time.go) -which implements the orginal form of these constant time operations. I took the library of extrapolating the `uint8` and `uint32` into _all_ Rust -integer types. +This branch exists to hold build scripts, and asm dumps to assist people in figuring out if this crate works as expected. -These operations are not designed to be _fast_. They are designed to take the same if they suceeded or fail. This is to prevent side channel attacks on cryptographic libraries and applications. - -This crate is `core` only. So it does not require `std` therefore it can be -used without an operating system for OS and Embedded Development. - -To use this crate include: - -``` -[dependencies] -constanttime = "0.0.1" -``` - -####Legal - -This project can be considered licensed under Apache2.0 Software License. -A full copy can of this license can found [here](https://www.apache.org/licenses/LICENSE-2.0). - -A large thank you goes to the Go-Lang standard library development team for -creating the `crypto/subtile/constant_time.go` library which was used for -reference. - -No Go-Lang source code exists within this project. -Nonethless the orginal Go-Lang reference source is [here](https://golang.org/src/crypto/subtle/constant_time.go), -and is it's license is [here](https://golang.org/LICENSE). For future -reference purporses. +There are seperate audit files for different platforms. See the readme for more indepth contents. diff --git a/audit_CURRENT/build_script_x64_msvc.sh b/audit_CURRENT/build_script_x64_msvc.sh new file mode 100644 index 0000000..05ca7d8 --- /dev/null +++ b/audit_CURRENT/build_script_x64_msvc.sh @@ -0,0 +1,8 @@ +#!/bin/sh +rustc \ + --emit obj \ + --crate-type lib \ + --codegen no-stack-check\ + --codegen debuginfo=0 \ + --codegen opt-level=3 \ + lib.rs diff --git a/audit_CURRENT/lib_expanded.rs b/audit_CURRENT/lib_expanded.rs new file mode 100644 index 0000000..006abdf --- /dev/null +++ b/audit_CURRENT/lib_expanded.rs @@ -0,0 +1,519 @@ +//Copyright 2016 William Cody Laeder +// +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//you may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distrubuted under the License is distrubuted on as "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +//!Consistent Time +//! +//!The goal of this crate is to offer constant time functions which most +//!cryptographic computing protocols require to prevent side channel +//!timing attacks. +//! +//!These algorithms are not implemented to be efficient. But to take the +//!same number of processor cycles if their outcome/path is true, or false. +//!The reference used for this crate is [Go-Lang's +//!crypto/subtile](https://golang.org/src/crypto/subtle/constant_time.go) +//!Which implements a handful of constant time algorithms. +//! +//!I took the liberity of generalizing them out to all unsigned sizes +//!supported by Rust-Lang. Everything inside of this crate is defined +//!as a macro. This makes writing the extremely repetive code for all +//!types a lot easier. +//! +//!There is internal unsafe code to handle converting `bool` to `u8` +//!and vice versa. The machine instructions generated for these +//!operations involve no branches or comparison operators, +//!see the notes in the source code. +//! +//!As of the most recent commit there has been an _extreme_ divergence +//!from the Go-Lang source. LLVM does MUCH heavier optimizations then +//!Go-ASM does and some _combat_ was necessary. As of +//! +//!`consistenttime = "0.2"` +//! +//!I am reasonably confident it provides the advertised guarantees. +#![no_std] +#[prelude_import] +use core::prelude::v1::*; +#[macro_use] +extern crate core as core; +use core::mem::transmute as trans; +const MAX_U8: u8 = ::core::u8::MAX; +const MAX_U16: u16 = ::core::u16::MAX; +const MAX_U32: u32 = ::core::u32::MAX; +const MAX_U64: u64 = ::core::u64::MAX; +const MAX_USIZE: usize = ::core::usize::MAX; +/* + * Rust booleans are effectively u8's with typing sugar. + * True = 0x01 + * False = 0x00 + * + * One can recover the true/false value via unsafe function + * + * fn to_val(b: bool) -> X { + * let val: u8 = unsafe{ ::core::mem::transmute(b) }; + * val as X + * } + * + * For the type u64 (and using the sugar [#inline(never)] + * this will compile down to: + * + * mov rax dil + * ret + * + * One can likely from that example determine how _other_ + * integer formats are dervived. + * + * The test below asserts this behavior. + * + * :.:.: + * + * When converting from ~some~ uint to a bool the reverse + * is sligtly true. Consider the equality operation + * + * let mut z: u16 = MAX ^ (x^y); + * z >> 8; + * z >> 4; + * z >> 2; + * z >> 1; + * let val = z as u8; + * unsafe{ ::core::mem::transmute(val) }; //returns bool + * + * The ASM generated for the last two operations + * + * let val = z as u8; + * unsafe{ ::core::mem::transmute(val)}; + * + * It is simply + * + * andl $1, %eax + * retq + * + * The typing is gone at compile time. + */ +/* + * The purpose of the below macro is two fold. + * 1. Define the function to do constant unsigned integer comparisons + * 2. Define a *fairly* comphensive test to validate that function. + * + */ +///Tests if two values are equal in constant time. +/// +///Completely avoids branching. +#[no_mangle] +#[inline(never)] +pub extern "C" fn ct_u8_eq(x: + /* + * Convert to a boolean + * This is 99% syntax sugar + * z will get moved eax about 5 instructions before this + * The only operation done here is + * + * andl $1, %eax + * + * Which just asserts the structure of a boolean + * remain 0x01 or 0x00. + */ + u8, y: u8) -> bool { + let mut z: u8 = MAX_U8 ^ (x ^ y); + z &= z.wrapping_shr(4); + z &= z.wrapping_shr(2); + z &= z.wrapping_shr(1); + let val = z as u8; + unsafe { trans(val) } +} +///Tests if two values are equal in constant time. +/// +///Completely avoids branching. +#[no_mangle] +#[inline(never)] +pub extern "C" fn ct_u16_eq(x: u16, y: u16) -> bool { + let mut z: u16 = MAX_U16 ^ (x ^ y); + z &= z.wrapping_shr(8); + z &= z.wrapping_shr(4); + z &= z.wrapping_shr(2); + z &= z.wrapping_shr(1); + let val = z as u8; + unsafe { trans(val) } +} +///Tests if two values are equal in constant time. +/// +///Completely avoids branching. +#[no_mangle] +#[inline(never)] +pub extern "C" fn ct_u32_eq(x: u32, y: u32) -> bool { + let mut z: u32 = MAX_U32 ^ (x ^ y); + z &= z.wrapping_shr(16); + z &= z.wrapping_shr(8); + z &= z.wrapping_shr(4); + z &= z.wrapping_shr(2); + z &= z.wrapping_shr(1); + let val = z as u8; + unsafe { trans(val) } +} +///Tests if two values are equal in constant time. +/// +///Completely avoids branching. +#[no_mangle] +#[inline(never)] +pub extern "C" fn ct_u64_eq(x: u64, y: u64) -> bool { + let mut z: u64 = MAX_U64 ^ (x ^ y); + z &= z.wrapping_shr(32); + z &= z.wrapping_shr(16); + z &= z.wrapping_shr(8); + z &= z.wrapping_shr(4); + z &= z.wrapping_shr(2); + z &= z.wrapping_shr(1); + let val = z as u8; + unsafe { trans(val) } +} +///Tests if two values are equal in constant time. +/// +///Completely avoids branching. +#[no_mangle] +#[inline(never)] +pub extern "C" fn ct_usize_eq(x: usize, y: usize) -> bool { + let mut z: usize = MAX_USIZE ^ (x ^ y); + z &= z.wrapping_shr(32); + z &= z.wrapping_shr(16); + z &= z.wrapping_shr(8); + z &= z.wrapping_shr(4); + z &= z.wrapping_shr(2); + z &= z.wrapping_shr(1); + let val = z as u8; + unsafe { trans(val) } +} +///Check the equality of slices. +/// +///This will transverse the entire slice reguardless of if a +///conflict is found early or not. This way an external hacker +///can not guess the contents of a buffer byte by byte and +///carefully measure the timing responses. +#[no_mangle] +pub extern "C" fn ct_u8_slice_eq(x: &[u8], y: &[u8]) -> bool { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { return false; } + let mut flag: u8 = 0; + for i in 0..x_len { flag |= x[i] ^ y[i]; } + ct_u8_eq(flag, 0) +} +///Check the equality of slices. +/// +///This will transverse the entire slice reguardless of if a +///conflict is found early or not. This way an external hacker +///can not guess the contents of a buffer byte by byte and +///carefully measure the timing responses. +#[no_mangle] +pub extern "C" fn ct_u16_slice_eq(x: &[u16], y: &[u16]) -> bool { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { return false; } + let mut flag: u16 = 0; + for i in 0..x_len { flag |= x[i] ^ y[i]; } + ct_u16_eq(flag, 0) +} +///Check the equality of slices. +/// +///This will transverse the entire slice reguardless of if a +///conflict is found early or not. This way an external hacker +///can not guess the contents of a buffer byte by byte and +///carefully measure the timing responses. +#[no_mangle] +pub extern "C" fn ct_u32_slice_eq(x: &[u32], y: &[u32]) -> bool { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { return false; } + let mut flag: u32 = 0; + for i in 0..x_len { flag |= x[i] ^ y[i]; } + ct_u32_eq(flag, 0) +} +///Check the equality of slices. +/// +///This will transverse the entire slice reguardless of if a +///conflict is found early or not. This way an external hacker +///can not guess the contents of a buffer byte by byte and +///carefully measure the timing responses. +#[no_mangle] +pub extern "C" fn ct_u64_slice_eq(x: &[u64], y: &[u64]) -> bool { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { return false; } + let mut flag: u64 = 0; + for i in 0..x_len { flag |= x[i] ^ y[i]; } + ct_u64_eq(flag, 0) +} +///Check the equality of slices. +/// +///This will transverse the entire slice reguardless of if a +///conflict is found early or not. This way an external hacker +///can not guess the contents of a buffer byte by byte and +///carefully measure the timing responses. +#[no_mangle] +pub extern "C" fn ct_usize_slice_eq(x: &[usize], y: &[usize]) -> bool { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { return false; } + let mut flag: usize = 0; + for i in 0..x_len { flag |= x[i] ^ y[i]; } + ct_usize_eq(flag, 0) +} +///Optional swapping. +/// +///Allow to set a varible optionally at the same speed without +///branching, or changing speed. +/// +///Returns X if flag == True. +/// +///Returns Y if flag == False. +/// +///At compile time this becomes a CMOV. This _is_ a brach. +///The branch misprediction cost is ~20cycles. And if this +///is incurred does not depend on the input, but the +///random state of our machine + quantum winds. +/// +///This should provide a consistent guarantee of speed. +#[no_mangle] +#[inline(never)] +pub extern "C" fn ct_select_u8(flag: bool, x: u8, y: u8) -> u8 { + let val: u8 = unsafe { trans(flag) }; + let flag = val as u8; + ((MAX_U8 ^ flag.wrapping_sub(1)) & x) | (flag.wrapping_sub(1) & y) +} +///Optional swapping. +/// +///Allow to set a varible optionally at the same speed without +///branching, or changing speed. +/// +///Returns X if flag == True. +/// +///Returns Y if flag == False. +/// +///At compile time this becomes a CMOV. This _is_ a brach. +///The branch misprediction cost is ~20cycles. And if this +///is incurred does not depend on the input, but the +///random state of our machine + quantum winds. +/// +///This should provide a consistent guarantee of speed. +#[no_mangle] +#[inline(never)] +pub extern "C" fn ct_select_u16(flag: bool, x: u16, y: u16) -> u16 { + let val: u8 = unsafe { trans(flag) }; + let flag = val as u16; + ((MAX_U16 ^ flag.wrapping_sub(1)) & x) | (flag.wrapping_sub(1) & y) +} +///Optional swapping. +/// +///Allow to set a varible optionally at the same speed without +///branching, or changing speed. +/// +///Returns X if flag == True. +/// +///Returns Y if flag == False. +/// +///At compile time this becomes a CMOV. This _is_ a brach. +///The branch misprediction cost is ~20cycles. And if this +///is incurred does not depend on the input, but the +///random state of our machine + quantum winds. +/// +///This should provide a consistent guarantee of speed. +#[no_mangle] +#[inline(never)] +pub extern "C" fn ct_select_u32(flag: bool, x: u32, y: u32) -> u32 { + let val: u8 = unsafe { trans(flag) }; + let flag = val as u32; + ((MAX_U32 ^ flag.wrapping_sub(1)) & x) | (flag.wrapping_sub(1) & y) +} +///Optional swapping. +/// +///Allow to set a varible optionally at the same speed without +///branching, or changing speed. +/// +///Returns X if flag == True. +/// +///Returns Y if flag == False. +/// +///At compile time this becomes a CMOV. This _is_ a brach. +///The branch misprediction cost is ~20cycles. And if this +///is incurred does not depend on the input, but the +///random state of our machine + quantum winds. +/// +///This should provide a consistent guarantee of speed. +#[no_mangle] +#[inline(never)] +pub extern "C" fn ct_select_u64(flag: bool, x: u64, y: u64) -> u64 { + let val: u8 = unsafe { trans(flag) }; + let flag = val as u64; + ((MAX_U64 ^ flag.wrapping_sub(1)) & x) | (flag.wrapping_sub(1) & y) +} +///Optional swapping. +/// +///Allow to set a varible optionally at the same speed without +///branching, or changing speed. +/// +///Returns X if flag == True. +/// +///Returns Y if flag == False. +/// +///At compile time this becomes a CMOV. This _is_ a brach. +///The branch misprediction cost is ~20cycles. And if this +///is incurred does not depend on the input, but the +///random state of our machine + quantum winds. +/// +///This should provide a consistent guarantee of speed. +#[no_mangle] +#[inline(never)] +pub extern "C" fn ct_select_usize(flag: bool, x: usize, y: usize) -> usize { + let val: u8 = unsafe { trans(flag) }; + let flag = val as usize; + ((MAX_USIZE ^ flag.wrapping_sub(1)) & x) | (flag.wrapping_sub(1) & y) +} +///Optional buffer copying +/// +///IF flag == True THEN X will be set to Y +/// +///If flag == False THEN X is unchanged +/// +///#Panic: +/// +///This function will panic if X and Y are not equal length. +#[no_mangle] +pub extern "C" fn ct_copy_u8(flag: bool, + x: + &mut [ + //trigger panic + //even on false evaluation + //value of flag is irrelevant + u8], y: &[u8]) { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { + { + static _MSG_FILE_LINE: (&'static str, &'static str, u32) = + ("Consistent Time: Attempted to copy between non-equal lens", + "lib.rs", 338u32); + ::core::panicking::panic(&_MSG_FILE_LINE) + }; + } + for i in 0..x_len { + let y_temp = y[i].clone(); + let x_temp = x[i].clone(); + x[i] = ct_select_u8(flag, y_temp, x_temp); + } +} +///Optional buffer copying +/// +///IF flag == True THEN X will be set to Y +/// +///If flag == False THEN X is unchanged +/// +///#Panic: +/// +///This function will panic if X and Y are not equal length. +#[no_mangle] +pub extern "C" fn ct_copy_u16(flag: bool, x: &mut [u16], y: &[u16]) { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { + { + static _MSG_FILE_LINE: (&'static str, &'static str, u32) = + ("Consistent Time: Attempted to copy between non-equal lens", + "lib.rs", 340u32); + ::core::panicking::panic(&_MSG_FILE_LINE) + }; + } + for i in 0..x_len { + let y_temp = y[i].clone(); + let x_temp = x[i].clone(); + x[i] = ct_select_u16(flag, y_temp, x_temp); + } +} +///Optional buffer copying +/// +///IF flag == True THEN X will be set to Y +/// +///If flag == False THEN X is unchanged +/// +///#Panic: +/// +///This function will panic if X and Y are not equal length. +#[no_mangle] +pub extern "C" fn ct_copy_u32(flag: bool, x: &mut [u32], y: &[u32]) { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { + { + static _MSG_FILE_LINE: (&'static str, &'static str, u32) = + ("Consistent Time: Attempted to copy between non-equal lens", + "lib.rs", 342u32); + ::core::panicking::panic(&_MSG_FILE_LINE) + }; + } + for i in 0..x_len { + let y_temp = y[i].clone(); + let x_temp = x[i].clone(); + x[i] = ct_select_u32(flag, y_temp, x_temp); + } +} +///Optional buffer copying +/// +///IF flag == True THEN X will be set to Y +/// +///If flag == False THEN X is unchanged +/// +///#Panic: +/// +///This function will panic if X and Y are not equal length. +#[no_mangle] +pub extern "C" fn ct_copy_u64(flag: bool, x: &mut [u64], y: &[u64]) { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { + { + static _MSG_FILE_LINE: (&'static str, &'static str, u32) = + ("Consistent Time: Attempted to copy between non-equal lens", + "lib.rs", 344u32); + ::core::panicking::panic(&_MSG_FILE_LINE) + }; + } + for i in 0..x_len { + let y_temp = y[i].clone(); + let x_temp = x[i].clone(); + x[i] = ct_select_u64(flag, y_temp, x_temp); + } +} +///Optional buffer copying +/// +///IF flag == True THEN X will be set to Y +/// +///If flag == False THEN X is unchanged +/// +///#Panic: +/// +///This function will panic if X and Y are not equal length. +#[no_mangle] +pub extern "C" fn ct_copy_usize(flag: bool, x: &mut [usize], y: &[usize]) { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { + { + static _MSG_FILE_LINE: (&'static str, &'static str, u32) = + ("Consistent Time: Attempted to copy between non-equal lens", + "lib.rs", 346u32); + ::core::panicking::panic(&_MSG_FILE_LINE) + }; + } + for i in 0..x_len { + let y_temp = y[i].clone(); + let x_temp = x[i].clone(); + x[i] = ct_select_usize(flag, y_temp, x_temp); + } +} diff --git a/audit_CURRENT/lib_x64_msvc.nasm b/audit_CURRENT/lib_x64_msvc.nasm new file mode 100644 index 0000000..199ffa5 --- /dev/null +++ b/audit_CURRENT/lib_x64_msvc.nasm @@ -0,0 +1,960 @@ +; Disassembly of file: lib.o +; Fri Dec 09 23:15:24 2016 +; Mode: 64 bits +; Syntax: YASM/NASM +; Instruction set: Pentium Pro, x64 + +default rel + +global ct_u8_eq: function +global ct_u16_eq: function +global ct_u32_eq: function +global ct_u64_eq: function +global ct_usize_eq: function +global ct_u8_slice_eq: function +global ct_u16_slice_eq: function +global ct_u32_slice_eq: function +global ct_u64_slice_eq: function +global ct_usize_slice_eq: function +global ct_select_u8: function +global ct_select_u16: function +global ct_select_u32: function +global ct_select_u64: function +global ct_select_usize: function +global ct_copy_u8: function +global ct_copy_u16: function +global ct_copy_u32: function +global ct_copy_u64: function +global ct_copy_usize: function + +extern _ZN4core9panicking5panic17h53676c30b3bd95ebE ; near +extern _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE ; near + + +SECTION .text align=4 execute ; section number 1, code + + +SECTION .data align=4 noexecute ; section number 2, data + + +SECTION .bss align=4 noexecute ; section number 3, bss + + +SECTION .text align=16 execute ; section number 4, code +; Communal section not supported by YASM + +ct_u8_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not cl ; 0002 _ F6. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr al, 4 ; 0006 _ C0. E8, 04 + and al, cl ; 0009 _ 20. C8 + mov ecx, eax ; 000B _ 89. C1 + shr cl, 2 ; 000D _ C0. E9, 02 + and cl, al ; 0010 _ 20. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr al, 1 ; 0014 _ D0. E8 + and al, cl ; 0016 _ 20. C8 + ret ; 0018 _ C3 +; ct_u8_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 5, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 6, code +; Communal section not supported by YASM + +ct_u16_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + movzx eax, ch ; 0004 _ 0F B6. C5 + and eax, ecx ; 0007 _ 21. C8 + mov ecx, eax ; 0009 _ 89. C1 + and ecx, 0F0H ; 000B _ 81. E1, 000000F0 + shr ecx, 4 ; 0011 _ C1. E9, 04 + and ecx, eax ; 0014 _ 21. C1 + mov edx, ecx ; 0016 _ 89. CA + and edx, 0CH ; 0018 _ 83. E2, 0C + shr edx, 2 ; 001B _ C1. EA, 02 + and edx, ecx ; 001E _ 21. CA + mov eax, edx ; 0020 _ 89. D0 + and eax, 0EH ; 0022 _ 83. E0, 0E + shr eax, 1 ; 0025 _ D1. E8 + and eax, edx ; 0027 _ 21. D0 + and eax, 01H ; 0029 _ 83. E0, 01 + ret ; 002C _ C3 +; ct_u16_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 7, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 8, code +; Communal section not supported by YASM + +ct_u32_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr eax, 16 ; 0006 _ C1. E8, 10 + and eax, ecx ; 0009 _ 21. C8 + mov ecx, eax ; 000B _ 89. C1 + shr ecx, 8 ; 000D _ C1. E9, 08 + and ecx, eax ; 0010 _ 21. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr eax, 4 ; 0014 _ C1. E8, 04 + and eax, ecx ; 0017 _ 21. C8 + mov ecx, eax ; 0019 _ 89. C1 + shr ecx, 2 ; 001B _ C1. E9, 02 + and ecx, eax ; 001E _ 21. C1 + mov eax, ecx ; 0020 _ 89. C8 + shr eax, 1 ; 0022 _ D1. E8 + and eax, ecx ; 0024 _ 21. C8 + and eax, 01H ; 0026 _ 83. E0, 01 + ret ; 0029 _ C3 +; ct_u32_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 9, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 10, code +; Communal section not supported by YASM + +ct_u64_eq:; Function begin + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +; ct_u64_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 11, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 12, code +; Communal section not supported by YASM + +ct_usize_eq:; Function begin + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +; ct_usize_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 13, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 14, code +; Communal section not supported by YASM + +ct_u8_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_002 ; 000A _ 75, 30 + test r10, r10 ; 000C _ 4D: 85. D2 + jz ?_003 ; 000F _ 74, 2F + xor r9d, r9d ; 0011 _ 45: 31. C9 + xor edx, edx ; 0014 _ 31. D2 +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_001: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_006 ; 0023 _ 73, 2D + mov al, byte [r8+rdx] ; 0025 _ 41: 8A. 04 10 + xor al, byte [rcx+rdx] ; 0029 _ 32. 04 11 + inc rdx ; 002C _ 48: FF. C2 + or al, r9b ; 002F _ 44: 08. C8 + cmp rdx, r10 ; 0032 _ 4C: 39. D2 + mov r9b, al ; 0035 _ 41: 88. C1 + jc ?_001 ; 0038 _ 72, E6 + jmp ?_004 ; 003A _ EB, 06 + +?_002: xor eax, eax ; 003C _ 31. C0 + jmp ?_005 ; 003E _ EB, 0C + +?_003: xor eax, eax ; 0040 _ 31. C0 +?_004: movzx ecx, al ; 0042 _ 0F B6. C8 + xor edx, edx ; 0045 _ 31. D2 + call ct_u8_eq ; 0047 _ E8, 00000000(rel) +?_005: nop ; 004C _ 90 + add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 +; ct_u8_slice_eq End of function + +?_006: ; Local function + lea rcx, [rel panic_bounds_check_loc2735] ; 0052 _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0059 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 005C _ E8, 00000000(rel) + ud2 ; 0061 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 15, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 16, code +; Communal section not supported by YASM + +ct_u16_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_009 ; 000A _ 75, 3A + xor r9d, r9d ; 000C _ 45: 31. C9 + test r10, r10 ; 000F _ 4D: 85. D2 + jz ?_008 ; 0012 _ 74, 25 + xor edx, edx ; 0014 _ 31. D2 +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_007: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_011 ; 0023 _ 73, 28 + mov ax, word [r8+rdx*2] ; 0025 _ 66 41: 8B. 04 50 + xor ax, word [rcx+rdx*2] ; 002A _ 66: 33. 04 51 + inc rdx ; 002E _ 48: FF. C2 + or r9d, eax ; 0031 _ 41: 09. C1 + cmp rdx, r10 ; 0034 _ 4C: 39. D2 + jc ?_007 ; 0037 _ 72, E7 +?_008: movzx ecx, r9w ; 0039 _ 41: 0F B7. C9 + xor edx, edx ; 003D _ 31. D2 + call ct_u16_eq ; 003F _ E8, 00000000(rel) + jmp ?_010 ; 0044 _ EB, 02 + +?_009: xor eax, eax ; 0046 _ 31. C0 +?_010: add rsp, 40 ; 0048 _ 48: 83. C4, 28 + ret ; 004C _ C3 +; ct_u16_slice_eq End of function + +?_011: ; Local function + lea rcx, [rel panic_bounds_check_loc2735] ; 004D _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0054 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0057 _ E8, 00000000(rel) + ud2 ; 005C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 17, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 18, code +; Communal section not supported by YASM + +ct_u32_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + xor eax, eax ; 0007 _ 31. C0 + cmp r10, r9 ; 0009 _ 4D: 39. CA + jnz ?_014 ; 000C _ 75, 35 + test r10, r10 ; 000E _ 4D: 85. D2 + jz ?_013 ; 0011 _ 74, 27 + xor r9d, r9d ; 0013 _ 45: 31. C9 + xor edx, edx ; 0016 _ 31. D2 +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_012: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_015 ; 0023 _ 73, 24 + mov eax, dword [r8+rdx*4] ; 0025 _ 41: 8B. 04 90 + xor eax, dword [rcx+rdx*4] ; 0029 _ 33. 04 91 + inc rdx ; 002C _ 48: FF. C2 + or eax, r9d ; 002F _ 44: 09. C8 + cmp rdx, r10 ; 0032 _ 4C: 39. D2 + mov r9d, eax ; 0035 _ 41: 89. C1 + jc ?_012 ; 0038 _ 72, E6 +?_013: xor edx, edx ; 003A _ 31. D2 + mov ecx, eax ; 003C _ 89. C1 + call ct_u32_eq ; 003E _ E8, 00000000(rel) +?_014: nop ; 0043 _ 90 + add rsp, 40 ; 0044 _ 48: 83. C4, 28 + ret ; 0048 _ C3 +; ct_u32_slice_eq End of function + +?_015: ; Local function + lea rcx, [rel panic_bounds_check_loc2735] ; 0049 _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0050 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0053 _ E8, 00000000(rel) + ud2 ; 0058 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 19, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 20, code +; Communal section not supported by YASM + +ct_u64_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_018 ; 000A _ 75, 3B + xor eax, eax ; 000C _ 31. C0 + test r10, r10 ; 000E _ 4D: 85. D2 + jz ?_017 ; 0011 _ 74, 28 + xor r9d, r9d ; 0013 _ 45: 31. C9 + xor edx, edx ; 0016 _ 31. D2 +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_016: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_020 ; 0023 _ 73, 29 + mov rax, qword [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or rax, r9 ; 0030 _ 4C: 09. C8 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + mov r9, rax ; 0036 _ 49: 89. C1 + jc ?_016 ; 0039 _ 72, E5 +?_017: xor edx, edx ; 003B _ 31. D2 + mov rcx, rax ; 003D _ 48: 89. C1 + call ct_u64_eq ; 0040 _ E8, 00000000(rel) + jmp ?_019 ; 0045 _ EB, 02 + +?_018: xor eax, eax ; 0047 _ 31. C0 +?_019: add rsp, 40 ; 0049 _ 48: 83. C4, 28 + ret ; 004D _ C3 +; ct_u64_slice_eq End of function + +?_020: ; Local function + lea rcx, [rel panic_bounds_check_loc2735] ; 004E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0055 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0058 _ E8, 00000000(rel) + ud2 ; 005D _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 21, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 22, code +; Communal section not supported by YASM + +ct_usize_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_023 ; 000A _ 75, 3B + xor eax, eax ; 000C _ 31. C0 + test r10, r10 ; 000E _ 4D: 85. D2 + jz ?_022 ; 0011 _ 74, 28 + xor r9d, r9d ; 0013 _ 45: 31. C9 + xor edx, edx ; 0016 _ 31. D2 +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_021: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_025 ; 0023 _ 73, 29 + mov rax, qword [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or rax, r9 ; 0030 _ 4C: 09. C8 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + mov r9, rax ; 0036 _ 49: 89. C1 + jc ?_021 ; 0039 _ 72, E5 +?_022: xor edx, edx ; 003B _ 31. D2 + mov rcx, rax ; 003D _ 48: 89. C1 + call ct_usize_eq ; 0040 _ E8, 00000000(rel) + jmp ?_024 ; 0045 _ EB, 02 + +?_023: xor eax, eax ; 0047 _ 31. C0 +?_024: add rsp, 40 ; 0049 _ 48: 83. C4, 28 + ret ; 004D _ C3 +; ct_usize_slice_eq End of function + +?_025: ; Local function + lea rcx, [rel panic_bounds_check_loc2735] ; 004E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0055 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0058 _ E8, 00000000(rel) + ud2 ; 005D _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 23, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 24, code +; Communal section not supported by YASM + +ct_select_u8:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +; ct_select_u8 End of function + + +SECTION .xdata align=4 noexecute ; section number 25, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 26, code +; Communal section not supported by YASM + +ct_select_u16:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmovne r8w, dx ; 0002 _ 66 44: 0F 45. C2 + mov eax, r8d ; 0007 _ 44: 89. C0 + ret ; 000A _ C3 +; ct_select_u16 End of function + + +SECTION .xdata align=4 noexecute ; section number 27, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 28, code +; Communal section not supported by YASM + +ct_select_u32:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +; ct_select_u32 End of function + + +SECTION .xdata align=4 noexecute ; section number 29, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 30, code +; Communal section not supported by YASM + +ct_select_u64:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +; ct_select_u64 End of function + + +SECTION .xdata align=4 noexecute ; section number 31, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 32, code +; Communal section not supported by YASM + +ct_select_usize:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +; ct_select_usize End of function + + +SECTION .xdata align=4 noexecute ; section number 33, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 34, code +; Communal section not supported by YASM + +ct_copy_u8:; Function begin + push r15 ; 0000 _ 41: 57 + push r14 ; 0002 _ 41: 56 + push rsi ; 0004 _ 56 + push rdi ; 0005 _ 57 + push rbp ; 0006 _ 55 + push rbx ; 0007 _ 53 + sub rsp, 40 ; 0008 _ 48: 83. EC, 28 + mov r14, r9 ; 000C _ 4D: 89. CE + mov rsi, r8 ; 000F _ 4C: 89. C6 + mov rbx, rdx ; 0012 _ 48: 89. D3 + cmp rsi, qword [rsp+80H] ; 0015 _ 48: 3B. B4 24, 00000080 + jnz ?_029 ; 001D _ 75, 58 + test rsi, rsi ; 001F _ 48: 85. F6 + jz ?_027 ; 0022 _ 74, 32 + xor edi, edi ; 0024 _ 31. FF + movzx r15d, cl ; 0026 _ 44: 0F B6. F9 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_026: cmp rdi, rsi ; 0030 _ 48: 39. F7 + jnc ?_028 ; 0033 _ 73, 2E + lea rbp, [rdi+1H] ; 0035 _ 48: 8D. 6F, 01 + movzx r8d, byte [rbx+rdi] ; 0039 _ 44: 0F B6. 04 3B + movzx edx, byte [r14+rdi] ; 003E _ 41: 0F B6. 14 3E + mov ecx, r15d ; 0043 _ 44: 89. F9 + call ct_select_u8 ; 0046 _ E8, 00000000(rel) + mov byte [rbx+rdi], al ; 004B _ 88. 04 3B + cmp rbp, rsi ; 004E _ 48: 39. F5 + mov rdi, rbp ; 0051 _ 48: 89. EF + jc ?_026 ; 0054 _ 72, DA +?_027: add rsp, 40 ; 0056 _ 48: 83. C4, 28 + pop rbx ; 005A _ 5B + pop rbp ; 005B _ 5D + pop rdi ; 005C _ 5F + pop rsi ; 005D _ 5E + pop r14 ; 005E _ 41: 5E + pop r15 ; 0060 _ 41: 5F + ret ; 0062 _ C3 + +?_028: lea rcx, [rel panic_bounds_check_loc2737] ; 0063 _ 48: 8D. 0D, 00000000(rel) + mov rdx, rdi ; 006A _ 48: 89. FA + mov r8, rsi ; 006D _ 49: 89. F0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0070 _ E8, 00000000(rel) + ud2 ; 0075 _ 0F 0B +; ct_copy_u8 End of function + +?_029: ; Local function + lea rcx, [rel _ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE]; 0077 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 007E _ E8, 00000000(rel) + ud2 ; 0083 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 35, const +; Communal section not supported by YASM + + db 01H, 0CH, 07H, 00H, 0CH, 42H, 08H, 30H ; 0000 _ .....B.0 + db 07H, 50H, 06H, 70H, 05H, 60H, 04H, 0E0H ; 0008 _ .P.p.`.. + db 02H, 0F0H, 00H, 00H ; 0010 _ .... + + +SECTION .text align=16 execute ; section number 36, code +; Communal section not supported by YASM + +ct_copy_u16:; Function begin + push r15 ; 0000 _ 41: 57 + push r14 ; 0002 _ 41: 56 + push rsi ; 0004 _ 56 + push rdi ; 0005 _ 57 + push rbp ; 0006 _ 55 + push rbx ; 0007 _ 53 + sub rsp, 40 ; 0008 _ 48: 83. EC, 28 + mov r14, r9 ; 000C _ 4D: 89. CE + mov rsi, r8 ; 000F _ 4C: 89. C6 + mov rbx, rdx ; 0012 _ 48: 89. D3 + cmp rsi, qword [rsp+80H] ; 0015 _ 48: 3B. B4 24, 00000080 + jnz ?_033 ; 001D _ 75, 59 + test rsi, rsi ; 001F _ 48: 85. F6 + jz ?_031 ; 0022 _ 74, 33 + xor edi, edi ; 0024 _ 31. FF + movzx r15d, cl ; 0026 _ 44: 0F B6. F9 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_030: cmp rdi, rsi ; 0030 _ 48: 39. F7 + jnc ?_032 ; 0033 _ 73, 2F + lea rbp, [rdi+1H] ; 0035 _ 48: 8D. 6F, 01 + movzx r8d, word [rbx+rdi*2] ; 0039 _ 44: 0F B7. 04 7B + movzx edx, word [r14+rdi*2] ; 003E _ 41: 0F B7. 14 7E + mov ecx, r15d ; 0043 _ 44: 89. F9 + call ct_select_u16 ; 0046 _ E8, 00000000(rel) + mov word [rbx+rdi*2], ax ; 004B _ 66: 89. 04 7B + cmp rbp, rsi ; 004F _ 48: 39. F5 + mov rdi, rbp ; 0052 _ 48: 89. EF + jc ?_030 ; 0055 _ 72, D9 +?_031: add rsp, 40 ; 0057 _ 48: 83. C4, 28 + pop rbx ; 005B _ 5B + pop rbp ; 005C _ 5D + pop rdi ; 005D _ 5F + pop rsi ; 005E _ 5E + pop r14 ; 005F _ 41: 5E + pop r15 ; 0061 _ 41: 5F + ret ; 0063 _ C3 + +?_032: lea rcx, [rel panic_bounds_check_loc2737] ; 0064 _ 48: 8D. 0D, 00000000(rel) + mov rdx, rdi ; 006B _ 48: 89. FA + mov r8, rsi ; 006E _ 49: 89. F0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0071 _ E8, 00000000(rel) + ud2 ; 0076 _ 0F 0B +; ct_copy_u16 End of function + +?_033: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E]; 0078 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 007F _ E8, 00000000(rel) + ud2 ; 0084 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 37, const +; Communal section not supported by YASM + + db 01H, 0CH, 07H, 00H, 0CH, 42H, 08H, 30H ; 0000 _ .....B.0 + db 07H, 50H, 06H, 70H, 05H, 60H, 04H, 0E0H ; 0008 _ .P.p.`.. + db 02H, 0F0H, 00H, 00H ; 0010 _ .... + + +SECTION .text align=16 execute ; section number 38, code +; Communal section not supported by YASM + +ct_copy_u32:; Function begin + push r15 ; 0000 _ 41: 57 + push r14 ; 0002 _ 41: 56 + push rsi ; 0004 _ 56 + push rdi ; 0005 _ 57 + push rbp ; 0006 _ 55 + push rbx ; 0007 _ 53 + sub rsp, 40 ; 0008 _ 48: 83. EC, 28 + mov r14, r9 ; 000C _ 4D: 89. CE + mov rsi, r8 ; 000F _ 4C: 89. C6 + mov rbx, rdx ; 0012 _ 48: 89. D3 + cmp rsi, qword [rsp+80H] ; 0015 _ 48: 3B. B4 24, 00000080 + jnz ?_037 ; 001D _ 75, 56 + test rsi, rsi ; 001F _ 48: 85. F6 + jz ?_035 ; 0022 _ 74, 30 + xor edi, edi ; 0024 _ 31. FF + movzx r15d, cl ; 0026 _ 44: 0F B6. F9 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_034: cmp rdi, rsi ; 0030 _ 48: 39. F7 + jnc ?_036 ; 0033 _ 73, 2C + lea rbp, [rdi+1H] ; 0035 _ 48: 8D. 6F, 01 + mov edx, dword [r14+rdi*4] ; 0039 _ 41: 8B. 14 BE + mov r8d, dword [rbx+rdi*4] ; 003D _ 44: 8B. 04 BB + mov ecx, r15d ; 0041 _ 44: 89. F9 + call ct_select_u32 ; 0044 _ E8, 00000000(rel) + mov dword [rbx+rdi*4], eax ; 0049 _ 89. 04 BB + cmp rbp, rsi ; 004C _ 48: 39. F5 + mov rdi, rbp ; 004F _ 48: 89. EF + jc ?_034 ; 0052 _ 72, DC +?_035: add rsp, 40 ; 0054 _ 48: 83. C4, 28 + pop rbx ; 0058 _ 5B + pop rbp ; 0059 _ 5D + pop rdi ; 005A _ 5F + pop rsi ; 005B _ 5E + pop r14 ; 005C _ 41: 5E + pop r15 ; 005E _ 41: 5F + ret ; 0060 _ C3 + +?_036: lea rcx, [rel panic_bounds_check_loc2737] ; 0061 _ 48: 8D. 0D, 00000000(rel) + mov rdx, rdi ; 0068 _ 48: 89. FA + mov r8, rsi ; 006B _ 49: 89. F0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 006E _ E8, 00000000(rel) + ud2 ; 0073 _ 0F 0B +; ct_copy_u32 End of function + +?_037: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E]; 0075 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 007C _ E8, 00000000(rel) + ud2 ; 0081 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 39, const +; Communal section not supported by YASM + + db 01H, 0CH, 07H, 00H, 0CH, 42H, 08H, 30H ; 0000 _ .....B.0 + db 07H, 50H, 06H, 70H, 05H, 60H, 04H, 0E0H ; 0008 _ .P.p.`.. + db 02H, 0F0H, 00H, 00H ; 0010 _ .... + + +SECTION .text align=16 execute ; section number 40, code +; Communal section not supported by YASM + +ct_copy_u64:; Function begin + push r15 ; 0000 _ 41: 57 + push r14 ; 0002 _ 41: 56 + push rsi ; 0004 _ 56 + push rdi ; 0005 _ 57 + push rbp ; 0006 _ 55 + push rbx ; 0007 _ 53 + sub rsp, 40 ; 0008 _ 48: 83. EC, 28 + mov r14, r9 ; 000C _ 4D: 89. CE + mov rsi, r8 ; 000F _ 4C: 89. C6 + mov rbx, rdx ; 0012 _ 48: 89. D3 + cmp rsi, qword [rsp+80H] ; 0015 _ 48: 3B. B4 24, 00000080 + jnz ?_041 ; 001D _ 75, 57 + test rsi, rsi ; 001F _ 48: 85. F6 + jz ?_039 ; 0022 _ 74, 31 + xor edi, edi ; 0024 _ 31. FF + movzx r15d, cl ; 0026 _ 44: 0F B6. F9 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_038: cmp rdi, rsi ; 0030 _ 48: 39. F7 + jnc ?_040 ; 0033 _ 73, 2D + lea rbp, [rdi+1H] ; 0035 _ 48: 8D. 6F, 01 + mov rdx, qword [r14+rdi*8] ; 0039 _ 49: 8B. 14 FE + mov r8, qword [rbx+rdi*8] ; 003D _ 4C: 8B. 04 FB + mov ecx, r15d ; 0041 _ 44: 89. F9 + call ct_select_u64 ; 0044 _ E8, 00000000(rel) + mov qword [rbx+rdi*8], rax ; 0049 _ 48: 89. 04 FB + cmp rbp, rsi ; 004D _ 48: 39. F5 + mov rdi, rbp ; 0050 _ 48: 89. EF + jc ?_038 ; 0053 _ 72, DB +?_039: add rsp, 40 ; 0055 _ 48: 83. C4, 28 + pop rbx ; 0059 _ 5B + pop rbp ; 005A _ 5D + pop rdi ; 005B _ 5F + pop rsi ; 005C _ 5E + pop r14 ; 005D _ 41: 5E + pop r15 ; 005F _ 41: 5F + ret ; 0061 _ C3 + +?_040: lea rcx, [rel panic_bounds_check_loc2737] ; 0062 _ 48: 8D. 0D, 00000000(rel) + mov rdx, rdi ; 0069 _ 48: 89. FA + mov r8, rsi ; 006C _ 49: 89. F0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 006F _ E8, 00000000(rel) + ud2 ; 0074 _ 0F 0B +; ct_copy_u64 End of function + +?_041: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E]; 0076 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 007D _ E8, 00000000(rel) + ud2 ; 0082 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 41, const +; Communal section not supported by YASM + + db 01H, 0CH, 07H, 00H, 0CH, 42H, 08H, 30H ; 0000 _ .....B.0 + db 07H, 50H, 06H, 70H, 05H, 60H, 04H, 0E0H ; 0008 _ .P.p.`.. + db 02H, 0F0H, 00H, 00H ; 0010 _ .... + + +SECTION .text align=16 execute ; section number 42, code +; Communal section not supported by YASM + +ct_copy_usize:; Function begin + push r15 ; 0000 _ 41: 57 + push r14 ; 0002 _ 41: 56 + push rsi ; 0004 _ 56 + push rdi ; 0005 _ 57 + push rbp ; 0006 _ 55 + push rbx ; 0007 _ 53 + sub rsp, 40 ; 0008 _ 48: 83. EC, 28 + mov r14, r9 ; 000C _ 4D: 89. CE + mov rsi, r8 ; 000F _ 4C: 89. C6 + mov rbx, rdx ; 0012 _ 48: 89. D3 + cmp rsi, qword [rsp+80H] ; 0015 _ 48: 3B. B4 24, 00000080 + jnz ?_045 ; 001D _ 75, 57 + test rsi, rsi ; 001F _ 48: 85. F6 + jz ?_043 ; 0022 _ 74, 31 + xor edi, edi ; 0024 _ 31. FF + movzx r15d, cl ; 0026 _ 44: 0F B6. F9 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_042: cmp rdi, rsi ; 0030 _ 48: 39. F7 + jnc ?_044 ; 0033 _ 73, 2D + lea rbp, [rdi+1H] ; 0035 _ 48: 8D. 6F, 01 + mov rdx, qword [r14+rdi*8] ; 0039 _ 49: 8B. 14 FE + mov r8, qword [rbx+rdi*8] ; 003D _ 4C: 8B. 04 FB + mov ecx, r15d ; 0041 _ 44: 89. F9 + call ct_select_usize ; 0044 _ E8, 00000000(rel) + mov qword [rbx+rdi*8], rax ; 0049 _ 48: 89. 04 FB + cmp rbp, rsi ; 004D _ 48: 39. F5 + mov rdi, rbp ; 0050 _ 48: 89. EF + jc ?_042 ; 0053 _ 72, DB +?_043: add rsp, 40 ; 0055 _ 48: 83. C4, 28 + pop rbx ; 0059 _ 5B + pop rbp ; 005A _ 5D + pop rdi ; 005B _ 5F + pop rsi ; 005C _ 5E + pop r14 ; 005D _ 41: 5E + pop r15 ; 005F _ 41: 5F + ret ; 0061 _ C3 + +?_044: lea rcx, [rel panic_bounds_check_loc2737] ; 0062 _ 48: 8D. 0D, 00000000(rel) + mov rdx, rdi ; 0069 _ 48: 89. FA + mov r8, rsi ; 006C _ 49: 89. F0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 006F _ E8, 00000000(rel) + ud2 ; 0074 _ 0F 0B +; ct_copy_usize End of function + +?_045: ; Local function + lea rcx, [rel _ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE]; 0076 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 007D _ E8, 00000000(rel) + ud2 ; 0082 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 43, const +; Communal section not supported by YASM + + db 01H, 0CH, 07H, 00H, 0CH, 42H, 08H, 30H ; 0000 _ .....B.0 + db 07H, 50H, 06H, 70H, 05H, 60H, 04H, 0E0H ; 0008 _ .P.p.`.. + db 02H, 0F0H, 00H, 00H ; 0010 _ .... + + +SECTION .rdata align=1 noexecute ; section number 44, const +; Communal section not supported by YASM + +str2734: ; byte + db 6CH, 69H, 62H, 2EH, 72H, 73H ; 0000 _ lib.rs + + +SECTION .rdata align=8 noexecute ; section number 45, const +; Communal section not supported by YASM + +panic_bounds_check_loc2735: ; byte + dq str2734 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 00000000000000CFH ; 0010 _ 00000000000000CF + + +SECTION .rdata align=8 noexecute ; section number 46, const +; Communal section not supported by YASM + +panic_bounds_check_loc2737: ; byte + dq str2734 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 0000000000000136H ; 0010 _ 0000000000000136 + + +SECTION .rdata align=16 noexecute ; section number 47, const +; Communal section not supported by YASM + +str2740: ; byte + db 43H, 6FH, 6EH, 73H, 69H, 73H, 74H, 65H ; 0000 _ Consiste + db 6EH, 74H, 20H, 54H, 69H, 6DH, 65H, 3AH ; 0008 _ nt Time: + db 20H, 41H, 74H, 74H, 65H, 6DH, 70H, 74H ; 0010 _ Attempt + db 65H, 64H, 20H, 74H, 6FH, 20H, 63H, 6FH ; 0018 _ ed to co + db 70H, 79H, 20H, 62H, 65H, 74H, 77H, 65H ; 0020 _ py betwe + db 65H, 6EH, 20H, 6EH, 6FH, 6EH, 2DH, 65H ; 0028 _ en non-e + db 71H, 75H, 61H, 6CH, 20H, 6CH, 65H, 6EH ; 0030 _ qual len + db 73H ; 0038 _ s + + +SECTION .rdata align=8 noexecute ; section number 48, const +; Communal section not supported by YASM + +_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE: ; byte + dq str2740 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2734 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000152H ; 0020 _ 0000000000000152 + + +SECTION .rdata align=8 noexecute ; section number 49, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E: ; byte + dq str2740 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2734 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000154H ; 0020 _ 0000000000000154 + + +SECTION .rdata align=8 noexecute ; section number 50, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E: ; byte + dq str2740 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2734 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000156H ; 0020 _ 0000000000000156 + + +SECTION .rdata align=8 noexecute ; section number 51, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E: ; byte + dq str2740 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2734 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000158H ; 0020 _ 0000000000000158 + + +SECTION .rdata align=8 noexecute ; section number 52, const +; Communal section not supported by YASM + +_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE: ; byte + dq str2740 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2734 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000015AH ; 0020 _ 000000000000015A + + diff --git a/audit_CURRENT/readme.txt b/audit_CURRENT/readme.txt new file mode 100644 index 0000000..c19f3c6 --- /dev/null +++ b/audit_CURRENT/readme.txt @@ -0,0 +1,35 @@ +Auditing + +I don't know if this useful, and I don't 100% know if this is what anyone +needs. + + +Build Notes: + +Compiler: rustc 1.13.0 (2c6933acc 2016-11-07) x64 MSVC + https://www.rust-lang.org/en-US/downloads.html +Oject Dumper: Agner Fog objconv + http://www.agner.org/optimize/#objconv + + +NOTE: This commit was modified to use the preable #[no_mangle] which makes +the object dumps easier to read + +NOTE: The functions had extern "C" added to their definatinos so their +ABI will follow normal C ABI. + +NOTE: A build file is located in the src/ file. + + +Contents: + +- Object Dumps + all objconv.exe formats + +- build script + I use git-for-windows which is a MINGW64 knock off bourne shell + which integrates OKAY with windows. + +- lib_expanded.rs + All macro's removed, this is the file POST macro expansion + diff --git a/audit_x64_msvc_LEGACY/build_script_x64_msvc.sh b/audit_x64_msvc_LEGACY/build_script_x64_msvc.sh new file mode 100644 index 0000000..05ca7d8 --- /dev/null +++ b/audit_x64_msvc_LEGACY/build_script_x64_msvc.sh @@ -0,0 +1,8 @@ +#!/bin/sh +rustc \ + --emit obj \ + --crate-type lib \ + --codegen no-stack-check\ + --codegen debuginfo=0 \ + --codegen opt-level=3 \ + lib.rs diff --git a/audit_x64_msvc_LEGACY/lib_expanded.rs b/audit_x64_msvc_LEGACY/lib_expanded.rs new file mode 100644 index 0000000..6da0e43 --- /dev/null +++ b/audit_x64_msvc_LEGACY/lib_expanded.rs @@ -0,0 +1,468 @@ +//Copyright 2016 William Cody Laeder +// +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//you may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distrubuted under the License is distrubuted on as "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +//!Consistent Time +//! +//!The goal of this crate is to offer constant time functions which most +//!cryptographic computing protocols require to prevent side channeling +//!timing attacks. +//! +//!These algorithms are not implemented to be efficient. But to take the +//!same number of processor cycles if their outcome is true, or false. +//!The reference used for this crate is [Go-Lang's +//!crypto/subtile](https://golang.org/src/crypto/subtle/constant_time.go) +//!Which implements a handful of constant time algorithms. +//! +//!I took the liberity of generalizing them out to all unsigned sizes +//!supported by Rust-Lang. Everything inside of this crate is defined +//!as a macro. This makes writing the extremely repetive code for all +//!types a lot easier. +//! +//!There is internal unsafe code to handle converting `bool` to `u8` +//!and vice versa. The machine instructions generated for these +//!operations involve no branches or comparison operators, +//!see the notes in the source code. +#![no_std] +#[prelude_import] +use core::prelude::v1::*; +#[macro_use] +extern crate core as core; +use core::mem::transmute as trans; +const MAX_U8: u8 = ::core::u8::MAX; +const MAX_U16: u16 = ::core::u16::MAX; +const MAX_U32: u32 = ::core::u32::MAX; +const MAX_U64: u64 = ::core::u64::MAX; +const MAX_USIZE: usize = ::core::usize::MAX; +/* + * Rust booleans are effectively u8's with typing sugar. + * True = 0x01 + * False = 0x00 + * + * One can recover the true/false value via unsafe function + * + * fn to_val(b: bool) -> X { + * let val: u8 = unsafe{ ::core::mem::transmute(b) }; + * val as X + * } + * + * For the type u64 (and using the sugar [#inline(never)] + * this will compile down to: + * + * mov rax dil + * ret + * + * One can likely from that example determine how _other_ + * integer formats are dervived. + * + * The test below asserts this behavior. + * + * :.:.: + * + * When converting from ~some~ uint to a bool the reverse + * is sligtly true. Consider the equality operation + * + * let mut z: u16 = MAX ^ (x^y); + * z >> 8; + * z >> 4; + * z >> 2; + * z >> 1; + * let val = z as u8; + * unsafe{ ::core::mem::transmute(val) }; //returns bool + * + * The ASM generated for the last two operations + * + * let val = z as u8; + * unsafe{ ::core::mem::transmute(val)}; + * + * It is simply + * + * andl $1, %eax + * retq + * + * The typing is gone at compile time. + */ +/* + * The purpose of the below macro is two fold. + * 1. Define the function to do constant unsigned integer comparisons + * 2. Define a *fairly* comphensive test to validate that function. + * + */ +///Tests if two values are equal in constant time. +/// +///XORs, Shift Rights, AND are all that are used. There is +///no branching. +#[no_mangle] +pub extern "C" fn ct_u8_eq(x: + /* + * Convert to a boolean + * This is 99% syntax sugar + * z will get moved eax about 5 instructions before this + * The only operation done here is + * + * andl $1, %eax + * + * Which just asserts the structure of a boolean + * remain 0x01 or 0x00. + */ + u8, y: u8) -> bool { + let mut z: u8 = MAX_U8 ^ (x ^ y); + z &= z.wrapping_shr(4); + z &= z.wrapping_shr(2); + z &= z.wrapping_shr(1); + let val = z as u8; + unsafe { trans(val) } +} +///Tests if two values are equal in constant time. +/// +///XORs, Shift Rights, AND are all that are used. There is +///no branching. +#[no_mangle] +pub extern "C" fn ct_u16_eq(x: u16, y: u16) -> bool { + let mut z: u16 = MAX_U16 ^ (x ^ y); + z &= z.wrapping_shr(8); + z &= z.wrapping_shr(4); + z &= z.wrapping_shr(2); + z &= z.wrapping_shr(1); + let val = z as u8; + unsafe { trans(val) } +} +///Tests if two values are equal in constant time. +/// +///XORs, Shift Rights, AND are all that are used. There is +///no branching. +#[no_mangle] +pub extern "C" fn ct_u32_eq(x: u32, y: u32) -> bool { + let mut z: u32 = MAX_U32 ^ (x ^ y); + z &= z.wrapping_shr(16); + z &= z.wrapping_shr(8); + z &= z.wrapping_shr(4); + z &= z.wrapping_shr(2); + z &= z.wrapping_shr(1); + let val = z as u8; + unsafe { trans(val) } +} +///Tests if two values are equal in constant time. +/// +///XORs, Shift Rights, AND are all that are used. There is +///no branching. +#[no_mangle] +pub extern "C" fn ct_u64_eq(x: u64, y: u64) -> bool { + let mut z: u64 = MAX_U64 ^ (x ^ y); + z &= z.wrapping_shr(32); + z &= z.wrapping_shr(16); + z &= z.wrapping_shr(8); + z &= z.wrapping_shr(4); + z &= z.wrapping_shr(2); + z &= z.wrapping_shr(1); + let val = z as u8; + unsafe { trans(val) } +} +///Tests if two values are equal in constant time. +/// +///XORs, Shift Rights, AND are all that are used. There is +///no branching. +#[no_mangle] +pub extern "C" fn ct_usize_eq(x: usize, y: usize) -> bool { + let mut z: usize = MAX_USIZE ^ (x ^ y); + z &= z.wrapping_shr(32); + z &= z.wrapping_shr(16); + z &= z.wrapping_shr(8); + z &= z.wrapping_shr(4); + z &= z.wrapping_shr(2); + z &= z.wrapping_shr(1); + let val = z as u8; + unsafe { trans(val) } +} +///Check the equality of slices. +/// +///This will transverse the entire slice reguardless of if a +///conflict is found early. +#[no_mangle] +pub extern "C" fn ct_u8_slice_eq(x: &[u8], y: &[u8]) -> bool { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { return false; } + let mut flag: u8 = 0; + for i in 0..x_len { flag |= x[i] ^ y[i]; } + ct_u8_eq(flag, 0) +} +///Check the equality of slices. +/// +///This will transverse the entire slice reguardless of if a +///conflict is found early. +#[no_mangle] +pub extern "C" fn ct_u16_slice_eq(x: &[u16], y: &[u16]) -> bool { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { return false; } + let mut flag: u16 = 0; + for i in 0..x_len { flag |= x[i] ^ y[i]; } + ct_u16_eq(flag, 0) +} +///Check the equality of slices. +/// +///This will transverse the entire slice reguardless of if a +///conflict is found early. +#[no_mangle] +pub extern "C" fn ct_u32_slice_eq(x: &[u32], y: &[u32]) -> bool { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { return false; } + let mut flag: u32 = 0; + for i in 0..x_len { flag |= x[i] ^ y[i]; } + ct_u32_eq(flag, 0) +} +///Check the equality of slices. +/// +///This will transverse the entire slice reguardless of if a +///conflict is found early. +#[no_mangle] +pub extern "C" fn ct_u64_slice_eq(x: &[u64], y: &[u64]) -> bool { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { return false; } + let mut flag: u64 = 0; + for i in 0..x_len { flag |= x[i] ^ y[i]; } + ct_u64_eq(flag, 0) +} +///Check the equality of slices. +/// +///This will transverse the entire slice reguardless of if a +///conflict is found early. +#[no_mangle] +pub extern "C" fn ct_usize_slice_eq(x: &[usize], y: &[usize]) -> bool { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { return false; } + let mut flag: usize = 0; + for i in 0..x_len { flag |= x[i] ^ y[i]; } + ct_usize_eq(flag, 0) +} +///Optional value selection. +/// +///Allow to set a varible optionally at the same speed without +///branching, or changing speed. +/// +///Returns X if flag == True. +/// +///Returns Y if flag == False. +#[no_mangle] +pub extern "C" fn ct_select_u8(flag: bool, x: u8, y: u8) -> u8 { + let val: u8 = unsafe { trans(flag) }; + let flag = val as u8; + ((MAX_U8 ^ flag.wrapping_sub(1)) & x) | (flag.wrapping_sub(1) & y) +} +///Optional value selection. +/// +///Allow to set a varible optionally at the same speed without +///branching, or changing speed. +/// +///Returns X if flag == True. +/// +///Returns Y if flag == False. +#[no_mangle] +pub extern "C" fn ct_select_u16(flag: bool, x: u16, y: u16) -> u16 { + let val: u8 = unsafe { trans(flag) }; + let flag = val as u16; + ((MAX_U16 ^ flag.wrapping_sub(1)) & x) | (flag.wrapping_sub(1) & y) +} +///Optional value selection. +/// +///Allow to set a varible optionally at the same speed without +///branching, or changing speed. +/// +///Returns X if flag == True. +/// +///Returns Y if flag == False. +#[no_mangle] +pub extern "C" fn ct_select_u32(flag: bool, x: u32, y: u32) -> u32 { + let val: u8 = unsafe { trans(flag) }; + let flag = val as u32; + ((MAX_U32 ^ flag.wrapping_sub(1)) & x) | (flag.wrapping_sub(1) & y) +} +///Optional value selection. +/// +///Allow to set a varible optionally at the same speed without +///branching, or changing speed. +/// +///Returns X if flag == True. +/// +///Returns Y if flag == False. +#[no_mangle] +pub extern "C" fn ct_select_u64(flag: bool, x: u64, y: u64) -> u64 { + let val: u8 = unsafe { trans(flag) }; + let flag = val as u64; + ((MAX_U64 ^ flag.wrapping_sub(1)) & x) | (flag.wrapping_sub(1) & y) +} +///Optional value selection. +/// +///Allow to set a varible optionally at the same speed without +///branching, or changing speed. +/// +///Returns X if flag == True. +/// +///Returns Y if flag == False. +#[no_mangle] +pub extern "C" fn ct_select_usize(flag: bool, x: usize, y: usize) -> usize { + let val: u8 = unsafe { trans(flag) }; + let flag = val as usize; + ((MAX_USIZE ^ flag.wrapping_sub(1)) & x) | (flag.wrapping_sub(1) & y) +} +///Constant time optional buffer copying +/// +///Copies the value of Y into X (provides slices are equal length) +///IF flag == True +/// +///If flag == False X is left unchanged. +/// +///#Panic: +/// +///This function will panic if X and Y are not equal length. +#[no_mangle] +pub extern "C" fn ct_copy_u8(flag: bool, + x: + &mut [ + //constant time boolean to unsigned int conversion + //see note above + //trigger panic + //even on false evaluation + //value of flag is irrelevant + u8], y: &[u8]) { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { + { + static _MSG_FILE_LINE: (&'static str, &'static str, u32) = + ("Consistent Time: Attempted to copy between non-equal lens", + "lib.rs", 324u32); + ::core::panicking::panic(&_MSG_FILE_LINE) + }; + } + let val: u8 = unsafe { trans(flag) }; + let flag = val as u8; + let x_mask: u8 = flag.wrapping_sub(1); + let y_mask: u8 = MAX_U8 ^ flag.wrapping_sub(1); + for i in 0..x_len { x[i] = (x[i] & x_mask) | (y[i] & y_mask) } +} +///Constant time optional buffer copying +/// +///Copies the value of Y into X (provides slices are equal length) +///IF flag == True +/// +///If flag == False X is left unchanged. +/// +///#Panic: +/// +///This function will panic if X and Y are not equal length. +#[no_mangle] +pub extern "C" fn ct_copy_u16(flag: bool, x: &mut [u16], y: &[u16]) { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { + { + static _MSG_FILE_LINE: (&'static str, &'static str, u32) = + ("Consistent Time: Attempted to copy between non-equal lens", + "lib.rs", 326u32); + ::core::panicking::panic(&_MSG_FILE_LINE) + }; + } + let val: u8 = unsafe { trans(flag) }; + let flag = val as u16; + let x_mask: u16 = flag.wrapping_sub(1); + let y_mask: u16 = MAX_U16 ^ flag.wrapping_sub(1); + for i in 0..x_len { x[i] = (x[i] & x_mask) | (y[i] & y_mask) } +} +///Constant time optional buffer copying +/// +///Copies the value of Y into X (provides slices are equal length) +///IF flag == True +/// +///If flag == False X is left unchanged. +/// +///#Panic: +/// +///This function will panic if X and Y are not equal length. +#[no_mangle] +pub extern "C" fn ct_copy_u32(flag: bool, x: &mut [u32], y: &[u32]) { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { + { + static _MSG_FILE_LINE: (&'static str, &'static str, u32) = + ("Consistent Time: Attempted to copy between non-equal lens", + "lib.rs", 328u32); + ::core::panicking::panic(&_MSG_FILE_LINE) + }; + } + let val: u8 = unsafe { trans(flag) }; + let flag = val as u32; + let x_mask: u32 = flag.wrapping_sub(1); + let y_mask: u32 = MAX_U32 ^ flag.wrapping_sub(1); + for i in 0..x_len { x[i] = (x[i] & x_mask) | (y[i] & y_mask) } +} +///Constant time optional buffer copying +/// +///Copies the value of Y into X (provides slices are equal length) +///IF flag == True +/// +///If flag == False X is left unchanged. +/// +///#Panic: +/// +///This function will panic if X and Y are not equal length. +#[no_mangle] +pub extern "C" fn ct_copy_u64(flag: bool, x: &mut [u64], y: &[u64]) { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { + { + static _MSG_FILE_LINE: (&'static str, &'static str, u32) = + ("Consistent Time: Attempted to copy between non-equal lens", + "lib.rs", 330u32); + ::core::panicking::panic(&_MSG_FILE_LINE) + }; + } + let val: u8 = unsafe { trans(flag) }; + let flag = val as u64; + let x_mask: u64 = flag.wrapping_sub(1); + let y_mask: u64 = MAX_U64 ^ flag.wrapping_sub(1); + for i in 0..x_len { x[i] = (x[i] & x_mask) | (y[i] & y_mask) } +} +///Constant time optional buffer copying +/// +///Copies the value of Y into X (provides slices are equal length) +///IF flag == True +/// +///If flag == False X is left unchanged. +/// +///#Panic: +/// +///This function will panic if X and Y are not equal length. +#[no_mangle] +pub extern "C" fn ct_copy_usize(flag: bool, x: &mut [usize], y: &[usize]) { + let x_len = x.len(); + let y_len = y.len(); + if x_len != y_len { + { + static _MSG_FILE_LINE: (&'static str, &'static str, u32) = + ("Consistent Time: Attempted to copy between non-equal lens", + "lib.rs", 332u32); + ::core::panicking::panic(&_MSG_FILE_LINE) + }; + } + let val: u8 = unsafe { trans(flag) }; + let flag = val as usize; + let x_mask: usize = flag.wrapping_sub(1); + let y_mask: usize = MAX_USIZE ^ flag.wrapping_sub(1); + for i in 0..x_len { x[i] = (x[i] & x_mask) | (y[i] & y_mask) } +} diff --git a/audit_x64_msvc_LEGACY/lib_x64_msvc.asm b/audit_x64_msvc_LEGACY/lib_x64_msvc.asm new file mode 100644 index 0000000..e23348f --- /dev/null +++ b/audit_x64_msvc_LEGACY/lib_x64_msvc.asm @@ -0,0 +1,1037 @@ +; Disassembly of file: lib.o +; Fri Dec 09 19:48:08 2016 +; Mode: 64 bits +; Syntax: MASM/ML64 +; Instruction set: Pentium Pro, x64 +option dotname + +public ct_u8_eq +public ct_u16_eq +public ct_u32_eq +public ct_u64_eq +public ct_usize_eq +public ct_u8_slice_eq +public ct_u16_slice_eq +public ct_u32_slice_eq +public ct_u64_slice_eq +public ct_usize_slice_eq +public ct_select_u8 +public ct_select_u16 +public ct_select_u32 +public ct_select_u64 +public ct_select_usize +public ct_copy_u8 +public ct_copy_u16 +public ct_copy_u32 +public ct_copy_u64 +public ct_copy_usize + +extern _ZN4core9panicking5panic17h53676c30b3bd95ebE: near +extern _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE: near + + +_text SEGMENT DWORD 'CODE' ; section number 1 + +_text ENDS + +_data SEGMENT DWORD 'DATA' ; section number 2 + +_data ENDS + +.bss SEGMENT DWORD 'BSS' ; section number 3 + +.bss ENDS + +_text SEGMENT PARA 'CODE' ; section number 4 +; Communal section not supported by MASM + +ct_u8_eq PROC + xor ecx, edx ; 0000 _ 31. D1 + not cl ; 0002 _ F6. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr al, 4 ; 0006 _ C0. E8, 04 + and al, cl ; 0009 _ 20. C8 + mov ecx, eax ; 000B _ 89. C1 + shr cl, 2 ; 000D _ C0. E9, 02 + and cl, al ; 0010 _ 20. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr al, 1 ; 0014 _ D0. E8 + and al, cl ; 0016 _ 20. C8 + ret ; 0018 _ C3 +ct_u8_eq ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 5 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 6 +; Communal section not supported by MASM + +ct_u16_eq PROC + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + movzx eax, ch ; 0004 _ 0F B6. C5 + and eax, ecx ; 0007 _ 21. C8 + mov ecx, eax ; 0009 _ 89. C1 + and ecx, 0F0H ; 000B _ 81. E1, 000000F0 + shr ecx, 4 ; 0011 _ C1. E9, 04 + and ecx, eax ; 0014 _ 21. C1 + mov edx, ecx ; 0016 _ 89. CA + and edx, 0CH ; 0018 _ 83. E2, 0C + shr edx, 2 ; 001B _ C1. EA, 02 + and edx, ecx ; 001E _ 21. CA + mov eax, edx ; 0020 _ 89. D0 + and eax, 0EH ; 0022 _ 83. E0, 0E + shr eax, 1 ; 0025 _ D1. E8 + and eax, edx ; 0027 _ 21. D0 + and eax, 01H ; 0029 _ 83. E0, 01 + ret ; 002C _ C3 +ct_u16_eq ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 7 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 8 +; Communal section not supported by MASM + +ct_u32_eq PROC + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr eax, 16 ; 0006 _ C1. E8, 10 + and eax, ecx ; 0009 _ 21. C8 + mov ecx, eax ; 000B _ 89. C1 + shr ecx, 8 ; 000D _ C1. E9, 08 + and ecx, eax ; 0010 _ 21. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr eax, 4 ; 0014 _ C1. E8, 04 + and eax, ecx ; 0017 _ 21. C8 + mov ecx, eax ; 0019 _ 89. C1 + shr ecx, 2 ; 001B _ C1. E9, 02 + and ecx, eax ; 001E _ 21. C1 + mov eax, ecx ; 0020 _ 89. C8 + shr eax, 1 ; 0022 _ D1. E8 + and eax, ecx ; 0024 _ 21. C8 + and eax, 01H ; 0026 _ 83. E0, 01 + ret ; 0029 _ C3 +ct_u32_eq ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 9 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 10 +; Communal section not supported by MASM + +ct_u64_eq PROC + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +ct_u64_eq ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 11 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 12 +; Communal section not supported by MASM + +ct_usize_eq PROC + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +ct_usize_eq ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 13 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 14 +; Communal section not supported by MASM + +ct_u8_slice_eq PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_003 ; 000A _ 75, 4A + mov r9b, -1 ; 000C _ 41: B1, FF + test r10, r10 ; 000F _ 4D: 85. D2 + jz ?_002 ; 0012 _ 74, 27 + xor r9d, r9d ; 0014 _ 45: 31. C9 + xor edx, edx ; 0017 _ 31. D2 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_001: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_005 ; 0023 _ 73, 38 + movzx eax, byte ptr [r8+rdx] ; 0025 _ 41: 0F B6. 04 10 + xor al, byte ptr [rcx+rdx] ; 002A _ 32. 04 11 + inc rdx ; 002D _ 48: FF. C2 + or r9b, al ; 0030 _ 41: 08. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_001 ; 0036 _ 72, E8 + not r9b ; 0038 _ 41: F6. D1 +?_002: mov ecx, r9d ; 003B _ 44: 89. C9 + shr cl, 4 ; 003E _ C0. E9, 04 + and cl, r9b ; 0041 _ 44: 20. C9 + mov eax, ecx ; 0044 _ 89. C8 + shr al, 2 ; 0046 _ C0. E8, 02 + and al, cl ; 0049 _ 20. C8 + mov ecx, eax ; 004B _ 89. C1 + shr cl, 1 ; 004D _ D0. E9 + test cl, al ; 004F _ 84. C1 + setne al ; 0051 _ 0F 95. C0 + jmp ?_004 ; 0054 _ EB, 02 + +?_003: xor eax, eax ; 0056 _ 31. C0 +?_004: add rsp, 40 ; 0058 _ 48: 83. C4, 28 + ret ; 005C _ C3 +ct_u8_slice_eq ENDP + +?_005 LABEL NEAR + lea rcx, ptr [panic_bounds_check_loc2691] ; 005D _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0064 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 15 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 16 +; Communal section not supported by MASM + +ct_u16_slice_eq PROC + push rbx ; 0000 _ 53 + sub rsp, 32 ; 0001 _ 48: 83. EC, 20 + mov r10, rdx ; 0005 _ 49: 89. D2 + cmp r10, r9 ; 0008 _ 4D: 39. CA + jnz ?_008 ; 000B _ 75, 57 +; Note: Length-changing prefix causes delay on Intel processors + mov bx, 65535 ; 000D _ 66: BB, FFFF + test r10, r10 ; 0011 _ 4D: 85. D2 + jz ?_007 ; 0014 _ 74, 24 + xor ebx, ebx ; 0016 _ 31. DB + xor edx, edx ; 0018 _ 31. D2 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_006: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_010 ; 0023 _ 73, 47 + mov ax, word ptr [r8+rdx*2] ; 0025 _ 66 41: 8B. 04 50 + xor ax, word ptr [rcx+rdx*2] ; 002A _ 66: 33. 04 51 + inc rdx ; 002E _ 48: FF. C2 + or ebx, eax ; 0031 _ 09. C3 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_006 ; 0036 _ 72, E8 + not ebx ; 0038 _ F7. D3 +?_007: movzx eax, bh ; 003A _ 0F B6. C7 + and eax, ebx ; 003D _ 21. D8 + mov ecx, eax ; 003F _ 89. C1 + and ecx, 0F0H ; 0041 _ 81. E1, 000000F0 + shr ecx, 4 ; 0047 _ C1. E9, 04 + and ecx, eax ; 004A _ 21. C1 + mov edx, ecx ; 004C _ 89. CA + and edx, 0CH ; 004E _ 83. E2, 0C + shr edx, 2 ; 0051 _ C1. EA, 02 + and edx, ecx ; 0054 _ 21. CA + mov eax, edx ; 0056 _ 89. D0 + and eax, 0EH ; 0058 _ 83. E0, 0E + shr eax, 1 ; 005B _ D1. E8 + and eax, edx ; 005D _ 21. D0 + and eax, 01H ; 005F _ 83. E0, 01 + jmp ?_009 ; 0062 _ EB, 02 + +?_008: xor eax, eax ; 0064 _ 31. C0 +?_009: add rsp, 32 ; 0066 _ 48: 83. C4, 20 + pop rbx ; 006A _ 5B + ret ; 006B _ C3 +ct_u16_slice_eq ENDP + +?_010 LABEL NEAR + lea rcx, ptr [panic_bounds_check_loc2691] ; 006C _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0073 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0076 _ E8, 00000000(rel) + ud2 ; 007B _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 17 +; Communal section not supported by MASM + + db 01H, 05H, 02H, 00H, 05H, 32H, 01H, 30H ; 0000 _ .....2.0 + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 18 +; Communal section not supported by MASM + +ct_u32_slice_eq PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_013 ; 000A _ 75, 57 + mov r9d, 4294967295 ; 000C _ 41: B9, FFFFFFFF + test r10, r10 ; 0012 _ 4D: 85. D2 + jz ?_012 ; 0015 _ 74, 23 + xor r9d, r9d ; 0017 _ 45: 31. C9 + xor edx, edx ; 001A _ 31. D2 +; Filling space: 4H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 40H, 00H + +ALIGN 8 +?_011: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_015 ; 0023 _ 73, 45 + mov eax, dword ptr [r8+rdx*4] ; 0025 _ 41: 8B. 04 90 + xor eax, dword ptr [rcx+rdx*4] ; 0029 _ 33. 04 91 + inc rdx ; 002C _ 48: FF. C2 + or r9d, eax ; 002F _ 41: 09. C1 + cmp rdx, r10 ; 0032 _ 4C: 39. D2 + jc ?_011 ; 0035 _ 72, E9 + not r9d ; 0037 _ 41: F7. D1 +?_012: mov ecx, r9d ; 003A _ 44: 89. C9 + shr ecx, 16 ; 003D _ C1. E9, 10 + and ecx, r9d ; 0040 _ 44: 21. C9 + mov eax, ecx ; 0043 _ 89. C8 + shr eax, 8 ; 0045 _ C1. E8, 08 + and eax, ecx ; 0048 _ 21. C8 + mov ecx, eax ; 004A _ 89. C1 + shr ecx, 4 ; 004C _ C1. E9, 04 + and ecx, eax ; 004F _ 21. C1 + mov edx, ecx ; 0051 _ 89. CA + shr edx, 2 ; 0053 _ C1. EA, 02 + and edx, ecx ; 0056 _ 21. CA + mov eax, edx ; 0058 _ 89. D0 + shr eax, 1 ; 005A _ D1. E8 + and eax, edx ; 005C _ 21. D0 + and eax, 01H ; 005E _ 83. E0, 01 + jmp ?_014 ; 0061 _ EB, 02 + +?_013: xor eax, eax ; 0063 _ 31. C0 +?_014: add rsp, 40 ; 0065 _ 48: 83. C4, 28 + ret ; 0069 _ C3 +ct_u32_slice_eq ENDP + +?_015 LABEL NEAR + lea rcx, ptr [panic_bounds_check_loc2691] ; 006A _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0071 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0074 _ E8, 00000000(rel) + ud2 ; 0079 _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 19 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 20 +; Communal section not supported by MASM + +ct_u64_slice_eq PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_018 ; 000A _ 75, 6B + mov r9, -1 ; 000C _ 49: C7. C1, FFFFFFFF + test r10, r10 ; 0013 _ 4D: 85. D2 + jz ?_017 ; 0016 _ 74, 23 + xor r9d, r9d ; 0018 _ 45: 31. C9 + xor edx, edx ; 001B _ 31. D2 +; Filling space: 3H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 00H + +ALIGN 8 +?_016: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_020 ; 0023 _ 73, 59 + mov rax, qword ptr [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword ptr [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or r9, rax ; 0030 _ 49: 09. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_016 ; 0036 _ 72, E8 + not r9 ; 0038 _ 49: F7. D1 +?_017: mov rcx, r9 ; 003B _ 4C: 89. C9 + shr rcx, 32 ; 003E _ 48: C1. E9, 20 + and rcx, r9 ; 0042 _ 4C: 21. C9 + mov rax, rcx ; 0045 _ 48: 89. C8 + shr rax, 16 ; 0048 _ 48: C1. E8, 10 + and rax, rcx ; 004C _ 48: 21. C8 + mov rcx, rax ; 004F _ 48: 89. C1 + shr rcx, 8 ; 0052 _ 48: C1. E9, 08 + and rcx, rax ; 0056 _ 48: 21. C1 + mov rax, rcx ; 0059 _ 48: 89. C8 + shr rax, 4 ; 005C _ 48: C1. E8, 04 + and rax, rcx ; 0060 _ 48: 21. C8 + mov rcx, rax ; 0063 _ 48: 89. C1 + shr rcx, 2 ; 0066 _ 48: C1. E9, 02 + and ecx, eax ; 006A _ 21. C1 + mov eax, ecx ; 006C _ 89. C8 + shr eax, 1 ; 006E _ D1. E8 + and eax, ecx ; 0070 _ 21. C8 + and eax, 01H ; 0072 _ 83. E0, 01 + jmp ?_019 ; 0075 _ EB, 02 + +?_018: xor eax, eax ; 0077 _ 31. C0 +?_019: add rsp, 40 ; 0079 _ 48: 83. C4, 28 + ret ; 007D _ C3 +ct_u64_slice_eq ENDP + +?_020 LABEL NEAR + lea rcx, ptr [panic_bounds_check_loc2691] ; 007E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0085 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0088 _ E8, 00000000(rel) + ud2 ; 008D _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 21 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 22 +; Communal section not supported by MASM + +ct_usize_slice_eq PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_023 ; 000A _ 75, 6B + mov r9, -1 ; 000C _ 49: C7. C1, FFFFFFFF + test r10, r10 ; 0013 _ 4D: 85. D2 + jz ?_022 ; 0016 _ 74, 23 + xor r9d, r9d ; 0018 _ 45: 31. C9 + xor edx, edx ; 001B _ 31. D2 +; Filling space: 3H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 00H + +ALIGN 8 +?_021: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_025 ; 0023 _ 73, 59 + mov rax, qword ptr [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword ptr [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or r9, rax ; 0030 _ 49: 09. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_021 ; 0036 _ 72, E8 + not r9 ; 0038 _ 49: F7. D1 +?_022: mov rcx, r9 ; 003B _ 4C: 89. C9 + shr rcx, 32 ; 003E _ 48: C1. E9, 20 + and rcx, r9 ; 0042 _ 4C: 21. C9 + mov rax, rcx ; 0045 _ 48: 89. C8 + shr rax, 16 ; 0048 _ 48: C1. E8, 10 + and rax, rcx ; 004C _ 48: 21. C8 + mov rcx, rax ; 004F _ 48: 89. C1 + shr rcx, 8 ; 0052 _ 48: C1. E9, 08 + and rcx, rax ; 0056 _ 48: 21. C1 + mov rax, rcx ; 0059 _ 48: 89. C8 + shr rax, 4 ; 005C _ 48: C1. E8, 04 + and rax, rcx ; 0060 _ 48: 21. C8 + mov rcx, rax ; 0063 _ 48: 89. C1 + shr rcx, 2 ; 0066 _ 48: C1. E9, 02 + and ecx, eax ; 006A _ 21. C1 + mov eax, ecx ; 006C _ 89. C8 + shr eax, 1 ; 006E _ D1. E8 + and eax, ecx ; 0070 _ 21. C8 + and eax, 01H ; 0072 _ 83. E0, 01 + jmp ?_024 ; 0075 _ EB, 02 + +?_023: xor eax, eax ; 0077 _ 31. C0 +?_024: add rsp, 40 ; 0079 _ 48: 83. C4, 28 + ret ; 007D _ C3 +ct_usize_slice_eq ENDP + +?_025 LABEL NEAR + lea rcx, ptr [panic_bounds_check_loc2691] ; 007E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0085 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0088 _ E8, 00000000(rel) + ud2 ; 008D _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 23 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 24 +; Communal section not supported by MASM + +ct_select_u8 PROC + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +ct_select_u8 ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 25 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 26 +; Communal section not supported by MASM + +ct_select_u16 PROC + test cl, cl ; 0000 _ 84. C9 + cmovne r8w, dx ; 0002 _ 66 44: 0F 45. C2 + mov eax, r8d ; 0007 _ 44: 89. C0 + ret ; 000A _ C3 +ct_select_u16 ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 27 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 28 +; Communal section not supported by MASM + +ct_select_u32 PROC + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +ct_select_u32 ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 29 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 30 +; Communal section not supported by MASM + +ct_select_u64 PROC + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +ct_select_u64 ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 31 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 32 +; Communal section not supported by MASM + +ct_select_usize PROC + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +ct_select_usize ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 33 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 34 +; Communal section not supported by MASM + +ct_copy_u8 PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword ptr [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_030 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_028 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_027 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_026: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_029 ; 0023 _ 73, 2D + movzx ecx, byte ptr [r9+rdx] ; 0025 _ 41: 0F B6. 0C 11 + mov byte ptr [rax+rdx], cl ; 002A _ 88. 0C 10 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_026 ; 0033 _ 72, EB + jmp ?_028 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_027: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_029 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_027 ; 004B _ 72, F3 +?_028: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_029: lea rcx, ptr [panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +ct_copy_u8 ENDP + +?_030 LABEL NEAR + lea rcx, ptr [_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 35 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 36 +; Communal section not supported by MASM + +ct_copy_u16 PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword ptr [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_035 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_033 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_032 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_031: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_034 ; 0023 _ 73, 2D + movzx ecx, word ptr [r9+rdx*2] ; 0025 _ 41: 0F B7. 0C 51 + mov word ptr [rax+rdx*2], cx ; 002A _ 66: 89. 0C 50 + inc rdx ; 002E _ 48: FF. C2 + cmp rdx, r8 ; 0031 _ 4C: 39. C2 + jc ?_031 ; 0034 _ 72, EA + jmp ?_033 ; 0036 _ EB, 15 + +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_032: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_034 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_032 ; 004B _ 72, F3 +?_033: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_034: lea rcx, ptr [panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +ct_copy_u16 ENDP + +?_035 LABEL NEAR + lea rcx, ptr [_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 37 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 38 +; Communal section not supported by MASM + +ct_copy_u32 PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword ptr [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_040 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_038 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_037 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_036: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_039 ; 0023 _ 73, 2D + mov ecx, dword ptr [r9+rdx*4] ; 0025 _ 41: 8B. 0C 91 + mov dword ptr [rax+rdx*4], ecx ; 0029 _ 89. 0C 90 + inc rdx ; 002C _ 48: FF. C2 + cmp rdx, r8 ; 002F _ 4C: 39. C2 + jc ?_036 ; 0032 _ 72, EC + jmp ?_038 ; 0034 _ EB, 17 + +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_037: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_039 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_037 ; 004B _ 72, F3 +?_038: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_039: lea rcx, ptr [panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +ct_copy_u32 ENDP + +?_040 LABEL NEAR + lea rcx, ptr [_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 39 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 40 +; Communal section not supported by MASM + +ct_copy_u64 PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword ptr [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_045 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_043 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_042 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_041: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_044 ; 0023 _ 73, 2D + mov rcx, qword ptr [r9+rdx*8] ; 0025 _ 49: 8B. 0C D1 + mov qword ptr [rax+rdx*8], rcx ; 0029 _ 48: 89. 0C D0 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_041 ; 0033 _ 72, EB + jmp ?_043 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_042: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_044 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_042 ; 004B _ 72, F3 +?_043: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_044: lea rcx, ptr [panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +ct_copy_u64 ENDP + +?_045 LABEL NEAR + lea rcx, ptr [_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 41 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 42 +; Communal section not supported by MASM + +ct_copy_usize PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword ptr [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_050 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_048 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_047 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_046: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_049 ; 0023 _ 73, 2D + mov rcx, qword ptr [r9+rdx*8] ; 0025 _ 49: 8B. 0C D1 + mov qword ptr [rax+rdx*8], rcx ; 0029 _ 48: 89. 0C D0 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_046 ; 0033 _ 72, EB + jmp ?_048 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_047: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_049 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_047 ; 004B _ 72, F3 +?_048: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_049: lea rcx, ptr [panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +ct_copy_usize ENDP + +?_050 LABEL NEAR + lea rcx, ptr [_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 43 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +.rdata SEGMENT BYTE 'CONST' ; section number 44 +; Communal section not supported by MASM + +str2690 label byte + db 6CH, 69H, 62H, 2EH, 72H, 73H ; 0000 _ lib.rs + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 45 +; Communal section not supported by MASM + +panic_bounds_check_loc2691 label byte + dq str2690 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 00000000000000C5H ; 0010 _ 00000000000000C5 + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 46 +; Communal section not supported by MASM + +panic_bounds_check_loc2694 label byte + dq str2690 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 000000000000012AH ; 0010 _ 000000000000012A + +.rdata ENDS + +.rdata SEGMENT PARA 'CONST' ; section number 47 +; Communal section not supported by MASM + +str2695 label byte + db 43H, 6FH, 6EH, 73H, 69H, 73H, 74H, 65H ; 0000 _ Consiste + db 6EH, 74H, 20H, 54H, 69H, 6DH, 65H, 3AH ; 0008 _ nt Time: + db 20H, 41H, 74H, 74H, 65H, 6DH, 70H, 74H ; 0010 _ Attempt + db 65H, 64H, 20H, 74H, 6FH, 20H, 63H, 6FH ; 0018 _ ed to co + db 70H, 79H, 20H, 62H, 65H, 74H, 77H, 65H ; 0020 _ py betwe + db 65H, 6EH, 20H, 6EH, 6FH, 6EH, 2DH, 65H ; 0028 _ en non-e + db 71H, 75H, 61H, 6CH, 20H, 6CH, 65H, 6EH ; 0030 _ qual len + db 73H ; 0038 _ s + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 48 +; Communal section not supported by MASM + +_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE label byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000144H ; 0020 _ 0000000000000144 + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 49 +; Communal section not supported by MASM + +_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E label byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000146H ; 0020 _ 0000000000000146 + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 50 +; Communal section not supported by MASM + +_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E label byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000148H ; 0020 _ 0000000000000148 + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 51 +; Communal section not supported by MASM + +_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E label byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014AH ; 0020 _ 000000000000014A + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 52 +; Communal section not supported by MASM + +_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE label byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014CH ; 0020 _ 000000000000014C + +.rdata ENDS + +END \ No newline at end of file diff --git a/audit_x64_msvc_LEGACY/lib_x64_msvc.gasm b/audit_x64_msvc_LEGACY/lib_x64_msvc.gasm new file mode 100644 index 0000000..5d220af --- /dev/null +++ b/audit_x64_msvc_LEGACY/lib_x64_msvc.gasm @@ -0,0 +1,1091 @@ +# Disassembly of file: lib.o +# Fri Dec 09 19:47:51 2016 +# Mode: 64 bits +# Syntax: GAS(Intel) +# Instruction set: Pentium Pro, x64 + +# Note: Uses Intel syntax with destination operand first. Remember to +# put syntax directives in the beginning and end of inline assembly: +.intel_syntax noprefix + +.global ct_u8_eq +.type ct_u8_eq, @function +.global ct_u16_eq +.type ct_u16_eq, @function +.global ct_u32_eq +.type ct_u32_eq, @function +.global ct_u64_eq +.type ct_u64_eq, @function +.global ct_usize_eq +.type ct_usize_eq, @function +.global ct_u8_slice_eq +.type ct_u8_slice_eq, @function +.global ct_u16_slice_eq +.type ct_u16_slice_eq, @function +.global ct_u32_slice_eq +.type ct_u32_slice_eq, @function +.global ct_u64_slice_eq +.type ct_u64_slice_eq, @function +.global ct_usize_slice_eq +.type ct_usize_slice_eq, @function +.global ct_select_u8 +.type ct_select_u8, @function +.global ct_select_u16 +.type ct_select_u16, @function +.global ct_select_u32 +.type ct_select_u32, @function +.global ct_select_u64 +.type ct_select_u64, @function +.global ct_select_usize +.type ct_select_usize, @function +.global ct_copy_u8 +.type ct_copy_u8, @function +.global ct_copy_u16 +.type ct_copy_u16, @function +.global ct_copy_u32 +.type ct_copy_u32, @function +.global ct_copy_u64 +.type ct_copy_u64, @function +.global ct_copy_usize +.type ct_copy_usize, @function + +.extern _ZN4core9panicking5panic17h53676c30b3bd95ebE # near +.extern _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE # near + + +.SECTION .text # "ax", @progbits # section number 1, code + .ALIGN 4 + + +.SECTION .data # "aw", @progbits # section number 2, data + .ALIGN 4 + + +.SECTION .bss # "aw", @progbits # section number 3, bss + .ALIGN 4 + + +.SECTION .text # "ax", @progbits # section number 4, code +# Communal section + .ALIGN 16 + +ct_u8_eq: # Function + .type ct_u8_eq, @function + xor ecx, edx # 0000 _ 31. D1 + not cl # 0002 _ F6. D1 + mov eax, ecx # 0004 _ 89. C8 + shr al, 4 # 0006 _ C0. E8, 04 + and al, cl # 0009 _ 20. C8 + mov ecx, eax # 000B _ 89. C1 + shr cl, 2 # 000D _ C0. E9, 02 + and cl, al # 0010 _ 20. C1 + mov eax, ecx # 0012 _ 89. C8 + shr al, 1 # 0014 _ D0. E8 + and al, cl # 0016 _ 20. C8 + ret # 0018 _ C3 + .size ct_u8_eq, . - ct_u8_eq # End of function is probably here + + +.SECTION .xdata # "a", @progbits # section number 5, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00# 0000 _ ........ + + +.SECTION .text # "ax", @progbits # section number 6, code +# Communal section + .ALIGN 16 + +ct_u16_eq: # Function + .type ct_u16_eq, @function + xor ecx, edx # 0000 _ 31. D1 + not ecx # 0002 _ F7. D1 + movzx eax, ch # 0004 _ 0F B6. C5 + and eax, ecx # 0007 _ 21. C8 + mov ecx, eax # 0009 _ 89. C1 + and ecx, 0xF0 # 000B _ 81. E1, 000000F0 + shr ecx, 4 # 0011 _ C1. E9, 04 + and ecx, eax # 0014 _ 21. C1 + mov edx, ecx # 0016 _ 89. CA + and edx, 0x0C # 0018 _ 83. E2, 0C + shr edx, 2 # 001B _ C1. EA, 02 + and edx, ecx # 001E _ 21. CA + mov eax, edx # 0020 _ 89. D0 + and eax, 0x0E # 0022 _ 83. E0, 0E + shr eax, 1 # 0025 _ D1. E8 + and eax, edx # 0027 _ 21. D0 + and eax, 0x01 # 0029 _ 83. E0, 01 + ret # 002C _ C3 + .size ct_u16_eq, . - ct_u16_eq # End of function is probably here + + +.SECTION .xdata # "a", @progbits # section number 7, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00# 0000 _ ........ + + +.SECTION .text # "ax", @progbits # section number 8, code +# Communal section + .ALIGN 16 + +ct_u32_eq: # Function + .type ct_u32_eq, @function + xor ecx, edx # 0000 _ 31. D1 + not ecx # 0002 _ F7. D1 + mov eax, ecx # 0004 _ 89. C8 + shr eax, 16 # 0006 _ C1. E8, 10 + and eax, ecx # 0009 _ 21. C8 + mov ecx, eax # 000B _ 89. C1 + shr ecx, 8 # 000D _ C1. E9, 08 + and ecx, eax # 0010 _ 21. C1 + mov eax, ecx # 0012 _ 89. C8 + shr eax, 4 # 0014 _ C1. E8, 04 + and eax, ecx # 0017 _ 21. C8 + mov ecx, eax # 0019 _ 89. C1 + shr ecx, 2 # 001B _ C1. E9, 02 + and ecx, eax # 001E _ 21. C1 + mov eax, ecx # 0020 _ 89. C8 + shr eax, 1 # 0022 _ D1. E8 + and eax, ecx # 0024 _ 21. C8 + and eax, 0x01 # 0026 _ 83. E0, 01 + ret # 0029 _ C3 + .size ct_u32_eq, . - ct_u32_eq # End of function is probably here + + +.SECTION .xdata # "a", @progbits # section number 9, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00# 0000 _ ........ + + +.SECTION .text # "ax", @progbits # section number 10, code +# Communal section + .ALIGN 16 + +ct_u64_eq: # Function + .type ct_u64_eq, @function + xor rcx, rdx # 0000 _ 48: 31. D1 + not rcx # 0003 _ 48: F7. D1 + mov rax, rcx # 0006 _ 48: 89. C8 + shr rax, 32 # 0009 _ 48: C1. E8, 20 + and rax, rcx # 000D _ 48: 21. C8 + mov rcx, rax # 0010 _ 48: 89. C1 + shr rcx, 16 # 0013 _ 48: C1. E9, 10 + and rcx, rax # 0017 _ 48: 21. C1 + mov rax, rcx # 001A _ 48: 89. C8 + shr rax, 8 # 001D _ 48: C1. E8, 08 + and rax, rcx # 0021 _ 48: 21. C8 + mov rcx, rax # 0024 _ 48: 89. C1 + shr rcx, 4 # 0027 _ 48: C1. E9, 04 + and rcx, rax # 002B _ 48: 21. C1 + mov rdx, rcx # 002E _ 48: 89. CA + shr rdx, 2 # 0031 _ 48: C1. EA, 02 + and edx, ecx # 0035 _ 21. CA + mov eax, edx # 0037 _ 89. D0 + shr eax, 1 # 0039 _ D1. E8 + and eax, edx # 003B _ 21. D0 + and eax, 0x01 # 003D _ 83. E0, 01 + ret # 0040 _ C3 + .size ct_u64_eq, . - ct_u64_eq # End of function is probably here + + +.SECTION .xdata # "a", @progbits # section number 11, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00# 0000 _ ........ + + +.SECTION .text # "ax", @progbits # section number 12, code +# Communal section + .ALIGN 16 + +ct_usize_eq: # Function + .type ct_usize_eq, @function + xor rcx, rdx # 0000 _ 48: 31. D1 + not rcx # 0003 _ 48: F7. D1 + mov rax, rcx # 0006 _ 48: 89. C8 + shr rax, 32 # 0009 _ 48: C1. E8, 20 + and rax, rcx # 000D _ 48: 21. C8 + mov rcx, rax # 0010 _ 48: 89. C1 + shr rcx, 16 # 0013 _ 48: C1. E9, 10 + and rcx, rax # 0017 _ 48: 21. C1 + mov rax, rcx # 001A _ 48: 89. C8 + shr rax, 8 # 001D _ 48: C1. E8, 08 + and rax, rcx # 0021 _ 48: 21. C8 + mov rcx, rax # 0024 _ 48: 89. C1 + shr rcx, 4 # 0027 _ 48: C1. E9, 04 + and rcx, rax # 002B _ 48: 21. C1 + mov rdx, rcx # 002E _ 48: 89. CA + shr rdx, 2 # 0031 _ 48: C1. EA, 02 + and edx, ecx # 0035 _ 21. CA + mov eax, edx # 0037 _ 89. D0 + shr eax, 1 # 0039 _ D1. E8 + and eax, edx # 003B _ 21. D0 + and eax, 0x01 # 003D _ 83. E0, 01 + ret # 0040 _ C3 + .size ct_usize_eq, . - ct_usize_eq # End of function is probably here + + +.SECTION .xdata # "a", @progbits # section number 13, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00# 0000 _ ........ + + +.SECTION .text # "ax", @progbits # section number 14, code +# Communal section + .ALIGN 16 + +ct_u8_slice_eq: # Function + .type ct_u8_slice_eq, @function + sub rsp, 40 # 0000 _ 48: 83. EC, 28 + mov r10, rdx # 0004 _ 49: 89. D2 + cmp r10, r9 # 0007 _ 4D: 39. CA + jnz $_003 # 000A _ 75, 4A + mov r9b, -1 # 000C _ 41: B1, FF + test r10, r10 # 000F _ 4D: 85. D2 + jz $_002 # 0012 _ 74, 27 + xor r9d, r9d # 0014 _ 45: 31. C9 + xor edx, edx # 0017 _ 31. D2 +# Filling space: 0x7 +# Filler type: Multi-byte NOP +# .byte 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00 + +.ALIGN 8 +$_001: cmp rdx, r10 # 0020 _ 4C: 39. D2 + jnc $_005 # 0023 _ 73, 38 + movzx eax, byte [r8+rdx] # 0025 _ 41: 0F B6. 04 10 + xor al, byte [rcx+rdx] # 002A _ 32. 04 11 + inc rdx # 002D _ 48: FF. C2 + or r9b, al # 0030 _ 41: 08. C1 + cmp rdx, r10 # 0033 _ 4C: 39. D2 + jc $_001 # 0036 _ 72, E8 + not r9b # 0038 _ 41: F6. D1 +$_002: mov ecx, r9d # 003B _ 44: 89. C9 + shr cl, 4 # 003E _ C0. E9, 04 + and cl, r9b # 0041 _ 44: 20. C9 + mov eax, ecx # 0044 _ 89. C8 + shr al, 2 # 0046 _ C0. E8, 02 + and al, cl # 0049 _ 20. C8 + mov ecx, eax # 004B _ 89. C1 + shr cl, 1 # 004D _ D0. E9 + test cl, al # 004F _ 84. C1 + setne al # 0051 _ 0F 95. C0 + jmp $_004 # 0054 _ EB, 02 + +$_003: xor eax, eax # 0056 _ 31. C0 +$_004: add rsp, 40 # 0058 _ 48: 83. C4, 28 + ret # 005C _ C3 + .size ct_u8_slice_eq, . - ct_u8_slice_eq # End of function is probably here + +$_005: # Local Function + .type $_005, @function + lea rcx, [panic_bounds_check_loc2691+rip] # 005D _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 # 0064 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE# 0067 _ E8, 00000000(rel) + ud2 # 006C _ 0F 0B + + +.SECTION .xdata # "a", @progbits # section number 15, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00# 0000 _ .....B.. + + +.SECTION .text # "ax", @progbits # section number 16, code +# Communal section + .ALIGN 16 + +ct_u16_slice_eq: # Function + .type ct_u16_slice_eq, @function + push rbx # 0000 _ 53 + sub rsp, 32 # 0001 _ 48: 83. EC, 20 + mov r10, rdx # 0005 _ 49: 89. D2 + cmp r10, r9 # 0008 _ 4D: 39. CA + jnz $_008 # 000B _ 75, 57 +# Note: Length-changing prefix causes delay on Intel processors + mov bx, 65535 # 000D _ 66: BB, FFFF + test r10, r10 # 0011 _ 4D: 85. D2 + jz $_007 # 0014 _ 74, 24 + xor ebx, ebx # 0016 _ 31. DB + xor edx, edx # 0018 _ 31. D2 +# Filling space: 0x6 +# Filler type: Multi-byte NOP +# .byte 0x66, 0x0F, 0x1F, 0x44, 0x00, 0x00 + +.ALIGN 8 +$_006: cmp rdx, r10 # 0020 _ 4C: 39. D2 + jnc $_010 # 0023 _ 73, 47 + mov ax, word [r8+rdx*2] # 0025 _ 66 41: 8B. 04 50 + xor ax, word [rcx+rdx*2] # 002A _ 66: 33. 04 51 + inc rdx # 002E _ 48: FF. C2 + or ebx, eax # 0031 _ 09. C3 + cmp rdx, r10 # 0033 _ 4C: 39. D2 + jc $_006 # 0036 _ 72, E8 + not ebx # 0038 _ F7. D3 +$_007: movzx eax, bh # 003A _ 0F B6. C7 + and eax, ebx # 003D _ 21. D8 + mov ecx, eax # 003F _ 89. C1 + and ecx, 0xF0 # 0041 _ 81. E1, 000000F0 + shr ecx, 4 # 0047 _ C1. E9, 04 + and ecx, eax # 004A _ 21. C1 + mov edx, ecx # 004C _ 89. CA + and edx, 0x0C # 004E _ 83. E2, 0C + shr edx, 2 # 0051 _ C1. EA, 02 + and edx, ecx # 0054 _ 21. CA + mov eax, edx # 0056 _ 89. D0 + and eax, 0x0E # 0058 _ 83. E0, 0E + shr eax, 1 # 005B _ D1. E8 + and eax, edx # 005D _ 21. D0 + and eax, 0x01 # 005F _ 83. E0, 01 + jmp $_009 # 0062 _ EB, 02 + +$_008: xor eax, eax # 0064 _ 31. C0 +$_009: add rsp, 32 # 0066 _ 48: 83. C4, 20 + pop rbx # 006A _ 5B + ret # 006B _ C3 + .size ct_u16_slice_eq, . - ct_u16_slice_eq # End of function is probably here + +$_010: # Local Function + .type $_010, @function + lea rcx, [panic_bounds_check_loc2691+rip] # 006C _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 # 0073 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE# 0076 _ E8, 00000000(rel) + ud2 # 007B _ 0F 0B + + +.SECTION .xdata # "a", @progbits # section number 17, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x05, 0x02, 0x00, 0x05, 0x32, 0x01, 0x30# 0000 _ .....2.0 + + +.SECTION .text # "ax", @progbits # section number 18, code +# Communal section + .ALIGN 16 + +ct_u32_slice_eq: # Function + .type ct_u32_slice_eq, @function + sub rsp, 40 # 0000 _ 48: 83. EC, 28 + mov r10, rdx # 0004 _ 49: 89. D2 + cmp r10, r9 # 0007 _ 4D: 39. CA + jnz $_013 # 000A _ 75, 57 + mov r9d, 4294967295 # 000C _ 41: B9, FFFFFFFF + test r10, r10 # 0012 _ 4D: 85. D2 + jz $_012 # 0015 _ 74, 23 + xor r9d, r9d # 0017 _ 45: 31. C9 + xor edx, edx # 001A _ 31. D2 +# Filling space: 0x4 +# Filler type: Multi-byte NOP +# .byte 0x0F, 0x1F, 0x40, 0x00 + +.ALIGN 8 +$_011: cmp rdx, r10 # 0020 _ 4C: 39. D2 + jnc $_015 # 0023 _ 73, 45 + mov eax, dword [r8+rdx*4] # 0025 _ 41: 8B. 04 90 + xor eax, dword [rcx+rdx*4] # 0029 _ 33. 04 91 + inc rdx # 002C _ 48: FF. C2 + or r9d, eax # 002F _ 41: 09. C1 + cmp rdx, r10 # 0032 _ 4C: 39. D2 + jc $_011 # 0035 _ 72, E9 + not r9d # 0037 _ 41: F7. D1 +$_012: mov ecx, r9d # 003A _ 44: 89. C9 + shr ecx, 16 # 003D _ C1. E9, 10 + and ecx, r9d # 0040 _ 44: 21. C9 + mov eax, ecx # 0043 _ 89. C8 + shr eax, 8 # 0045 _ C1. E8, 08 + and eax, ecx # 0048 _ 21. C8 + mov ecx, eax # 004A _ 89. C1 + shr ecx, 4 # 004C _ C1. E9, 04 + and ecx, eax # 004F _ 21. C1 + mov edx, ecx # 0051 _ 89. CA + shr edx, 2 # 0053 _ C1. EA, 02 + and edx, ecx # 0056 _ 21. CA + mov eax, edx # 0058 _ 89. D0 + shr eax, 1 # 005A _ D1. E8 + and eax, edx # 005C _ 21. D0 + and eax, 0x01 # 005E _ 83. E0, 01 + jmp $_014 # 0061 _ EB, 02 + +$_013: xor eax, eax # 0063 _ 31. C0 +$_014: add rsp, 40 # 0065 _ 48: 83. C4, 28 + ret # 0069 _ C3 + .size ct_u32_slice_eq, . - ct_u32_slice_eq # End of function is probably here + +$_015: # Local Function + .type $_015, @function + lea rcx, [panic_bounds_check_loc2691+rip] # 006A _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 # 0071 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE# 0074 _ E8, 00000000(rel) + ud2 # 0079 _ 0F 0B + + +.SECTION .xdata # "a", @progbits # section number 19, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00# 0000 _ .....B.. + + +.SECTION .text # "ax", @progbits # section number 20, code +# Communal section + .ALIGN 16 + +ct_u64_slice_eq: # Function + .type ct_u64_slice_eq, @function + sub rsp, 40 # 0000 _ 48: 83. EC, 28 + mov r10, rdx # 0004 _ 49: 89. D2 + cmp r10, r9 # 0007 _ 4D: 39. CA + jnz $_018 # 000A _ 75, 6B + mov r9, -1 # 000C _ 49: C7. C1, FFFFFFFF + test r10, r10 # 0013 _ 4D: 85. D2 + jz $_017 # 0016 _ 74, 23 + xor r9d, r9d # 0018 _ 45: 31. C9 + xor edx, edx # 001B _ 31. D2 +# Filling space: 0x3 +# Filler type: Multi-byte NOP +# .byte 0x0F, 0x1F, 0x00 + +.ALIGN 8 +$_016: cmp rdx, r10 # 0020 _ 4C: 39. D2 + jnc $_020 # 0023 _ 73, 59 + mov rax, qword [r8+rdx*8] # 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] # 0029 _ 48: 33. 04 D1 + inc rdx # 002D _ 48: FF. C2 + or r9, rax # 0030 _ 49: 09. C1 + cmp rdx, r10 # 0033 _ 4C: 39. D2 + jc $_016 # 0036 _ 72, E8 + not r9 # 0038 _ 49: F7. D1 +$_017: mov rcx, r9 # 003B _ 4C: 89. C9 + shr rcx, 32 # 003E _ 48: C1. E9, 20 + and rcx, r9 # 0042 _ 4C: 21. C9 + mov rax, rcx # 0045 _ 48: 89. C8 + shr rax, 16 # 0048 _ 48: C1. E8, 10 + and rax, rcx # 004C _ 48: 21. C8 + mov rcx, rax # 004F _ 48: 89. C1 + shr rcx, 8 # 0052 _ 48: C1. E9, 08 + and rcx, rax # 0056 _ 48: 21. C1 + mov rax, rcx # 0059 _ 48: 89. C8 + shr rax, 4 # 005C _ 48: C1. E8, 04 + and rax, rcx # 0060 _ 48: 21. C8 + mov rcx, rax # 0063 _ 48: 89. C1 + shr rcx, 2 # 0066 _ 48: C1. E9, 02 + and ecx, eax # 006A _ 21. C1 + mov eax, ecx # 006C _ 89. C8 + shr eax, 1 # 006E _ D1. E8 + and eax, ecx # 0070 _ 21. C8 + and eax, 0x01 # 0072 _ 83. E0, 01 + jmp $_019 # 0075 _ EB, 02 + +$_018: xor eax, eax # 0077 _ 31. C0 +$_019: add rsp, 40 # 0079 _ 48: 83. C4, 28 + ret # 007D _ C3 + .size ct_u64_slice_eq, . - ct_u64_slice_eq # End of function is probably here + +$_020: # Local Function + .type $_020, @function + lea rcx, [panic_bounds_check_loc2691+rip] # 007E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 # 0085 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE# 0088 _ E8, 00000000(rel) + ud2 # 008D _ 0F 0B + + +.SECTION .xdata # "a", @progbits # section number 21, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00# 0000 _ .....B.. + + +.SECTION .text # "ax", @progbits # section number 22, code +# Communal section + .ALIGN 16 + +ct_usize_slice_eq: # Function + .type ct_usize_slice_eq, @function + sub rsp, 40 # 0000 _ 48: 83. EC, 28 + mov r10, rdx # 0004 _ 49: 89. D2 + cmp r10, r9 # 0007 _ 4D: 39. CA + jnz $_023 # 000A _ 75, 6B + mov r9, -1 # 000C _ 49: C7. C1, FFFFFFFF + test r10, r10 # 0013 _ 4D: 85. D2 + jz $_022 # 0016 _ 74, 23 + xor r9d, r9d # 0018 _ 45: 31. C9 + xor edx, edx # 001B _ 31. D2 +# Filling space: 0x3 +# Filler type: Multi-byte NOP +# .byte 0x0F, 0x1F, 0x00 + +.ALIGN 8 +$_021: cmp rdx, r10 # 0020 _ 4C: 39. D2 + jnc $_025 # 0023 _ 73, 59 + mov rax, qword [r8+rdx*8] # 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] # 0029 _ 48: 33. 04 D1 + inc rdx # 002D _ 48: FF. C2 + or r9, rax # 0030 _ 49: 09. C1 + cmp rdx, r10 # 0033 _ 4C: 39. D2 + jc $_021 # 0036 _ 72, E8 + not r9 # 0038 _ 49: F7. D1 +$_022: mov rcx, r9 # 003B _ 4C: 89. C9 + shr rcx, 32 # 003E _ 48: C1. E9, 20 + and rcx, r9 # 0042 _ 4C: 21. C9 + mov rax, rcx # 0045 _ 48: 89. C8 + shr rax, 16 # 0048 _ 48: C1. E8, 10 + and rax, rcx # 004C _ 48: 21. C8 + mov rcx, rax # 004F _ 48: 89. C1 + shr rcx, 8 # 0052 _ 48: C1. E9, 08 + and rcx, rax # 0056 _ 48: 21. C1 + mov rax, rcx # 0059 _ 48: 89. C8 + shr rax, 4 # 005C _ 48: C1. E8, 04 + and rax, rcx # 0060 _ 48: 21. C8 + mov rcx, rax # 0063 _ 48: 89. C1 + shr rcx, 2 # 0066 _ 48: C1. E9, 02 + and ecx, eax # 006A _ 21. C1 + mov eax, ecx # 006C _ 89. C8 + shr eax, 1 # 006E _ D1. E8 + and eax, ecx # 0070 _ 21. C8 + and eax, 0x01 # 0072 _ 83. E0, 01 + jmp $_024 # 0075 _ EB, 02 + +$_023: xor eax, eax # 0077 _ 31. C0 +$_024: add rsp, 40 # 0079 _ 48: 83. C4, 28 + ret # 007D _ C3 + .size ct_usize_slice_eq, . - ct_usize_slice_eq# End of function is probably here + +$_025: # Local Function + .type $_025, @function + lea rcx, [panic_bounds_check_loc2691+rip] # 007E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 # 0085 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE# 0088 _ E8, 00000000(rel) + ud2 # 008D _ 0F 0B + + +.SECTION .xdata # "a", @progbits # section number 23, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00# 0000 _ .....B.. + + +.SECTION .text # "ax", @progbits # section number 24, code +# Communal section + .ALIGN 16 + +ct_select_u8: # Function + .type ct_select_u8, @function + test cl, cl # 0000 _ 84. C9 + cmove edx, r8d # 0002 _ 41: 0F 44. D0 + mov eax, edx # 0006 _ 89. D0 + ret # 0008 _ C3 + .size ct_select_u8, . - ct_select_u8 # End of function is probably here + + +.SECTION .xdata # "a", @progbits # section number 25, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00# 0000 _ ........ + + +.SECTION .text # "ax", @progbits # section number 26, code +# Communal section + .ALIGN 16 + +ct_select_u16: # Function + .type ct_select_u16, @function + test cl, cl # 0000 _ 84. C9 + cmovne r8w, dx # 0002 _ 66 44: 0F 45. C2 + mov eax, r8d # 0007 _ 44: 89. C0 + ret # 000A _ C3 + .size ct_select_u16, . - ct_select_u16 # End of function is probably here + + +.SECTION .xdata # "a", @progbits # section number 27, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00# 0000 _ ........ + + +.SECTION .text # "ax", @progbits # section number 28, code +# Communal section + .ALIGN 16 + +ct_select_u32: # Function + .type ct_select_u32, @function + test cl, cl # 0000 _ 84. C9 + cmove edx, r8d # 0002 _ 41: 0F 44. D0 + mov eax, edx # 0006 _ 89. D0 + ret # 0008 _ C3 + .size ct_select_u32, . - ct_select_u32 # End of function is probably here + + +.SECTION .xdata # "a", @progbits # section number 29, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00# 0000 _ ........ + + +.SECTION .text # "ax", @progbits # section number 30, code +# Communal section + .ALIGN 16 + +ct_select_u64: # Function + .type ct_select_u64, @function + test cl, cl # 0000 _ 84. C9 + cmove rdx, r8 # 0002 _ 49: 0F 44. D0 + mov rax, rdx # 0006 _ 48: 89. D0 + ret # 0009 _ C3 + .size ct_select_u64, . - ct_select_u64 # End of function is probably here + + +.SECTION .xdata # "a", @progbits # section number 31, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00# 0000 _ ........ + + +.SECTION .text # "ax", @progbits # section number 32, code +# Communal section + .ALIGN 16 + +ct_select_usize: # Function + .type ct_select_usize, @function + test cl, cl # 0000 _ 84. C9 + cmove rdx, r8 # 0002 _ 49: 0F 44. D0 + mov rax, rdx # 0006 _ 48: 89. D0 + ret # 0009 _ C3 + .size ct_select_usize, . - ct_select_usize # End of function is probably here + + +.SECTION .xdata # "a", @progbits # section number 33, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00# 0000 _ ........ + + +.SECTION .text # "ax", @progbits # section number 34, code +# Communal section + .ALIGN 16 + +ct_copy_u8: # Function + .type ct_copy_u8, @function + sub rsp, 40 # 0000 _ 48: 83. EC, 28 + mov rax, rdx # 0004 _ 48: 89. D0 + cmp r8, qword [rsp+0x50] # 0007 _ 4C: 3B. 44 24, 50 + jnz $_030 # 000C _ 75, 52 + test r8, r8 # 000E _ 4D: 85. C0 + jz $_028 # 0011 _ 74, 3A + xor edx, edx # 0013 _ 31. D2 + test cl, cl # 0015 _ 84. C9 + jz $_027 # 0017 _ 74, 27 +# Filling space: 0x7 +# Filler type: Multi-byte NOP +# .byte 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00 + +.ALIGN 8 +$_026: cmp rdx, r8 # 0020 _ 4C: 39. C2 + jnc $_029 # 0023 _ 73, 2D + movzx ecx, byte [r9+rdx] # 0025 _ 41: 0F B6. 0C 11 + mov byte [rax+rdx], cl # 002A _ 88. 0C 10 + inc rdx # 002D _ 48: FF. C2 + cmp rdx, r8 # 0030 _ 4C: 39. C2 + jc $_026 # 0033 _ 72, EB + jmp $_028 # 0035 _ EB, 16 + +# Filling space: 0x9 +# Filler type: Multi-byte NOP +# .byte 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00 +# .byte 0x00 + +.ALIGN 16 +$_027: cmp rdx, r8 # 0040 _ 4C: 39. C2 + jnc $_029 # 0043 _ 73, 0D + inc rdx # 0045 _ 48: FF. C2 + cmp rdx, r8 # 0048 _ 4C: 39. C2 + jc $_027 # 004B _ 72, F3 +$_028: add rsp, 40 # 004D _ 48: 83. C4, 28 + ret # 0051 _ C3 + +$_029: lea rcx, [panic_bounds_check_loc2694+rip] # 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE# 0059 _ E8, 00000000(rel) + ud2 # 005E _ 0F 0B + .size ct_copy_u8, . - ct_copy_u8 # End of function is probably here + +$_030: # Local Function + .type $_030, @function + lea rcx, [_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE+rip]# 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE# 0067 _ E8, 00000000(rel) + ud2 # 006C _ 0F 0B + + +.SECTION .xdata # "a", @progbits # section number 35, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00# 0000 _ .....B.. + + +.SECTION .text # "ax", @progbits # section number 36, code +# Communal section + .ALIGN 16 + +ct_copy_u16: # Function + .type ct_copy_u16, @function + sub rsp, 40 # 0000 _ 48: 83. EC, 28 + mov rax, rdx # 0004 _ 48: 89. D0 + cmp r8, qword [rsp+0x50] # 0007 _ 4C: 3B. 44 24, 50 + jnz $_035 # 000C _ 75, 52 + test r8, r8 # 000E _ 4D: 85. C0 + jz $_033 # 0011 _ 74, 3A + xor edx, edx # 0013 _ 31. D2 + test cl, cl # 0015 _ 84. C9 + jz $_032 # 0017 _ 74, 27 +# Filling space: 0x7 +# Filler type: Multi-byte NOP +# .byte 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00 + +.ALIGN 8 +$_031: cmp rdx, r8 # 0020 _ 4C: 39. C2 + jnc $_034 # 0023 _ 73, 2D + movzx ecx, word [r9+rdx*2] # 0025 _ 41: 0F B7. 0C 51 + mov word [rax+rdx*2], cx # 002A _ 66: 89. 0C 50 + inc rdx # 002E _ 48: FF. C2 + cmp rdx, r8 # 0031 _ 4C: 39. C2 + jc $_031 # 0034 _ 72, EA + jmp $_033 # 0036 _ EB, 15 + +# Filling space: 0x8 +# Filler type: Multi-byte NOP +# .byte 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 + +.ALIGN 16 +$_032: cmp rdx, r8 # 0040 _ 4C: 39. C2 + jnc $_034 # 0043 _ 73, 0D + inc rdx # 0045 _ 48: FF. C2 + cmp rdx, r8 # 0048 _ 4C: 39. C2 + jc $_032 # 004B _ 72, F3 +$_033: add rsp, 40 # 004D _ 48: 83. C4, 28 + ret # 0051 _ C3 + +$_034: lea rcx, [panic_bounds_check_loc2694+rip] # 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE# 0059 _ E8, 00000000(rel) + ud2 # 005E _ 0F 0B + .size ct_copy_u16, . - ct_copy_u16 # End of function is probably here + +$_035: # Local Function + .type $_035, @function + lea rcx, [_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E+rip]# 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE# 0067 _ E8, 00000000(rel) + ud2 # 006C _ 0F 0B + + +.SECTION .xdata # "a", @progbits # section number 37, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00# 0000 _ .....B.. + + +.SECTION .text # "ax", @progbits # section number 38, code +# Communal section + .ALIGN 16 + +ct_copy_u32: # Function + .type ct_copy_u32, @function + sub rsp, 40 # 0000 _ 48: 83. EC, 28 + mov rax, rdx # 0004 _ 48: 89. D0 + cmp r8, qword [rsp+0x50] # 0007 _ 4C: 3B. 44 24, 50 + jnz $_040 # 000C _ 75, 52 + test r8, r8 # 000E _ 4D: 85. C0 + jz $_038 # 0011 _ 74, 3A + xor edx, edx # 0013 _ 31. D2 + test cl, cl # 0015 _ 84. C9 + jz $_037 # 0017 _ 74, 27 +# Filling space: 0x7 +# Filler type: Multi-byte NOP +# .byte 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00 + +.ALIGN 8 +$_036: cmp rdx, r8 # 0020 _ 4C: 39. C2 + jnc $_039 # 0023 _ 73, 2D + mov ecx, dword [r9+rdx*4] # 0025 _ 41: 8B. 0C 91 + mov dword [rax+rdx*4], ecx # 0029 _ 89. 0C 90 + inc rdx # 002C _ 48: FF. C2 + cmp rdx, r8 # 002F _ 4C: 39. C2 + jc $_036 # 0032 _ 72, EC + jmp $_038 # 0034 _ EB, 17 + +# Filling space: 0xA +# Filler type: Multi-byte NOP +# .byte 0x66, 0x2E, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00 +# .byte 0x00, 0x00 + +.ALIGN 16 +$_037: cmp rdx, r8 # 0040 _ 4C: 39. C2 + jnc $_039 # 0043 _ 73, 0D + inc rdx # 0045 _ 48: FF. C2 + cmp rdx, r8 # 0048 _ 4C: 39. C2 + jc $_037 # 004B _ 72, F3 +$_038: add rsp, 40 # 004D _ 48: 83. C4, 28 + ret # 0051 _ C3 + +$_039: lea rcx, [panic_bounds_check_loc2694+rip] # 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE# 0059 _ E8, 00000000(rel) + ud2 # 005E _ 0F 0B + .size ct_copy_u32, . - ct_copy_u32 # End of function is probably here + +$_040: # Local Function + .type $_040, @function + lea rcx, [_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E+rip]# 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE# 0067 _ E8, 00000000(rel) + ud2 # 006C _ 0F 0B + + +.SECTION .xdata # "a", @progbits # section number 39, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00# 0000 _ .....B.. + + +.SECTION .text # "ax", @progbits # section number 40, code +# Communal section + .ALIGN 16 + +ct_copy_u64: # Function + .type ct_copy_u64, @function + sub rsp, 40 # 0000 _ 48: 83. EC, 28 + mov rax, rdx # 0004 _ 48: 89. D0 + cmp r8, qword [rsp+0x50] # 0007 _ 4C: 3B. 44 24, 50 + jnz $_045 # 000C _ 75, 52 + test r8, r8 # 000E _ 4D: 85. C0 + jz $_043 # 0011 _ 74, 3A + xor edx, edx # 0013 _ 31. D2 + test cl, cl # 0015 _ 84. C9 + jz $_042 # 0017 _ 74, 27 +# Filling space: 0x7 +# Filler type: Multi-byte NOP +# .byte 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00 + +.ALIGN 8 +$_041: cmp rdx, r8 # 0020 _ 4C: 39. C2 + jnc $_044 # 0023 _ 73, 2D + mov rcx, qword [r9+rdx*8] # 0025 _ 49: 8B. 0C D1 + mov qword [rax+rdx*8], rcx # 0029 _ 48: 89. 0C D0 + inc rdx # 002D _ 48: FF. C2 + cmp rdx, r8 # 0030 _ 4C: 39. C2 + jc $_041 # 0033 _ 72, EB + jmp $_043 # 0035 _ EB, 16 + +# Filling space: 0x9 +# Filler type: Multi-byte NOP +# .byte 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00 +# .byte 0x00 + +.ALIGN 16 +$_042: cmp rdx, r8 # 0040 _ 4C: 39. C2 + jnc $_044 # 0043 _ 73, 0D + inc rdx # 0045 _ 48: FF. C2 + cmp rdx, r8 # 0048 _ 4C: 39. C2 + jc $_042 # 004B _ 72, F3 +$_043: add rsp, 40 # 004D _ 48: 83. C4, 28 + ret # 0051 _ C3 + +$_044: lea rcx, [panic_bounds_check_loc2694+rip] # 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE# 0059 _ E8, 00000000(rel) + ud2 # 005E _ 0F 0B + .size ct_copy_u64, . - ct_copy_u64 # End of function is probably here + +$_045: # Local Function + .type $_045, @function + lea rcx, [_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E+rip]# 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE# 0067 _ E8, 00000000(rel) + ud2 # 006C _ 0F 0B + + +.SECTION .xdata # "a", @progbits # section number 41, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00# 0000 _ .....B.. + + +.SECTION .text # "ax", @progbits # section number 42, code +# Communal section + .ALIGN 16 + +ct_copy_usize: # Function + .type ct_copy_usize, @function + sub rsp, 40 # 0000 _ 48: 83. EC, 28 + mov rax, rdx # 0004 _ 48: 89. D0 + cmp r8, qword [rsp+0x50] # 0007 _ 4C: 3B. 44 24, 50 + jnz $_050 # 000C _ 75, 52 + test r8, r8 # 000E _ 4D: 85. C0 + jz $_048 # 0011 _ 74, 3A + xor edx, edx # 0013 _ 31. D2 + test cl, cl # 0015 _ 84. C9 + jz $_047 # 0017 _ 74, 27 +# Filling space: 0x7 +# Filler type: Multi-byte NOP +# .byte 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00 + +.ALIGN 8 +$_046: cmp rdx, r8 # 0020 _ 4C: 39. C2 + jnc $_049 # 0023 _ 73, 2D + mov rcx, qword [r9+rdx*8] # 0025 _ 49: 8B. 0C D1 + mov qword [rax+rdx*8], rcx # 0029 _ 48: 89. 0C D0 + inc rdx # 002D _ 48: FF. C2 + cmp rdx, r8 # 0030 _ 4C: 39. C2 + jc $_046 # 0033 _ 72, EB + jmp $_048 # 0035 _ EB, 16 + +# Filling space: 0x9 +# Filler type: Multi-byte NOP +# .byte 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00 +# .byte 0x00 + +.ALIGN 16 +$_047: cmp rdx, r8 # 0040 _ 4C: 39. C2 + jnc $_049 # 0043 _ 73, 0D + inc rdx # 0045 _ 48: FF. C2 + cmp rdx, r8 # 0048 _ 4C: 39. C2 + jc $_047 # 004B _ 72, F3 +$_048: add rsp, 40 # 004D _ 48: 83. C4, 28 + ret # 0051 _ C3 + +$_049: lea rcx, [panic_bounds_check_loc2694+rip] # 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE# 0059 _ E8, 00000000(rel) + ud2 # 005E _ 0F 0B + .size ct_copy_usize, . - ct_copy_usize # End of function is probably here + +$_050: # Local Function + .type $_050, @function + lea rcx, [_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE+rip]# 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE# 0067 _ E8, 00000000(rel) + ud2 # 006C _ 0F 0B + + +.SECTION .xdata # "a", @progbits # section number 43, const +# Communal section + .ALIGN 4 + + .byte 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00# 0000 _ .....B.. + + +.SECTION .rdata # "a", @progbits # section number 44, const +# Communal section + .ALIGN 1 + +str2690: # byte + .byte 0x6C, 0x69, 0x62, 0x2E, 0x72, 0x73 # 0000 _ lib.rs + + +.SECTION .rdata # "a", @progbits # section number 45, const +# Communal section + .ALIGN 8 + +panic_bounds_check_loc2691: # byte + .quad str2690 # 0000 _ 0000000000000000 (d) + .quad 0x0000000000000006 # 0008 _ 0000000000000006 + .quad 0x00000000000000C5 # 0010 _ 00000000000000C5 + + +.SECTION .rdata # "a", @progbits # section number 46, const +# Communal section + .ALIGN 8 + +panic_bounds_check_loc2694: # byte + .quad str2690 # 0000 _ 0000000000000000 (d) + .quad 0x0000000000000006 # 0008 _ 0000000000000006 + .quad 0x000000000000012A # 0010 _ 000000000000012A + + +.SECTION .rdata # "a", @progbits # section number 47, const +# Communal section + .ALIGN 16 + +str2695: # byte + .byte 0x43, 0x6F, 0x6E, 0x73, 0x69, 0x73, 0x74, 0x65# 0000 _ Consiste + .byte 0x6E, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x3A# 0008 _ nt Time: + .byte 0x20, 0x41, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74# 0010 _ Attempt + .byte 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F# 0018 _ ed to co + .byte 0x70, 0x79, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65# 0020 _ py betwe + .byte 0x65, 0x6E, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x65# 0028 _ en non-e + .byte 0x71, 0x75, 0x61, 0x6C, 0x20, 0x6C, 0x65, 0x6E# 0030 _ qual len + .byte 0x73 # 0038 _ s + + +.SECTION .rdata # "a", @progbits # section number 48, const +# Communal section + .ALIGN 8 + +_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE: # byte + .quad str2695 # 0000 _ 0000000000000000 (d) + .quad 0x0000000000000039 # 0008 _ 0000000000000039 + .quad str2690 # 0010 _ 0000000000000000 (d) + .quad 0x0000000000000006 # 0018 _ 0000000000000006 + .quad 0x0000000000000144 # 0020 _ 0000000000000144 + + +.SECTION .rdata # "a", @progbits # section number 49, const +# Communal section + .ALIGN 8 + +_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E: # byte + .quad str2695 # 0000 _ 0000000000000000 (d) + .quad 0x0000000000000039 # 0008 _ 0000000000000039 + .quad str2690 # 0010 _ 0000000000000000 (d) + .quad 0x0000000000000006 # 0018 _ 0000000000000006 + .quad 0x0000000000000146 # 0020 _ 0000000000000146 + + +.SECTION .rdata # "a", @progbits # section number 50, const +# Communal section + .ALIGN 8 + +_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E: # byte + .quad str2695 # 0000 _ 0000000000000000 (d) + .quad 0x0000000000000039 # 0008 _ 0000000000000039 + .quad str2690 # 0010 _ 0000000000000000 (d) + .quad 0x0000000000000006 # 0018 _ 0000000000000006 + .quad 0x0000000000000148 # 0020 _ 0000000000000148 + + +.SECTION .rdata # "a", @progbits # section number 51, const +# Communal section + .ALIGN 8 + +_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E: # byte + .quad str2695 # 0000 _ 0000000000000000 (d) + .quad 0x0000000000000039 # 0008 _ 0000000000000039 + .quad str2690 # 0010 _ 0000000000000000 (d) + .quad 0x0000000000000006 # 0018 _ 0000000000000006 + .quad 0x000000000000014A # 0020 _ 000000000000014A + + +.SECTION .rdata # "a", @progbits # section number 52, const +# Communal section + .ALIGN 8 + +_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE: # byte + .quad str2695 # 0000 _ 0000000000000000 (d) + .quad 0x0000000000000039 # 0008 _ 0000000000000039 + .quad str2690 # 0010 _ 0000000000000000 (d) + .quad 0x0000000000000006 # 0018 _ 0000000000000006 + .quad 0x000000000000014C # 0020 _ 000000000000014C + + +# Return to AT&T syntax with destination operand last: +.att_syntax prefix diff --git a/audit_x64_msvc_LEGACY/lib_x64_msvc.masm b/audit_x64_msvc_LEGACY/lib_x64_msvc.masm new file mode 100644 index 0000000..87fd353 --- /dev/null +++ b/audit_x64_msvc_LEGACY/lib_x64_msvc.masm @@ -0,0 +1,1037 @@ +; Disassembly of file: lib.o +; Fri Dec 09 19:48:19 2016 +; Mode: 64 bits +; Syntax: MASM/ML64 +; Instruction set: Pentium Pro, x64 +option dotname + +public ct_u8_eq +public ct_u16_eq +public ct_u32_eq +public ct_u64_eq +public ct_usize_eq +public ct_u8_slice_eq +public ct_u16_slice_eq +public ct_u32_slice_eq +public ct_u64_slice_eq +public ct_usize_slice_eq +public ct_select_u8 +public ct_select_u16 +public ct_select_u32 +public ct_select_u64 +public ct_select_usize +public ct_copy_u8 +public ct_copy_u16 +public ct_copy_u32 +public ct_copy_u64 +public ct_copy_usize + +extern _ZN4core9panicking5panic17h53676c30b3bd95ebE: near +extern _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE: near + + +_text SEGMENT DWORD 'CODE' ; section number 1 + +_text ENDS + +_data SEGMENT DWORD 'DATA' ; section number 2 + +_data ENDS + +.bss SEGMENT DWORD 'BSS' ; section number 3 + +.bss ENDS + +_text SEGMENT PARA 'CODE' ; section number 4 +; Communal section not supported by MASM + +ct_u8_eq PROC + xor ecx, edx ; 0000 _ 31. D1 + not cl ; 0002 _ F6. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr al, 4 ; 0006 _ C0. E8, 04 + and al, cl ; 0009 _ 20. C8 + mov ecx, eax ; 000B _ 89. C1 + shr cl, 2 ; 000D _ C0. E9, 02 + and cl, al ; 0010 _ 20. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr al, 1 ; 0014 _ D0. E8 + and al, cl ; 0016 _ 20. C8 + ret ; 0018 _ C3 +ct_u8_eq ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 5 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 6 +; Communal section not supported by MASM + +ct_u16_eq PROC + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + movzx eax, ch ; 0004 _ 0F B6. C5 + and eax, ecx ; 0007 _ 21. C8 + mov ecx, eax ; 0009 _ 89. C1 + and ecx, 0F0H ; 000B _ 81. E1, 000000F0 + shr ecx, 4 ; 0011 _ C1. E9, 04 + and ecx, eax ; 0014 _ 21. C1 + mov edx, ecx ; 0016 _ 89. CA + and edx, 0CH ; 0018 _ 83. E2, 0C + shr edx, 2 ; 001B _ C1. EA, 02 + and edx, ecx ; 001E _ 21. CA + mov eax, edx ; 0020 _ 89. D0 + and eax, 0EH ; 0022 _ 83. E0, 0E + shr eax, 1 ; 0025 _ D1. E8 + and eax, edx ; 0027 _ 21. D0 + and eax, 01H ; 0029 _ 83. E0, 01 + ret ; 002C _ C3 +ct_u16_eq ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 7 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 8 +; Communal section not supported by MASM + +ct_u32_eq PROC + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr eax, 16 ; 0006 _ C1. E8, 10 + and eax, ecx ; 0009 _ 21. C8 + mov ecx, eax ; 000B _ 89. C1 + shr ecx, 8 ; 000D _ C1. E9, 08 + and ecx, eax ; 0010 _ 21. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr eax, 4 ; 0014 _ C1. E8, 04 + and eax, ecx ; 0017 _ 21. C8 + mov ecx, eax ; 0019 _ 89. C1 + shr ecx, 2 ; 001B _ C1. E9, 02 + and ecx, eax ; 001E _ 21. C1 + mov eax, ecx ; 0020 _ 89. C8 + shr eax, 1 ; 0022 _ D1. E8 + and eax, ecx ; 0024 _ 21. C8 + and eax, 01H ; 0026 _ 83. E0, 01 + ret ; 0029 _ C3 +ct_u32_eq ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 9 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 10 +; Communal section not supported by MASM + +ct_u64_eq PROC + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +ct_u64_eq ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 11 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 12 +; Communal section not supported by MASM + +ct_usize_eq PROC + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +ct_usize_eq ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 13 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 14 +; Communal section not supported by MASM + +ct_u8_slice_eq PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_003 ; 000A _ 75, 4A + mov r9b, -1 ; 000C _ 41: B1, FF + test r10, r10 ; 000F _ 4D: 85. D2 + jz ?_002 ; 0012 _ 74, 27 + xor r9d, r9d ; 0014 _ 45: 31. C9 + xor edx, edx ; 0017 _ 31. D2 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_001: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_005 ; 0023 _ 73, 38 + movzx eax, byte ptr [r8+rdx] ; 0025 _ 41: 0F B6. 04 10 + xor al, byte ptr [rcx+rdx] ; 002A _ 32. 04 11 + inc rdx ; 002D _ 48: FF. C2 + or r9b, al ; 0030 _ 41: 08. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_001 ; 0036 _ 72, E8 + not r9b ; 0038 _ 41: F6. D1 +?_002: mov ecx, r9d ; 003B _ 44: 89. C9 + shr cl, 4 ; 003E _ C0. E9, 04 + and cl, r9b ; 0041 _ 44: 20. C9 + mov eax, ecx ; 0044 _ 89. C8 + shr al, 2 ; 0046 _ C0. E8, 02 + and al, cl ; 0049 _ 20. C8 + mov ecx, eax ; 004B _ 89. C1 + shr cl, 1 ; 004D _ D0. E9 + test cl, al ; 004F _ 84. C1 + setne al ; 0051 _ 0F 95. C0 + jmp ?_004 ; 0054 _ EB, 02 + +?_003: xor eax, eax ; 0056 _ 31. C0 +?_004: add rsp, 40 ; 0058 _ 48: 83. C4, 28 + ret ; 005C _ C3 +ct_u8_slice_eq ENDP + +?_005 LABEL NEAR + lea rcx, ptr [panic_bounds_check_loc2691] ; 005D _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0064 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 15 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 16 +; Communal section not supported by MASM + +ct_u16_slice_eq PROC + push rbx ; 0000 _ 53 + sub rsp, 32 ; 0001 _ 48: 83. EC, 20 + mov r10, rdx ; 0005 _ 49: 89. D2 + cmp r10, r9 ; 0008 _ 4D: 39. CA + jnz ?_008 ; 000B _ 75, 57 +; Note: Length-changing prefix causes delay on Intel processors + mov bx, 65535 ; 000D _ 66: BB, FFFF + test r10, r10 ; 0011 _ 4D: 85. D2 + jz ?_007 ; 0014 _ 74, 24 + xor ebx, ebx ; 0016 _ 31. DB + xor edx, edx ; 0018 _ 31. D2 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_006: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_010 ; 0023 _ 73, 47 + mov ax, word ptr [r8+rdx*2] ; 0025 _ 66 41: 8B. 04 50 + xor ax, word ptr [rcx+rdx*2] ; 002A _ 66: 33. 04 51 + inc rdx ; 002E _ 48: FF. C2 + or ebx, eax ; 0031 _ 09. C3 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_006 ; 0036 _ 72, E8 + not ebx ; 0038 _ F7. D3 +?_007: movzx eax, bh ; 003A _ 0F B6. C7 + and eax, ebx ; 003D _ 21. D8 + mov ecx, eax ; 003F _ 89. C1 + and ecx, 0F0H ; 0041 _ 81. E1, 000000F0 + shr ecx, 4 ; 0047 _ C1. E9, 04 + and ecx, eax ; 004A _ 21. C1 + mov edx, ecx ; 004C _ 89. CA + and edx, 0CH ; 004E _ 83. E2, 0C + shr edx, 2 ; 0051 _ C1. EA, 02 + and edx, ecx ; 0054 _ 21. CA + mov eax, edx ; 0056 _ 89. D0 + and eax, 0EH ; 0058 _ 83. E0, 0E + shr eax, 1 ; 005B _ D1. E8 + and eax, edx ; 005D _ 21. D0 + and eax, 01H ; 005F _ 83. E0, 01 + jmp ?_009 ; 0062 _ EB, 02 + +?_008: xor eax, eax ; 0064 _ 31. C0 +?_009: add rsp, 32 ; 0066 _ 48: 83. C4, 20 + pop rbx ; 006A _ 5B + ret ; 006B _ C3 +ct_u16_slice_eq ENDP + +?_010 LABEL NEAR + lea rcx, ptr [panic_bounds_check_loc2691] ; 006C _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0073 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0076 _ E8, 00000000(rel) + ud2 ; 007B _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 17 +; Communal section not supported by MASM + + db 01H, 05H, 02H, 00H, 05H, 32H, 01H, 30H ; 0000 _ .....2.0 + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 18 +; Communal section not supported by MASM + +ct_u32_slice_eq PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_013 ; 000A _ 75, 57 + mov r9d, 4294967295 ; 000C _ 41: B9, FFFFFFFF + test r10, r10 ; 0012 _ 4D: 85. D2 + jz ?_012 ; 0015 _ 74, 23 + xor r9d, r9d ; 0017 _ 45: 31. C9 + xor edx, edx ; 001A _ 31. D2 +; Filling space: 4H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 40H, 00H + +ALIGN 8 +?_011: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_015 ; 0023 _ 73, 45 + mov eax, dword ptr [r8+rdx*4] ; 0025 _ 41: 8B. 04 90 + xor eax, dword ptr [rcx+rdx*4] ; 0029 _ 33. 04 91 + inc rdx ; 002C _ 48: FF. C2 + or r9d, eax ; 002F _ 41: 09. C1 + cmp rdx, r10 ; 0032 _ 4C: 39. D2 + jc ?_011 ; 0035 _ 72, E9 + not r9d ; 0037 _ 41: F7. D1 +?_012: mov ecx, r9d ; 003A _ 44: 89. C9 + shr ecx, 16 ; 003D _ C1. E9, 10 + and ecx, r9d ; 0040 _ 44: 21. C9 + mov eax, ecx ; 0043 _ 89. C8 + shr eax, 8 ; 0045 _ C1. E8, 08 + and eax, ecx ; 0048 _ 21. C8 + mov ecx, eax ; 004A _ 89. C1 + shr ecx, 4 ; 004C _ C1. E9, 04 + and ecx, eax ; 004F _ 21. C1 + mov edx, ecx ; 0051 _ 89. CA + shr edx, 2 ; 0053 _ C1. EA, 02 + and edx, ecx ; 0056 _ 21. CA + mov eax, edx ; 0058 _ 89. D0 + shr eax, 1 ; 005A _ D1. E8 + and eax, edx ; 005C _ 21. D0 + and eax, 01H ; 005E _ 83. E0, 01 + jmp ?_014 ; 0061 _ EB, 02 + +?_013: xor eax, eax ; 0063 _ 31. C0 +?_014: add rsp, 40 ; 0065 _ 48: 83. C4, 28 + ret ; 0069 _ C3 +ct_u32_slice_eq ENDP + +?_015 LABEL NEAR + lea rcx, ptr [panic_bounds_check_loc2691] ; 006A _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0071 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0074 _ E8, 00000000(rel) + ud2 ; 0079 _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 19 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 20 +; Communal section not supported by MASM + +ct_u64_slice_eq PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_018 ; 000A _ 75, 6B + mov r9, -1 ; 000C _ 49: C7. C1, FFFFFFFF + test r10, r10 ; 0013 _ 4D: 85. D2 + jz ?_017 ; 0016 _ 74, 23 + xor r9d, r9d ; 0018 _ 45: 31. C9 + xor edx, edx ; 001B _ 31. D2 +; Filling space: 3H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 00H + +ALIGN 8 +?_016: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_020 ; 0023 _ 73, 59 + mov rax, qword ptr [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword ptr [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or r9, rax ; 0030 _ 49: 09. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_016 ; 0036 _ 72, E8 + not r9 ; 0038 _ 49: F7. D1 +?_017: mov rcx, r9 ; 003B _ 4C: 89. C9 + shr rcx, 32 ; 003E _ 48: C1. E9, 20 + and rcx, r9 ; 0042 _ 4C: 21. C9 + mov rax, rcx ; 0045 _ 48: 89. C8 + shr rax, 16 ; 0048 _ 48: C1. E8, 10 + and rax, rcx ; 004C _ 48: 21. C8 + mov rcx, rax ; 004F _ 48: 89. C1 + shr rcx, 8 ; 0052 _ 48: C1. E9, 08 + and rcx, rax ; 0056 _ 48: 21. C1 + mov rax, rcx ; 0059 _ 48: 89. C8 + shr rax, 4 ; 005C _ 48: C1. E8, 04 + and rax, rcx ; 0060 _ 48: 21. C8 + mov rcx, rax ; 0063 _ 48: 89. C1 + shr rcx, 2 ; 0066 _ 48: C1. E9, 02 + and ecx, eax ; 006A _ 21. C1 + mov eax, ecx ; 006C _ 89. C8 + shr eax, 1 ; 006E _ D1. E8 + and eax, ecx ; 0070 _ 21. C8 + and eax, 01H ; 0072 _ 83. E0, 01 + jmp ?_019 ; 0075 _ EB, 02 + +?_018: xor eax, eax ; 0077 _ 31. C0 +?_019: add rsp, 40 ; 0079 _ 48: 83. C4, 28 + ret ; 007D _ C3 +ct_u64_slice_eq ENDP + +?_020 LABEL NEAR + lea rcx, ptr [panic_bounds_check_loc2691] ; 007E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0085 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0088 _ E8, 00000000(rel) + ud2 ; 008D _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 21 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 22 +; Communal section not supported by MASM + +ct_usize_slice_eq PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_023 ; 000A _ 75, 6B + mov r9, -1 ; 000C _ 49: C7. C1, FFFFFFFF + test r10, r10 ; 0013 _ 4D: 85. D2 + jz ?_022 ; 0016 _ 74, 23 + xor r9d, r9d ; 0018 _ 45: 31. C9 + xor edx, edx ; 001B _ 31. D2 +; Filling space: 3H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 00H + +ALIGN 8 +?_021: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_025 ; 0023 _ 73, 59 + mov rax, qword ptr [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword ptr [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or r9, rax ; 0030 _ 49: 09. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_021 ; 0036 _ 72, E8 + not r9 ; 0038 _ 49: F7. D1 +?_022: mov rcx, r9 ; 003B _ 4C: 89. C9 + shr rcx, 32 ; 003E _ 48: C1. E9, 20 + and rcx, r9 ; 0042 _ 4C: 21. C9 + mov rax, rcx ; 0045 _ 48: 89. C8 + shr rax, 16 ; 0048 _ 48: C1. E8, 10 + and rax, rcx ; 004C _ 48: 21. C8 + mov rcx, rax ; 004F _ 48: 89. C1 + shr rcx, 8 ; 0052 _ 48: C1. E9, 08 + and rcx, rax ; 0056 _ 48: 21. C1 + mov rax, rcx ; 0059 _ 48: 89. C8 + shr rax, 4 ; 005C _ 48: C1. E8, 04 + and rax, rcx ; 0060 _ 48: 21. C8 + mov rcx, rax ; 0063 _ 48: 89. C1 + shr rcx, 2 ; 0066 _ 48: C1. E9, 02 + and ecx, eax ; 006A _ 21. C1 + mov eax, ecx ; 006C _ 89. C8 + shr eax, 1 ; 006E _ D1. E8 + and eax, ecx ; 0070 _ 21. C8 + and eax, 01H ; 0072 _ 83. E0, 01 + jmp ?_024 ; 0075 _ EB, 02 + +?_023: xor eax, eax ; 0077 _ 31. C0 +?_024: add rsp, 40 ; 0079 _ 48: 83. C4, 28 + ret ; 007D _ C3 +ct_usize_slice_eq ENDP + +?_025 LABEL NEAR + lea rcx, ptr [panic_bounds_check_loc2691] ; 007E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0085 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0088 _ E8, 00000000(rel) + ud2 ; 008D _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 23 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 24 +; Communal section not supported by MASM + +ct_select_u8 PROC + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +ct_select_u8 ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 25 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 26 +; Communal section not supported by MASM + +ct_select_u16 PROC + test cl, cl ; 0000 _ 84. C9 + cmovne r8w, dx ; 0002 _ 66 44: 0F 45. C2 + mov eax, r8d ; 0007 _ 44: 89. C0 + ret ; 000A _ C3 +ct_select_u16 ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 27 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 28 +; Communal section not supported by MASM + +ct_select_u32 PROC + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +ct_select_u32 ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 29 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 30 +; Communal section not supported by MASM + +ct_select_u64 PROC + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +ct_select_u64 ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 31 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 32 +; Communal section not supported by MASM + +ct_select_usize PROC + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +ct_select_usize ENDP + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 33 +; Communal section not supported by MASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 34 +; Communal section not supported by MASM + +ct_copy_u8 PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword ptr [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_030 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_028 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_027 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_026: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_029 ; 0023 _ 73, 2D + movzx ecx, byte ptr [r9+rdx] ; 0025 _ 41: 0F B6. 0C 11 + mov byte ptr [rax+rdx], cl ; 002A _ 88. 0C 10 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_026 ; 0033 _ 72, EB + jmp ?_028 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_027: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_029 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_027 ; 004B _ 72, F3 +?_028: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_029: lea rcx, ptr [panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +ct_copy_u8 ENDP + +?_030 LABEL NEAR + lea rcx, ptr [_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 35 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 36 +; Communal section not supported by MASM + +ct_copy_u16 PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword ptr [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_035 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_033 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_032 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_031: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_034 ; 0023 _ 73, 2D + movzx ecx, word ptr [r9+rdx*2] ; 0025 _ 41: 0F B7. 0C 51 + mov word ptr [rax+rdx*2], cx ; 002A _ 66: 89. 0C 50 + inc rdx ; 002E _ 48: FF. C2 + cmp rdx, r8 ; 0031 _ 4C: 39. C2 + jc ?_031 ; 0034 _ 72, EA + jmp ?_033 ; 0036 _ EB, 15 + +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_032: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_034 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_032 ; 004B _ 72, F3 +?_033: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_034: lea rcx, ptr [panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +ct_copy_u16 ENDP + +?_035 LABEL NEAR + lea rcx, ptr [_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 37 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 38 +; Communal section not supported by MASM + +ct_copy_u32 PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword ptr [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_040 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_038 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_037 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_036: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_039 ; 0023 _ 73, 2D + mov ecx, dword ptr [r9+rdx*4] ; 0025 _ 41: 8B. 0C 91 + mov dword ptr [rax+rdx*4], ecx ; 0029 _ 89. 0C 90 + inc rdx ; 002C _ 48: FF. C2 + cmp rdx, r8 ; 002F _ 4C: 39. C2 + jc ?_036 ; 0032 _ 72, EC + jmp ?_038 ; 0034 _ EB, 17 + +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_037: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_039 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_037 ; 004B _ 72, F3 +?_038: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_039: lea rcx, ptr [panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +ct_copy_u32 ENDP + +?_040 LABEL NEAR + lea rcx, ptr [_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 39 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 40 +; Communal section not supported by MASM + +ct_copy_u64 PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword ptr [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_045 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_043 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_042 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_041: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_044 ; 0023 _ 73, 2D + mov rcx, qword ptr [r9+rdx*8] ; 0025 _ 49: 8B. 0C D1 + mov qword ptr [rax+rdx*8], rcx ; 0029 _ 48: 89. 0C D0 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_041 ; 0033 _ 72, EB + jmp ?_043 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_042: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_044 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_042 ; 004B _ 72, F3 +?_043: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_044: lea rcx, ptr [panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +ct_copy_u64 ENDP + +?_045 LABEL NEAR + lea rcx, ptr [_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 41 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +_text SEGMENT PARA 'CODE' ; section number 42 +; Communal section not supported by MASM + +ct_copy_usize PROC + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword ptr [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_050 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_048 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_047 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_046: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_049 ; 0023 _ 73, 2D + mov rcx, qword ptr [r9+rdx*8] ; 0025 _ 49: 8B. 0C D1 + mov qword ptr [rax+rdx*8], rcx ; 0029 _ 48: 89. 0C D0 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_046 ; 0033 _ 72, EB + jmp ?_048 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_047: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_049 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_047 ; 004B _ 72, F3 +?_048: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_049: lea rcx, ptr [panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +ct_copy_usize ENDP + +?_050 LABEL NEAR + lea rcx, ptr [_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + +_text ENDS + +.xdata SEGMENT DWORD 'CONST' ; section number 43 +; Communal section not supported by MASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + +.xdata ENDS + +.rdata SEGMENT BYTE 'CONST' ; section number 44 +; Communal section not supported by MASM + +str2690 label byte + db 6CH, 69H, 62H, 2EH, 72H, 73H ; 0000 _ lib.rs + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 45 +; Communal section not supported by MASM + +panic_bounds_check_loc2691 label byte + dq str2690 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 00000000000000C5H ; 0010 _ 00000000000000C5 + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 46 +; Communal section not supported by MASM + +panic_bounds_check_loc2694 label byte + dq str2690 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 000000000000012AH ; 0010 _ 000000000000012A + +.rdata ENDS + +.rdata SEGMENT PARA 'CONST' ; section number 47 +; Communal section not supported by MASM + +str2695 label byte + db 43H, 6FH, 6EH, 73H, 69H, 73H, 74H, 65H ; 0000 _ Consiste + db 6EH, 74H, 20H, 54H, 69H, 6DH, 65H, 3AH ; 0008 _ nt Time: + db 20H, 41H, 74H, 74H, 65H, 6DH, 70H, 74H ; 0010 _ Attempt + db 65H, 64H, 20H, 74H, 6FH, 20H, 63H, 6FH ; 0018 _ ed to co + db 70H, 79H, 20H, 62H, 65H, 74H, 77H, 65H ; 0020 _ py betwe + db 65H, 6EH, 20H, 6EH, 6FH, 6EH, 2DH, 65H ; 0028 _ en non-e + db 71H, 75H, 61H, 6CH, 20H, 6CH, 65H, 6EH ; 0030 _ qual len + db 73H ; 0038 _ s + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 48 +; Communal section not supported by MASM + +_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE label byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000144H ; 0020 _ 0000000000000144 + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 49 +; Communal section not supported by MASM + +_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E label byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000146H ; 0020 _ 0000000000000146 + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 50 +; Communal section not supported by MASM + +_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E label byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000148H ; 0020 _ 0000000000000148 + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 51 +; Communal section not supported by MASM + +_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E label byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014AH ; 0020 _ 000000000000014A + +.rdata ENDS + +.rdata SEGMENT ALIGN(8) 'CONST' ; section number 52 +; Communal section not supported by MASM + +_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE label byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014CH ; 0020 _ 000000000000014C + +.rdata ENDS + +END \ No newline at end of file diff --git a/audit_x64_msvc_LEGACY/lib_x64_msvc.nasm b/audit_x64_msvc_LEGACY/lib_x64_msvc.nasm new file mode 100644 index 0000000..c294606 --- /dev/null +++ b/audit_x64_msvc_LEGACY/lib_x64_msvc.nasm @@ -0,0 +1,985 @@ +; Disassembly of file: lib.o +; Fri Dec 09 19:48:25 2016 +; Mode: 64 bits +; Syntax: YASM/NASM +; Instruction set: Pentium Pro, x64 + +default rel + +global ct_u8_eq: function +global ct_u16_eq: function +global ct_u32_eq: function +global ct_u64_eq: function +global ct_usize_eq: function +global ct_u8_slice_eq: function +global ct_u16_slice_eq: function +global ct_u32_slice_eq: function +global ct_u64_slice_eq: function +global ct_usize_slice_eq: function +global ct_select_u8: function +global ct_select_u16: function +global ct_select_u32: function +global ct_select_u64: function +global ct_select_usize: function +global ct_copy_u8: function +global ct_copy_u16: function +global ct_copy_u32: function +global ct_copy_u64: function +global ct_copy_usize: function + +extern _ZN4core9panicking5panic17h53676c30b3bd95ebE ; near +extern _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE ; near + + +SECTION .text align=4 execute ; section number 1, code + + +SECTION .data align=4 noexecute ; section number 2, data + + +SECTION .bss align=4 noexecute ; section number 3, bss + + +SECTION .text align=16 execute ; section number 4, code +; Communal section not supported by YASM + +ct_u8_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not cl ; 0002 _ F6. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr al, 4 ; 0006 _ C0. E8, 04 + and al, cl ; 0009 _ 20. C8 + mov ecx, eax ; 000B _ 89. C1 + shr cl, 2 ; 000D _ C0. E9, 02 + and cl, al ; 0010 _ 20. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr al, 1 ; 0014 _ D0. E8 + and al, cl ; 0016 _ 20. C8 + ret ; 0018 _ C3 +; ct_u8_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 5, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 6, code +; Communal section not supported by YASM + +ct_u16_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + movzx eax, ch ; 0004 _ 0F B6. C5 + and eax, ecx ; 0007 _ 21. C8 + mov ecx, eax ; 0009 _ 89. C1 + and ecx, 0F0H ; 000B _ 81. E1, 000000F0 + shr ecx, 4 ; 0011 _ C1. E9, 04 + and ecx, eax ; 0014 _ 21. C1 + mov edx, ecx ; 0016 _ 89. CA + and edx, 0CH ; 0018 _ 83. E2, 0C + shr edx, 2 ; 001B _ C1. EA, 02 + and edx, ecx ; 001E _ 21. CA + mov eax, edx ; 0020 _ 89. D0 + and eax, 0EH ; 0022 _ 83. E0, 0E + shr eax, 1 ; 0025 _ D1. E8 + and eax, edx ; 0027 _ 21. D0 + and eax, 01H ; 0029 _ 83. E0, 01 + ret ; 002C _ C3 +; ct_u16_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 7, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 8, code +; Communal section not supported by YASM + +ct_u32_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr eax, 16 ; 0006 _ C1. E8, 10 + and eax, ecx ; 0009 _ 21. C8 + mov ecx, eax ; 000B _ 89. C1 + shr ecx, 8 ; 000D _ C1. E9, 08 + and ecx, eax ; 0010 _ 21. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr eax, 4 ; 0014 _ C1. E8, 04 + and eax, ecx ; 0017 _ 21. C8 + mov ecx, eax ; 0019 _ 89. C1 + shr ecx, 2 ; 001B _ C1. E9, 02 + and ecx, eax ; 001E _ 21. C1 + mov eax, ecx ; 0020 _ 89. C8 + shr eax, 1 ; 0022 _ D1. E8 + and eax, ecx ; 0024 _ 21. C8 + and eax, 01H ; 0026 _ 83. E0, 01 + ret ; 0029 _ C3 +; ct_u32_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 9, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 10, code +; Communal section not supported by YASM + +ct_u64_eq:; Function begin + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +; ct_u64_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 11, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 12, code +; Communal section not supported by YASM + +ct_usize_eq:; Function begin + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +; ct_usize_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 13, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 14, code +; Communal section not supported by YASM + +ct_u8_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_003 ; 000A _ 75, 4A + mov r9b, -1 ; 000C _ 41: B1, FF + test r10, r10 ; 000F _ 4D: 85. D2 + jz ?_002 ; 0012 _ 74, 27 + xor r9d, r9d ; 0014 _ 45: 31. C9 + xor edx, edx ; 0017 _ 31. D2 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_001: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_005 ; 0023 _ 73, 38 + movzx eax, byte [r8+rdx] ; 0025 _ 41: 0F B6. 04 10 + xor al, byte [rcx+rdx] ; 002A _ 32. 04 11 + inc rdx ; 002D _ 48: FF. C2 + or r9b, al ; 0030 _ 41: 08. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_001 ; 0036 _ 72, E8 + not r9b ; 0038 _ 41: F6. D1 +?_002: mov ecx, r9d ; 003B _ 44: 89. C9 + shr cl, 4 ; 003E _ C0. E9, 04 + and cl, r9b ; 0041 _ 44: 20. C9 + mov eax, ecx ; 0044 _ 89. C8 + shr al, 2 ; 0046 _ C0. E8, 02 + and al, cl ; 0049 _ 20. C8 + mov ecx, eax ; 004B _ 89. C1 + shr cl, 1 ; 004D _ D0. E9 + test cl, al ; 004F _ 84. C1 + setne al ; 0051 _ 0F 95. C0 + jmp ?_004 ; 0054 _ EB, 02 + +?_003: xor eax, eax ; 0056 _ 31. C0 +?_004: add rsp, 40 ; 0058 _ 48: 83. C4, 28 + ret ; 005C _ C3 +; ct_u8_slice_eq End of function + +?_005: ; Local function + lea rcx, [rel panic_bounds_check_loc2691] ; 005D _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0064 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 15, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 16, code +; Communal section not supported by YASM + +ct_u16_slice_eq:; Function begin + push rbx ; 0000 _ 53 + sub rsp, 32 ; 0001 _ 48: 83. EC, 20 + mov r10, rdx ; 0005 _ 49: 89. D2 + cmp r10, r9 ; 0008 _ 4D: 39. CA + jnz ?_008 ; 000B _ 75, 57 +; Note: Length-changing prefix causes delay on Intel processors + mov bx, 65535 ; 000D _ 66: BB, FFFF + test r10, r10 ; 0011 _ 4D: 85. D2 + jz ?_007 ; 0014 _ 74, 24 + xor ebx, ebx ; 0016 _ 31. DB + xor edx, edx ; 0018 _ 31. D2 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_006: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_010 ; 0023 _ 73, 47 + mov ax, word [r8+rdx*2] ; 0025 _ 66 41: 8B. 04 50 + xor ax, word [rcx+rdx*2] ; 002A _ 66: 33. 04 51 + inc rdx ; 002E _ 48: FF. C2 + or ebx, eax ; 0031 _ 09. C3 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_006 ; 0036 _ 72, E8 + not ebx ; 0038 _ F7. D3 +?_007: movzx eax, bh ; 003A _ 0F B6. C7 + and eax, ebx ; 003D _ 21. D8 + mov ecx, eax ; 003F _ 89. C1 + and ecx, 0F0H ; 0041 _ 81. E1, 000000F0 + shr ecx, 4 ; 0047 _ C1. E9, 04 + and ecx, eax ; 004A _ 21. C1 + mov edx, ecx ; 004C _ 89. CA + and edx, 0CH ; 004E _ 83. E2, 0C + shr edx, 2 ; 0051 _ C1. EA, 02 + and edx, ecx ; 0054 _ 21. CA + mov eax, edx ; 0056 _ 89. D0 + and eax, 0EH ; 0058 _ 83. E0, 0E + shr eax, 1 ; 005B _ D1. E8 + and eax, edx ; 005D _ 21. D0 + and eax, 01H ; 005F _ 83. E0, 01 + jmp ?_009 ; 0062 _ EB, 02 + +?_008: xor eax, eax ; 0064 _ 31. C0 +?_009: add rsp, 32 ; 0066 _ 48: 83. C4, 20 + pop rbx ; 006A _ 5B + ret ; 006B _ C3 +; ct_u16_slice_eq End of function + +?_010: ; Local function + lea rcx, [rel panic_bounds_check_loc2691] ; 006C _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0073 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0076 _ E8, 00000000(rel) + ud2 ; 007B _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 17, const +; Communal section not supported by YASM + + db 01H, 05H, 02H, 00H, 05H, 32H, 01H, 30H ; 0000 _ .....2.0 + + +SECTION .text align=16 execute ; section number 18, code +; Communal section not supported by YASM + +ct_u32_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_013 ; 000A _ 75, 57 + mov r9d, 4294967295 ; 000C _ 41: B9, FFFFFFFF + test r10, r10 ; 0012 _ 4D: 85. D2 + jz ?_012 ; 0015 _ 74, 23 + xor r9d, r9d ; 0017 _ 45: 31. C9 + xor edx, edx ; 001A _ 31. D2 +; Filling space: 4H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 40H, 00H + +ALIGN 8 +?_011: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_015 ; 0023 _ 73, 45 + mov eax, dword [r8+rdx*4] ; 0025 _ 41: 8B. 04 90 + xor eax, dword [rcx+rdx*4] ; 0029 _ 33. 04 91 + inc rdx ; 002C _ 48: FF. C2 + or r9d, eax ; 002F _ 41: 09. C1 + cmp rdx, r10 ; 0032 _ 4C: 39. D2 + jc ?_011 ; 0035 _ 72, E9 + not r9d ; 0037 _ 41: F7. D1 +?_012: mov ecx, r9d ; 003A _ 44: 89. C9 + shr ecx, 16 ; 003D _ C1. E9, 10 + and ecx, r9d ; 0040 _ 44: 21. C9 + mov eax, ecx ; 0043 _ 89. C8 + shr eax, 8 ; 0045 _ C1. E8, 08 + and eax, ecx ; 0048 _ 21. C8 + mov ecx, eax ; 004A _ 89. C1 + shr ecx, 4 ; 004C _ C1. E9, 04 + and ecx, eax ; 004F _ 21. C1 + mov edx, ecx ; 0051 _ 89. CA + shr edx, 2 ; 0053 _ C1. EA, 02 + and edx, ecx ; 0056 _ 21. CA + mov eax, edx ; 0058 _ 89. D0 + shr eax, 1 ; 005A _ D1. E8 + and eax, edx ; 005C _ 21. D0 + and eax, 01H ; 005E _ 83. E0, 01 + jmp ?_014 ; 0061 _ EB, 02 + +?_013: xor eax, eax ; 0063 _ 31. C0 +?_014: add rsp, 40 ; 0065 _ 48: 83. C4, 28 + ret ; 0069 _ C3 +; ct_u32_slice_eq End of function + +?_015: ; Local function + lea rcx, [rel panic_bounds_check_loc2691] ; 006A _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0071 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0074 _ E8, 00000000(rel) + ud2 ; 0079 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 19, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 20, code +; Communal section not supported by YASM + +ct_u64_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_018 ; 000A _ 75, 6B + mov r9, -1 ; 000C _ 49: C7. C1, FFFFFFFF + test r10, r10 ; 0013 _ 4D: 85. D2 + jz ?_017 ; 0016 _ 74, 23 + xor r9d, r9d ; 0018 _ 45: 31. C9 + xor edx, edx ; 001B _ 31. D2 +; Filling space: 3H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 00H + +ALIGN 8 +?_016: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_020 ; 0023 _ 73, 59 + mov rax, qword [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or r9, rax ; 0030 _ 49: 09. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_016 ; 0036 _ 72, E8 + not r9 ; 0038 _ 49: F7. D1 +?_017: mov rcx, r9 ; 003B _ 4C: 89. C9 + shr rcx, 32 ; 003E _ 48: C1. E9, 20 + and rcx, r9 ; 0042 _ 4C: 21. C9 + mov rax, rcx ; 0045 _ 48: 89. C8 + shr rax, 16 ; 0048 _ 48: C1. E8, 10 + and rax, rcx ; 004C _ 48: 21. C8 + mov rcx, rax ; 004F _ 48: 89. C1 + shr rcx, 8 ; 0052 _ 48: C1. E9, 08 + and rcx, rax ; 0056 _ 48: 21. C1 + mov rax, rcx ; 0059 _ 48: 89. C8 + shr rax, 4 ; 005C _ 48: C1. E8, 04 + and rax, rcx ; 0060 _ 48: 21. C8 + mov rcx, rax ; 0063 _ 48: 89. C1 + shr rcx, 2 ; 0066 _ 48: C1. E9, 02 + and ecx, eax ; 006A _ 21. C1 + mov eax, ecx ; 006C _ 89. C8 + shr eax, 1 ; 006E _ D1. E8 + and eax, ecx ; 0070 _ 21. C8 + and eax, 01H ; 0072 _ 83. E0, 01 + jmp ?_019 ; 0075 _ EB, 02 + +?_018: xor eax, eax ; 0077 _ 31. C0 +?_019: add rsp, 40 ; 0079 _ 48: 83. C4, 28 + ret ; 007D _ C3 +; ct_u64_slice_eq End of function + +?_020: ; Local function + lea rcx, [rel panic_bounds_check_loc2691] ; 007E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0085 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0088 _ E8, 00000000(rel) + ud2 ; 008D _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 21, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 22, code +; Communal section not supported by YASM + +ct_usize_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_023 ; 000A _ 75, 6B + mov r9, -1 ; 000C _ 49: C7. C1, FFFFFFFF + test r10, r10 ; 0013 _ 4D: 85. D2 + jz ?_022 ; 0016 _ 74, 23 + xor r9d, r9d ; 0018 _ 45: 31. C9 + xor edx, edx ; 001B _ 31. D2 +; Filling space: 3H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 00H + +ALIGN 8 +?_021: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_025 ; 0023 _ 73, 59 + mov rax, qword [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or r9, rax ; 0030 _ 49: 09. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_021 ; 0036 _ 72, E8 + not r9 ; 0038 _ 49: F7. D1 +?_022: mov rcx, r9 ; 003B _ 4C: 89. C9 + shr rcx, 32 ; 003E _ 48: C1. E9, 20 + and rcx, r9 ; 0042 _ 4C: 21. C9 + mov rax, rcx ; 0045 _ 48: 89. C8 + shr rax, 16 ; 0048 _ 48: C1. E8, 10 + and rax, rcx ; 004C _ 48: 21. C8 + mov rcx, rax ; 004F _ 48: 89. C1 + shr rcx, 8 ; 0052 _ 48: C1. E9, 08 + and rcx, rax ; 0056 _ 48: 21. C1 + mov rax, rcx ; 0059 _ 48: 89. C8 + shr rax, 4 ; 005C _ 48: C1. E8, 04 + and rax, rcx ; 0060 _ 48: 21. C8 + mov rcx, rax ; 0063 _ 48: 89. C1 + shr rcx, 2 ; 0066 _ 48: C1. E9, 02 + and ecx, eax ; 006A _ 21. C1 + mov eax, ecx ; 006C _ 89. C8 + shr eax, 1 ; 006E _ D1. E8 + and eax, ecx ; 0070 _ 21. C8 + and eax, 01H ; 0072 _ 83. E0, 01 + jmp ?_024 ; 0075 _ EB, 02 + +?_023: xor eax, eax ; 0077 _ 31. C0 +?_024: add rsp, 40 ; 0079 _ 48: 83. C4, 28 + ret ; 007D _ C3 +; ct_usize_slice_eq End of function + +?_025: ; Local function + lea rcx, [rel panic_bounds_check_loc2691] ; 007E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0085 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0088 _ E8, 00000000(rel) + ud2 ; 008D _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 23, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 24, code +; Communal section not supported by YASM + +ct_select_u8:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +; ct_select_u8 End of function + + +SECTION .xdata align=4 noexecute ; section number 25, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 26, code +; Communal section not supported by YASM + +ct_select_u16:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmovne r8w, dx ; 0002 _ 66 44: 0F 45. C2 + mov eax, r8d ; 0007 _ 44: 89. C0 + ret ; 000A _ C3 +; ct_select_u16 End of function + + +SECTION .xdata align=4 noexecute ; section number 27, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 28, code +; Communal section not supported by YASM + +ct_select_u32:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +; ct_select_u32 End of function + + +SECTION .xdata align=4 noexecute ; section number 29, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 30, code +; Communal section not supported by YASM + +ct_select_u64:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +; ct_select_u64 End of function + + +SECTION .xdata align=4 noexecute ; section number 31, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 32, code +; Communal section not supported by YASM + +ct_select_usize:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +; ct_select_usize End of function + + +SECTION .xdata align=4 noexecute ; section number 33, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 34, code +; Communal section not supported by YASM + +ct_copy_u8:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_030 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_028 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_027 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_026: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_029 ; 0023 _ 73, 2D + movzx ecx, byte [r9+rdx] ; 0025 _ 41: 0F B6. 0C 11 + mov byte [rax+rdx], cl ; 002A _ 88. 0C 10 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_026 ; 0033 _ 72, EB + jmp ?_028 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_027: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_029 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_027 ; 004B _ 72, F3 +?_028: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_029: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u8 End of function + +?_030: ; Local function + lea rcx, [rel _ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 35, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 36, code +; Communal section not supported by YASM + +ct_copy_u16:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_035 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_033 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_032 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_031: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_034 ; 0023 _ 73, 2D + movzx ecx, word [r9+rdx*2] ; 0025 _ 41: 0F B7. 0C 51 + mov word [rax+rdx*2], cx ; 002A _ 66: 89. 0C 50 + inc rdx ; 002E _ 48: FF. C2 + cmp rdx, r8 ; 0031 _ 4C: 39. C2 + jc ?_031 ; 0034 _ 72, EA + jmp ?_033 ; 0036 _ EB, 15 + +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_032: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_034 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_032 ; 004B _ 72, F3 +?_033: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_034: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u16 End of function + +?_035: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 37, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 38, code +; Communal section not supported by YASM + +ct_copy_u32:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_040 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_038 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_037 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_036: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_039 ; 0023 _ 73, 2D + mov ecx, dword [r9+rdx*4] ; 0025 _ 41: 8B. 0C 91 + mov dword [rax+rdx*4], ecx ; 0029 _ 89. 0C 90 + inc rdx ; 002C _ 48: FF. C2 + cmp rdx, r8 ; 002F _ 4C: 39. C2 + jc ?_036 ; 0032 _ 72, EC + jmp ?_038 ; 0034 _ EB, 17 + +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_037: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_039 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_037 ; 004B _ 72, F3 +?_038: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_039: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u32 End of function + +?_040: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 39, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 40, code +; Communal section not supported by YASM + +ct_copy_u64:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_045 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_043 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_042 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_041: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_044 ; 0023 _ 73, 2D + mov rcx, qword [r9+rdx*8] ; 0025 _ 49: 8B. 0C D1 + mov qword [rax+rdx*8], rcx ; 0029 _ 48: 89. 0C D0 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_041 ; 0033 _ 72, EB + jmp ?_043 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_042: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_044 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_042 ; 004B _ 72, F3 +?_043: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_044: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u64 End of function + +?_045: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 41, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 42, code +; Communal section not supported by YASM + +ct_copy_usize:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_050 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_048 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_047 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_046: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_049 ; 0023 _ 73, 2D + mov rcx, qword [r9+rdx*8] ; 0025 _ 49: 8B. 0C D1 + mov qword [rax+rdx*8], rcx ; 0029 _ 48: 89. 0C D0 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_046 ; 0033 _ 72, EB + jmp ?_048 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_047: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_049 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_047 ; 004B _ 72, F3 +?_048: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_049: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_usize End of function + +?_050: ; Local function + lea rcx, [rel _ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 43, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .rdata align=1 noexecute ; section number 44, const +; Communal section not supported by YASM + +str2690: ; byte + db 6CH, 69H, 62H, 2EH, 72H, 73H ; 0000 _ lib.rs + + +SECTION .rdata align=8 noexecute ; section number 45, const +; Communal section not supported by YASM + +panic_bounds_check_loc2691: ; byte + dq str2690 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 00000000000000C5H ; 0010 _ 00000000000000C5 + + +SECTION .rdata align=8 noexecute ; section number 46, const +; Communal section not supported by YASM + +panic_bounds_check_loc2694: ; byte + dq str2690 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 000000000000012AH ; 0010 _ 000000000000012A + + +SECTION .rdata align=16 noexecute ; section number 47, const +; Communal section not supported by YASM + +str2695: ; byte + db 43H, 6FH, 6EH, 73H, 69H, 73H, 74H, 65H ; 0000 _ Consiste + db 6EH, 74H, 20H, 54H, 69H, 6DH, 65H, 3AH ; 0008 _ nt Time: + db 20H, 41H, 74H, 74H, 65H, 6DH, 70H, 74H ; 0010 _ Attempt + db 65H, 64H, 20H, 74H, 6FH, 20H, 63H, 6FH ; 0018 _ ed to co + db 70H, 79H, 20H, 62H, 65H, 74H, 77H, 65H ; 0020 _ py betwe + db 65H, 6EH, 20H, 6EH, 6FH, 6EH, 2DH, 65H ; 0028 _ en non-e + db 71H, 75H, 61H, 6CH, 20H, 6CH, 65H, 6EH ; 0030 _ qual len + db 73H ; 0038 _ s + + +SECTION .rdata align=8 noexecute ; section number 48, const +; Communal section not supported by YASM + +_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000144H ; 0020 _ 0000000000000144 + + +SECTION .rdata align=8 noexecute ; section number 49, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000146H ; 0020 _ 0000000000000146 + + +SECTION .rdata align=8 noexecute ; section number 50, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000148H ; 0020 _ 0000000000000148 + + +SECTION .rdata align=8 noexecute ; section number 51, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014AH ; 0020 _ 000000000000014A + + +SECTION .rdata align=8 noexecute ; section number 52, const +; Communal section not supported by YASM + +_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014CH ; 0020 _ 000000000000014C + + diff --git a/audit_x64_msvc_LEGACY/lib_x64_msvc.yasm b/audit_x64_msvc_LEGACY/lib_x64_msvc.yasm new file mode 100644 index 0000000..3bf5e18 --- /dev/null +++ b/audit_x64_msvc_LEGACY/lib_x64_msvc.yasm @@ -0,0 +1,985 @@ +; Disassembly of file: lib.o +; Fri Dec 09 19:48:37 2016 +; Mode: 64 bits +; Syntax: YASM/NASM +; Instruction set: Pentium Pro, x64 + +default rel + +global ct_u8_eq: function +global ct_u16_eq: function +global ct_u32_eq: function +global ct_u64_eq: function +global ct_usize_eq: function +global ct_u8_slice_eq: function +global ct_u16_slice_eq: function +global ct_u32_slice_eq: function +global ct_u64_slice_eq: function +global ct_usize_slice_eq: function +global ct_select_u8: function +global ct_select_u16: function +global ct_select_u32: function +global ct_select_u64: function +global ct_select_usize: function +global ct_copy_u8: function +global ct_copy_u16: function +global ct_copy_u32: function +global ct_copy_u64: function +global ct_copy_usize: function + +extern _ZN4core9panicking5panic17h53676c30b3bd95ebE ; near +extern _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE ; near + + +SECTION .text align=4 execute ; section number 1, code + + +SECTION .data align=4 noexecute ; section number 2, data + + +SECTION .bss align=4 noexecute ; section number 3, bss + + +SECTION .text align=16 execute ; section number 4, code +; Communal section not supported by YASM + +ct_u8_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not cl ; 0002 _ F6. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr al, 4 ; 0006 _ C0. E8, 04 + and al, cl ; 0009 _ 20. C8 + mov ecx, eax ; 000B _ 89. C1 + shr cl, 2 ; 000D _ C0. E9, 02 + and cl, al ; 0010 _ 20. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr al, 1 ; 0014 _ D0. E8 + and al, cl ; 0016 _ 20. C8 + ret ; 0018 _ C3 +; ct_u8_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 5, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 6, code +; Communal section not supported by YASM + +ct_u16_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + movzx eax, ch ; 0004 _ 0F B6. C5 + and eax, ecx ; 0007 _ 21. C8 + mov ecx, eax ; 0009 _ 89. C1 + and ecx, 0F0H ; 000B _ 81. E1, 000000F0 + shr ecx, 4 ; 0011 _ C1. E9, 04 + and ecx, eax ; 0014 _ 21. C1 + mov edx, ecx ; 0016 _ 89. CA + and edx, 0CH ; 0018 _ 83. E2, 0C + shr edx, 2 ; 001B _ C1. EA, 02 + and edx, ecx ; 001E _ 21. CA + mov eax, edx ; 0020 _ 89. D0 + and eax, 0EH ; 0022 _ 83. E0, 0E + shr eax, 1 ; 0025 _ D1. E8 + and eax, edx ; 0027 _ 21. D0 + and eax, 01H ; 0029 _ 83. E0, 01 + ret ; 002C _ C3 +; ct_u16_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 7, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 8, code +; Communal section not supported by YASM + +ct_u32_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr eax, 16 ; 0006 _ C1. E8, 10 + and eax, ecx ; 0009 _ 21. C8 + mov ecx, eax ; 000B _ 89. C1 + shr ecx, 8 ; 000D _ C1. E9, 08 + and ecx, eax ; 0010 _ 21. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr eax, 4 ; 0014 _ C1. E8, 04 + and eax, ecx ; 0017 _ 21. C8 + mov ecx, eax ; 0019 _ 89. C1 + shr ecx, 2 ; 001B _ C1. E9, 02 + and ecx, eax ; 001E _ 21. C1 + mov eax, ecx ; 0020 _ 89. C8 + shr eax, 1 ; 0022 _ D1. E8 + and eax, ecx ; 0024 _ 21. C8 + and eax, 01H ; 0026 _ 83. E0, 01 + ret ; 0029 _ C3 +; ct_u32_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 9, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 10, code +; Communal section not supported by YASM + +ct_u64_eq:; Function begin + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +; ct_u64_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 11, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 12, code +; Communal section not supported by YASM + +ct_usize_eq:; Function begin + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +; ct_usize_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 13, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 14, code +; Communal section not supported by YASM + +ct_u8_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_003 ; 000A _ 75, 4A + mov r9b, -1 ; 000C _ 41: B1, FF + test r10, r10 ; 000F _ 4D: 85. D2 + jz ?_002 ; 0012 _ 74, 27 + xor r9d, r9d ; 0014 _ 45: 31. C9 + xor edx, edx ; 0017 _ 31. D2 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_001: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_005 ; 0023 _ 73, 38 + movzx eax, byte [r8+rdx] ; 0025 _ 41: 0F B6. 04 10 + xor al, byte [rcx+rdx] ; 002A _ 32. 04 11 + inc rdx ; 002D _ 48: FF. C2 + or r9b, al ; 0030 _ 41: 08. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_001 ; 0036 _ 72, E8 + not r9b ; 0038 _ 41: F6. D1 +?_002: mov ecx, r9d ; 003B _ 44: 89. C9 + shr cl, 4 ; 003E _ C0. E9, 04 + and cl, r9b ; 0041 _ 44: 20. C9 + mov eax, ecx ; 0044 _ 89. C8 + shr al, 2 ; 0046 _ C0. E8, 02 + and al, cl ; 0049 _ 20. C8 + mov ecx, eax ; 004B _ 89. C1 + shr cl, 1 ; 004D _ D0. E9 + test cl, al ; 004F _ 84. C1 + setne al ; 0051 _ 0F 95. C0 + jmp ?_004 ; 0054 _ EB, 02 + +?_003: xor eax, eax ; 0056 _ 31. C0 +?_004: add rsp, 40 ; 0058 _ 48: 83. C4, 28 + ret ; 005C _ C3 +; ct_u8_slice_eq End of function + +?_005: ; Local function + lea rcx, [rel panic_bounds_check_loc2691] ; 005D _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0064 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 15, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 16, code +; Communal section not supported by YASM + +ct_u16_slice_eq:; Function begin + push rbx ; 0000 _ 53 + sub rsp, 32 ; 0001 _ 48: 83. EC, 20 + mov r10, rdx ; 0005 _ 49: 89. D2 + cmp r10, r9 ; 0008 _ 4D: 39. CA + jnz ?_008 ; 000B _ 75, 57 +; Note: Length-changing prefix causes delay on Intel processors + mov bx, 65535 ; 000D _ 66: BB, FFFF + test r10, r10 ; 0011 _ 4D: 85. D2 + jz ?_007 ; 0014 _ 74, 24 + xor ebx, ebx ; 0016 _ 31. DB + xor edx, edx ; 0018 _ 31. D2 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_006: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_010 ; 0023 _ 73, 47 + mov ax, word [r8+rdx*2] ; 0025 _ 66 41: 8B. 04 50 + xor ax, word [rcx+rdx*2] ; 002A _ 66: 33. 04 51 + inc rdx ; 002E _ 48: FF. C2 + or ebx, eax ; 0031 _ 09. C3 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_006 ; 0036 _ 72, E8 + not ebx ; 0038 _ F7. D3 +?_007: movzx eax, bh ; 003A _ 0F B6. C7 + and eax, ebx ; 003D _ 21. D8 + mov ecx, eax ; 003F _ 89. C1 + and ecx, 0F0H ; 0041 _ 81. E1, 000000F0 + shr ecx, 4 ; 0047 _ C1. E9, 04 + and ecx, eax ; 004A _ 21. C1 + mov edx, ecx ; 004C _ 89. CA + and edx, 0CH ; 004E _ 83. E2, 0C + shr edx, 2 ; 0051 _ C1. EA, 02 + and edx, ecx ; 0054 _ 21. CA + mov eax, edx ; 0056 _ 89. D0 + and eax, 0EH ; 0058 _ 83. E0, 0E + shr eax, 1 ; 005B _ D1. E8 + and eax, edx ; 005D _ 21. D0 + and eax, 01H ; 005F _ 83. E0, 01 + jmp ?_009 ; 0062 _ EB, 02 + +?_008: xor eax, eax ; 0064 _ 31. C0 +?_009: add rsp, 32 ; 0066 _ 48: 83. C4, 20 + pop rbx ; 006A _ 5B + ret ; 006B _ C3 +; ct_u16_slice_eq End of function + +?_010: ; Local function + lea rcx, [rel panic_bounds_check_loc2691] ; 006C _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0073 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0076 _ E8, 00000000(rel) + ud2 ; 007B _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 17, const +; Communal section not supported by YASM + + db 01H, 05H, 02H, 00H, 05H, 32H, 01H, 30H ; 0000 _ .....2.0 + + +SECTION .text align=16 execute ; section number 18, code +; Communal section not supported by YASM + +ct_u32_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_013 ; 000A _ 75, 57 + mov r9d, 4294967295 ; 000C _ 41: B9, FFFFFFFF + test r10, r10 ; 0012 _ 4D: 85. D2 + jz ?_012 ; 0015 _ 74, 23 + xor r9d, r9d ; 0017 _ 45: 31. C9 + xor edx, edx ; 001A _ 31. D2 +; Filling space: 4H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 40H, 00H + +ALIGN 8 +?_011: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_015 ; 0023 _ 73, 45 + mov eax, dword [r8+rdx*4] ; 0025 _ 41: 8B. 04 90 + xor eax, dword [rcx+rdx*4] ; 0029 _ 33. 04 91 + inc rdx ; 002C _ 48: FF. C2 + or r9d, eax ; 002F _ 41: 09. C1 + cmp rdx, r10 ; 0032 _ 4C: 39. D2 + jc ?_011 ; 0035 _ 72, E9 + not r9d ; 0037 _ 41: F7. D1 +?_012: mov ecx, r9d ; 003A _ 44: 89. C9 + shr ecx, 16 ; 003D _ C1. E9, 10 + and ecx, r9d ; 0040 _ 44: 21. C9 + mov eax, ecx ; 0043 _ 89. C8 + shr eax, 8 ; 0045 _ C1. E8, 08 + and eax, ecx ; 0048 _ 21. C8 + mov ecx, eax ; 004A _ 89. C1 + shr ecx, 4 ; 004C _ C1. E9, 04 + and ecx, eax ; 004F _ 21. C1 + mov edx, ecx ; 0051 _ 89. CA + shr edx, 2 ; 0053 _ C1. EA, 02 + and edx, ecx ; 0056 _ 21. CA + mov eax, edx ; 0058 _ 89. D0 + shr eax, 1 ; 005A _ D1. E8 + and eax, edx ; 005C _ 21. D0 + and eax, 01H ; 005E _ 83. E0, 01 + jmp ?_014 ; 0061 _ EB, 02 + +?_013: xor eax, eax ; 0063 _ 31. C0 +?_014: add rsp, 40 ; 0065 _ 48: 83. C4, 28 + ret ; 0069 _ C3 +; ct_u32_slice_eq End of function + +?_015: ; Local function + lea rcx, [rel panic_bounds_check_loc2691] ; 006A _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0071 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0074 _ E8, 00000000(rel) + ud2 ; 0079 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 19, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 20, code +; Communal section not supported by YASM + +ct_u64_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_018 ; 000A _ 75, 6B + mov r9, -1 ; 000C _ 49: C7. C1, FFFFFFFF + test r10, r10 ; 0013 _ 4D: 85. D2 + jz ?_017 ; 0016 _ 74, 23 + xor r9d, r9d ; 0018 _ 45: 31. C9 + xor edx, edx ; 001B _ 31. D2 +; Filling space: 3H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 00H + +ALIGN 8 +?_016: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_020 ; 0023 _ 73, 59 + mov rax, qword [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or r9, rax ; 0030 _ 49: 09. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_016 ; 0036 _ 72, E8 + not r9 ; 0038 _ 49: F7. D1 +?_017: mov rcx, r9 ; 003B _ 4C: 89. C9 + shr rcx, 32 ; 003E _ 48: C1. E9, 20 + and rcx, r9 ; 0042 _ 4C: 21. C9 + mov rax, rcx ; 0045 _ 48: 89. C8 + shr rax, 16 ; 0048 _ 48: C1. E8, 10 + and rax, rcx ; 004C _ 48: 21. C8 + mov rcx, rax ; 004F _ 48: 89. C1 + shr rcx, 8 ; 0052 _ 48: C1. E9, 08 + and rcx, rax ; 0056 _ 48: 21. C1 + mov rax, rcx ; 0059 _ 48: 89. C8 + shr rax, 4 ; 005C _ 48: C1. E8, 04 + and rax, rcx ; 0060 _ 48: 21. C8 + mov rcx, rax ; 0063 _ 48: 89. C1 + shr rcx, 2 ; 0066 _ 48: C1. E9, 02 + and ecx, eax ; 006A _ 21. C1 + mov eax, ecx ; 006C _ 89. C8 + shr eax, 1 ; 006E _ D1. E8 + and eax, ecx ; 0070 _ 21. C8 + and eax, 01H ; 0072 _ 83. E0, 01 + jmp ?_019 ; 0075 _ EB, 02 + +?_018: xor eax, eax ; 0077 _ 31. C0 +?_019: add rsp, 40 ; 0079 _ 48: 83. C4, 28 + ret ; 007D _ C3 +; ct_u64_slice_eq End of function + +?_020: ; Local function + lea rcx, [rel panic_bounds_check_loc2691] ; 007E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0085 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0088 _ E8, 00000000(rel) + ud2 ; 008D _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 21, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 22, code +; Communal section not supported by YASM + +ct_usize_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_023 ; 000A _ 75, 6B + mov r9, -1 ; 000C _ 49: C7. C1, FFFFFFFF + test r10, r10 ; 0013 _ 4D: 85. D2 + jz ?_022 ; 0016 _ 74, 23 + xor r9d, r9d ; 0018 _ 45: 31. C9 + xor edx, edx ; 001B _ 31. D2 +; Filling space: 3H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 00H + +ALIGN 8 +?_021: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_025 ; 0023 _ 73, 59 + mov rax, qword [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or r9, rax ; 0030 _ 49: 09. C1 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + jc ?_021 ; 0036 _ 72, E8 + not r9 ; 0038 _ 49: F7. D1 +?_022: mov rcx, r9 ; 003B _ 4C: 89. C9 + shr rcx, 32 ; 003E _ 48: C1. E9, 20 + and rcx, r9 ; 0042 _ 4C: 21. C9 + mov rax, rcx ; 0045 _ 48: 89. C8 + shr rax, 16 ; 0048 _ 48: C1. E8, 10 + and rax, rcx ; 004C _ 48: 21. C8 + mov rcx, rax ; 004F _ 48: 89. C1 + shr rcx, 8 ; 0052 _ 48: C1. E9, 08 + and rcx, rax ; 0056 _ 48: 21. C1 + mov rax, rcx ; 0059 _ 48: 89. C8 + shr rax, 4 ; 005C _ 48: C1. E8, 04 + and rax, rcx ; 0060 _ 48: 21. C8 + mov rcx, rax ; 0063 _ 48: 89. C1 + shr rcx, 2 ; 0066 _ 48: C1. E9, 02 + and ecx, eax ; 006A _ 21. C1 + mov eax, ecx ; 006C _ 89. C8 + shr eax, 1 ; 006E _ D1. E8 + and eax, ecx ; 0070 _ 21. C8 + and eax, 01H ; 0072 _ 83. E0, 01 + jmp ?_024 ; 0075 _ EB, 02 + +?_023: xor eax, eax ; 0077 _ 31. C0 +?_024: add rsp, 40 ; 0079 _ 48: 83. C4, 28 + ret ; 007D _ C3 +; ct_usize_slice_eq End of function + +?_025: ; Local function + lea rcx, [rel panic_bounds_check_loc2691] ; 007E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0085 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0088 _ E8, 00000000(rel) + ud2 ; 008D _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 23, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 24, code +; Communal section not supported by YASM + +ct_select_u8:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +; ct_select_u8 End of function + + +SECTION .xdata align=4 noexecute ; section number 25, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 26, code +; Communal section not supported by YASM + +ct_select_u16:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmovne r8w, dx ; 0002 _ 66 44: 0F 45. C2 + mov eax, r8d ; 0007 _ 44: 89. C0 + ret ; 000A _ C3 +; ct_select_u16 End of function + + +SECTION .xdata align=4 noexecute ; section number 27, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 28, code +; Communal section not supported by YASM + +ct_select_u32:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +; ct_select_u32 End of function + + +SECTION .xdata align=4 noexecute ; section number 29, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 30, code +; Communal section not supported by YASM + +ct_select_u64:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +; ct_select_u64 End of function + + +SECTION .xdata align=4 noexecute ; section number 31, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 32, code +; Communal section not supported by YASM + +ct_select_usize:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +; ct_select_usize End of function + + +SECTION .xdata align=4 noexecute ; section number 33, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 34, code +; Communal section not supported by YASM + +ct_copy_u8:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_030 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_028 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_027 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_026: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_029 ; 0023 _ 73, 2D + movzx ecx, byte [r9+rdx] ; 0025 _ 41: 0F B6. 0C 11 + mov byte [rax+rdx], cl ; 002A _ 88. 0C 10 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_026 ; 0033 _ 72, EB + jmp ?_028 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_027: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_029 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_027 ; 004B _ 72, F3 +?_028: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_029: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u8 End of function + +?_030: ; Local function + lea rcx, [rel _ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 35, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 36, code +; Communal section not supported by YASM + +ct_copy_u16:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_035 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_033 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_032 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_031: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_034 ; 0023 _ 73, 2D + movzx ecx, word [r9+rdx*2] ; 0025 _ 41: 0F B7. 0C 51 + mov word [rax+rdx*2], cx ; 002A _ 66: 89. 0C 50 + inc rdx ; 002E _ 48: FF. C2 + cmp rdx, r8 ; 0031 _ 4C: 39. C2 + jc ?_031 ; 0034 _ 72, EA + jmp ?_033 ; 0036 _ EB, 15 + +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_032: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_034 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_032 ; 004B _ 72, F3 +?_033: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_034: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u16 End of function + +?_035: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 37, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 38, code +; Communal section not supported by YASM + +ct_copy_u32:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_040 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_038 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_037 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_036: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_039 ; 0023 _ 73, 2D + mov ecx, dword [r9+rdx*4] ; 0025 _ 41: 8B. 0C 91 + mov dword [rax+rdx*4], ecx ; 0029 _ 89. 0C 90 + inc rdx ; 002C _ 48: FF. C2 + cmp rdx, r8 ; 002F _ 4C: 39. C2 + jc ?_036 ; 0032 _ 72, EC + jmp ?_038 ; 0034 _ EB, 17 + +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_037: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_039 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_037 ; 004B _ 72, F3 +?_038: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_039: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u32 End of function + +?_040: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 39, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 40, code +; Communal section not supported by YASM + +ct_copy_u64:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_045 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_043 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_042 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_041: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_044 ; 0023 _ 73, 2D + mov rcx, qword [r9+rdx*8] ; 0025 _ 49: 8B. 0C D1 + mov qword [rax+rdx*8], rcx ; 0029 _ 48: 89. 0C D0 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_041 ; 0033 _ 72, EB + jmp ?_043 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_042: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_044 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_042 ; 004B _ 72, F3 +?_043: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_044: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u64 End of function + +?_045: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 41, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 42, code +; Communal section not supported by YASM + +ct_copy_usize:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_050 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_048 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_047 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_046: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_049 ; 0023 _ 73, 2D + mov rcx, qword [r9+rdx*8] ; 0025 _ 49: 8B. 0C D1 + mov qword [rax+rdx*8], rcx ; 0029 _ 48: 89. 0C D0 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_046 ; 0033 _ 72, EB + jmp ?_048 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_047: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_049 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_047 ; 004B _ 72, F3 +?_048: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_049: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_usize End of function + +?_050: ; Local function + lea rcx, [rel _ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 43, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .rdata align=1 noexecute ; section number 44, const +; Communal section not supported by YASM + +str2690: ; byte + db 6CH, 69H, 62H, 2EH, 72H, 73H ; 0000 _ lib.rs + + +SECTION .rdata align=8 noexecute ; section number 45, const +; Communal section not supported by YASM + +panic_bounds_check_loc2691: ; byte + dq str2690 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 00000000000000C5H ; 0010 _ 00000000000000C5 + + +SECTION .rdata align=8 noexecute ; section number 46, const +; Communal section not supported by YASM + +panic_bounds_check_loc2694: ; byte + dq str2690 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 000000000000012AH ; 0010 _ 000000000000012A + + +SECTION .rdata align=16 noexecute ; section number 47, const +; Communal section not supported by YASM + +str2695: ; byte + db 43H, 6FH, 6EH, 73H, 69H, 73H, 74H, 65H ; 0000 _ Consiste + db 6EH, 74H, 20H, 54H, 69H, 6DH, 65H, 3AH ; 0008 _ nt Time: + db 20H, 41H, 74H, 74H, 65H, 6DH, 70H, 74H ; 0010 _ Attempt + db 65H, 64H, 20H, 74H, 6FH, 20H, 63H, 6FH ; 0018 _ ed to co + db 70H, 79H, 20H, 62H, 65H, 74H, 77H, 65H ; 0020 _ py betwe + db 65H, 6EH, 20H, 6EH, 6FH, 6EH, 2DH, 65H ; 0028 _ en non-e + db 71H, 75H, 61H, 6CH, 20H, 6CH, 65H, 6EH ; 0030 _ qual len + db 73H ; 0038 _ s + + +SECTION .rdata align=8 noexecute ; section number 48, const +; Communal section not supported by YASM + +_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000144H ; 0020 _ 0000000000000144 + + +SECTION .rdata align=8 noexecute ; section number 49, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000146H ; 0020 _ 0000000000000146 + + +SECTION .rdata align=8 noexecute ; section number 50, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000148H ; 0020 _ 0000000000000148 + + +SECTION .rdata align=8 noexecute ; section number 51, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014AH ; 0020 _ 000000000000014A + + +SECTION .rdata align=8 noexecute ; section number 52, const +; Communal section not supported by YASM + +_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2690 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014CH ; 0020 _ 000000000000014C + + diff --git a/audit_x64_msvc_LEGACY/lib_x64_msvc_v2.nasm b/audit_x64_msvc_LEGACY/lib_x64_msvc_v2.nasm new file mode 100644 index 0000000..c06391d --- /dev/null +++ b/audit_x64_msvc_LEGACY/lib_x64_msvc_v2.nasm @@ -0,0 +1,919 @@ +; Disassembly of file: lib.o +; Fri Dec 09 22:13:25 2016 +; Mode: 64 bits +; Syntax: YASM/NASM +; Instruction set: Pentium Pro, x64 + +default rel + +global ct_u8_eq: function +global ct_u16_eq: function +global ct_u32_eq: function +global ct_u64_eq: function +global ct_usize_eq: function +global ct_u8_slice_eq: function +global ct_u16_slice_eq: function +global ct_u32_slice_eq: function +global ct_u64_slice_eq: function +global ct_usize_slice_eq: function +global ct_select_u8: function +global ct_select_u16: function +global ct_select_u32: function +global ct_select_u64: function +global ct_select_usize: function +global ct_copy_u8: function +global ct_copy_u16: function +global ct_copy_u32: function +global ct_copy_u64: function +global ct_copy_usize: function + +extern _ZN4core9panicking5panic17h53676c30b3bd95ebE ; near +extern _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE ; near + + +SECTION .text align=4 execute ; section number 1, code + + +SECTION .data align=4 noexecute ; section number 2, data + + +SECTION .bss align=4 noexecute ; section number 3, bss + + +SECTION .text align=16 execute ; section number 4, code +; Communal section not supported by YASM + +ct_u8_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not cl ; 0002 _ F6. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr al, 4 ; 0006 _ C0. E8, 04 + and al, cl ; 0009 _ 20. C8 + mov ecx, eax ; 000B _ 89. C1 + shr cl, 2 ; 000D _ C0. E9, 02 + and cl, al ; 0010 _ 20. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr al, 1 ; 0014 _ D0. E8 + and al, cl ; 0016 _ 20. C8 + ret ; 0018 _ C3 +; ct_u8_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 5, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 6, code +; Communal section not supported by YASM + +ct_u16_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + movzx eax, ch ; 0004 _ 0F B6. C5 + and eax, ecx ; 0007 _ 21. C8 + mov ecx, eax ; 0009 _ 89. C1 + and ecx, 0F0H ; 000B _ 81. E1, 000000F0 + shr ecx, 4 ; 0011 _ C1. E9, 04 + and ecx, eax ; 0014 _ 21. C1 + mov edx, ecx ; 0016 _ 89. CA + and edx, 0CH ; 0018 _ 83. E2, 0C + shr edx, 2 ; 001B _ C1. EA, 02 + and edx, ecx ; 001E _ 21. CA + mov eax, edx ; 0020 _ 89. D0 + and eax, 0EH ; 0022 _ 83. E0, 0E + shr eax, 1 ; 0025 _ D1. E8 + and eax, edx ; 0027 _ 21. D0 + and eax, 01H ; 0029 _ 83. E0, 01 + ret ; 002C _ C3 +; ct_u16_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 7, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 8, code +; Communal section not supported by YASM + +ct_u32_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr eax, 16 ; 0006 _ C1. E8, 10 + and eax, ecx ; 0009 _ 21. C8 + mov ecx, eax ; 000B _ 89. C1 + shr ecx, 8 ; 000D _ C1. E9, 08 + and ecx, eax ; 0010 _ 21. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr eax, 4 ; 0014 _ C1. E8, 04 + and eax, ecx ; 0017 _ 21. C8 + mov ecx, eax ; 0019 _ 89. C1 + shr ecx, 2 ; 001B _ C1. E9, 02 + and ecx, eax ; 001E _ 21. C1 + mov eax, ecx ; 0020 _ 89. C8 + shr eax, 1 ; 0022 _ D1. E8 + and eax, ecx ; 0024 _ 21. C8 + and eax, 01H ; 0026 _ 83. E0, 01 + ret ; 0029 _ C3 +; ct_u32_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 9, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 10, code +; Communal section not supported by YASM + +ct_u64_eq:; Function begin + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +; ct_u64_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 11, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 12, code +; Communal section not supported by YASM + +ct_usize_eq:; Function begin + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +; ct_usize_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 13, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 14, code +; Communal section not supported by YASM + +ct_u8_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_002 ; 000A _ 75, 30 + test r10, r10 ; 000C _ 4D: 85. D2 + jz ?_003 ; 000F _ 74, 2F + xor r9d, r9d ; 0011 _ 45: 31. C9 + xor edx, edx ; 0014 _ 31. D2 +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_001: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_006 ; 0023 _ 73, 2D + mov al, byte [r8+rdx] ; 0025 _ 41: 8A. 04 10 + xor al, byte [rcx+rdx] ; 0029 _ 32. 04 11 + inc rdx ; 002C _ 48: FF. C2 + or al, r9b ; 002F _ 44: 08. C8 + cmp rdx, r10 ; 0032 _ 4C: 39. D2 + mov r9b, al ; 0035 _ 41: 88. C1 + jc ?_001 ; 0038 _ 72, E6 + jmp ?_004 ; 003A _ EB, 06 + +?_002: xor eax, eax ; 003C _ 31. C0 + jmp ?_005 ; 003E _ EB, 0C + +?_003: xor eax, eax ; 0040 _ 31. C0 +?_004: movzx ecx, al ; 0042 _ 0F B6. C8 + xor edx, edx ; 0045 _ 31. D2 + call ct_u8_eq ; 0047 _ E8, 00000000(rel) +?_005: nop ; 004C _ 90 + add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 +; ct_u8_slice_eq End of function + +?_006: ; Local function + lea rcx, [rel panic_bounds_check_loc2692] ; 0052 _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0059 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 005C _ E8, 00000000(rel) + ud2 ; 0061 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 15, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 16, code +; Communal section not supported by YASM + +ct_u16_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_009 ; 000A _ 75, 3A + xor r9d, r9d ; 000C _ 45: 31. C9 + test r10, r10 ; 000F _ 4D: 85. D2 + jz ?_008 ; 0012 _ 74, 25 + xor edx, edx ; 0014 _ 31. D2 +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_007: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_011 ; 0023 _ 73, 28 + mov ax, word [r8+rdx*2] ; 0025 _ 66 41: 8B. 04 50 + xor ax, word [rcx+rdx*2] ; 002A _ 66: 33. 04 51 + inc rdx ; 002E _ 48: FF. C2 + or r9d, eax ; 0031 _ 41: 09. C1 + cmp rdx, r10 ; 0034 _ 4C: 39. D2 + jc ?_007 ; 0037 _ 72, E7 +?_008: movzx ecx, r9w ; 0039 _ 41: 0F B7. C9 + xor edx, edx ; 003D _ 31. D2 + call ct_u16_eq ; 003F _ E8, 00000000(rel) + jmp ?_010 ; 0044 _ EB, 02 + +?_009: xor eax, eax ; 0046 _ 31. C0 +?_010: add rsp, 40 ; 0048 _ 48: 83. C4, 28 + ret ; 004C _ C3 +; ct_u16_slice_eq End of function + +?_011: ; Local function + lea rcx, [rel panic_bounds_check_loc2692] ; 004D _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0054 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0057 _ E8, 00000000(rel) + ud2 ; 005C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 17, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 18, code +; Communal section not supported by YASM + +ct_u32_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + xor eax, eax ; 0007 _ 31. C0 + cmp r10, r9 ; 0009 _ 4D: 39. CA + jnz ?_014 ; 000C _ 75, 35 + test r10, r10 ; 000E _ 4D: 85. D2 + jz ?_013 ; 0011 _ 74, 27 + xor r9d, r9d ; 0013 _ 45: 31. C9 + xor edx, edx ; 0016 _ 31. D2 +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_012: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_015 ; 0023 _ 73, 24 + mov eax, dword [r8+rdx*4] ; 0025 _ 41: 8B. 04 90 + xor eax, dword [rcx+rdx*4] ; 0029 _ 33. 04 91 + inc rdx ; 002C _ 48: FF. C2 + or eax, r9d ; 002F _ 44: 09. C8 + cmp rdx, r10 ; 0032 _ 4C: 39. D2 + mov r9d, eax ; 0035 _ 41: 89. C1 + jc ?_012 ; 0038 _ 72, E6 +?_013: xor edx, edx ; 003A _ 31. D2 + mov ecx, eax ; 003C _ 89. C1 + call ct_u32_eq ; 003E _ E8, 00000000(rel) +?_014: nop ; 0043 _ 90 + add rsp, 40 ; 0044 _ 48: 83. C4, 28 + ret ; 0048 _ C3 +; ct_u32_slice_eq End of function + +?_015: ; Local function + lea rcx, [rel panic_bounds_check_loc2692] ; 0049 _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0050 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0053 _ E8, 00000000(rel) + ud2 ; 0058 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 19, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 20, code +; Communal section not supported by YASM + +ct_u64_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_018 ; 000A _ 75, 3B + xor eax, eax ; 000C _ 31. C0 + test r10, r10 ; 000E _ 4D: 85. D2 + jz ?_017 ; 0011 _ 74, 28 + xor r9d, r9d ; 0013 _ 45: 31. C9 + xor edx, edx ; 0016 _ 31. D2 +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_016: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_020 ; 0023 _ 73, 29 + mov rax, qword [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or rax, r9 ; 0030 _ 4C: 09. C8 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + mov r9, rax ; 0036 _ 49: 89. C1 + jc ?_016 ; 0039 _ 72, E5 +?_017: xor edx, edx ; 003B _ 31. D2 + mov rcx, rax ; 003D _ 48: 89. C1 + call ct_u64_eq ; 0040 _ E8, 00000000(rel) + jmp ?_019 ; 0045 _ EB, 02 + +?_018: xor eax, eax ; 0047 _ 31. C0 +?_019: add rsp, 40 ; 0049 _ 48: 83. C4, 28 + ret ; 004D _ C3 +; ct_u64_slice_eq End of function + +?_020: ; Local function + lea rcx, [rel panic_bounds_check_loc2692] ; 004E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0055 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0058 _ E8, 00000000(rel) + ud2 ; 005D _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 21, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 22, code +; Communal section not supported by YASM + +ct_usize_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_023 ; 000A _ 75, 3B + xor eax, eax ; 000C _ 31. C0 + test r10, r10 ; 000E _ 4D: 85. D2 + jz ?_022 ; 0011 _ 74, 28 + xor r9d, r9d ; 0013 _ 45: 31. C9 + xor edx, edx ; 0016 _ 31. D2 +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_021: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_025 ; 0023 _ 73, 29 + mov rax, qword [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or rax, r9 ; 0030 _ 4C: 09. C8 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + mov r9, rax ; 0036 _ 49: 89. C1 + jc ?_021 ; 0039 _ 72, E5 +?_022: xor edx, edx ; 003B _ 31. D2 + mov rcx, rax ; 003D _ 48: 89. C1 + call ct_usize_eq ; 0040 _ E8, 00000000(rel) + jmp ?_024 ; 0045 _ EB, 02 + +?_023: xor eax, eax ; 0047 _ 31. C0 +?_024: add rsp, 40 ; 0049 _ 48: 83. C4, 28 + ret ; 004D _ C3 +; ct_usize_slice_eq End of function + +?_025: ; Local function + lea rcx, [rel panic_bounds_check_loc2692] ; 004E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0055 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0058 _ E8, 00000000(rel) + ud2 ; 005D _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 23, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 24, code +; Communal section not supported by YASM + +ct_select_u8:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +; ct_select_u8 End of function + + +SECTION .xdata align=4 noexecute ; section number 25, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 26, code +; Communal section not supported by YASM + +ct_select_u16:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmovne r8w, dx ; 0002 _ 66 44: 0F 45. C2 + mov eax, r8d ; 0007 _ 44: 89. C0 + ret ; 000A _ C3 +; ct_select_u16 End of function + + +SECTION .xdata align=4 noexecute ; section number 27, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 28, code +; Communal section not supported by YASM + +ct_select_u32:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +; ct_select_u32 End of function + + +SECTION .xdata align=4 noexecute ; section number 29, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 30, code +; Communal section not supported by YASM + +ct_select_u64:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +; ct_select_u64 End of function + + +SECTION .xdata align=4 noexecute ; section number 31, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 32, code +; Communal section not supported by YASM + +ct_select_usize:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +; ct_select_usize End of function + + +SECTION .xdata align=4 noexecute ; section number 33, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 34, code +; Communal section not supported by YASM + +ct_copy_u8:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_030 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_028 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_027 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_026: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_029 ; 0023 _ 73, 2D + movzx ecx, byte [r9+rdx] ; 0025 _ 41: 0F B6. 0C 11 + mov byte [rax+rdx], cl ; 002A _ 88. 0C 10 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_026 ; 0033 _ 72, EB + jmp ?_028 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_027: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_029 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_027 ; 004B _ 72, F3 +?_028: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_029: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u8 End of function + +?_030: ; Local function + lea rcx, [rel _ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 35, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 36, code +; Communal section not supported by YASM + +ct_copy_u16:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_035 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_033 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_032 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_031: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_034 ; 0023 _ 73, 2D + movzx ecx, word [r9+rdx*2] ; 0025 _ 41: 0F B7. 0C 51 + mov word [rax+rdx*2], cx ; 002A _ 66: 89. 0C 50 + inc rdx ; 002E _ 48: FF. C2 + cmp rdx, r8 ; 0031 _ 4C: 39. C2 + jc ?_031 ; 0034 _ 72, EA + jmp ?_033 ; 0036 _ EB, 15 + +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_032: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_034 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_032 ; 004B _ 72, F3 +?_033: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_034: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u16 End of function + +?_035: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 37, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 38, code +; Communal section not supported by YASM + +ct_copy_u32:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_040 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_038 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_037 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_036: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_039 ; 0023 _ 73, 2D + mov ecx, dword [r9+rdx*4] ; 0025 _ 41: 8B. 0C 91 + mov dword [rax+rdx*4], ecx ; 0029 _ 89. 0C 90 + inc rdx ; 002C _ 48: FF. C2 + cmp rdx, r8 ; 002F _ 4C: 39. C2 + jc ?_036 ; 0032 _ 72, EC + jmp ?_038 ; 0034 _ EB, 17 + +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_037: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_039 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_037 ; 004B _ 72, F3 +?_038: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_039: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u32 End of function + +?_040: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 39, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 40, code +; Communal section not supported by YASM + +ct_copy_u64:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_045 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_043 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_042 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_041: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_044 ; 0023 _ 73, 2D + mov rcx, qword [r9+rdx*8] ; 0025 _ 49: 8B. 0C D1 + mov qword [rax+rdx*8], rcx ; 0029 _ 48: 89. 0C D0 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_041 ; 0033 _ 72, EB + jmp ?_043 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_042: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_044 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_042 ; 004B _ 72, F3 +?_043: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_044: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_u64 End of function + +?_045: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 41, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 42, code +; Communal section not supported by YASM + +ct_copy_usize:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov rax, rdx ; 0004 _ 48: 89. D0 + cmp r8, qword [rsp+50H] ; 0007 _ 4C: 3B. 44 24, 50 + jnz ?_050 ; 000C _ 75, 52 + test r8, r8 ; 000E _ 4D: 85. C0 + jz ?_048 ; 0011 _ 74, 3A + xor edx, edx ; 0013 _ 31. D2 + test cl, cl ; 0015 _ 84. C9 + jz ?_047 ; 0017 _ 74, 27 +; Filling space: 7H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 80H, 00H, 00H, 00H, 00H + +ALIGN 8 +?_046: cmp rdx, r8 ; 0020 _ 4C: 39. C2 + jnc ?_049 ; 0023 _ 73, 2D + mov rcx, qword [r9+rdx*8] ; 0025 _ 49: 8B. 0C D1 + mov qword [rax+rdx*8], rcx ; 0029 _ 48: 89. 0C D0 + inc rdx ; 002D _ 48: FF. C2 + cmp rdx, r8 ; 0030 _ 4C: 39. C2 + jc ?_046 ; 0033 _ 72, EB + jmp ?_048 ; 0035 _ EB, 16 + +; Filling space: 9H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 84H, 00H, 00H, 00H, 00H +; db 00H + +ALIGN 16 +?_047: cmp rdx, r8 ; 0040 _ 4C: 39. C2 + jnc ?_049 ; 0043 _ 73, 0D + inc rdx ; 0045 _ 48: FF. C2 + cmp rdx, r8 ; 0048 _ 4C: 39. C2 + jc ?_047 ; 004B _ 72, F3 +?_048: add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 + +?_049: lea rcx, [rel panic_bounds_check_loc2694] ; 0052 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0059 _ E8, 00000000(rel) + ud2 ; 005E _ 0F 0B +; ct_copy_usize End of function + +?_050: ; Local function + lea rcx, [rel _ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE]; 0060 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 0067 _ E8, 00000000(rel) + ud2 ; 006C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 43, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .rdata align=1 noexecute ; section number 44, const +; Communal section not supported by YASM + +str2691: ; byte + db 6CH, 69H, 62H, 2EH, 72H, 73H ; 0000 _ lib.rs + + +SECTION .rdata align=8 noexecute ; section number 45, const +; Communal section not supported by YASM + +panic_bounds_check_loc2692: ; byte + dq str2691 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 00000000000000C6H ; 0010 _ 00000000000000C6 + + +SECTION .rdata align=8 noexecute ; section number 46, const +; Communal section not supported by YASM + +panic_bounds_check_loc2694: ; byte + dq str2691 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 000000000000012BH ; 0010 _ 000000000000012B + + +SECTION .rdata align=16 noexecute ; section number 47, const +; Communal section not supported by YASM + +str2695: ; byte + db 43H, 6FH, 6EH, 73H, 69H, 73H, 74H, 65H ; 0000 _ Consiste + db 6EH, 74H, 20H, 54H, 69H, 6DH, 65H, 3AH ; 0008 _ nt Time: + db 20H, 41H, 74H, 74H, 65H, 6DH, 70H, 74H ; 0010 _ Attempt + db 65H, 64H, 20H, 74H, 6FH, 20H, 63H, 6FH ; 0018 _ ed to co + db 70H, 79H, 20H, 62H, 65H, 74H, 77H, 65H ; 0020 _ py betwe + db 65H, 6EH, 20H, 6EH, 6FH, 6EH, 2DH, 65H ; 0028 _ en non-e + db 71H, 75H, 61H, 6CH, 20H, 6CH, 65H, 6EH ; 0030 _ qual len + db 73H ; 0038 _ s + + +SECTION .rdata align=8 noexecute ; section number 48, const +; Communal section not supported by YASM + +_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2691 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000145H ; 0020 _ 0000000000000145 + + +SECTION .rdata align=8 noexecute ; section number 49, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2691 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000147H ; 0020 _ 0000000000000147 + + +SECTION .rdata align=8 noexecute ; section number 50, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2691 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000149H ; 0020 _ 0000000000000149 + + +SECTION .rdata align=8 noexecute ; section number 51, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2691 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014BH ; 0020 _ 000000000000014B + + +SECTION .rdata align=8 noexecute ; section number 52, const +; Communal section not supported by YASM + +_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE: ; byte + dq str2695 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2691 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014DH ; 0020 _ 000000000000014D + + diff --git a/audit_x64_msvc_LEGACY/lib_x64_msvc_v3.nasm b/audit_x64_msvc_LEGACY/lib_x64_msvc_v3.nasm new file mode 100644 index 0000000..c91548f --- /dev/null +++ b/audit_x64_msvc_LEGACY/lib_x64_msvc_v3.nasm @@ -0,0 +1,960 @@ +; Disassembly of file: lib.o +; Fri Dec 09 22:32:13 2016 +; Mode: 64 bits +; Syntax: YASM/NASM +; Instruction set: Pentium Pro, x64 + +default rel + +global ct_u8_eq: function +global ct_u16_eq: function +global ct_u32_eq: function +global ct_u64_eq: function +global ct_usize_eq: function +global ct_u8_slice_eq: function +global ct_u16_slice_eq: function +global ct_u32_slice_eq: function +global ct_u64_slice_eq: function +global ct_usize_slice_eq: function +global ct_select_u8: function +global ct_select_u16: function +global ct_select_u32: function +global ct_select_u64: function +global ct_select_usize: function +global ct_copy_u8: function +global ct_copy_u16: function +global ct_copy_u32: function +global ct_copy_u64: function +global ct_copy_usize: function + +extern _ZN4core9panicking5panic17h53676c30b3bd95ebE ; near +extern _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE ; near + + +SECTION .text align=4 execute ; section number 1, code + + +SECTION .data align=4 noexecute ; section number 2, data + + +SECTION .bss align=4 noexecute ; section number 3, bss + + +SECTION .text align=16 execute ; section number 4, code +; Communal section not supported by YASM + +ct_u8_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not cl ; 0002 _ F6. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr al, 4 ; 0006 _ C0. E8, 04 + and al, cl ; 0009 _ 20. C8 + mov ecx, eax ; 000B _ 89. C1 + shr cl, 2 ; 000D _ C0. E9, 02 + and cl, al ; 0010 _ 20. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr al, 1 ; 0014 _ D0. E8 + and al, cl ; 0016 _ 20. C8 + ret ; 0018 _ C3 +; ct_u8_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 5, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 6, code +; Communal section not supported by YASM + +ct_u16_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + movzx eax, ch ; 0004 _ 0F B6. C5 + and eax, ecx ; 0007 _ 21. C8 + mov ecx, eax ; 0009 _ 89. C1 + and ecx, 0F0H ; 000B _ 81. E1, 000000F0 + shr ecx, 4 ; 0011 _ C1. E9, 04 + and ecx, eax ; 0014 _ 21. C1 + mov edx, ecx ; 0016 _ 89. CA + and edx, 0CH ; 0018 _ 83. E2, 0C + shr edx, 2 ; 001B _ C1. EA, 02 + and edx, ecx ; 001E _ 21. CA + mov eax, edx ; 0020 _ 89. D0 + and eax, 0EH ; 0022 _ 83. E0, 0E + shr eax, 1 ; 0025 _ D1. E8 + and eax, edx ; 0027 _ 21. D0 + and eax, 01H ; 0029 _ 83. E0, 01 + ret ; 002C _ C3 +; ct_u16_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 7, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 8, code +; Communal section not supported by YASM + +ct_u32_eq:; Function begin + xor ecx, edx ; 0000 _ 31. D1 + not ecx ; 0002 _ F7. D1 + mov eax, ecx ; 0004 _ 89. C8 + shr eax, 16 ; 0006 _ C1. E8, 10 + and eax, ecx ; 0009 _ 21. C8 + mov ecx, eax ; 000B _ 89. C1 + shr ecx, 8 ; 000D _ C1. E9, 08 + and ecx, eax ; 0010 _ 21. C1 + mov eax, ecx ; 0012 _ 89. C8 + shr eax, 4 ; 0014 _ C1. E8, 04 + and eax, ecx ; 0017 _ 21. C8 + mov ecx, eax ; 0019 _ 89. C1 + shr ecx, 2 ; 001B _ C1. E9, 02 + and ecx, eax ; 001E _ 21. C1 + mov eax, ecx ; 0020 _ 89. C8 + shr eax, 1 ; 0022 _ D1. E8 + and eax, ecx ; 0024 _ 21. C8 + and eax, 01H ; 0026 _ 83. E0, 01 + ret ; 0029 _ C3 +; ct_u32_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 9, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 10, code +; Communal section not supported by YASM + +ct_u64_eq:; Function begin + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +; ct_u64_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 11, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 12, code +; Communal section not supported by YASM + +ct_usize_eq:; Function begin + xor rcx, rdx ; 0000 _ 48: 31. D1 + not rcx ; 0003 _ 48: F7. D1 + mov rax, rcx ; 0006 _ 48: 89. C8 + shr rax, 32 ; 0009 _ 48: C1. E8, 20 + and rax, rcx ; 000D _ 48: 21. C8 + mov rcx, rax ; 0010 _ 48: 89. C1 + shr rcx, 16 ; 0013 _ 48: C1. E9, 10 + and rcx, rax ; 0017 _ 48: 21. C1 + mov rax, rcx ; 001A _ 48: 89. C8 + shr rax, 8 ; 001D _ 48: C1. E8, 08 + and rax, rcx ; 0021 _ 48: 21. C8 + mov rcx, rax ; 0024 _ 48: 89. C1 + shr rcx, 4 ; 0027 _ 48: C1. E9, 04 + and rcx, rax ; 002B _ 48: 21. C1 + mov rdx, rcx ; 002E _ 48: 89. CA + shr rdx, 2 ; 0031 _ 48: C1. EA, 02 + and edx, ecx ; 0035 _ 21. CA + mov eax, edx ; 0037 _ 89. D0 + shr eax, 1 ; 0039 _ D1. E8 + and eax, edx ; 003B _ 21. D0 + and eax, 01H ; 003D _ 83. E0, 01 + ret ; 0040 _ C3 +; ct_usize_eq End of function + + +SECTION .xdata align=4 noexecute ; section number 13, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 14, code +; Communal section not supported by YASM + +ct_u8_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_002 ; 000A _ 75, 30 + test r10, r10 ; 000C _ 4D: 85. D2 + jz ?_003 ; 000F _ 74, 2F + xor r9d, r9d ; 0011 _ 45: 31. C9 + xor edx, edx ; 0014 _ 31. D2 +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_001: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_006 ; 0023 _ 73, 2D + mov al, byte [r8+rdx] ; 0025 _ 41: 8A. 04 10 + xor al, byte [rcx+rdx] ; 0029 _ 32. 04 11 + inc rdx ; 002C _ 48: FF. C2 + or al, r9b ; 002F _ 44: 08. C8 + cmp rdx, r10 ; 0032 _ 4C: 39. D2 + mov r9b, al ; 0035 _ 41: 88. C1 + jc ?_001 ; 0038 _ 72, E6 + jmp ?_004 ; 003A _ EB, 06 + +?_002: xor eax, eax ; 003C _ 31. C0 + jmp ?_005 ; 003E _ EB, 0C + +?_003: xor eax, eax ; 0040 _ 31. C0 +?_004: movzx ecx, al ; 0042 _ 0F B6. C8 + xor edx, edx ; 0045 _ 31. D2 + call ct_u8_eq ; 0047 _ E8, 00000000(rel) +?_005: nop ; 004C _ 90 + add rsp, 40 ; 004D _ 48: 83. C4, 28 + ret ; 0051 _ C3 +; ct_u8_slice_eq End of function + +?_006: ; Local function + lea rcx, [rel panic_bounds_check_loc2725] ; 0052 _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0059 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 005C _ E8, 00000000(rel) + ud2 ; 0061 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 15, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 16, code +; Communal section not supported by YASM + +ct_u16_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_009 ; 000A _ 75, 3A + xor r9d, r9d ; 000C _ 45: 31. C9 + test r10, r10 ; 000F _ 4D: 85. D2 + jz ?_008 ; 0012 _ 74, 25 + xor edx, edx ; 0014 _ 31. D2 +; Filling space: 0AH +; Filler type: Multi-byte NOP +; db 66H, 2EH, 0FH, 1FH, 84H, 00H, 00H, 00H +; db 00H, 00H + +ALIGN 16 +?_007: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_011 ; 0023 _ 73, 28 + mov ax, word [r8+rdx*2] ; 0025 _ 66 41: 8B. 04 50 + xor ax, word [rcx+rdx*2] ; 002A _ 66: 33. 04 51 + inc rdx ; 002E _ 48: FF. C2 + or r9d, eax ; 0031 _ 41: 09. C1 + cmp rdx, r10 ; 0034 _ 4C: 39. D2 + jc ?_007 ; 0037 _ 72, E7 +?_008: movzx ecx, r9w ; 0039 _ 41: 0F B7. C9 + xor edx, edx ; 003D _ 31. D2 + call ct_u16_eq ; 003F _ E8, 00000000(rel) + jmp ?_010 ; 0044 _ EB, 02 + +?_009: xor eax, eax ; 0046 _ 31. C0 +?_010: add rsp, 40 ; 0048 _ 48: 83. C4, 28 + ret ; 004C _ C3 +; ct_u16_slice_eq End of function + +?_011: ; Local function + lea rcx, [rel panic_bounds_check_loc2725] ; 004D _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0054 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0057 _ E8, 00000000(rel) + ud2 ; 005C _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 17, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 18, code +; Communal section not supported by YASM + +ct_u32_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + xor eax, eax ; 0007 _ 31. C0 + cmp r10, r9 ; 0009 _ 4D: 39. CA + jnz ?_014 ; 000C _ 75, 35 + test r10, r10 ; 000E _ 4D: 85. D2 + jz ?_013 ; 0011 _ 74, 27 + xor r9d, r9d ; 0013 _ 45: 31. C9 + xor edx, edx ; 0016 _ 31. D2 +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_012: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_015 ; 0023 _ 73, 24 + mov eax, dword [r8+rdx*4] ; 0025 _ 41: 8B. 04 90 + xor eax, dword [rcx+rdx*4] ; 0029 _ 33. 04 91 + inc rdx ; 002C _ 48: FF. C2 + or eax, r9d ; 002F _ 44: 09. C8 + cmp rdx, r10 ; 0032 _ 4C: 39. D2 + mov r9d, eax ; 0035 _ 41: 89. C1 + jc ?_012 ; 0038 _ 72, E6 +?_013: xor edx, edx ; 003A _ 31. D2 + mov ecx, eax ; 003C _ 89. C1 + call ct_u32_eq ; 003E _ E8, 00000000(rel) +?_014: nop ; 0043 _ 90 + add rsp, 40 ; 0044 _ 48: 83. C4, 28 + ret ; 0048 _ C3 +; ct_u32_slice_eq End of function + +?_015: ; Local function + lea rcx, [rel panic_bounds_check_loc2725] ; 0049 _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0050 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0053 _ E8, 00000000(rel) + ud2 ; 0058 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 19, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 20, code +; Communal section not supported by YASM + +ct_u64_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_018 ; 000A _ 75, 3B + xor eax, eax ; 000C _ 31. C0 + test r10, r10 ; 000E _ 4D: 85. D2 + jz ?_017 ; 0011 _ 74, 28 + xor r9d, r9d ; 0013 _ 45: 31. C9 + xor edx, edx ; 0016 _ 31. D2 +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_016: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_020 ; 0023 _ 73, 29 + mov rax, qword [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or rax, r9 ; 0030 _ 4C: 09. C8 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + mov r9, rax ; 0036 _ 49: 89. C1 + jc ?_016 ; 0039 _ 72, E5 +?_017: xor edx, edx ; 003B _ 31. D2 + mov rcx, rax ; 003D _ 48: 89. C1 + call ct_u64_eq ; 0040 _ E8, 00000000(rel) + jmp ?_019 ; 0045 _ EB, 02 + +?_018: xor eax, eax ; 0047 _ 31. C0 +?_019: add rsp, 40 ; 0049 _ 48: 83. C4, 28 + ret ; 004D _ C3 +; ct_u64_slice_eq End of function + +?_020: ; Local function + lea rcx, [rel panic_bounds_check_loc2725] ; 004E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0055 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0058 _ E8, 00000000(rel) + ud2 ; 005D _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 21, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 22, code +; Communal section not supported by YASM + +ct_usize_slice_eq:; Function begin + sub rsp, 40 ; 0000 _ 48: 83. EC, 28 + mov r10, rdx ; 0004 _ 49: 89. D2 + cmp r10, r9 ; 0007 _ 4D: 39. CA + jnz ?_023 ; 000A _ 75, 3B + xor eax, eax ; 000C _ 31. C0 + test r10, r10 ; 000E _ 4D: 85. D2 + jz ?_022 ; 0011 _ 74, 28 + xor r9d, r9d ; 0013 _ 45: 31. C9 + xor edx, edx ; 0016 _ 31. D2 +; Filling space: 8H +; Filler type: Multi-byte NOP +; db 0FH, 1FH, 84H, 00H, 00H, 00H, 00H, 00H + +ALIGN 16 +?_021: cmp rdx, r10 ; 0020 _ 4C: 39. D2 + jnc ?_025 ; 0023 _ 73, 29 + mov rax, qword [r8+rdx*8] ; 0025 _ 49: 8B. 04 D0 + xor rax, qword [rcx+rdx*8] ; 0029 _ 48: 33. 04 D1 + inc rdx ; 002D _ 48: FF. C2 + or rax, r9 ; 0030 _ 4C: 09. C8 + cmp rdx, r10 ; 0033 _ 4C: 39. D2 + mov r9, rax ; 0036 _ 49: 89. C1 + jc ?_021 ; 0039 _ 72, E5 +?_022: xor edx, edx ; 003B _ 31. D2 + mov rcx, rax ; 003D _ 48: 89. C1 + call ct_usize_eq ; 0040 _ E8, 00000000(rel) + jmp ?_024 ; 0045 _ EB, 02 + +?_023: xor eax, eax ; 0047 _ 31. C0 +?_024: add rsp, 40 ; 0049 _ 48: 83. C4, 28 + ret ; 004D _ C3 +; ct_usize_slice_eq End of function + +?_025: ; Local function + lea rcx, [rel panic_bounds_check_loc2725] ; 004E _ 48: 8D. 0D, 00000000(rel) + mov r8, r10 ; 0055 _ 4D: 89. D0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0058 _ E8, 00000000(rel) + ud2 ; 005D _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 23, const +; Communal section not supported by YASM + + db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B.. + + +SECTION .text align=16 execute ; section number 24, code +; Communal section not supported by YASM + +ct_select_u8:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +; ct_select_u8 End of function + + +SECTION .xdata align=4 noexecute ; section number 25, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 26, code +; Communal section not supported by YASM + +ct_select_u16:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmovne r8w, dx ; 0002 _ 66 44: 0F 45. C2 + mov eax, r8d ; 0007 _ 44: 89. C0 + ret ; 000A _ C3 +; ct_select_u16 End of function + + +SECTION .xdata align=4 noexecute ; section number 27, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 28, code +; Communal section not supported by YASM + +ct_select_u32:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove edx, r8d ; 0002 _ 41: 0F 44. D0 + mov eax, edx ; 0006 _ 89. D0 + ret ; 0008 _ C3 +; ct_select_u32 End of function + + +SECTION .xdata align=4 noexecute ; section number 29, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 30, code +; Communal section not supported by YASM + +ct_select_u64:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +; ct_select_u64 End of function + + +SECTION .xdata align=4 noexecute ; section number 31, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 32, code +; Communal section not supported by YASM + +ct_select_usize:; Function begin + test cl, cl ; 0000 _ 84. C9 + cmove rdx, r8 ; 0002 _ 49: 0F 44. D0 + mov rax, rdx ; 0006 _ 48: 89. D0 + ret ; 0009 _ C3 +; ct_select_usize End of function + + +SECTION .xdata align=4 noexecute ; section number 33, const +; Communal section not supported by YASM + + db 01H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0000 _ ........ + + +SECTION .text align=16 execute ; section number 34, code +; Communal section not supported by YASM + +ct_copy_u8:; Function begin + push r15 ; 0000 _ 41: 57 + push r14 ; 0002 _ 41: 56 + push rsi ; 0004 _ 56 + push rdi ; 0005 _ 57 + push rbp ; 0006 _ 55 + push rbx ; 0007 _ 53 + sub rsp, 40 ; 0008 _ 48: 83. EC, 28 + mov r14, r9 ; 000C _ 4D: 89. CE + mov rsi, r8 ; 000F _ 4C: 89. C6 + mov rbx, rdx ; 0012 _ 48: 89. D3 + cmp rsi, qword [rsp+80H] ; 0015 _ 48: 3B. B4 24, 00000080 + jnz ?_029 ; 001D _ 75, 58 + test rsi, rsi ; 001F _ 48: 85. F6 + jz ?_027 ; 0022 _ 74, 32 + xor edi, edi ; 0024 _ 31. FF + movzx r15d, cl ; 0026 _ 44: 0F B6. F9 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_026: cmp rdi, rsi ; 0030 _ 48: 39. F7 + jnc ?_028 ; 0033 _ 73, 2E + lea rbp, [rdi+1H] ; 0035 _ 48: 8D. 6F, 01 + movzx r8d, byte [rbx+rdi] ; 0039 _ 44: 0F B6. 04 3B + movzx edx, byte [r14+rdi] ; 003E _ 41: 0F B6. 14 3E + mov ecx, r15d ; 0043 _ 44: 89. F9 + call ct_select_u8 ; 0046 _ E8, 00000000(rel) + mov byte [rbx+rdi], al ; 004B _ 88. 04 3B + cmp rbp, rsi ; 004E _ 48: 39. F5 + mov rdi, rbp ; 0051 _ 48: 89. EF + jc ?_026 ; 0054 _ 72, DA +?_027: add rsp, 40 ; 0056 _ 48: 83. C4, 28 + pop rbx ; 005A _ 5B + pop rbp ; 005B _ 5D + pop rdi ; 005C _ 5F + pop rsi ; 005D _ 5E + pop r14 ; 005E _ 41: 5E + pop r15 ; 0060 _ 41: 5F + ret ; 0062 _ C3 + +?_028: lea rcx, [rel panic_bounds_check_loc2727] ; 0063 _ 48: 8D. 0D, 00000000(rel) + mov rdx, rdi ; 006A _ 48: 89. FA + mov r8, rsi ; 006D _ 49: 89. F0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0070 _ E8, 00000000(rel) + ud2 ; 0075 _ 0F 0B +; ct_copy_u8 End of function + +?_029: ; Local function + lea rcx, [rel _ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE]; 0077 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 007E _ E8, 00000000(rel) + ud2 ; 0083 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 35, const +; Communal section not supported by YASM + + db 01H, 0CH, 07H, 00H, 0CH, 42H, 08H, 30H ; 0000 _ .....B.0 + db 07H, 50H, 06H, 70H, 05H, 60H, 04H, 0E0H ; 0008 _ .P.p.`.. + db 02H, 0F0H, 00H, 00H ; 0010 _ .... + + +SECTION .text align=16 execute ; section number 36, code +; Communal section not supported by YASM + +ct_copy_u16:; Function begin + push r15 ; 0000 _ 41: 57 + push r14 ; 0002 _ 41: 56 + push rsi ; 0004 _ 56 + push rdi ; 0005 _ 57 + push rbp ; 0006 _ 55 + push rbx ; 0007 _ 53 + sub rsp, 40 ; 0008 _ 48: 83. EC, 28 + mov r14, r9 ; 000C _ 4D: 89. CE + mov rsi, r8 ; 000F _ 4C: 89. C6 + mov rbx, rdx ; 0012 _ 48: 89. D3 + cmp rsi, qword [rsp+80H] ; 0015 _ 48: 3B. B4 24, 00000080 + jnz ?_033 ; 001D _ 75, 59 + test rsi, rsi ; 001F _ 48: 85. F6 + jz ?_031 ; 0022 _ 74, 33 + xor edi, edi ; 0024 _ 31. FF + movzx r15d, cl ; 0026 _ 44: 0F B6. F9 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_030: cmp rdi, rsi ; 0030 _ 48: 39. F7 + jnc ?_032 ; 0033 _ 73, 2F + lea rbp, [rdi+1H] ; 0035 _ 48: 8D. 6F, 01 + movzx r8d, word [rbx+rdi*2] ; 0039 _ 44: 0F B7. 04 7B + movzx edx, word [r14+rdi*2] ; 003E _ 41: 0F B7. 14 7E + mov ecx, r15d ; 0043 _ 44: 89. F9 + call ct_select_u16 ; 0046 _ E8, 00000000(rel) + mov word [rbx+rdi*2], ax ; 004B _ 66: 89. 04 7B + cmp rbp, rsi ; 004F _ 48: 39. F5 + mov rdi, rbp ; 0052 _ 48: 89. EF + jc ?_030 ; 0055 _ 72, D9 +?_031: add rsp, 40 ; 0057 _ 48: 83. C4, 28 + pop rbx ; 005B _ 5B + pop rbp ; 005C _ 5D + pop rdi ; 005D _ 5F + pop rsi ; 005E _ 5E + pop r14 ; 005F _ 41: 5E + pop r15 ; 0061 _ 41: 5F + ret ; 0063 _ C3 + +?_032: lea rcx, [rel panic_bounds_check_loc2727] ; 0064 _ 48: 8D. 0D, 00000000(rel) + mov rdx, rdi ; 006B _ 48: 89. FA + mov r8, rsi ; 006E _ 49: 89. F0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 0071 _ E8, 00000000(rel) + ud2 ; 0076 _ 0F 0B +; ct_copy_u16 End of function + +?_033: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E]; 0078 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 007F _ E8, 00000000(rel) + ud2 ; 0084 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 37, const +; Communal section not supported by YASM + + db 01H, 0CH, 07H, 00H, 0CH, 42H, 08H, 30H ; 0000 _ .....B.0 + db 07H, 50H, 06H, 70H, 05H, 60H, 04H, 0E0H ; 0008 _ .P.p.`.. + db 02H, 0F0H, 00H, 00H ; 0010 _ .... + + +SECTION .text align=16 execute ; section number 38, code +; Communal section not supported by YASM + +ct_copy_u32:; Function begin + push r15 ; 0000 _ 41: 57 + push r14 ; 0002 _ 41: 56 + push rsi ; 0004 _ 56 + push rdi ; 0005 _ 57 + push rbp ; 0006 _ 55 + push rbx ; 0007 _ 53 + sub rsp, 40 ; 0008 _ 48: 83. EC, 28 + mov r14, r9 ; 000C _ 4D: 89. CE + mov rsi, r8 ; 000F _ 4C: 89. C6 + mov rbx, rdx ; 0012 _ 48: 89. D3 + cmp rsi, qword [rsp+80H] ; 0015 _ 48: 3B. B4 24, 00000080 + jnz ?_037 ; 001D _ 75, 56 + test rsi, rsi ; 001F _ 48: 85. F6 + jz ?_035 ; 0022 _ 74, 30 + xor edi, edi ; 0024 _ 31. FF + movzx r15d, cl ; 0026 _ 44: 0F B6. F9 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_034: cmp rdi, rsi ; 0030 _ 48: 39. F7 + jnc ?_036 ; 0033 _ 73, 2C + lea rbp, [rdi+1H] ; 0035 _ 48: 8D. 6F, 01 + mov edx, dword [r14+rdi*4] ; 0039 _ 41: 8B. 14 BE + mov r8d, dword [rbx+rdi*4] ; 003D _ 44: 8B. 04 BB + mov ecx, r15d ; 0041 _ 44: 89. F9 + call ct_select_u32 ; 0044 _ E8, 00000000(rel) + mov dword [rbx+rdi*4], eax ; 0049 _ 89. 04 BB + cmp rbp, rsi ; 004C _ 48: 39. F5 + mov rdi, rbp ; 004F _ 48: 89. EF + jc ?_034 ; 0052 _ 72, DC +?_035: add rsp, 40 ; 0054 _ 48: 83. C4, 28 + pop rbx ; 0058 _ 5B + pop rbp ; 0059 _ 5D + pop rdi ; 005A _ 5F + pop rsi ; 005B _ 5E + pop r14 ; 005C _ 41: 5E + pop r15 ; 005E _ 41: 5F + ret ; 0060 _ C3 + +?_036: lea rcx, [rel panic_bounds_check_loc2727] ; 0061 _ 48: 8D. 0D, 00000000(rel) + mov rdx, rdi ; 0068 _ 48: 89. FA + mov r8, rsi ; 006B _ 49: 89. F0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 006E _ E8, 00000000(rel) + ud2 ; 0073 _ 0F 0B +; ct_copy_u32 End of function + +?_037: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E]; 0075 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 007C _ E8, 00000000(rel) + ud2 ; 0081 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 39, const +; Communal section not supported by YASM + + db 01H, 0CH, 07H, 00H, 0CH, 42H, 08H, 30H ; 0000 _ .....B.0 + db 07H, 50H, 06H, 70H, 05H, 60H, 04H, 0E0H ; 0008 _ .P.p.`.. + db 02H, 0F0H, 00H, 00H ; 0010 _ .... + + +SECTION .text align=16 execute ; section number 40, code +; Communal section not supported by YASM + +ct_copy_u64:; Function begin + push r15 ; 0000 _ 41: 57 + push r14 ; 0002 _ 41: 56 + push rsi ; 0004 _ 56 + push rdi ; 0005 _ 57 + push rbp ; 0006 _ 55 + push rbx ; 0007 _ 53 + sub rsp, 40 ; 0008 _ 48: 83. EC, 28 + mov r14, r9 ; 000C _ 4D: 89. CE + mov rsi, r8 ; 000F _ 4C: 89. C6 + mov rbx, rdx ; 0012 _ 48: 89. D3 + cmp rsi, qword [rsp+80H] ; 0015 _ 48: 3B. B4 24, 00000080 + jnz ?_041 ; 001D _ 75, 57 + test rsi, rsi ; 001F _ 48: 85. F6 + jz ?_039 ; 0022 _ 74, 31 + xor edi, edi ; 0024 _ 31. FF + movzx r15d, cl ; 0026 _ 44: 0F B6. F9 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_038: cmp rdi, rsi ; 0030 _ 48: 39. F7 + jnc ?_040 ; 0033 _ 73, 2D + lea rbp, [rdi+1H] ; 0035 _ 48: 8D. 6F, 01 + mov rdx, qword [r14+rdi*8] ; 0039 _ 49: 8B. 14 FE + mov r8, qword [rbx+rdi*8] ; 003D _ 4C: 8B. 04 FB + mov ecx, r15d ; 0041 _ 44: 89. F9 + call ct_select_u64 ; 0044 _ E8, 00000000(rel) + mov qword [rbx+rdi*8], rax ; 0049 _ 48: 89. 04 FB + cmp rbp, rsi ; 004D _ 48: 39. F5 + mov rdi, rbp ; 0050 _ 48: 89. EF + jc ?_038 ; 0053 _ 72, DB +?_039: add rsp, 40 ; 0055 _ 48: 83. C4, 28 + pop rbx ; 0059 _ 5B + pop rbp ; 005A _ 5D + pop rdi ; 005B _ 5F + pop rsi ; 005C _ 5E + pop r14 ; 005D _ 41: 5E + pop r15 ; 005F _ 41: 5F + ret ; 0061 _ C3 + +?_040: lea rcx, [rel panic_bounds_check_loc2727] ; 0062 _ 48: 8D. 0D, 00000000(rel) + mov rdx, rdi ; 0069 _ 48: 89. FA + mov r8, rsi ; 006C _ 49: 89. F0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 006F _ E8, 00000000(rel) + ud2 ; 0074 _ 0F 0B +; ct_copy_u64 End of function + +?_041: ; Local function + lea rcx, [rel _ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E]; 0076 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 007D _ E8, 00000000(rel) + ud2 ; 0082 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 41, const +; Communal section not supported by YASM + + db 01H, 0CH, 07H, 00H, 0CH, 42H, 08H, 30H ; 0000 _ .....B.0 + db 07H, 50H, 06H, 70H, 05H, 60H, 04H, 0E0H ; 0008 _ .P.p.`.. + db 02H, 0F0H, 00H, 00H ; 0010 _ .... + + +SECTION .text align=16 execute ; section number 42, code +; Communal section not supported by YASM + +ct_copy_usize:; Function begin + push r15 ; 0000 _ 41: 57 + push r14 ; 0002 _ 41: 56 + push rsi ; 0004 _ 56 + push rdi ; 0005 _ 57 + push rbp ; 0006 _ 55 + push rbx ; 0007 _ 53 + sub rsp, 40 ; 0008 _ 48: 83. EC, 28 + mov r14, r9 ; 000C _ 4D: 89. CE + mov rsi, r8 ; 000F _ 4C: 89. C6 + mov rbx, rdx ; 0012 _ 48: 89. D3 + cmp rsi, qword [rsp+80H] ; 0015 _ 48: 3B. B4 24, 00000080 + jnz ?_045 ; 001D _ 75, 57 + test rsi, rsi ; 001F _ 48: 85. F6 + jz ?_043 ; 0022 _ 74, 31 + xor edi, edi ; 0024 _ 31. FF + movzx r15d, cl ; 0026 _ 44: 0F B6. F9 +; Filling space: 6H +; Filler type: Multi-byte NOP +; db 66H, 0FH, 1FH, 44H, 00H, 00H + +ALIGN 8 +?_042: cmp rdi, rsi ; 0030 _ 48: 39. F7 + jnc ?_044 ; 0033 _ 73, 2D + lea rbp, [rdi+1H] ; 0035 _ 48: 8D. 6F, 01 + mov rdx, qword [r14+rdi*8] ; 0039 _ 49: 8B. 14 FE + mov r8, qword [rbx+rdi*8] ; 003D _ 4C: 8B. 04 FB + mov ecx, r15d ; 0041 _ 44: 89. F9 + call ct_select_usize ; 0044 _ E8, 00000000(rel) + mov qword [rbx+rdi*8], rax ; 0049 _ 48: 89. 04 FB + cmp rbp, rsi ; 004D _ 48: 39. F5 + mov rdi, rbp ; 0050 _ 48: 89. EF + jc ?_042 ; 0053 _ 72, DB +?_043: add rsp, 40 ; 0055 _ 48: 83. C4, 28 + pop rbx ; 0059 _ 5B + pop rbp ; 005A _ 5D + pop rdi ; 005B _ 5F + pop rsi ; 005C _ 5E + pop r14 ; 005D _ 41: 5E + pop r15 ; 005F _ 41: 5F + ret ; 0061 _ C3 + +?_044: lea rcx, [rel panic_bounds_check_loc2727] ; 0062 _ 48: 8D. 0D, 00000000(rel) + mov rdx, rdi ; 0069 _ 48: 89. FA + mov r8, rsi ; 006C _ 49: 89. F0 + call _ZN4core9panicking18panic_bounds_check17h19e9bbc59320a57eE; 006F _ E8, 00000000(rel) + ud2 ; 0074 _ 0F 0B +; ct_copy_usize End of function + +?_045: ; Local function + lea rcx, [rel _ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE]; 0076 _ 48: 8D. 0D, 00000000(rel) + call _ZN4core9panicking5panic17h53676c30b3bd95ebE; 007D _ E8, 00000000(rel) + ud2 ; 0082 _ 0F 0B + + +SECTION .xdata align=4 noexecute ; section number 43, const +; Communal section not supported by YASM + + db 01H, 0CH, 07H, 00H, 0CH, 42H, 08H, 30H ; 0000 _ .....B.0 + db 07H, 50H, 06H, 70H, 05H, 60H, 04H, 0E0H ; 0008 _ .P.p.`.. + db 02H, 0F0H, 00H, 00H ; 0010 _ .... + + +SECTION .rdata align=1 noexecute ; section number 44, const +; Communal section not supported by YASM + +str2724: ; byte + db 6CH, 69H, 62H, 2EH, 72H, 73H ; 0000 _ lib.rs + + +SECTION .rdata align=8 noexecute ; section number 45, const +; Communal section not supported by YASM + +panic_bounds_check_loc2725: ; byte + dq str2724 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 00000000000000C6H ; 0010 _ 00000000000000C6 + + +SECTION .rdata align=8 noexecute ; section number 46, const +; Communal section not supported by YASM + +panic_bounds_check_loc2727: ; byte + dq str2724 ; 0000 _ 0000000000000000 (d) + dq 0000000000000006H ; 0008 _ 0000000000000006 + dq 0000000000000127H ; 0010 _ 0000000000000127 + + +SECTION .rdata align=16 noexecute ; section number 47, const +; Communal section not supported by YASM + +str2730: ; byte + db 43H, 6FH, 6EH, 73H, 69H, 73H, 74H, 65H ; 0000 _ Consiste + db 6EH, 74H, 20H, 54H, 69H, 6DH, 65H, 3AH ; 0008 _ nt Time: + db 20H, 41H, 74H, 74H, 65H, 6DH, 70H, 74H ; 0010 _ Attempt + db 65H, 64H, 20H, 74H, 6FH, 20H, 63H, 6FH ; 0018 _ ed to co + db 70H, 79H, 20H, 62H, 65H, 74H, 77H, 65H ; 0020 _ py betwe + db 65H, 6EH, 20H, 6EH, 6FH, 6EH, 2DH, 65H ; 0028 _ en non-e + db 71H, 75H, 61H, 6CH, 20H, 6CH, 65H, 6EH ; 0030 _ qual len + db 73H ; 0038 _ s + + +SECTION .rdata align=8 noexecute ; section number 48, const +; Communal section not supported by YASM + +_ZN3lib10ct_copy_u814_MSG_FILE_LINE17h64c7ea2d2318bf7eE: ; byte + dq str2730 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2724 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000143H ; 0020 _ 0000000000000143 + + +SECTION .rdata align=8 noexecute ; section number 49, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u1614_MSG_FILE_LINE17h0720c751c1c65958E: ; byte + dq str2730 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2724 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000145H ; 0020 _ 0000000000000145 + + +SECTION .rdata align=8 noexecute ; section number 50, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u3214_MSG_FILE_LINE17h97069ea755197a67E: ; byte + dq str2730 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2724 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000147H ; 0020 _ 0000000000000147 + + +SECTION .rdata align=8 noexecute ; section number 51, const +; Communal section not supported by YASM + +_ZN3lib11ct_copy_u6414_MSG_FILE_LINE17h681d4127c3bafbb0E: ; byte + dq str2730 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2724 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 0000000000000149H ; 0020 _ 0000000000000149 + + +SECTION .rdata align=8 noexecute ; section number 52, const +; Communal section not supported by YASM + +_ZN3lib13ct_copy_usize14_MSG_FILE_LINE17h6013818c7296816eE: ; byte + dq str2730 ; 0000 _ 0000000000000000 (d) + dq 0000000000000039H ; 0008 _ 0000000000000039 + dq str2724 ; 0010 _ 0000000000000000 (d) + dq 0000000000000006H ; 0018 _ 0000000000000006 + dq 000000000000014BH ; 0020 _ 000000000000014B + + diff --git a/audit_x64_msvc_LEGACY/readme.txt b/audit_x64_msvc_LEGACY/readme.txt new file mode 100644 index 0000000..c19f3c6 --- /dev/null +++ b/audit_x64_msvc_LEGACY/readme.txt @@ -0,0 +1,35 @@ +Auditing + +I don't know if this useful, and I don't 100% know if this is what anyone +needs. + + +Build Notes: + +Compiler: rustc 1.13.0 (2c6933acc 2016-11-07) x64 MSVC + https://www.rust-lang.org/en-US/downloads.html +Oject Dumper: Agner Fog objconv + http://www.agner.org/optimize/#objconv + + +NOTE: This commit was modified to use the preable #[no_mangle] which makes +the object dumps easier to read + +NOTE: The functions had extern "C" added to their definatinos so their +ABI will follow normal C ABI. + +NOTE: A build file is located in the src/ file. + + +Contents: + +- Object Dumps + all objconv.exe formats + +- build script + I use git-for-windows which is a MINGW64 knock off bourne shell + which integrates OKAY with windows. + +- lib_expanded.rs + All macro's removed, this is the file POST macro expansion + diff --git a/docs/.lock b/docs/.lock deleted file mode 100644 index e69de29..0000000 diff --git a/docs/COPYRIGHT.txt b/docs/COPYRIGHT.txt deleted file mode 100644 index 8773ce6..0000000 --- a/docs/COPYRIGHT.txt +++ /dev/null @@ -1,64 +0,0 @@ -These documentation pages include resources by third parties. This copyright -file applies only to those resources. The following third party resources are -included, and carry their own copyright notices and license terms: - -* Fira Sans (FiraSans-Regular.woff, FiraSans-Medium.woff): - - Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ - with Reserved Font Name Fira Sans. - - Copyright (c) 2014, Telefonica S.A. - - Licensed under the SIL Open Font License, Version 1.1. - See FiraSans-LICENSE.txt. - -* Heuristica (Heuristica-Italic.woff): - - Copyright 1989, 1991 Adobe Systems Incorporated. All rights reserved. - Utopia is either a registered trademark or trademark of Adobe Systems - Incorporated in the United States and/or other countries. Used under - license. - - Copyright 2006 Han The Thanh, Vntopia font family, http://vntex.sf.net - - Copyright (c) 2008-2012, Andrey V. Panov (panov@canopus.iacp.dvo.ru), - with Reserved Font Name Heuristica. - - Licensed under the SIL Open Font License, Version 1.1. - See Heuristica-LICENSE.txt. - -* jQuery (jquery-2.1.4.min.js): - - Copyright 2005, 2015 jQuery Foundation, Inc. - Licensed under the MIT license (see LICENSE-MIT.txt). - -* rustdoc.css, main.js, and playpen.js: - - Copyright 2015 The Rust Developers. - Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or - the MIT license (LICENSE-MIT.txt) at your option. - -* normalize.css: - - Copyright (c) Nicolas Gallagher and Jonathan Neal. - Licensed under the MIT license (see LICENSE-MIT.txt). - -* Source Code Pro (SourceCodePro-Regular.woff, SourceCodePro-Semibold.woff): - - Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), - with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark - of Adobe Systems Incorporated in the United States and/or other countries. - - Licensed under the SIL Open Font License, Version 1.1. - See SourceCodePro-LICENSE.txt. - -* Source Serif Pro (SourceSerifPro-Regular.woff, SourceSerifPro-Bold.woff): - - Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/), with - Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of - Adobe Systems Incorporated in the United States and/or other countries. - - Licensed under the SIL Open Font License, Version 1.1. - See SourceSerifPro-LICENSE.txt. - -This copyright file is intended to be distributed with rustdoc output. diff --git a/docs/FiraSans-LICENSE.txt b/docs/FiraSans-LICENSE.txt deleted file mode 100644 index b4a3967..0000000 --- a/docs/FiraSans-LICENSE.txt +++ /dev/null @@ -1,99 +0,0 @@ -Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ -with Reserved Font Name Fira Sans. - -Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ -with Reserved Font Name Fira Mono. - -Copyright (c) 2014, Telefonica S.A. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/FiraSans-Medium.woff b/docs/FiraSans-Medium.woff deleted file mode 100644 index 5627227..0000000 Binary files a/docs/FiraSans-Medium.woff and /dev/null differ diff --git a/docs/FiraSans-Regular.woff b/docs/FiraSans-Regular.woff deleted file mode 100644 index 9ff4044..0000000 Binary files a/docs/FiraSans-Regular.woff and /dev/null differ diff --git a/docs/Heuristica-Italic.woff b/docs/Heuristica-Italic.woff deleted file mode 100644 index b0cebf0..0000000 Binary files a/docs/Heuristica-Italic.woff and /dev/null differ diff --git a/docs/Heuristica-LICENSE.txt b/docs/Heuristica-LICENSE.txt deleted file mode 100644 index dd85e40..0000000 --- a/docs/Heuristica-LICENSE.txt +++ /dev/null @@ -1,101 +0,0 @@ -Copyright 1989, 1991 Adobe Systems Incorporated. All rights reserved. -Utopia is either a registered trademark or trademark of Adobe Systems -Incorporated in the United States and/or other countries. Used under -license. - -Copyright 2006 Han The Thanh, Vntopia font family, http://vntex.sf.net - -Copyright (c) 2008-2012, Andrey V. Panov (panov@canopus.iacp.dvo.ru), -with Reserved Font Name Heuristica. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/LICENSE-APACHE.txt b/docs/LICENSE-APACHE.txt deleted file mode 100644 index 16fe87b..0000000 --- a/docs/LICENSE-APACHE.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/docs/LICENSE-MIT.txt b/docs/LICENSE-MIT.txt deleted file mode 100644 index 31aa793..0000000 --- a/docs/LICENSE-MIT.txt +++ /dev/null @@ -1,23 +0,0 @@ -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/docs/SourceCodePro-LICENSE.txt b/docs/SourceCodePro-LICENSE.txt deleted file mode 100644 index 0754257..0000000 --- a/docs/SourceCodePro-LICENSE.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/SourceCodePro-Regular.woff b/docs/SourceCodePro-Regular.woff deleted file mode 100644 index 5576670..0000000 Binary files a/docs/SourceCodePro-Regular.woff and /dev/null differ diff --git a/docs/SourceCodePro-Semibold.woff b/docs/SourceCodePro-Semibold.woff deleted file mode 100644 index ca972a1..0000000 Binary files a/docs/SourceCodePro-Semibold.woff and /dev/null differ diff --git a/docs/SourceSerifPro-Bold.woff b/docs/SourceSerifPro-Bold.woff deleted file mode 100644 index ac1b1b3..0000000 Binary files a/docs/SourceSerifPro-Bold.woff and /dev/null differ diff --git a/docs/SourceSerifPro-LICENSE.txt b/docs/SourceSerifPro-LICENSE.txt deleted file mode 100644 index b77d653..0000000 --- a/docs/SourceSerifPro-LICENSE.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/SourceSerifPro-Regular.woff b/docs/SourceSerifPro-Regular.woff deleted file mode 100644 index e8c43b8..0000000 Binary files a/docs/SourceSerifPro-Regular.woff and /dev/null differ diff --git a/docs/consistenttime/ct_copy_u16.v.html b/docs/consistenttime/ct_copy_u16.v.html deleted file mode 100644 index 3deedad..0000000 --- a/docs/consistenttime/ct_copy_u16.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_copy_u16.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_copy_u32.v.html b/docs/consistenttime/ct_copy_u32.v.html deleted file mode 100644 index a556cc3..0000000 --- a/docs/consistenttime/ct_copy_u32.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_copy_u32.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_copy_u64.v.html b/docs/consistenttime/ct_copy_u64.v.html deleted file mode 100644 index 266f6bc..0000000 --- a/docs/consistenttime/ct_copy_u64.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_copy_u64.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_copy_u8.v.html b/docs/consistenttime/ct_copy_u8.v.html deleted file mode 100644 index a76e031..0000000 --- a/docs/consistenttime/ct_copy_u8.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_copy_u8.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_copy_usize.v.html b/docs/consistenttime/ct_copy_usize.v.html deleted file mode 100644 index 962d41f..0000000 --- a/docs/consistenttime/ct_copy_usize.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_copy_usize.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_select_u16.v.html b/docs/consistenttime/ct_select_u16.v.html deleted file mode 100644 index b554a51..0000000 --- a/docs/consistenttime/ct_select_u16.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_select_u16.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_select_u32.v.html b/docs/consistenttime/ct_select_u32.v.html deleted file mode 100644 index e58f23b..0000000 --- a/docs/consistenttime/ct_select_u32.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_select_u32.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_select_u64.v.html b/docs/consistenttime/ct_select_u64.v.html deleted file mode 100644 index 8a65d73..0000000 --- a/docs/consistenttime/ct_select_u64.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_select_u64.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_select_u8.v.html b/docs/consistenttime/ct_select_u8.v.html deleted file mode 100644 index 4650f4c..0000000 --- a/docs/consistenttime/ct_select_u8.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_select_u8.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_select_usize.v.html b/docs/consistenttime/ct_select_usize.v.html deleted file mode 100644 index aaa3891..0000000 --- a/docs/consistenttime/ct_select_usize.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_select_usize.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_u16_eq.v.html b/docs/consistenttime/ct_u16_eq.v.html deleted file mode 100644 index 27a4881..0000000 --- a/docs/consistenttime/ct_u16_eq.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_u16_eq.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_u16_slice_eq.v.html b/docs/consistenttime/ct_u16_slice_eq.v.html deleted file mode 100644 index 45cf302..0000000 --- a/docs/consistenttime/ct_u16_slice_eq.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_u16_slice_eq.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_u32_eq.v.html b/docs/consistenttime/ct_u32_eq.v.html deleted file mode 100644 index 459c960..0000000 --- a/docs/consistenttime/ct_u32_eq.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_u32_eq.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_u32_slice_eq.v.html b/docs/consistenttime/ct_u32_slice_eq.v.html deleted file mode 100644 index cf70fec..0000000 --- a/docs/consistenttime/ct_u32_slice_eq.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_u32_slice_eq.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_u64_eq.v.html b/docs/consistenttime/ct_u64_eq.v.html deleted file mode 100644 index f439798..0000000 --- a/docs/consistenttime/ct_u64_eq.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_u64_eq.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_u64_slice_eq.v.html b/docs/consistenttime/ct_u64_slice_eq.v.html deleted file mode 100644 index 1fe1f48..0000000 --- a/docs/consistenttime/ct_u64_slice_eq.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_u64_slice_eq.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_u8_eq.v.html b/docs/consistenttime/ct_u8_eq.v.html deleted file mode 100644 index c52c9e2..0000000 --- a/docs/consistenttime/ct_u8_eq.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_u8_eq.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_u8_slice_eq.v.html b/docs/consistenttime/ct_u8_slice_eq.v.html deleted file mode 100644 index 5464778..0000000 --- a/docs/consistenttime/ct_u8_slice_eq.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_u8_slice_eq.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_usize_eq.v.html b/docs/consistenttime/ct_usize_eq.v.html deleted file mode 100644 index 3384875..0000000 --- a/docs/consistenttime/ct_usize_eq.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_usize_eq.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/ct_usize_slice_eq.v.html b/docs/consistenttime/ct_usize_slice_eq.v.html deleted file mode 100644 index d8987c1..0000000 --- a/docs/consistenttime/ct_usize_slice_eq.v.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - -

Redirecting to fn.ct_usize_slice_eq.html...

- - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_copy_u16.html b/docs/consistenttime/fn.ct_copy_u16.html deleted file mode 100644 index 1d0fdc3..0000000 --- a/docs/consistenttime/fn.ct_copy_u16.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - consistenttime::ct_copy_u16 - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_copy_u16 - - [] - - [src]

-
pub fn ct_copy_u16(flag: bool, x: &mut [u16], y: &[u16])

Constant time optional buffer copying

- -

Copies the value of Y into X (provides slices are equal length) -IF flag == True

- -

If flag == False X is left unchanged.

- -

Panic:

-

This function will panic if X and Y are not equal length.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_copy_u32.html b/docs/consistenttime/fn.ct_copy_u32.html deleted file mode 100644 index 92fc3e3..0000000 --- a/docs/consistenttime/fn.ct_copy_u32.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - consistenttime::ct_copy_u32 - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_copy_u32 - - [] - - [src]

-
pub fn ct_copy_u32(flag: bool, x: &mut [u32], y: &[u32])

Constant time optional buffer copying

- -

Copies the value of Y into X (provides slices are equal length) -IF flag == True

- -

If flag == False X is left unchanged.

- -

Panic:

-

This function will panic if X and Y are not equal length.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_copy_u64.html b/docs/consistenttime/fn.ct_copy_u64.html deleted file mode 100644 index 55edde9..0000000 --- a/docs/consistenttime/fn.ct_copy_u64.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - consistenttime::ct_copy_u64 - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_copy_u64 - - [] - - [src]

-
pub fn ct_copy_u64(flag: bool, x: &mut [u64], y: &[u64])

Constant time optional buffer copying

- -

Copies the value of Y into X (provides slices are equal length) -IF flag == True

- -

If flag == False X is left unchanged.

- -

Panic:

-

This function will panic if X and Y are not equal length.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_copy_u8.html b/docs/consistenttime/fn.ct_copy_u8.html deleted file mode 100644 index 6b995aa..0000000 --- a/docs/consistenttime/fn.ct_copy_u8.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - consistenttime::ct_copy_u8 - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_copy_u8 - - [] - - [src]

-
pub fn ct_copy_u8(flag: bool, x: &mut [u8], y: &[u8])

Constant time optional buffer copying

- -

Copies the value of Y into X (provides slices are equal length) -IF flag == True

- -

If flag == False X is left unchanged.

- -

Panic:

-

This function will panic if X and Y are not equal length.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_copy_usize.html b/docs/consistenttime/fn.ct_copy_usize.html deleted file mode 100644 index e268113..0000000 --- a/docs/consistenttime/fn.ct_copy_usize.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - consistenttime::ct_copy_usize - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_copy_usize - - [] - - [src]

-
pub fn ct_copy_usize(flag: bool, x: &mut [usize], y: &[usize])

Constant time optional buffer copying

- -

Copies the value of Y into X (provides slices are equal length) -IF flag == True

- -

If flag == False X is left unchanged.

- -

Panic:

-

This function will panic if X and Y are not equal length.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_select_u16.html b/docs/consistenttime/fn.ct_select_u16.html deleted file mode 100644 index 6ac25d0..0000000 --- a/docs/consistenttime/fn.ct_select_u16.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - consistenttime::ct_select_u16 - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_select_u16 - - [] - - [src]

-
pub fn ct_select_u16(flag: bool, x: u16, y: u16) -> u16

Optional value selection.

- -

Allow to set a varible optionally at the same speed without -branching, or changing speed.

- -

Returns X if flag == True.

- -

Returns Y if flag == False.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_select_u32.html b/docs/consistenttime/fn.ct_select_u32.html deleted file mode 100644 index c043d07..0000000 --- a/docs/consistenttime/fn.ct_select_u32.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - consistenttime::ct_select_u32 - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_select_u32 - - [] - - [src]

-
pub fn ct_select_u32(flag: bool, x: u32, y: u32) -> u32

Optional value selection.

- -

Allow to set a varible optionally at the same speed without -branching, or changing speed.

- -

Returns X if flag == True.

- -

Returns Y if flag == False.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_select_u64.html b/docs/consistenttime/fn.ct_select_u64.html deleted file mode 100644 index 90c6b89..0000000 --- a/docs/consistenttime/fn.ct_select_u64.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - consistenttime::ct_select_u64 - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_select_u64 - - [] - - [src]

-
pub fn ct_select_u64(flag: bool, x: u64, y: u64) -> u64

Optional value selection.

- -

Allow to set a varible optionally at the same speed without -branching, or changing speed.

- -

Returns X if flag == True.

- -

Returns Y if flag == False.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_select_u8.html b/docs/consistenttime/fn.ct_select_u8.html deleted file mode 100644 index 65d4239..0000000 --- a/docs/consistenttime/fn.ct_select_u8.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - consistenttime::ct_select_u8 - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_select_u8 - - [] - - [src]

-
pub fn ct_select_u8(flag: bool, x: u8, y: u8) -> u8

Optional value selection.

- -

Allow to set a varible optionally at the same speed without -branching, or changing speed.

- -

Returns X if flag == True.

- -

Returns Y if flag == False.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_select_usize.html b/docs/consistenttime/fn.ct_select_usize.html deleted file mode 100644 index eccf85d..0000000 --- a/docs/consistenttime/fn.ct_select_usize.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - consistenttime::ct_select_usize - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_select_usize - - [] - - [src]

-
pub fn ct_select_usize(flag: bool, x: usize, y: usize) -> usize

Optional value selection.

- -

Allow to set a varible optionally at the same speed without -branching, or changing speed.

- -

Returns X if flag == True.

- -

Returns Y if flag == False.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_u16_eq.html b/docs/consistenttime/fn.ct_u16_eq.html deleted file mode 100644 index 2a9dcf3..0000000 --- a/docs/consistenttime/fn.ct_u16_eq.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - consistenttime::ct_u16_eq - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_u16_eq - - [] - - [src]

-
pub fn ct_u16_eq(x: u16, y: u16) -> bool

Tests if two values are equal in constant time.

- -

XORs, Shift Rights, AND are all that are used. There is -no branching.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_u16_slice_eq.html b/docs/consistenttime/fn.ct_u16_slice_eq.html deleted file mode 100644 index dc00e9b..0000000 --- a/docs/consistenttime/fn.ct_u16_slice_eq.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - consistenttime::ct_u16_slice_eq - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_u16_slice_eq - - [] - - [src]

-
pub fn ct_u16_slice_eq(x: &[u16], y: &[u16]) -> bool

Check the equality of slices.

- -

This will transverse the entire slice reguardless of if a -conflict is found early.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_u32_eq.html b/docs/consistenttime/fn.ct_u32_eq.html deleted file mode 100644 index f666352..0000000 --- a/docs/consistenttime/fn.ct_u32_eq.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - consistenttime::ct_u32_eq - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_u32_eq - - [] - - [src]

-
pub fn ct_u32_eq(x: u32, y: u32) -> bool

Tests if two values are equal in constant time.

- -

XORs, Shift Rights, AND are all that are used. There is -no branching.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_u32_slice_eq.html b/docs/consistenttime/fn.ct_u32_slice_eq.html deleted file mode 100644 index 02643d2..0000000 --- a/docs/consistenttime/fn.ct_u32_slice_eq.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - consistenttime::ct_u32_slice_eq - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_u32_slice_eq - - [] - - [src]

-
pub fn ct_u32_slice_eq(x: &[u32], y: &[u32]) -> bool

Check the equality of slices.

- -

This will transverse the entire slice reguardless of if a -conflict is found early.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_u64_eq.html b/docs/consistenttime/fn.ct_u64_eq.html deleted file mode 100644 index 248e6cc..0000000 --- a/docs/consistenttime/fn.ct_u64_eq.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - consistenttime::ct_u64_eq - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_u64_eq - - [] - - [src]

-
pub fn ct_u64_eq(x: u64, y: u64) -> bool

Tests if two values are equal in constant time.

- -

XORs, Shift Rights, AND are all that are used. There is -no branching.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_u64_slice_eq.html b/docs/consistenttime/fn.ct_u64_slice_eq.html deleted file mode 100644 index 1d9f97b..0000000 --- a/docs/consistenttime/fn.ct_u64_slice_eq.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - consistenttime::ct_u64_slice_eq - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_u64_slice_eq - - [] - - [src]

-
pub fn ct_u64_slice_eq(x: &[u64], y: &[u64]) -> bool

Check the equality of slices.

- -

This will transverse the entire slice reguardless of if a -conflict is found early.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_u8_eq.html b/docs/consistenttime/fn.ct_u8_eq.html deleted file mode 100644 index 1d6e5bc..0000000 --- a/docs/consistenttime/fn.ct_u8_eq.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - consistenttime::ct_u8_eq - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_u8_eq - - [] - - [src]

-
pub fn ct_u8_eq(x: u8, y: u8) -> bool

Tests if two values are equal in constant time.

- -

XORs, Shift Rights, AND are all that are used. There is -no branching.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_u8_slice_eq.html b/docs/consistenttime/fn.ct_u8_slice_eq.html deleted file mode 100644 index 1f9647c..0000000 --- a/docs/consistenttime/fn.ct_u8_slice_eq.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - consistenttime::ct_u8_slice_eq - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_u8_slice_eq - - [] - - [src]

-
pub fn ct_u8_slice_eq(x: &[u8], y: &[u8]) -> bool

Check the equality of slices.

- -

This will transverse the entire slice reguardless of if a -conflict is found early.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_usize_eq.html b/docs/consistenttime/fn.ct_usize_eq.html deleted file mode 100644 index 092dbbf..0000000 --- a/docs/consistenttime/fn.ct_usize_eq.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - consistenttime::ct_usize_eq - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_usize_eq - - [] - - [src]

-
pub fn ct_usize_eq(x: usize, y: usize) -> bool

Tests if two values are equal in constant time.

- -

XORs, Shift Rights, AND are all that are used. There is -no branching.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/fn.ct_usize_slice_eq.html b/docs/consistenttime/fn.ct_usize_slice_eq.html deleted file mode 100644 index 179bdd4..0000000 --- a/docs/consistenttime/fn.ct_usize_slice_eq.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - consistenttime::ct_usize_slice_eq - Rust - - - - - - - - - - - - - - - - - -
-

Function consistenttime::ct_usize_slice_eq - - [] - - [src]

-
pub fn ct_usize_slice_eq(x: &[usize], y: &[usize]) -> bool

Check the equality of slices.

- -

This will transverse the entire slice reguardless of if a -conflict is found early.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/index.html b/docs/consistenttime/index.html deleted file mode 100644 index 66a5da2..0000000 --- a/docs/consistenttime/index.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - - - consistenttime - Rust - - - - - - - - - - - - - - - - - -
-

Crate consistenttime - - [] - - [src]

-

Consistent Time

- -

The goal of this crate is to offer constant time functions which most -cryptographic computing protocols require to prevent side channeling -timing attacks.

- -

These algorithms are not implemented to be efficient. But to take the -same number of processor cycles if their outcome is true, or false. -The reference used for this crate is Go-Lang's -crypto/subtile -Which implements a handful of constant time algorithms.

- -

I took the liberity of generalizing them out to all unsigned sizes -supported by Rust-Lang. Everything inside of this crate is defined -as a macro. This makes writing the extremely repetive code for all -types a lot easier.

- -

There is internal unsafe code to handle converting bool to u8 -and vice versa. The machine instructions generated for these -operations involve no branches or comparison operators, -see the notes in the source code.

-

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ct_copy_u16 -

Constant time optional buffer copying

-
ct_copy_u32 -

Constant time optional buffer copying

-
ct_copy_u64 -

Constant time optional buffer copying

-
ct_copy_u8 -

Constant time optional buffer copying

-
ct_copy_usize -

Constant time optional buffer copying

-
ct_select_u16 -

Optional value selection.

-
ct_select_u32 -

Optional value selection.

-
ct_select_u64 -

Optional value selection.

-
ct_select_u8 -

Optional value selection.

-
ct_select_usize -

Optional value selection.

-
ct_u16_eq -

Tests if two values are equal in constant time.

-
ct_u16_slice_eq -

Check the equality of slices.

-
ct_u32_eq -

Tests if two values are equal in constant time.

-
ct_u32_slice_eq -

Check the equality of slices.

-
ct_u64_eq -

Tests if two values are equal in constant time.

-
ct_u64_slice_eq -

Check the equality of slices.

-
ct_u8_eq -

Tests if two values are equal in constant time.

-
ct_u8_slice_eq -

Check the equality of slices.

-
ct_usize_eq -

Tests if two values are equal in constant time.

-
ct_usize_slice_eq -

Check the equality of slices.

-
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/consistenttime/sidebar-items.js b/docs/consistenttime/sidebar-items.js deleted file mode 100644 index a524644..0000000 --- a/docs/consistenttime/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["ct_copy_u16","Constant time optional buffer copying"],["ct_copy_u32","Constant time optional buffer copying"],["ct_copy_u64","Constant time optional buffer copying"],["ct_copy_u8","Constant time optional buffer copying"],["ct_copy_usize","Constant time optional buffer copying"],["ct_select_u16","Optional value selection."],["ct_select_u32","Optional value selection."],["ct_select_u64","Optional value selection."],["ct_select_u8","Optional value selection."],["ct_select_usize","Optional value selection."],["ct_u16_eq","Tests if two values are equal in constant time."],["ct_u16_slice_eq","Check the equality of slices."],["ct_u32_eq","Tests if two values are equal in constant time."],["ct_u32_slice_eq","Check the equality of slices."],["ct_u64_eq","Tests if two values are equal in constant time."],["ct_u64_slice_eq","Check the equality of slices."],["ct_u8_eq","Tests if two values are equal in constant time."],["ct_u8_slice_eq","Check the equality of slices."],["ct_usize_eq","Tests if two values are equal in constant time."],["ct_usize_slice_eq","Check the equality of slices."]]}); \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 9d6e116..0000000 --- a/docs/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - Redirect - - - - redirect - - diff --git a/docs/jquery.js b/docs/jquery.js deleted file mode 100644 index 49990d6..0000000 --- a/docs/jquery.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("