Rank | Username | Banned At |
---|---|---|
1 | topcyder#0001 | Winner! |
2 | moonguardianjaim#6033 | 7/27/2018, 5:29:28 PM |
3 | TicTacTomato#3997 | 7/27/2018, 5:29:27 PM |
4 | Hëlix#8005 | 7/26/2018, 7:19:54 PM |
5 | martinchoto#8872 | 7/26/2018, 7:19:52 PM |
6 | Kryzik#7643 | 7/26/2018, 7:19:51 PM |
7 | WolfHunter17#4342 | 7/26/2018, 7:19:50 PM |
8 | porcho20#0118 | 7/25/2018, 7:00:31 PM |
use std::collections::{HashMap, HashSet}; | |
use iced_x86::{Decoder, Encoder, Instruction, Mnemonic, OpKind, Register}; | |
#[derive(Debug, Clone, Copy)] | |
enum RegValValue { | |
Immediate(u64), | |
Register(Register), | |
} |
/// Character substitutions for obfuscation purposes. | |
const SUBST_TABLE: &[(char, [&'static str; 4])] = &[ | |
('Q', ["QP", "QD", "QW", "Q4"]), | |
('-', ["QL", "QB", "QO", "Q5"]), | |
('_', ["QC", "QN", "QT", "Q9"]), | |
('X', ["XU", "XN", "XH", "X3"]), | |
('!', ["XW", "XS", "XZ", "X0"]), | |
]; | |
/// Character substitutions for deobfuscation purposes. |
#include <stdio.h> | |
#include <inttypes.h> | |
#include <string.h> | |
void hexdump(void *ptr, int buflen) { | |
unsigned char *buf = (unsigned char*)ptr; | |
int i, j; | |
for (i=0; i<buflen; i+=16) { | |
printf("%06x: ", i); |
use std::{ | |
cell::RefCell, | |
collections::HashMap, | |
ops::{ | |
AddAssign, Deref, DivAssign, Index, IndexMut, MulAssign, ShlAssign, ShrAssign, SubAssign, | |
}, | |
rc::Rc, | |
}; | |
use crate::op::{Insn, Opcode, PartialInsn, U16OrLabel}; |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> | |
<stockCheck><productId>&xxe;</productId></stockCheck> |
const zmq = require("zeromq"); | |
// Connect to the plugin manager located at `managerHost`, identify | |
// ourselves as `id` and request connection information. Returns an | |
// object of { pull: <sub info>, push: <pub info> }. | |
async function retrieveConnectionDetails(id, managerHost) { | |
const sock = new zmq.Request(); | |
await sock.connect(managerHost); // connect to plugin manager | |
// Request pull info. |
const ABBREVIATIONS = { | |
"mumu": "Amumu", | |
"ali": "Alistar", | |
"sol": "AurelionSol", | |
"aurelion": "AurelionSol", | |
"asol": "AurelionSol", | |
"blitz": "Blitzcrank", | |
"cait": "Caitlyn", | |
"cass": "Cassiopeia", | |
"cho": "ChoGath", |
# ==================================================================================================== | |
# ==================================================================================================== | |
# ==================================================================================================== | |
# ==================================================================================================== | |
# ==================================================================================================== | |
# ===================================== README README README README ================================== | |
# ==================================================================================================== | |
# == IT IS HIGHLY RECOMMENDED THAT YOU READ THIS CODE WHILE READING THE ACCOMPANYING README FILE AT == | |
# == THE SAME TIME. IT WILL EXPLAIN SOME CONCEPTS USED IN THIS CODE, AND WHILE THE COMMENTS ABOVE == | |
# == FUNCTIONS CONTAIN A LOT OF CONTEXT, THEY WILL NOT EXPLAIN EVERYTHING. ALSO: I SPENT A LOT OF |
This will most likely be the fastest brainfuck runner in assembly that a student will ever hand in. This may sound over-confident, but I am certain that it is almost impossible to optimize brainfuck even more without implementing special cases for common constructs. I encourage you to read the code (and the accompanying comments). Although it is over 1000 lines of assembly, the comments give a lot of the information also outlined in this document.
Flash is an optimizing JIT compiler. JIT, or Just-In-Time, refers to the technique where the code to be ran is translated into machine instructions on the fly, which are then written to an executable block of memory and directly interpreted by the CPU. This is similar to how normal compilers work, but instead of writing the resulting instructions to an executable they are written and executed directly.
Flash goes through the following steps, in order:
- Construct And Optimize Code
- Build IR