Skip to content

Instantly share code, notes, and snippets.

@AmunRha
Last active June 23, 2021 21:51
Show Gist options
  • Save AmunRha/8ec3d4184115bdec65c5f883c32d03c9 to your computer and use it in GitHub Desktop.
Save AmunRha/8ec3d4184115bdec65c5f883c32d03c9 to your computer and use it in GitHub Desktop.
This is the solve script and output for the Crack Me challenge from 3kctf21 which implements a custom VM
data = opcode[2048:]
rbp = [0]*4
opcode = [0x06, 0x00, 0x00, 0x06, 0x01, 0x01, 0x06, 0x02, 0x02, 0x06, 0x03, 0x03, 0x03, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x08, 0x00, 0x00, 0x05, 0x00, 0x01, 0x08, 0x00, 0x00, 0x05, 0x00, 0x02, 0x08, 0x00, 0x00, 0x05, 0x00, 0x03, 0x08, 0x00, 0x00, 0x06, 0x00, 0x04, 0x06, 0x01, 0x05, 0x06, 0x02, 0x06, 0x06, 0x03, 0x07, 0x03, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x08, 0x00, 0x00, 0x05, 0x00, 0x01, 0x08, 0x00, 0x00, 0x05, 0x00, 0x02, 0x08, 0x00, 0x00, 0x05, 0x00, 0x03, 0x08, 0x00, 0x00, 0x06, 0x00, 0x08, 0x06, 0x01, 0x09, 0x06, 0x02, 0x0A, 0x06, 0x03, 0x0B, 0x03, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x08, 0x00, 0x00, 0x05, 0x00, 0x01, 0x08, 0x00, 0x00, 0x05, 0x00, 0x02, 0x08, 0x00, 0x00, 0x05, 0x00, 0x03, 0x08, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x06, 0x01, 0x0D, 0x06, 0x02, 0x0E, 0x06, 0x03, 0x0F, 0x03, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x08, 0x00, 0x00, 0x05, 0x00, 0x01, 0x08, 0x00, 0x00, 0x05, 0x00, 0x02, 0x08, 0x00, 0x00, 0x05, 0x00, 0x03, 0x08, 0x00, 0x00, 0x06, 0x03, 0x00, 0x04, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x10, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x11, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x00, 0x12, 0x0C, 0x01, 0x12, 0x0B, 0x01, 0x01, 0x05, 0x02, 0x01, 0x0E, 0x01, 0x00, 0x0E, 0x02, 0x00, 0x0C, 0x01, 0x13, 0x0D, 0x02, 0x13, 0x0E, 0x01, 0x02, 0x05, 0x00, 0x01, 0x05, 0x03, 0x01, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x14, 0x0C, 0x00, 0x14, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x15, 0x0C, 0x00, 0x15, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x00, 0x16, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x17, 0x0C, 0x00, 0x17, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x18, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x19, 0x0C, 0x00, 0x19, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x1A, 0x0C, 0x00, 0x1A, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x1B, 0x0C, 0x00, 0x1B, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x1C, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x1D, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x00, 0x1F, 0x0C, 0x01, 0x1F, 0x0B, 0x01, 0x01, 0x05, 0x02, 0x01, 0x0E, 0x01, 0x00, 0x0E, 0x02, 0x00, 0x0C, 0x01, 0x20, 0x0D, 0x02, 0x20, 0x0E, 0x01, 0x02, 0x05, 0x00, 0x01, 0x05, 0x03, 0x01, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x21, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x22, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x23, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x24, 0x0C, 0x00, 0x24, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x25, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x00, 0x26, 0x0C, 0x01, 0x26, 0x0B, 0x01, 0x01, 0x05, 0x02, 0x01, 0x0E, 0x01, 0x00, 0x0E, 0x02, 0x00, 0x0C, 0x01, 0x27, 0x0D, 0x02, 0x27, 0x0E, 0x01, 0x02, 0x05, 0x00, 0x01, 0x05, 0x03, 0x01, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x28, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x29, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x2A, 0x0C, 0x00, 0x2A, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x00, 0x2B, 0x0C, 0x01, 0x2B, 0x0B, 0x01, 0x01, 0x05, 0x02, 0x01, 0x0E, 0x01, 0x00, 0x0E, 0x02, 0x00, 0x0C, 0x01, 0x2C, 0x0D, 0x02, 0x2C, 0x0E, 0x01, 0x02, 0x05, 0x00, 0x01, 0x05, 0x03, 0x01, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x2D, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x00, 0x2E, 0x0C, 0x01, 0x2E, 0x0B, 0x01, 0x01, 0x05, 0x02, 0x01, 0x0E, 0x01, 0x00, 0x0E, 0x02, 0x00, 0x0C, 0x01, 0x2F, 0x0D, 0x02, 0x2F, 0x0E, 0x01, 0x02, 0x05, 0x00, 0x01, 0x05, 0x03, 0x01, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x30, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x31, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x32, 0x0C, 0x00, 0x32, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x00, 0x33, 0x0C, 0x01, 0x33, 0x0B, 0x01, 0x01, 0x05, 0x02, 0x01, 0x0E, 0x01, 0x00, 0x0E, 0x02, 0x00, 0x0C, 0x01, 0x34, 0x0D, 0x02, 0x34, 0x0E, 0x01, 0x02, 0x05, 0x00, 0x01, 0x05, 0x03, 0x01, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x35, 0x0C, 0x00, 0x35, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x36, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x37, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x38, 0x0C, 0x00, 0x38, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x39, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x3A, 0x0C, 0x00, 0x3A, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x00, 0x3B, 0x0C, 0x01, 0x3B, 0x0B, 0x01, 0x01, 0x05, 0x02, 0x01, 0x0E, 0x01, 0x00, 0x0E, 0x02, 0x00, 0x0C, 0x01, 0x3C, 0x0D, 0x02, 0x3C, 0x0E, 0x01, 0x02, 0x05, 0x00, 0x01, 0x05, 0x03, 0x01, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x3D, 0x0C, 0x00, 0x3D, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x3E, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x3F, 0x0C, 0x00, 0x3F, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x00, 0x40, 0x0C, 0x01, 0x40, 0x0B, 0x01, 0x01, 0x05, 0x02, 0x01, 0x0E, 0x01, 0x00, 0x0E, 0x02, 0x00, 0x0C, 0x01, 0x41, 0x0D, 0x02, 0x41, 0x0E, 0x01, 0x02, 0x05, 0x00, 0x01, 0x05, 0x03, 0x01, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x42, 0x0C, 0x00, 0x42, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x43, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x05, 0x01, 0x00, 0x04, 0x01, 0x44, 0x0C, 0x00, 0x44, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x01, 0x0E, 0x03, 0x00, 0x0A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x45, 0x0E, 0x03, 0x00, 0x05, 0x00, 0x03, 0x07, 0x42, 0x00, 0x06, 0x00, 0x46, 0x08, 0x00, 0x00, 0x06, 0x00, 0x47, 0x08, 0x00, 0x00, 0x06, 0x00, 0x48, 0x08, 0x00, 0x00, 0x06, 0x00, 0x49, 0x08, 0x00, 0x00, 0x06, 0x00, 0x4A, 0x08, 0x00, 0x00, 0x06, 0x00, 0x4B, 0x08, 0x00, 0x00, 0x06, 0x00, 0x4C, 0x08, 0x00, 0x00, 0x06, 0x00, 0x4D, 0x08, 0x00, 0x00, 0x06, 0x00, 0x4E, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x09, 0x00, 0x00, 0x06, 0x00, 0x4F, 0x08, 0x00, 0x00, 0x06, 0x00, 0x50, 0x08, 0x00, 0x00, 0x06, 0x00, 0x51, 0x08, 0x00, 0x00, 0x06, 0x00, 0x52, 0x08, 0x00, 0x00, 0x06, 0x00, 0x53, 0x08, 0x00, 0x00, 0x06, 0x00, 0x54, 0x08, 0x00, 0x00, 0x06, 0x00, 0x55, 0x08, 0x00, 0x00, 0x06, 0x00, 0x56, 0x08, 0x00, 0x00, 0x06, 0x00, 0x57, 0x08, 0x00, 0x00, 0x06, 0x00, 0x58, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x91, 0x8B, 0x9A, 0x8D, 0xDF, 0x8B, 0x97, 0x9A, 0xDF, 0x99, 0x93, 0x9E, 0x98, 0xC5, 0xDF, 0x63, 0x8B, 0x8A, 0x10, 0x85, 0x8A, 0x01, 0x8E, 0x74, 0x8B, 0xCC, 0x94, 0x5F, 0x92, 0xCB, 0xED, 0xB0, 0x97, 0x69, 0x91, 0x9B, 0x5F, 0x50, 0x40, 0x72, 0xCF, 0x8C, 0x1B, 0x80, 0x9C, 0x3C, 0x50, 0x96, 0x6F, 0x92, 0x40, 0x61, 0x97, 0x8C, 0xA0, 0x8D, 0x90, 0x91, 0x40, 0x61, 0xCE, 0xCF, 0xCF, 0x90, 0x40, 0xA1, 0x87, 0xBC, 0x82, 0x47, 0x6F, 0x6F, 0x64, 0x20, 0x4A, 0x6F, 0x62, 0x0A, 0x54, 0x72, 0x79, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x0A]
flag = [99, 116, 102, 123, 118, 49, 114, 116, 117, 52, 108, 95, 109, 52, 99, 104, 105, 110, 101, 95, 112, 114, 48, 116, 101, 99, 116, 105, 111, 110, 95, 105, 115, 95, 115, 111, 111, 95, 50, 48, 49, 48, 95, 120, 68, 125]
#flag: "ctf{v1rtu4l_m4chine_pr0tection_is_soo_2010_xD}"
tohex = lambda val, nbits: hex((val + (1 << nbits)) % (1 << nbits))
def decrypt_3(x):
x = ~x&0xff
print(x)
def decrypt_2(x, z):
for i in range(128):
a = i ^ x
b = i & x
b = b << 1
c = b
b = a + b
b = b & 0xff
c = c + a
c = c & 0xff
b = b & z
c = c | z
b = b + c
b = b & 0xff
if b == 0:
print(f'FOUND: {i} {chr(i)}')
def decrypt_1(x):
for i in range(128):
b = i ^ x
b = ~b
a = i
res = a + b
if res == 0:
print(f'FOUND: {i} {chr(i)}')
def decrypt_0(x):
for i in range(128):
b = i ^ x
a = i & x
a*=2
res = a + b
if res == 256:
print(f'FOUND: {i} {chr(i)}')
def print_info(op, i, rax, rbx):
print(f"\n\n[*] opcode: {op}, idx: {i}", end=', ')
if op != 0:
print(f'rax: {rax}, rbx: {rbx}')
print("----------------------------------\n")
print("--> ", end='')
def vm_opcode():
i = 0
k = 0
while i <= 1215:
rax = opcode[i+1]
rbx = opcode[i+2]
if rax < 4 and rbx < 4:
rbp[rax] = rbp[rax] & 0xff
rbp[rbx] = rbp[rbx] & 0xff
data[rbx] = data[rbx] & 0xff
print_info(opcode[i], i, rax, rbx)
if opcode[i] == 1:
print(f'mul [rbp+{rax}] rbx ; mul {rbp[rax]} {rbx}')
rbp[rax] = rbp[rax] * rbx
print(f'res: {rbp[rax]}')
elif opcode[i] == 2:
print(f'sub [rbp+{rax}] rbx ; sub {rbp[rax]} {rbx}')
rbp[rax] = rbp[rax] - rbx
print(f'res: {rbp[rax]}')
elif opcode[i] == 3:
print(f'neg [rbp+{rax}] ; {rbp[rax]}')
res = int(tohex(~rbp[rax], 32), 16) & 0xff
rbp[rax] = res
print(f'res: {rbp[rax]}')
elif opcode[i] == 4:
print(f'xor [rbp+{rax}] [data+{rbx}] ; xor {rbp[rax]} {data[rbx]}')
rbp[rax] = rbp[rax] ^ data[rbx]
print(f'res: {rbp[rax]}')
elif opcode[i] == 5:
print(f'mov [rbp+{rax}] [rbp+{rbx}] ; mov [rbp+{rax}] {rbp[rbx]}')
rbp[rax] = rbp[rbx] & 0xff
elif opcode[i] == 6:
print(f'mov [rbp+{rax}] [data+{rbx}] ; mov [rbp+{rax}] {data[rbx]}')
rbp[rax] = data[rbx] & 0xff
elif opcode[i] == 7:
print(f'cmp [rbp+{rbx}], 0 ; cmp {rbp[3]}, 0')
print(f'--> jnz [opcode_list+{i+rax}] ; jnz {i + rax}')
elif opcode[i] == 8:
print(f'putc([rbp+{rax}]) \t ; \t putc({chr(rbp[rax])})')
elif opcode[i] == 9:
print(f'exit()')
elif opcode[i] == 10:
rbp[0] = flag[k]
print(f'getc([rbp+{rax}]) ; char: {k}')
k+=1
elif opcode[i] == 11:
print(f'shl [rbp+{rax}] rbx ; shl {rbp[rax]} {rbx}')
rbp[rax] = rbp[rax] << rbx
print(f'res: {rbp[rax]}')
elif opcode[i] == 12:
print(f'and [rbp+{rax}] [data+{rbx}] ; and {rbp[rax]} {data[rbx]}')
rbp[rax] = rbp[rax] & data[rbx]
print(f'res: {rbp[rax]}')
elif opcode[i] == 13:
print(f'or [rbp+{rax}] [data+{rbx}] ; or {rbp[rax]} {data[rbx]}')
rbp[rax] = rbp[rax] | data[rbx]
print(f'res: {rbp[rax]}')
elif opcode[i] == 14:
print(f'add [rbp+{rax}] [rbp+{rbx}] ; add {rbp[rax]} {rbp[rbx]}')
rbp[rax] = rbp[rax] + rbp[rbx]
print(f'res: {rbp[rax]}')
i+=3
vm_opcode()
[*] opcode: 6, idx: 0, rax: 0, rbx: 0
----------------------------------
--> mov [rbp+0] [data+0] ; mov [rbp+0] 186
[*] opcode: 6, idx: 3, rax: 1, rbx: 1
----------------------------------
--> mov [rbp+1] [data+1] ; mov [rbp+1] 145
[*] opcode: 6, idx: 6, rax: 2, rbx: 2
----------------------------------
--> mov [rbp+2] [data+2] ; mov [rbp+2] 139
[*] opcode: 6, idx: 9, rax: 3, rbx: 3
----------------------------------
--> mov [rbp+3] [data+3] ; mov [rbp+3] 154
[*] opcode: 3, idx: 12, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 186
res: 69
[*] opcode: 3, idx: 15, rax: 1, rbx: 0
----------------------------------
--> neg [rbp+1] ; 145
res: 110
[*] opcode: 3, idx: 18, rax: 2, rbx: 0
----------------------------------
--> neg [rbp+2] ; 139
res: 116
[*] opcode: 3, idx: 21, rax: 3, rbx: 0
----------------------------------
--> neg [rbp+3] ; 154
res: 101
[*] opcode: 8, idx: 24, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(E)
[*] opcode: 5, idx: 27, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 110
[*] opcode: 8, idx: 30, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(n)
[*] opcode: 5, idx: 33, rax: 0, rbx: 2
----------------------------------
--> mov [rbp+0] [rbp+2] ; mov [rbp+0] 116
[*] opcode: 8, idx: 36, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(t)
[*] opcode: 5, idx: 39, rax: 0, rbx: 3
----------------------------------
--> mov [rbp+0] [rbp+3] ; mov [rbp+0] 101
[*] opcode: 8, idx: 42, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(e)
[*] opcode: 6, idx: 45, rax: 0, rbx: 4
----------------------------------
--> mov [rbp+0] [data+4] ; mov [rbp+0] 141
[*] opcode: 6, idx: 48, rax: 1, rbx: 5
----------------------------------
--> mov [rbp+1] [data+5] ; mov [rbp+1] 223
[*] opcode: 6, idx: 51, rax: 2, rbx: 6
----------------------------------
--> mov [rbp+2] [data+6] ; mov [rbp+2] 139
[*] opcode: 6, idx: 54, rax: 3, rbx: 7
----------------------------------
--> mov [rbp+3] [data+7] ; mov [rbp+3] 151
[*] opcode: 3, idx: 57, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 141
res: 114
[*] opcode: 3, idx: 60, rax: 1, rbx: 0
----------------------------------
--> neg [rbp+1] ; 223
res: 32
[*] opcode: 3, idx: 63, rax: 2, rbx: 0
----------------------------------
--> neg [rbp+2] ; 139
res: 116
[*] opcode: 3, idx: 66, rax: 3, rbx: 0
----------------------------------
--> neg [rbp+3] ; 151
res: 104
[*] opcode: 8, idx: 69, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(r)
[*] opcode: 5, idx: 72, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 32
[*] opcode: 8, idx: 75, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc( )
[*] opcode: 5, idx: 78, rax: 0, rbx: 2
----------------------------------
--> mov [rbp+0] [rbp+2] ; mov [rbp+0] 116
[*] opcode: 8, idx: 81, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(t)
[*] opcode: 5, idx: 84, rax: 0, rbx: 3
----------------------------------
--> mov [rbp+0] [rbp+3] ; mov [rbp+0] 104
[*] opcode: 8, idx: 87, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(h)
[*] opcode: 6, idx: 90, rax: 0, rbx: 8
----------------------------------
--> mov [rbp+0] [data+8] ; mov [rbp+0] 154
[*] opcode: 6, idx: 93, rax: 1, rbx: 9
----------------------------------
--> mov [rbp+1] [data+9] ; mov [rbp+1] 223
[*] opcode: 6, idx: 96, rax: 2, rbx: 10
----------------------------------
--> mov [rbp+2] [data+10] ; mov [rbp+2] 153
[*] opcode: 6, idx: 99, rax: 3, rbx: 11
----------------------------------
--> mov [rbp+3] [data+11] ; mov [rbp+3] 147
[*] opcode: 3, idx: 102, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 154
res: 101
[*] opcode: 3, idx: 105, rax: 1, rbx: 0
----------------------------------
--> neg [rbp+1] ; 223
res: 32
[*] opcode: 3, idx: 108, rax: 2, rbx: 0
----------------------------------
--> neg [rbp+2] ; 153
res: 102
[*] opcode: 3, idx: 111, rax: 3, rbx: 0
----------------------------------
--> neg [rbp+3] ; 147
res: 108
[*] opcode: 8, idx: 114, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(e)
[*] opcode: 5, idx: 117, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 32
[*] opcode: 8, idx: 120, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc( )
[*] opcode: 5, idx: 123, rax: 0, rbx: 2
----------------------------------
--> mov [rbp+0] [rbp+2] ; mov [rbp+0] 102
[*] opcode: 8, idx: 126, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(f)
[*] opcode: 5, idx: 129, rax: 0, rbx: 3
----------------------------------
--> mov [rbp+0] [rbp+3] ; mov [rbp+0] 108
[*] opcode: 8, idx: 132, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(l)
[*] opcode: 6, idx: 135, rax: 0, rbx: 12
----------------------------------
--> mov [rbp+0] [data+12] ; mov [rbp+0] 158
[*] opcode: 6, idx: 138, rax: 1, rbx: 13
----------------------------------
--> mov [rbp+1] [data+13] ; mov [rbp+1] 152
[*] opcode: 6, idx: 141, rax: 2, rbx: 14
----------------------------------
--> mov [rbp+2] [data+14] ; mov [rbp+2] 197
[*] opcode: 6, idx: 144, rax: 3, rbx: 15
----------------------------------
--> mov [rbp+3] [data+15] ; mov [rbp+3] 223
[*] opcode: 3, idx: 147, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 158
res: 97
[*] opcode: 3, idx: 150, rax: 1, rbx: 0
----------------------------------
--> neg [rbp+1] ; 152
res: 103
[*] opcode: 3, idx: 153, rax: 2, rbx: 0
----------------------------------
--> neg [rbp+2] ; 197
res: 58
[*] opcode: 3, idx: 156, rax: 3, rbx: 0
----------------------------------
--> neg [rbp+3] ; 223
res: 32
[*] opcode: 8, idx: 159, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(a)
[*] opcode: 5, idx: 162, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 103
[*] opcode: 8, idx: 165, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(g)
[*] opcode: 5, idx: 168, rax: 0, rbx: 2
----------------------------------
--> mov [rbp+0] [rbp+2] ; mov [rbp+0] 58
[*] opcode: 8, idx: 171, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(:)
[*] opcode: 5, idx: 174, rax: 0, rbx: 3
----------------------------------
--> mov [rbp+0] [rbp+3] ; mov [rbp+0] 32
[*] opcode: 8, idx: 177, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc( )
[*] opcode: 6, idx: 180, rax: 3, rbx: 0
----------------------------------
--> mov [rbp+3] [data+0] ; mov [rbp+3] 186
[*] opcode: 4, idx: 183, rax: 3, rbx: 0
----------------------------------
--> xor [rbp+3] [data+0] ; xor 186 186
res: 0
[*] opcode: 10, idx: 186, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 0
[*] opcode: 4, idx: 189, rax: 0, rbx: 16
----------------------------------
--> xor [rbp+0] [data+16] ; xor 99 99
res: 0
[*] opcode: 14, idx: 192, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 195, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 1
[*] opcode: 3, idx: 198, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 116
res: 139
[*] opcode: 4, idx: 201, rax: 0, rbx: 17
----------------------------------
--> xor [rbp+0] [data+17] ; xor 139 139
res: 0
[*] opcode: 14, idx: 204, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 207, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 2
[*] opcode: 5, idx: 210, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 102
[*] opcode: 4, idx: 213, rax: 0, rbx: 18
----------------------------------
--> xor [rbp+0] [data+18] ; xor 102 138
res: 236
[*] opcode: 12, idx: 216, rax: 1, rbx: 18
----------------------------------
--> and [rbp+1] [data+18] ; and 102 138
res: 2
[*] opcode: 11, idx: 219, rax: 1, rbx: 1
----------------------------------
--> shl [rbp+1] rbx ; shl 2 1
res: 4
[*] opcode: 5, idx: 222, rax: 2, rbx: 1
----------------------------------
--> mov [rbp+2] [rbp+1] ; mov [rbp+2] 4
[*] opcode: 14, idx: 225, rax: 1, rbx: 0
----------------------------------
--> add [rbp+1] [rbp+0] ; add 4 236
res: 240
[*] opcode: 14, idx: 228, rax: 2, rbx: 0
----------------------------------
--> add [rbp+2] [rbp+0] ; add 4 236
res: 240
[*] opcode: 12, idx: 231, rax: 1, rbx: 19
----------------------------------
--> and [rbp+1] [data+19] ; and 240 16
res: 16
[*] opcode: 13, idx: 234, rax: 2, rbx: 19
----------------------------------
--> or [rbp+2] [data+19] ; or 240 16
res: 240
[*] opcode: 14, idx: 237, rax: 1, rbx: 2
----------------------------------
--> add [rbp+1] [rbp+2] ; add 16 240
res: 256
[*] opcode: 5, idx: 240, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 0
[*] opcode: 5, idx: 243, rax: 3, rbx: 1
----------------------------------
--> mov [rbp+3] [rbp+1] ; mov [rbp+3] 0
[*] opcode: 10, idx: 246, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 3
[*] opcode: 5, idx: 249, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 123
[*] opcode: 4, idx: 252, rax: 1, rbx: 20
----------------------------------
--> xor [rbp+1] [data+20] ; xor 123 133
res: 254
[*] opcode: 12, idx: 255, rax: 0, rbx: 20
----------------------------------
--> and [rbp+0] [data+20] ; and 123 133
res: 1
[*] opcode: 1, idx: 258, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 1 2
res: 2
[*] opcode: 14, idx: 261, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 2 254
res: 256
[*] opcode: 14, idx: 264, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 267, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 4
[*] opcode: 5, idx: 270, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 118
[*] opcode: 4, idx: 273, rax: 1, rbx: 21
----------------------------------
--> xor [rbp+1] [data+21] ; xor 118 138
res: 252
[*] opcode: 12, idx: 276, rax: 0, rbx: 21
----------------------------------
--> and [rbp+0] [data+21] ; and 118 138
res: 2
[*] opcode: 1, idx: 279, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 2 2
res: 4
[*] opcode: 14, idx: 282, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 4 252
res: 256
[*] opcode: 14, idx: 285, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 288, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 5
[*] opcode: 5, idx: 291, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 49
[*] opcode: 4, idx: 294, rax: 0, rbx: 22
----------------------------------
--> xor [rbp+0] [data+22] ; xor 49 1
res: 48
[*] opcode: 3, idx: 297, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 48
res: 207
[*] opcode: 14, idx: 300, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 207 49
res: 256
[*] opcode: 14, idx: 303, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 306, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 6
[*] opcode: 5, idx: 309, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 114
[*] opcode: 4, idx: 312, rax: 1, rbx: 23
----------------------------------
--> xor [rbp+1] [data+23] ; xor 114 142
res: 252
[*] opcode: 12, idx: 315, rax: 0, rbx: 23
----------------------------------
--> and [rbp+0] [data+23] ; and 114 142
res: 2
[*] opcode: 1, idx: 318, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 2 2
res: 4
[*] opcode: 14, idx: 321, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 4 252
res: 256
[*] opcode: 14, idx: 324, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 327, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 7
[*] opcode: 4, idx: 330, rax: 0, rbx: 24
----------------------------------
--> xor [rbp+0] [data+24] ; xor 116 116
res: 0
[*] opcode: 14, idx: 333, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 336, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 8
[*] opcode: 5, idx: 339, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 117
[*] opcode: 4, idx: 342, rax: 1, rbx: 25
----------------------------------
--> xor [rbp+1] [data+25] ; xor 117 139
res: 254
[*] opcode: 12, idx: 345, rax: 0, rbx: 25
----------------------------------
--> and [rbp+0] [data+25] ; and 117 139
res: 1
[*] opcode: 1, idx: 348, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 1 2
res: 2
[*] opcode: 14, idx: 351, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 2 254
res: 256
[*] opcode: 14, idx: 354, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 357, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 9
[*] opcode: 5, idx: 360, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 52
[*] opcode: 4, idx: 363, rax: 1, rbx: 26
----------------------------------
--> xor [rbp+1] [data+26] ; xor 52 204
res: 248
[*] opcode: 12, idx: 366, rax: 0, rbx: 26
----------------------------------
--> and [rbp+0] [data+26] ; and 52 204
res: 4
[*] opcode: 1, idx: 369, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 4 2
res: 8
[*] opcode: 14, idx: 372, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 8 248
res: 256
[*] opcode: 14, idx: 375, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 378, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 10
[*] opcode: 5, idx: 381, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 108
[*] opcode: 4, idx: 384, rax: 1, rbx: 27
----------------------------------
--> xor [rbp+1] [data+27] ; xor 108 148
res: 248
[*] opcode: 12, idx: 387, rax: 0, rbx: 27
----------------------------------
--> and [rbp+0] [data+27] ; and 108 148
res: 4
[*] opcode: 1, idx: 390, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 4 2
res: 8
[*] opcode: 14, idx: 393, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 8 248
res: 256
[*] opcode: 14, idx: 396, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 399, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 11
[*] opcode: 4, idx: 402, rax: 0, rbx: 28
----------------------------------
--> xor [rbp+0] [data+28] ; xor 95 95
res: 0
[*] opcode: 14, idx: 405, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 408, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 12
[*] opcode: 3, idx: 411, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 109
res: 146
[*] opcode: 4, idx: 414, rax: 0, rbx: 29
----------------------------------
--> xor [rbp+0] [data+29] ; xor 146 146
res: 0
[*] opcode: 14, idx: 417, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 420, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 13
[*] opcode: 3, idx: 423, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 52
res: 203
[*] opcode: 4, idx: 426, rax: 0, rbx: 30
----------------------------------
--> xor [rbp+0] [data+30] ; xor 203 203
res: 0
[*] opcode: 14, idx: 429, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 432, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 14
[*] opcode: 5, idx: 435, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 99
[*] opcode: 4, idx: 438, rax: 0, rbx: 31
----------------------------------
--> xor [rbp+0] [data+31] ; xor 99 237
res: 142
[*] opcode: 12, idx: 441, rax: 1, rbx: 31
----------------------------------
--> and [rbp+1] [data+31] ; and 99 237
res: 97
[*] opcode: 11, idx: 444, rax: 1, rbx: 1
----------------------------------
--> shl [rbp+1] rbx ; shl 97 1
res: 194
[*] opcode: 5, idx: 447, rax: 2, rbx: 1
----------------------------------
--> mov [rbp+2] [rbp+1] ; mov [rbp+2] 194
[*] opcode: 14, idx: 450, rax: 1, rbx: 0
----------------------------------
--> add [rbp+1] [rbp+0] ; add 194 142
res: 336
[*] opcode: 14, idx: 453, rax: 2, rbx: 0
----------------------------------
--> add [rbp+2] [rbp+0] ; add 194 142
res: 336
[*] opcode: 12, idx: 456, rax: 1, rbx: 32
----------------------------------
--> and [rbp+1] [data+32] ; and 336 176
res: 16
[*] opcode: 13, idx: 459, rax: 2, rbx: 32
----------------------------------
--> or [rbp+2] [data+32] ; or 336 176
res: 496
[*] opcode: 14, idx: 462, rax: 1, rbx: 2
----------------------------------
--> add [rbp+1] [rbp+2] ; add 16 240
res: 256
[*] opcode: 5, idx: 465, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 0
[*] opcode: 5, idx: 468, rax: 3, rbx: 1
----------------------------------
--> mov [rbp+3] [rbp+1] ; mov [rbp+3] 0
[*] opcode: 10, idx: 471, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 15
[*] opcode: 3, idx: 474, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 104
res: 151
[*] opcode: 4, idx: 477, rax: 0, rbx: 33
----------------------------------
--> xor [rbp+0] [data+33] ; xor 151 151
res: 0
[*] opcode: 14, idx: 480, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 483, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 16
[*] opcode: 4, idx: 486, rax: 0, rbx: 34
----------------------------------
--> xor [rbp+0] [data+34] ; xor 105 105
res: 0
[*] opcode: 14, idx: 489, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 492, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 17
[*] opcode: 3, idx: 495, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 110
res: 145
[*] opcode: 4, idx: 498, rax: 0, rbx: 35
----------------------------------
--> xor [rbp+0] [data+35] ; xor 145 145
res: 0
[*] opcode: 14, idx: 501, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 504, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 18
[*] opcode: 5, idx: 507, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 101
[*] opcode: 4, idx: 510, rax: 1, rbx: 36
----------------------------------
--> xor [rbp+1] [data+36] ; xor 101 155
res: 254
[*] opcode: 12, idx: 513, rax: 0, rbx: 36
----------------------------------
--> and [rbp+0] [data+36] ; and 101 155
res: 1
[*] opcode: 1, idx: 516, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 1 2
res: 2
[*] opcode: 14, idx: 519, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 2 254
res: 256
[*] opcode: 14, idx: 522, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 525, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 19
[*] opcode: 4, idx: 528, rax: 0, rbx: 37
----------------------------------
--> xor [rbp+0] [data+37] ; xor 95 95
res: 0
[*] opcode: 14, idx: 531, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 534, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 20
[*] opcode: 5, idx: 537, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 112
[*] opcode: 4, idx: 540, rax: 0, rbx: 38
----------------------------------
--> xor [rbp+0] [data+38] ; xor 112 80
res: 32
[*] opcode: 12, idx: 543, rax: 1, rbx: 38
----------------------------------
--> and [rbp+1] [data+38] ; and 112 80
res: 80
[*] opcode: 11, idx: 546, rax: 1, rbx: 1
----------------------------------
--> shl [rbp+1] rbx ; shl 80 1
res: 160
[*] opcode: 5, idx: 549, rax: 2, rbx: 1
----------------------------------
--> mov [rbp+2] [rbp+1] ; mov [rbp+2] 160
[*] opcode: 14, idx: 552, rax: 1, rbx: 0
----------------------------------
--> add [rbp+1] [rbp+0] ; add 160 32
res: 192
[*] opcode: 14, idx: 555, rax: 2, rbx: 0
----------------------------------
--> add [rbp+2] [rbp+0] ; add 160 32
res: 192
[*] opcode: 12, idx: 558, rax: 1, rbx: 39
----------------------------------
--> and [rbp+1] [data+39] ; and 192 64
res: 64
[*] opcode: 13, idx: 561, rax: 2, rbx: 39
----------------------------------
--> or [rbp+2] [data+39] ; or 192 64
res: 192
[*] opcode: 14, idx: 564, rax: 1, rbx: 2
----------------------------------
--> add [rbp+1] [rbp+2] ; add 64 192
res: 256
[*] opcode: 5, idx: 567, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 0
[*] opcode: 5, idx: 570, rax: 3, rbx: 1
----------------------------------
--> mov [rbp+3] [rbp+1] ; mov [rbp+3] 0
[*] opcode: 10, idx: 573, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 21
[*] opcode: 4, idx: 576, rax: 0, rbx: 40
----------------------------------
--> xor [rbp+0] [data+40] ; xor 114 114
res: 0
[*] opcode: 14, idx: 579, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 582, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 22
[*] opcode: 3, idx: 585, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 48
res: 207
[*] opcode: 4, idx: 588, rax: 0, rbx: 41
----------------------------------
--> xor [rbp+0] [data+41] ; xor 207 207
res: 0
[*] opcode: 14, idx: 591, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 594, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 23
[*] opcode: 5, idx: 597, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 116
[*] opcode: 4, idx: 600, rax: 1, rbx: 42
----------------------------------
--> xor [rbp+1] [data+42] ; xor 116 140
res: 248
[*] opcode: 12, idx: 603, rax: 0, rbx: 42
----------------------------------
--> and [rbp+0] [data+42] ; and 116 140
res: 4
[*] opcode: 1, idx: 606, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 4 2
res: 8
[*] opcode: 14, idx: 609, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 8 248
res: 256
[*] opcode: 14, idx: 612, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 615, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 24
[*] opcode: 5, idx: 618, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 101
[*] opcode: 4, idx: 621, rax: 0, rbx: 43
----------------------------------
--> xor [rbp+0] [data+43] ; xor 101 27
res: 126
[*] opcode: 12, idx: 624, rax: 1, rbx: 43
----------------------------------
--> and [rbp+1] [data+43] ; and 101 27
res: 1
[*] opcode: 11, idx: 627, rax: 1, rbx: 1
----------------------------------
--> shl [rbp+1] rbx ; shl 1 1
res: 2
[*] opcode: 5, idx: 630, rax: 2, rbx: 1
----------------------------------
--> mov [rbp+2] [rbp+1] ; mov [rbp+2] 2
[*] opcode: 14, idx: 633, rax: 1, rbx: 0
----------------------------------
--> add [rbp+1] [rbp+0] ; add 2 126
res: 128
[*] opcode: 14, idx: 636, rax: 2, rbx: 0
----------------------------------
--> add [rbp+2] [rbp+0] ; add 2 126
res: 128
[*] opcode: 12, idx: 639, rax: 1, rbx: 44
----------------------------------
--> and [rbp+1] [data+44] ; and 128 128
res: 128
[*] opcode: 13, idx: 642, rax: 2, rbx: 44
----------------------------------
--> or [rbp+2] [data+44] ; or 128 128
res: 128
[*] opcode: 14, idx: 645, rax: 1, rbx: 2
----------------------------------
--> add [rbp+1] [rbp+2] ; add 128 128
res: 256
[*] opcode: 5, idx: 648, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 0
[*] opcode: 5, idx: 651, rax: 3, rbx: 1
----------------------------------
--> mov [rbp+3] [rbp+1] ; mov [rbp+3] 0
[*] opcode: 10, idx: 654, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 25
[*] opcode: 3, idx: 657, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 99
res: 156
[*] opcode: 4, idx: 660, rax: 0, rbx: 45
----------------------------------
--> xor [rbp+0] [data+45] ; xor 156 156
res: 0
[*] opcode: 14, idx: 663, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 666, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 26
[*] opcode: 5, idx: 669, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 116
[*] opcode: 4, idx: 672, rax: 0, rbx: 46
----------------------------------
--> xor [rbp+0] [data+46] ; xor 116 60
res: 72
[*] opcode: 12, idx: 675, rax: 1, rbx: 46
----------------------------------
--> and [rbp+1] [data+46] ; and 116 60
res: 52
[*] opcode: 11, idx: 678, rax: 1, rbx: 1
----------------------------------
--> shl [rbp+1] rbx ; shl 52 1
res: 104
[*] opcode: 5, idx: 681, rax: 2, rbx: 1
----------------------------------
--> mov [rbp+2] [rbp+1] ; mov [rbp+2] 104
[*] opcode: 14, idx: 684, rax: 1, rbx: 0
----------------------------------
--> add [rbp+1] [rbp+0] ; add 104 72
res: 176
[*] opcode: 14, idx: 687, rax: 2, rbx: 0
----------------------------------
--> add [rbp+2] [rbp+0] ; add 104 72
res: 176
[*] opcode: 12, idx: 690, rax: 1, rbx: 47
----------------------------------
--> and [rbp+1] [data+47] ; and 176 80
res: 16
[*] opcode: 13, idx: 693, rax: 2, rbx: 47
----------------------------------
--> or [rbp+2] [data+47] ; or 176 80
res: 240
[*] opcode: 14, idx: 696, rax: 1, rbx: 2
----------------------------------
--> add [rbp+1] [rbp+2] ; add 16 240
res: 256
[*] opcode: 5, idx: 699, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 0
[*] opcode: 5, idx: 702, rax: 3, rbx: 1
----------------------------------
--> mov [rbp+3] [rbp+1] ; mov [rbp+3] 0
[*] opcode: 10, idx: 705, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 27
[*] opcode: 3, idx: 708, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 105
res: 150
[*] opcode: 4, idx: 711, rax: 0, rbx: 48
----------------------------------
--> xor [rbp+0] [data+48] ; xor 150 150
res: 0
[*] opcode: 14, idx: 714, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 717, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 28
[*] opcode: 4, idx: 720, rax: 0, rbx: 49
----------------------------------
--> xor [rbp+0] [data+49] ; xor 111 111
res: 0
[*] opcode: 14, idx: 723, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 726, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 29
[*] opcode: 5, idx: 729, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 110
[*] opcode: 4, idx: 732, rax: 1, rbx: 50
----------------------------------
--> xor [rbp+1] [data+50] ; xor 110 146
res: 252
[*] opcode: 12, idx: 735, rax: 0, rbx: 50
----------------------------------
--> and [rbp+0] [data+50] ; and 110 146
res: 2
[*] opcode: 1, idx: 738, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 2 2
res: 4
[*] opcode: 14, idx: 741, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 4 252
res: 256
[*] opcode: 14, idx: 744, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 747, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 30
[*] opcode: 5, idx: 750, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 95
[*] opcode: 4, idx: 753, rax: 0, rbx: 51
----------------------------------
--> xor [rbp+0] [data+51] ; xor 95 64
res: 31
[*] opcode: 12, idx: 756, rax: 1, rbx: 51
----------------------------------
--> and [rbp+1] [data+51] ; and 95 64
res: 64
[*] opcode: 11, idx: 759, rax: 1, rbx: 1
----------------------------------
--> shl [rbp+1] rbx ; shl 64 1
res: 128
[*] opcode: 5, idx: 762, rax: 2, rbx: 1
----------------------------------
--> mov [rbp+2] [rbp+1] ; mov [rbp+2] 128
[*] opcode: 14, idx: 765, rax: 1, rbx: 0
----------------------------------
--> add [rbp+1] [rbp+0] ; add 128 31
res: 159
[*] opcode: 14, idx: 768, rax: 2, rbx: 0
----------------------------------
--> add [rbp+2] [rbp+0] ; add 128 31
res: 159
[*] opcode: 12, idx: 771, rax: 1, rbx: 52
----------------------------------
--> and [rbp+1] [data+52] ; and 159 97
res: 1
[*] opcode: 13, idx: 774, rax: 2, rbx: 52
----------------------------------
--> or [rbp+2] [data+52] ; or 159 97
res: 255
[*] opcode: 14, idx: 777, rax: 1, rbx: 2
----------------------------------
--> add [rbp+1] [rbp+2] ; add 1 255
res: 256
[*] opcode: 5, idx: 780, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 0
[*] opcode: 5, idx: 783, rax: 3, rbx: 1
----------------------------------
--> mov [rbp+3] [rbp+1] ; mov [rbp+3] 0
[*] opcode: 10, idx: 786, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 31
[*] opcode: 5, idx: 789, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 105
[*] opcode: 4, idx: 792, rax: 1, rbx: 53
----------------------------------
--> xor [rbp+1] [data+53] ; xor 105 151
res: 254
[*] opcode: 12, idx: 795, rax: 0, rbx: 53
----------------------------------
--> and [rbp+0] [data+53] ; and 105 151
res: 1
[*] opcode: 1, idx: 798, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 1 2
res: 2
[*] opcode: 14, idx: 801, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 2 254
res: 256
[*] opcode: 14, idx: 804, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 807, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 32
[*] opcode: 3, idx: 810, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 115
res: 140
[*] opcode: 4, idx: 813, rax: 0, rbx: 54
----------------------------------
--> xor [rbp+0] [data+54] ; xor 140 140
res: 0
[*] opcode: 14, idx: 816, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 819, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 33
[*] opcode: 3, idx: 822, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 95
res: 160
[*] opcode: 4, idx: 825, rax: 0, rbx: 55
----------------------------------
--> xor [rbp+0] [data+55] ; xor 160 160
res: 0
[*] opcode: 14, idx: 828, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 831, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 34
[*] opcode: 5, idx: 834, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 115
[*] opcode: 4, idx: 837, rax: 1, rbx: 56
----------------------------------
--> xor [rbp+1] [data+56] ; xor 115 141
res: 254
[*] opcode: 12, idx: 840, rax: 0, rbx: 56
----------------------------------
--> and [rbp+0] [data+56] ; and 115 141
res: 1
[*] opcode: 1, idx: 843, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 1 2
res: 2
[*] opcode: 14, idx: 846, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 2 254
res: 256
[*] opcode: 14, idx: 849, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 852, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 35
[*] opcode: 3, idx: 855, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 111
res: 144
[*] opcode: 4, idx: 858, rax: 0, rbx: 57
----------------------------------
--> xor [rbp+0] [data+57] ; xor 144 144
res: 0
[*] opcode: 14, idx: 861, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 864, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 36
[*] opcode: 5, idx: 867, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 111
[*] opcode: 4, idx: 870, rax: 1, rbx: 58
----------------------------------
--> xor [rbp+1] [data+58] ; xor 111 145
res: 254
[*] opcode: 12, idx: 873, rax: 0, rbx: 58
----------------------------------
--> and [rbp+0] [data+58] ; and 111 145
res: 1
[*] opcode: 1, idx: 876, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 1 2
res: 2
[*] opcode: 14, idx: 879, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 2 254
res: 256
[*] opcode: 14, idx: 882, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 885, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 37
[*] opcode: 5, idx: 888, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 95
[*] opcode: 4, idx: 891, rax: 0, rbx: 59
----------------------------------
--> xor [rbp+0] [data+59] ; xor 95 64
res: 31
[*] opcode: 12, idx: 894, rax: 1, rbx: 59
----------------------------------
--> and [rbp+1] [data+59] ; and 95 64
res: 64
[*] opcode: 11, idx: 897, rax: 1, rbx: 1
----------------------------------
--> shl [rbp+1] rbx ; shl 64 1
res: 128
[*] opcode: 5, idx: 900, rax: 2, rbx: 1
----------------------------------
--> mov [rbp+2] [rbp+1] ; mov [rbp+2] 128
[*] opcode: 14, idx: 903, rax: 1, rbx: 0
----------------------------------
--> add [rbp+1] [rbp+0] ; add 128 31
res: 159
[*] opcode: 14, idx: 906, rax: 2, rbx: 0
----------------------------------
--> add [rbp+2] [rbp+0] ; add 128 31
res: 159
[*] opcode: 12, idx: 909, rax: 1, rbx: 60
----------------------------------
--> and [rbp+1] [data+60] ; and 159 97
res: 1
[*] opcode: 13, idx: 912, rax: 2, rbx: 60
----------------------------------
--> or [rbp+2] [data+60] ; or 159 97
res: 255
[*] opcode: 14, idx: 915, rax: 1, rbx: 2
----------------------------------
--> add [rbp+1] [rbp+2] ; add 1 255
res: 256
[*] opcode: 5, idx: 918, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 0
[*] opcode: 5, idx: 921, rax: 3, rbx: 1
----------------------------------
--> mov [rbp+3] [rbp+1] ; mov [rbp+3] 0
[*] opcode: 10, idx: 924, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 38
[*] opcode: 5, idx: 927, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 50
[*] opcode: 4, idx: 930, rax: 1, rbx: 61
----------------------------------
--> xor [rbp+1] [data+61] ; xor 50 206
res: 252
[*] opcode: 12, idx: 933, rax: 0, rbx: 61
----------------------------------
--> and [rbp+0] [data+61] ; and 50 206
res: 2
[*] opcode: 1, idx: 936, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 2 2
res: 4
[*] opcode: 14, idx: 939, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 4 252
res: 256
[*] opcode: 14, idx: 942, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 945, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 39
[*] opcode: 3, idx: 948, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 48
res: 207
[*] opcode: 4, idx: 951, rax: 0, rbx: 62
----------------------------------
--> xor [rbp+0] [data+62] ; xor 207 207
res: 0
[*] opcode: 14, idx: 954, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 957, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 40
[*] opcode: 5, idx: 960, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 49
[*] opcode: 4, idx: 963, rax: 1, rbx: 63
----------------------------------
--> xor [rbp+1] [data+63] ; xor 49 207
res: 254
[*] opcode: 12, idx: 966, rax: 0, rbx: 63
----------------------------------
--> and [rbp+0] [data+63] ; and 49 207
res: 1
[*] opcode: 1, idx: 969, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 1 2
res: 2
[*] opcode: 14, idx: 972, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 2 254
res: 256
[*] opcode: 14, idx: 975, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 978, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 41
[*] opcode: 5, idx: 981, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 48
[*] opcode: 4, idx: 984, rax: 0, rbx: 64
----------------------------------
--> xor [rbp+0] [data+64] ; xor 48 144
res: 160
[*] opcode: 12, idx: 987, rax: 1, rbx: 64
----------------------------------
--> and [rbp+1] [data+64] ; and 48 144
res: 16
[*] opcode: 11, idx: 990, rax: 1, rbx: 1
----------------------------------
--> shl [rbp+1] rbx ; shl 16 1
res: 32
[*] opcode: 5, idx: 993, rax: 2, rbx: 1
----------------------------------
--> mov [rbp+2] [rbp+1] ; mov [rbp+2] 32
[*] opcode: 14, idx: 996, rax: 1, rbx: 0
----------------------------------
--> add [rbp+1] [rbp+0] ; add 32 160
res: 192
[*] opcode: 14, idx: 999, rax: 2, rbx: 0
----------------------------------
--> add [rbp+2] [rbp+0] ; add 32 160
res: 192
[*] opcode: 12, idx: 1002, rax: 1, rbx: 65
----------------------------------
--> and [rbp+1] [data+65] ; and 192 64
res: 64
[*] opcode: 13, idx: 1005, rax: 2, rbx: 65
----------------------------------
--> or [rbp+2] [data+65] ; or 192 64
res: 192
[*] opcode: 14, idx: 1008, rax: 1, rbx: 2
----------------------------------
--> add [rbp+1] [rbp+2] ; add 64 192
res: 256
[*] opcode: 5, idx: 1011, rax: 0, rbx: 1
----------------------------------
--> mov [rbp+0] [rbp+1] ; mov [rbp+0] 0
[*] opcode: 5, idx: 1014, rax: 3, rbx: 1
----------------------------------
--> mov [rbp+3] [rbp+1] ; mov [rbp+3] 0
[*] opcode: 10, idx: 1017, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 42
[*] opcode: 5, idx: 1020, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 95
[*] opcode: 4, idx: 1023, rax: 1, rbx: 66
----------------------------------
--> xor [rbp+1] [data+66] ; xor 95 161
res: 254
[*] opcode: 12, idx: 1026, rax: 0, rbx: 66
----------------------------------
--> and [rbp+0] [data+66] ; and 95 161
res: 1
[*] opcode: 1, idx: 1029, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 1 2
res: 2
[*] opcode: 14, idx: 1032, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 2 254
res: 256
[*] opcode: 14, idx: 1035, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 1038, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 43
[*] opcode: 3, idx: 1041, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 120
res: 135
[*] opcode: 4, idx: 1044, rax: 0, rbx: 67
----------------------------------
--> xor [rbp+0] [data+67] ; xor 135 135
res: 0
[*] opcode: 14, idx: 1047, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 1050, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 44
[*] opcode: 5, idx: 1053, rax: 1, rbx: 0
----------------------------------
--> mov [rbp+1] [rbp+0] ; mov [rbp+1] 68
[*] opcode: 4, idx: 1056, rax: 1, rbx: 68
----------------------------------
--> xor [rbp+1] [data+68] ; xor 68 188
res: 248
[*] opcode: 12, idx: 1059, rax: 0, rbx: 68
----------------------------------
--> and [rbp+0] [data+68] ; and 68 188
res: 4
[*] opcode: 1, idx: 1062, rax: 0, rbx: 2
----------------------------------
--> mul [rbp+0] rbx ; mul 4 2
res: 8
[*] opcode: 14, idx: 1065, rax: 0, rbx: 1
----------------------------------
--> add [rbp+0] [rbp+1] ; add 8 248
res: 256
[*] opcode: 14, idx: 1068, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 10, idx: 1071, rax: 0, rbx: 0
----------------------------------
--> getc([rbp+0]) ; char: 45
[*] opcode: 3, idx: 1074, rax: 0, rbx: 0
----------------------------------
--> neg [rbp+0] ; 125
res: 130
[*] opcode: 4, idx: 1077, rax: 0, rbx: 69
----------------------------------
--> xor [rbp+0] [data+69] ; xor 130 130
res: 0
[*] opcode: 14, idx: 1080, rax: 3, rbx: 0
----------------------------------
--> add [rbp+3] [rbp+0] ; add 0 0
res: 0
[*] opcode: 5, idx: 1083, rax: 0, rbx: 3
----------------------------------
--> mov [rbp+0] [rbp+3] ; mov [rbp+0] 0
[*] opcode: 7, idx: 1086, rax: 66, rbx: 0
----------------------------------
--> cmp [rbp+0], 0 ; cmp 0, 0
--> jnz [opcode_list+1152] ; jnz 1152
[*] opcode: 6, idx: 1089, rax: 0, rbx: 70
----------------------------------
--> mov [rbp+0] [data+70] ; mov [rbp+0] 71
[*] opcode: 8, idx: 1092, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(G)
[*] opcode: 6, idx: 1095, rax: 0, rbx: 71
----------------------------------
--> mov [rbp+0] [data+71] ; mov [rbp+0] 111
[*] opcode: 8, idx: 1098, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(o)
[*] opcode: 6, idx: 1101, rax: 0, rbx: 72
----------------------------------
--> mov [rbp+0] [data+72] ; mov [rbp+0] 111
[*] opcode: 8, idx: 1104, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(o)
[*] opcode: 6, idx: 1107, rax: 0, rbx: 73
----------------------------------
--> mov [rbp+0] [data+73] ; mov [rbp+0] 100
[*] opcode: 8, idx: 1110, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(d)
[*] opcode: 6, idx: 1113, rax: 0, rbx: 74
----------------------------------
--> mov [rbp+0] [data+74] ; mov [rbp+0] 32
[*] opcode: 8, idx: 1116, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc( )
[*] opcode: 6, idx: 1119, rax: 0, rbx: 75
----------------------------------
--> mov [rbp+0] [data+75] ; mov [rbp+0] 74
[*] opcode: 8, idx: 1122, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(J)
[*] opcode: 6, idx: 1125, rax: 0, rbx: 76
----------------------------------
--> mov [rbp+0] [data+76] ; mov [rbp+0] 111
[*] opcode: 8, idx: 1128, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(o)
[*] opcode: 6, idx: 1131, rax: 0, rbx: 77
----------------------------------
--> mov [rbp+0] [data+77] ; mov [rbp+0] 98
[*] opcode: 8, idx: 1134, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(b)
[*] opcode: 6, idx: 1137, rax: 0, rbx: 78
----------------------------------
--> mov [rbp+0] [data+78] ; mov [rbp+0] 10
[*] opcode: 8, idx: 1140, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(
)
[*] opcode: 6, idx: 1143, rax: 0, rbx: 0
----------------------------------
--> mov [rbp+0] [data+0] ; mov [rbp+0] 186
[*] opcode: 4, idx: 1146, rax: 0, rbx: 0
----------------------------------
--> xor [rbp+0] [data+0] ; xor 186 186
res: 0
[*] opcode: 9, idx: 1149, rax: 0, rbx: 0
----------------------------------
--> exit()
[*] opcode: 6, idx: 1152, rax: 0, rbx: 79
----------------------------------
--> mov [rbp+0] [data+79] ; mov [rbp+0] 84
[*] opcode: 8, idx: 1155, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(T)
[*] opcode: 6, idx: 1158, rax: 0, rbx: 80
----------------------------------
--> mov [rbp+0] [data+80] ; mov [rbp+0] 114
[*] opcode: 8, idx: 1161, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(r)
[*] opcode: 6, idx: 1164, rax: 0, rbx: 81
----------------------------------
--> mov [rbp+0] [data+81] ; mov [rbp+0] 121
[*] opcode: 8, idx: 1167, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(y)
[*] opcode: 6, idx: 1170, rax: 0, rbx: 82
----------------------------------
--> mov [rbp+0] [data+82] ; mov [rbp+0] 32
[*] opcode: 8, idx: 1173, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc( )
[*] opcode: 6, idx: 1176, rax: 0, rbx: 83
----------------------------------
--> mov [rbp+0] [data+83] ; mov [rbp+0] 97
[*] opcode: 8, idx: 1179, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(a)
[*] opcode: 6, idx: 1182, rax: 0, rbx: 84
----------------------------------
--> mov [rbp+0] [data+84] ; mov [rbp+0] 103
[*] opcode: 8, idx: 1185, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(g)
[*] opcode: 6, idx: 1188, rax: 0, rbx: 85
----------------------------------
--> mov [rbp+0] [data+85] ; mov [rbp+0] 97
[*] opcode: 8, idx: 1191, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(a)
[*] opcode: 6, idx: 1194, rax: 0, rbx: 86
----------------------------------
--> mov [rbp+0] [data+86] ; mov [rbp+0] 105
[*] opcode: 8, idx: 1197, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(i)
[*] opcode: 6, idx: 1200, rax: 0, rbx: 87
----------------------------------
--> mov [rbp+0] [data+87] ; mov [rbp+0] 110
[*] opcode: 8, idx: 1203, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(n)
[*] opcode: 6, idx: 1206, rax: 0, rbx: 88
----------------------------------
--> mov [rbp+0] [data+88] ; mov [rbp+0] 10
[*] opcode: 8, idx: 1209, rax: 0, rbx: 0
----------------------------------
--> putc([rbp+0]) ; putc(
)
[*] opcode: 6, idx: 1212, rax: 0, rbx: 0
----------------------------------
--> mov [rbp+0] [data+0] ; mov [rbp+0] 186
[*] opcode: 9, idx: 1215, rax: 0, rbx: 0
----------------------------------
--> exit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment