// File: /workspace/github_c_makefile_star2_O0/MartinDrab[P]netpipe/aes.c
// Function: rijndaelSetupEncrypt
int rijndaelSetupEncrypt(u32 *rk, const u8 *key, int keybits)
{
  int i = 0;
  u32 temp;

  rk[0] = GETU32(key     );
  rk[1] = GETU32(key +  4);
  rk[2] = GETU32(key +  8);
  rk[3] = GETU32(key + 12);
  if (keybits == 128)
  {
    for (;;)
    {
      temp  = rk[3];
      rk[4] = rk[0] ^
        (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
        (Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^
        (Te4[(temp      ) & 0xff] & 0x0000ff00) ^
        (Te4[(temp >> 24)       ] & 0x000000ff) ^
        rcon[i];
      rk[5] = rk[1] ^ rk[4];
      rk[6] = rk[2] ^ rk[5];
      rk[7] = rk[3] ^ rk[6];
      if (++i == 10)
        return 10;
      rk += 4;
    }
  }
  rk[4] = GETU32(key + 16);
  rk[5] = GETU32(key + 20);
  if (keybits == 192)
  {
    for (;;)
    {
      temp = rk[ 5];
      rk[ 6] = rk[ 0] ^
        (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
        (Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^
        (Te4[(temp      ) & 0xff] & 0x0000ff00) ^
        (Te4[(temp >> 24)       ] & 0x000000ff) ^
        rcon[i];
      rk[ 7] = rk[ 1] ^ rk[ 6];
      rk[ 8] = rk[ 2] ^ rk[ 7];
      rk[ 9] = rk[ 3] ^ rk[ 8];
      if (++i == 8)
        return 12;
      rk[10] = rk[ 4] ^ rk[ 9];
      rk[11] = rk[ 5] ^ rk[10];
      rk += 6;
    }
  }
  rk[6] = GETU32(key + 24);
  rk[7] = GETU32(key + 28);
  if (keybits == 256)
  {
    for (;;)
    {
      temp = rk[ 7];
      rk[ 8] = rk[ 0] ^
        (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
        (Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^
        (Te4[(temp      ) & 0xff] & 0x0000ff00) ^
        (Te4[(temp >> 24)       ] & 0x000000ff) ^
        rcon[i];
      rk[ 9] = rk[ 1] ^ rk[ 8];
      rk[10] = rk[ 2] ^ rk[ 9];
      rk[11] = rk[ 3] ^ rk[10];
      if (++i == 7)
        return 14;
      temp = rk[11];
      rk[12] = rk[ 4] ^
        (Te4[(temp >> 24)       ] & 0xff000000) ^
        (Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^
        (Te4[(temp >>  8) & 0xff] & 0x0000ff00) ^
        (Te4[(temp      ) & 0xff] & 0x000000ff);
      rk[13] = rk[ 5] ^ rk[12];
      rk[14] = rk[ 6] ^ rk[13];
      rk[15] = rk[ 7] ^ rk[14];
      rk += 8;
    }
  }
  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movq -0x18(%rbp), %rax
movzbl 0x1(%rax), %eax
shlq $0x10, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x2(%rax), %eax
shlq $0x8, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x3(%rax), %eax
xorq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movq -0x18(%rbp), %rax
movzbl 0x4(%rax), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movq -0x18(%rbp), %rax
movzbl 0x5(%rax), %eax
shlq $0x10, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x6(%rax), %eax
shlq $0x8, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x7(%rax), %eax
xorq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movzbl 0x8(%rax), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movq -0x18(%rbp), %rax
movzbl 0x9(%rax), %eax
shlq $0x10, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0xa(%rax), %eax
shlq $0x8, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0xb(%rax), %eax
xorq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rax
movzbl 0xc(%rax), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movq -0x18(%rbp), %rax
movzbl 0xd(%rax), %eax
shlq $0x10, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0xe(%rax), %eax
shlq $0x8, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0xf(%rax), %eax
xorq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
cmpl $0x80, -0x1c(%rbp)
jne 0x25b1
jmp 0x248f
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x28(%rbp), %rsi
shrq $0x10, %rsi
andq $0xff, %rsi
leaq 0x8b58(%rip), %rdx      # 0xb010
movabsq $0xff000000, %rax       # imm = 0xFF000000
andq (%rdx,%rsi,8), %rax
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
shrq $0x8, %rdx
andq $0xff, %rdx
leaq 0x8b31(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff0000, %rax         # imm = 0xFF0000
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
andq $0xff, %rdx
leaq 0x8b12(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff00, %rax           # imm = 0xFF00
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
shrq $0x18, %rdx
leaq 0x8af6(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff, %rax
xorq %rax, %rcx
movslq -0x20(%rbp), %rdx
leaq 0x92de(%rip), %rax      # 0xb810
xorq (%rax,%rdx,8), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x20(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x38(%rax)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
cmpl $0xa, %eax
jne 0x25a0
movl $0xa, -0x4(%rbp)
jmp 0x2a2f
movq -0x10(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x10(%rbp)
jmp 0x248f
movq -0x18(%rbp), %rax
movzbl 0x10(%rax), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movq -0x18(%rbp), %rax
movzbl 0x11(%rax), %eax
shlq $0x10, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x12(%rax), %eax
shlq $0x8, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x13(%rax), %eax
xorq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x18(%rbp), %rax
movzbl 0x14(%rax), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movq -0x18(%rbp), %rax
movzbl 0x15(%rax), %eax
shlq $0x10, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x16(%rax), %eax
shlq $0x8, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x17(%rax), %eax
xorq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
cmpl $0xc0, -0x1c(%rbp)
jne 0x2790
jmp 0x263e
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x28(%rbp), %rsi
shrq $0x10, %rsi
andq $0xff, %rsi
leaq 0x89a9(%rip), %rdx      # 0xb010
movabsq $0xff000000, %rax       # imm = 0xFF000000
andq (%rdx,%rsi,8), %rax
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
shrq $0x8, %rdx
andq $0xff, %rdx
leaq 0x8982(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff0000, %rax         # imm = 0xFF0000
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
andq $0xff, %rdx
leaq 0x8963(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff00, %rax           # imm = 0xFF00
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
shrq $0x18, %rdx
leaq 0x8947(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff, %rax
xorq %rax, %rcx
movslq -0x20(%rbp), %rdx
leaq 0x912f(%rip), %rax      # 0xb810
xorq (%rax,%rdx,8), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x38(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x40(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x48(%rax)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
cmpl $0x8, %eax
jne 0x274f
movl $0xc, -0x4(%rbp)
jmp 0x2a2f
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x48(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x50(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x50(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x58(%rax)
movq -0x10(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x10(%rbp)
jmp 0x263e
movq -0x18(%rbp), %rax
movzbl 0x18(%rax), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movq -0x18(%rbp), %rax
movzbl 0x19(%rax), %eax
shlq $0x10, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x1a(%rax), %eax
shlq $0x8, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x1b(%rax), %eax
xorq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x18(%rbp), %rax
movzbl 0x1c(%rax), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movq -0x18(%rbp), %rax
movzbl 0x1d(%rax), %eax
shlq $0x10, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x1e(%rax), %eax
shlq $0x8, %rax
xorq %rax, %rcx
movq -0x18(%rbp), %rax
movzbl 0x1f(%rax), %eax
xorq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x38(%rax)
cmpl $0x100, -0x1c(%rbp)     # imm = 0x100
jne 0x2a28
jmp 0x281d
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x28(%rbp), %rsi
shrq $0x10, %rsi
andq $0xff, %rsi
leaq 0x87ca(%rip), %rdx      # 0xb010
movabsq $0xff000000, %rax       # imm = 0xFF000000
andq (%rdx,%rsi,8), %rax
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
shrq $0x8, %rdx
andq $0xff, %rdx
leaq 0x87a3(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff0000, %rax         # imm = 0xFF0000
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
andq $0xff, %rdx
leaq 0x8784(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff00, %rax           # imm = 0xFF00
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
shrq $0x18, %rdx
leaq 0x8768(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff, %rax
xorq %rax, %rcx
movslq -0x20(%rbp), %rdx
leaq 0x8f50(%rip), %rax      # 0xb810
xorq (%rax,%rdx,8), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x40(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x48(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x50(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x50(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x58(%rax)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
cmpl $0x7, %eax
jne 0x292e
movl $0xe, -0x4(%rbp)
jmp 0x2a2f
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x28(%rbp), %rsi
shrq $0x18, %rsi
leaq 0x86bf(%rip), %rdx      # 0xb010
movabsq $0xff000000, %rax       # imm = 0xFF000000
andq (%rdx,%rsi,8), %rax
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
shrq $0x10, %rdx
andq $0xff, %rdx
leaq 0x8698(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff0000, %rax         # imm = 0xFF0000
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
shrq $0x8, %rdx
andq $0xff, %rdx
leaq 0x8675(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff00, %rax           # imm = 0xFF00
xorq %rax, %rcx
movq -0x28(%rbp), %rdx
andq $0xff, %rdx
leaq 0x8656(%rip), %rax      # 0xb010
movq (%rax,%rdx,8), %rax
andq $0xff, %rax
xorq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x60(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x60(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x68(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x68(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x70(%rax)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rcx
movq -0x10(%rbp), %rax
xorq 0x70(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x78(%rax)
movq -0x10(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x10(%rbp)
jmp 0x281d
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)