// File: twekkel[P]mzpq/libzpaq.cpp
// Function: libzpaq::AES_CTR::AES_CTR(char const*, int, char const*)
AES_CTR::AES_CTR(const char* key, int keylen, const char* iv) {
  assert(key  != NULL);
  assert(keylen==16 || keylen==24 || keylen==32);

  // Initialize IV (default 0)
  iv0=iv1=0;
  if (iv) {
    LOAD32H(iv0, iv);
    LOAD32H(iv1, iv+4);
  }

  // Initialize encryption tables
  for (int i=0; i<256; ++i) {
    unsigned s1=
    "\x63\x7c\x77\x7b\xf2\x6b\x6f\xc5\x30\x01\x67\x2b\xfe\xd7\xab\x76"
    "\xca\x82\xc9\x7d\xfa\x59\x47\xf0\xad\xd4\xa2\xaf\x9c\xa4\x72\xc0"
    "\xb7\xfd\x93\x26\x36\x3f\xf7\xcc\x34\xa5\xe5\xf1\x71\xd8\x31\x15"
    "\x04\xc7\x23\xc3\x18\x96\x05\x9a\x07\x12\x80\xe2\xeb\x27\xb2\x75"
    "\x09\x83\x2c\x1a\x1b\x6e\x5a\xa0\x52\x3b\xd6\xb3\x29\xe3\x2f\x84"
    "\x53\xd1\x00\xed\x20\xfc\xb1\x5b\x6a\xcb\xbe\x39\x4a\x4c\x58\xcf"
    "\xd0\xef\xaa\xfb\x43\x4d\x33\x85\x45\xf9\x02\x7f\x50\x3c\x9f\xa8"
    "\x51\xa3\x40\x8f\x92\x9d\x38\xf5\xbc\xb6\xda\x21\x10\xff\xf3\xd2"
    "\xcd\x0c\x13\xec\x5f\x97\x44\x17\xc4\xa7\x7e\x3d\x64\x5d\x19\x73"
    "\x60\x81\x4f\xdc\x22\x2a\x90\x88\x46\xee\xb8\x14\xde\x5e\x0b\xdb"
    "\xe0\x32\x3a\x0a\x49\x06\x24\x5c\xc2\xd3\xac\x62\x91\x95\xe4\x79"
    "\xe7\xc8\x37\x6d\x8d\xd5\x4e\xa9\x6c\x56\xf4\xea\x65\x7a\xae\x08"
    "\xba\x78\x25\x2e\x1c\xa6\xb4\xc6\xe8\xdd\x74\x1f\x4b\xbd\x8b\x8a"
    "\x70\x3e\xb5\x66\x48\x03\xf6\x0e\x61\x35\x57\xb9\x86\xc1\x1d\x9e"
    "\xe1\xf8\x98\x11\x69\xd9\x8e\x94\x9b\x1e\x87\xe9\xce\x55\x28\xdf"
    "\x8c\xa1\x89\x0d\xbf\xe6\x42\x68\x41\x99\x2d\x0f\xb0\x54\xbb\x16"
    [i]&255;
    unsigned s2=s1<<1;
    if (s2>=0x100) s2^=0x11b;
    unsigned s3=s1^s2;
    Te0[i]=s2<<24|s1<<16|s1<<8|s3;
    Te1[i]=s3<<24|s2<<16|s1<<8|s1;
    Te2[i]=s1<<24|s3<<16|s2<<8|s1;
    Te3[i]=s1<<24|s1<<16|s3<<8|s2;
    Te4[i]=s1<<24|s1<<16|s1<<8|s1;
  }

  // setup the forward key
  Nr = 10 + ((keylen/8)-2)*2;  // 10, 12, or 14 rounds
  int i = 0;
  U32* rk = &ek[0];
  U32 temp;
  static const U32 rcon[10] = {
    0x01000000UL, 0x02000000UL, 0x04000000UL, 0x08000000UL,
    0x10000000UL, 0x20000000UL, 0x40000000UL, 0x80000000UL,
    0x1B000000UL, 0x36000000UL};  // round constants

  LOAD32H(rk[0], key   );
  LOAD32H(rk[1], key +  4);
  LOAD32H(rk[2], key +  8);
  LOAD32H(rk[3], key + 12);
  if (keylen == 16) {
    for (;;) {
      temp  = rk[3];
      rk[4] = rk[0] ^ setup_mix(temp) ^ rcon[i];
      rk[5] = rk[1] ^ rk[4];
      rk[6] = rk[2] ^ rk[5];
      rk[7] = rk[3] ^ rk[6];
      if (++i == 10) {
         break;
      }
      rk += 4;
    }
  }
  else if (keylen == 24) {
    LOAD32H(rk[4], key + 16);
    LOAD32H(rk[5], key + 20);
    for (;;) {
      temp = rk[5];
      rk[ 6] = rk[ 0] ^ setup_mix(temp) ^ rcon[i];
      rk[ 7] = rk[ 1] ^ rk[ 6];
      rk[ 8] = rk[ 2] ^ rk[ 7];
      rk[ 9] = rk[ 3] ^ rk[ 8];
      if (++i == 8) {
        break;
      }
      rk[10] = rk[ 4] ^ rk[ 9];
      rk[11] = rk[ 5] ^ rk[10];
      rk += 6;
    }
  }
  else if (keylen == 32) {
    LOAD32H(rk[4], key + 16);
    LOAD32H(rk[5], key + 20);
    LOAD32H(rk[6], key + 24);
    LOAD32H(rk[7], key + 28);
    for (;;) {
      temp = rk[7];
      rk[ 8] = rk[ 0] ^ setup_mix(temp) ^ rcon[i];
      rk[ 9] = rk[ 1] ^ rk[ 8];
      rk[10] = rk[ 2] ^ rk[ 9];
      rk[11] = rk[ 3] ^ rk[10];
      if (++i == 7) {
        break;
      }
      temp = rk[11];
      rk[12] = rk[ 4] ^ setup_mix(temp<<24|temp>>8);
      rk[13] = rk[ 5] ^ rk[12];
      rk[14] = rk[ 6] ^ rk[13];
      rk[15] = rk[ 7] ^ rk[14];
      rk += 8;
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
movl $0x0, 0x14f8(%rax)
movl $0x0, 0x14f4(%rax)
cmpq $0x0, -0x20(%rbp)
je 0xcc89
movq -0x50(%rbp), %rdi
addq $0x14f4, %rdi           # imm = 0x14F4
movq -0x20(%rbp), %rsi
callq 0xd3c0
movq -0x50(%rbp), %rdi
addq $0x14f8, %rdi           # imm = 0x14F8
movq -0x20(%rbp), %rsi
addq $0x4, %rsi
callq 0xd3c0
movl $0x0, -0x24(%rbp)
cmpl $0x100, -0x24(%rbp)     # imm = 0x100
jge 0xcd9b
movslq -0x24(%rbp), %rcx
leaq 0x27dd8(%rip), %rax     # 0x34a80
movsbl (%rax,%rcx), %eax
andl $0xff, %eax
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %eax
shll %eax
movl %eax, -0x2c(%rbp)
cmpl $0x100, -0x2c(%rbp)     # imm = 0x100
jb 0xccd0
movl -0x2c(%rbp), %eax
xorl $0x11b, %eax            # imm = 0x11B
movl %eax, -0x2c(%rbp)
movq -0x50(%rbp), %rax
movl -0x28(%rbp), %ecx
xorl -0x2c(%rbp), %ecx
movl %ecx, -0x30(%rbp)
movl -0x2c(%rbp), %edx
shll $0x18, %edx
movl -0x28(%rbp), %ecx
shll $0x10, %ecx
orl %ecx, %edx
movl -0x28(%rbp), %ecx
shll $0x8, %ecx
orl %ecx, %edx
orl -0x30(%rbp), %edx
movslq -0x24(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x30(%rbp), %edx
shll $0x18, %edx
movl -0x2c(%rbp), %ecx
shll $0x10, %ecx
orl %ecx, %edx
movl -0x28(%rbp), %ecx
shll $0x8, %ecx
orl %ecx, %edx
orl -0x28(%rbp), %edx
movslq -0x24(%rbp), %rcx
movl %edx, 0x400(%rax,%rcx,4)
movl -0x28(%rbp), %edx
shll $0x18, %edx
movl -0x30(%rbp), %ecx
shll $0x10, %ecx
orl %ecx, %edx
movl -0x2c(%rbp), %ecx
shll $0x8, %ecx
orl %ecx, %edx
orl -0x28(%rbp), %edx
movslq -0x24(%rbp), %rcx
movl %edx, 0x800(%rax,%rcx,4)
movl -0x28(%rbp), %edx
shll $0x18, %edx
movl -0x28(%rbp), %ecx
shll $0x10, %ecx
orl %ecx, %edx
movl -0x30(%rbp), %ecx
shll $0x8, %ecx
orl %ecx, %edx
orl -0x2c(%rbp), %edx
movslq -0x24(%rbp), %rcx
movl %edx, 0xc00(%rax,%rcx,4)
movl -0x28(%rbp), %edx
shll $0x18, %edx
movl -0x28(%rbp), %ecx
shll $0x10, %ecx
orl %ecx, %edx
movl -0x28(%rbp), %ecx
shll $0x8, %ecx
orl %ecx, %edx
orl -0x28(%rbp), %edx
movslq -0x24(%rbp), %rcx
movl %edx, 0x1000(%rax,%rcx,4)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0xcc90
movl -0x14(%rbp), %eax
movl $0x8, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0x50(%rbp), %rax
subl $0x2, %ecx
shll %ecx
addl $0xa, %ecx
movl %ecx, 0x14f0(%rax)
movl $0x0, -0x34(%rbp)
addq $0x1400, %rax           # imm = 0x1400
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xd3c0
movq -0x40(%rbp), %rdi
addq $0x4, %rdi
movq -0x10(%rbp), %rsi
addq $0x4, %rsi
callq 0xd3c0
movq -0x40(%rbp), %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0xd3c0
movq -0x40(%rbp), %rdi
addq $0xc, %rdi
movq -0x10(%rbp), %rsi
addq $0xc, %rsi
callq 0xd3c0
cmpl $0x10, -0x14(%rbp)
jne 0xcf51
jmp 0xce23
movq -0x40(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x40(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x58(%rbp)
movl -0x44(%rbp), %edi
movl $0x2, %esi
callq 0xd410
movl %eax, %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
movl 0x1000(%rax,%rcx,4), %eax
andl $0xff000000, %eax       # imm = 0xFF000000
movl %eax, -0x60(%rbp)
movl -0x44(%rbp), %edi
movl $0x1, %esi
callq 0xd410
movq -0x50(%rbp), %rcx
movl %eax, %edx
movl -0x60(%rbp), %eax
movl %edx, %edx
movl 0x1000(%rcx,%rdx,4), %ecx
andl $0xff0000, %ecx         # imm = 0xFF0000
xorl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x44(%rbp), %edi
xorl %esi, %esi
callq 0xd410
movq -0x50(%rbp), %rcx
movl %eax, %edx
movl -0x5c(%rbp), %eax
movl %edx, %edx
movl 0x1000(%rcx,%rdx,4), %ecx
andl $0xff00, %ecx           # imm = 0xFF00
xorl %ecx, %eax
movl %eax, -0x54(%rbp)
movl -0x44(%rbp), %edi
movl $0x3, %esi
callq 0xd410
movq -0x50(%rbp), %rdx
movl -0x58(%rbp), %ecx
movl %eax, %esi
movl -0x54(%rbp), %eax
movl %esi, %esi
movl 0x1000(%rdx,%rsi,4), %edx
andl $0xff, %edx
xorl %edx, %eax
xorl %eax, %ecx
movslq -0x34(%rbp), %rdx
leaq 0x27cae(%rip), %rax     # 0x34b90
xorl (%rax,%rdx,4), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x40(%rbp), %rax
movl 0x4(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x10(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x14(%rax)
movq -0x40(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x14(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x40(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x18(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x1c(%rax)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
cmpl $0xa, %eax
jne 0xcf3b
jmp 0xcf4c
movq -0x40(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x40(%rbp)
jmp 0xce23
jmp 0xd3ac
cmpl $0x18, -0x14(%rbp)
jne 0xd0dd
movq -0x40(%rbp), %rdi
addq $0x10, %rdi
movq -0x10(%rbp), %rsi
addq $0x10, %rsi
callq 0xd3c0
movq -0x40(%rbp), %rdi
addq $0x14, %rdi
movq -0x10(%rbp), %rsi
addq $0x14, %rsi
callq 0xd3c0
movq -0x40(%rbp), %rax
movl 0x14(%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x40(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x68(%rbp)
movl -0x44(%rbp), %edi
movl $0x2, %esi
callq 0xd410
movl %eax, %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
movl 0x1000(%rax,%rcx,4), %eax
andl $0xff000000, %eax       # imm = 0xFF000000
movl %eax, -0x70(%rbp)
movl -0x44(%rbp), %edi
movl $0x1, %esi
callq 0xd410
movq -0x50(%rbp), %rcx
movl %eax, %edx
movl -0x70(%rbp), %eax
movl %edx, %edx
movl 0x1000(%rcx,%rdx,4), %ecx
andl $0xff0000, %ecx         # imm = 0xFF0000
xorl %ecx, %eax
movl %eax, -0x6c(%rbp)
movl -0x44(%rbp), %edi
xorl %esi, %esi
callq 0xd410
movq -0x50(%rbp), %rcx
movl %eax, %edx
movl -0x6c(%rbp), %eax
movl %edx, %edx
movl 0x1000(%rcx,%rdx,4), %ecx
andl $0xff00, %ecx           # imm = 0xFF00
xorl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x44(%rbp), %edi
movl $0x3, %esi
callq 0xd410
movq -0x50(%rbp), %rdx
movl -0x68(%rbp), %ecx
movl %eax, %esi
movl -0x64(%rbp), %eax
movl %esi, %esi
movl 0x1000(%rdx,%rsi,4), %edx
andl $0xff, %edx
xorl %edx, %eax
xorl %eax, %ecx
movslq -0x34(%rbp), %rdx
leaq 0x27b4c(%rip), %rax     # 0x34b90
xorl (%rax,%rdx,4), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x40(%rbp), %rax
movl 0x4(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x18(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x40(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x1c(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x40(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x20(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x24(%rax)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
cmpl $0x8, %eax
jne 0xd09d
jmp 0xd0d8
movq -0x40(%rbp), %rax
movl 0x10(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x24(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x40(%rbp), %rax
movl 0x14(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x28(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x2c(%rax)
movq -0x40(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x40(%rbp)
jmp 0xcf85
jmp 0xd3aa
cmpl $0x20, -0x14(%rbp)
jne 0xd3a8
movq -0x40(%rbp), %rdi
addq $0x10, %rdi
movq -0x10(%rbp), %rsi
addq $0x10, %rsi
callq 0xd3c0
movq -0x40(%rbp), %rdi
addq $0x14, %rdi
movq -0x10(%rbp), %rsi
addq $0x14, %rsi
callq 0xd3c0
movq -0x40(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
callq 0xd3c0
movq -0x40(%rbp), %rdi
addq $0x1c, %rdi
movq -0x10(%rbp), %rsi
addq $0x1c, %rsi
callq 0xd3c0
movq -0x40(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x40(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x78(%rbp)
movl -0x44(%rbp), %edi
movl $0x2, %esi
callq 0xd410
movl %eax, %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
movl 0x1000(%rax,%rcx,4), %eax
andl $0xff000000, %eax       # imm = 0xFF000000
movl %eax, -0x80(%rbp)
movl -0x44(%rbp), %edi
movl $0x1, %esi
callq 0xd410
movq -0x50(%rbp), %rcx
movl %eax, %edx
movl -0x80(%rbp), %eax
movl %edx, %edx
movl 0x1000(%rcx,%rdx,4), %ecx
andl $0xff0000, %ecx         # imm = 0xFF0000
xorl %ecx, %eax
movl %eax, -0x7c(%rbp)
movl -0x44(%rbp), %edi
xorl %esi, %esi
callq 0xd410
movq -0x50(%rbp), %rcx
movl %eax, %edx
movl -0x7c(%rbp), %eax
movl %edx, %edx
movl 0x1000(%rcx,%rdx,4), %ecx
andl $0xff00, %ecx           # imm = 0xFF00
xorl %ecx, %eax
movl %eax, -0x74(%rbp)
movl -0x44(%rbp), %edi
movl $0x3, %esi
callq 0xd410
movq -0x50(%rbp), %rdx
movl -0x78(%rbp), %ecx
movl %eax, %esi
movl -0x74(%rbp), %eax
movl %esi, %esi
movl 0x1000(%rdx,%rsi,4), %edx
andl $0xff, %edx
xorl %edx, %eax
xorl %eax, %ecx
movslq -0x34(%rbp), %rdx
leaq 0x27996(%rip), %rax     # 0x34b90
xorl (%rax,%rdx,4), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x40(%rbp), %rax
movl 0x4(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x20(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x24(%rax)
movq -0x40(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x24(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x40(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x28(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x2c(%rax)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
cmpl $0x7, %eax
jne 0xd256
jmp 0xd3a6
movq -0x40(%rbp), %rax
movl 0x2c(%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x40(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x88(%rbp)
movl -0x44(%rbp), %edi
shll $0x18, %edi
movl -0x44(%rbp), %eax
shrl $0x8, %eax
orl %eax, %edi
movl $0x2, %esi
callq 0xd410
movl %eax, %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
movl 0x1000(%rax,%rcx,4), %eax
andl $0xff000000, %eax       # imm = 0xFF000000
movl %eax, -0x90(%rbp)
movl -0x44(%rbp), %edi
shll $0x18, %edi
movl -0x44(%rbp), %eax
shrl $0x8, %eax
orl %eax, %edi
movl $0x1, %esi
callq 0xd410
movq -0x50(%rbp), %rcx
movl %eax, %edx
movl -0x90(%rbp), %eax
movl %edx, %edx
movl 0x1000(%rcx,%rdx,4), %ecx
andl $0xff0000, %ecx         # imm = 0xFF0000
xorl %ecx, %eax
movl %eax, -0x8c(%rbp)
movl -0x44(%rbp), %edi
shll $0x18, %edi
movl -0x44(%rbp), %eax
shrl $0x8, %eax
orl %eax, %edi
xorl %esi, %esi
callq 0xd410
movq -0x50(%rbp), %rcx
movl %eax, %edx
movl -0x8c(%rbp), %eax
movl %edx, %edx
movl 0x1000(%rcx,%rdx,4), %ecx
andl $0xff00, %ecx           # imm = 0xFF00
xorl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x44(%rbp), %edi
shll $0x18, %edi
movl -0x44(%rbp), %eax
shrl $0x8, %eax
orl %eax, %edi
movl $0x3, %esi
callq 0xd410
movq -0x50(%rbp), %rdx
movl -0x88(%rbp), %ecx
movl %eax, %esi
movl -0x84(%rbp), %eax
movl %esi, %esi
movl 0x1000(%rdx,%rsi,4), %edx
andl $0xff, %edx
xorl %edx, %eax
xorl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x30(%rax)
movq -0x40(%rbp), %rax
movl 0x14(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x30(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x34(%rax)
movq -0x40(%rbp), %rax
movl 0x18(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x34(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x38(%rax)
movq -0x40(%rbp), %rax
movl 0x1c(%rax), %ecx
movq -0x40(%rbp), %rax
xorl 0x38(%rax), %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x3c(%rax)
movq -0x40(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x40(%rbp)
jmp 0xd13b
jmp 0xd3a8
jmp 0xd3aa
jmp 0xd3ac
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)