void test_lea(void) {
  int eax, ebx, ecx, edx, esi, edi, res;
  eax = 0x0001;
  ebx = 0x0002;
  ecx = 0x0004;
  edx = 0x0008;
  esi = 0x0010;
  edi = 0x0020;
  {
    asm("leal "
        "0x4000"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000", res);
  };
  {
    asm("leal "
        "(%%eax)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%eax)", res);
  };
  {
    asm("leal "
        "(%%ebx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%ebx)", res);
  };
  {
    asm("leal "
        "(%%ecx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%ecx)", res);
  };
  {
    asm("leal "
        "(%%edx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%edx)", res);
  };
  {
    asm("leal "
        "(%%esi)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%esi)", res);
  };
  {
    asm("leal "
        "(%%edi)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%edi)", res);
  };
  {
    asm("leal "
        "0x40(%%eax)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x40(%%eax)", res);
  };
  {
    asm("leal "
        "0x40(%%ebx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x40(%%ebx)", res);
  };
  {
    asm("leal "
        "0x40(%%ecx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x40(%%ecx)", res);
  };
  {
    asm("leal "
        "0x40(%%edx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x40(%%edx)", res);
  };
  {
    asm("leal "
        "0x40(%%esi)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x40(%%esi)", res);
  };
  {
    asm("leal "
        "0x40(%%edi)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x40(%%edi)", res);
  };
  {
    asm("leal "
        "0x4000(%%eax)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000(%%eax)", res);
  };
  {
    asm("leal "
        "0x4000(%%ebx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000(%%ebx)", res);
  };
  {
    asm("leal "
        "0x4000(%%ecx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000(%%ecx)", res);
  };
  {
    asm("leal "
        "0x4000(%%edx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000(%%edx)", res);
  };
  {
    asm("leal "
        "0x4000(%%esi)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000(%%esi)", res);
  };
  {
    asm("leal "
        "0x4000(%%edi)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000(%%edi)", res);
  };
  {
    asm("leal "
        "(%%eax, %%ecx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%eax, %%ecx)", res);
  };
  {
    asm("leal "
        "(%%ebx, %%edx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%ebx, %%edx)", res);
  };
  {
    asm("leal "
        "(%%ecx, %%ecx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%ecx, %%ecx)", res);
  };
  {
    asm("leal "
        "(%%edx, %%ecx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%edx, %%ecx)", res);
  };
  {
    asm("leal "
        "(%%esi, %%ecx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%esi, %%ecx)", res);
  };
  {
    asm("leal "
        "(%%edi, %%ecx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%edi, %%ecx)", res);
  };
  {
    asm("leal "
        "0x40(%%eax, %%ecx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x40(%%eax, %%ecx)", res);
  };
  {
    asm("leal "
        "0x4000(%%ebx, %%edx)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000(%%ebx, %%edx)", res);
  };
  {
    asm("leal "
        "(%%ecx, %%ecx, 2)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%ecx, %%ecx, 2)", res);
  };
  {
    asm("leal "
        "(%%edx, %%ecx, 4)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%edx, %%ecx, 4)", res);
  };
  {
    asm("leal "
        "(%%esi, %%ecx, 8)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(%%esi, %%ecx, 8)", res);
  };
  {
    asm("leal "
        "(,%%eax, 2)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(,%%eax, 2)", res);
  };
  {
    asm("leal "
        "(,%%ebx, 4)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(,%%ebx, 4)", res);
  };
  {
    asm("leal "
        "(,%%ecx, 8)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "(,%%ecx, 8)", res);
  };
  {
    asm("leal "
        "0x40(,%%eax, 2)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x40(,%%eax, 2)", res);
  };
  {
    asm("leal "
        "0x40(,%%ebx, 4)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x40(,%%ebx, 4)", res);
  };
  {
    asm("leal "
        "0x40(,%%ecx, 8)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x40(,%%ecx, 8)", res);
  };
  {
    asm("leal "
        "-10(%%ecx, %%ecx, 2)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "-10(%%ecx, %%ecx, 2)", res);
  };
  {
    asm("leal "
        "-10(%%edx, %%ecx, 4)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "-10(%%edx, %%ecx, 4)", res);
  };
  {
    asm("leal "
        "-10(%%esi, %%ecx, 8)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "-10(%%esi, %%ecx, 8)", res);
  };
  {
    asm("leal "
        "0x4000(%%ecx, %%ecx, 2)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000(%%ecx, %%ecx, 2)", res);
  };
  {
    asm("leal "
        "0x4000(%%edx, %%ecx, 4)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000(%%edx, %%ecx, 4)", res);
  };
  {
    asm("leal "
        "0x4000(%%esi, %%ecx, 8)"
        ", %0"
        : "=r"(res)
        : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "S"(esi), "D"(edi));
    printf("lea %s = %08x\n", "0x4000(%%esi, %%ecx, 8)", res);
  };
}


x86 assembly (clang, -O0):
<test_lea>:
push   %rbp
mov    %rsp,%rbp
push   %rbx
sub    $0x28,%rsp
movl   $0x1,-0xc(%rbp)
movl   $0x2,-0x10(%rbp)
movl   $0x4,-0x14(%rbp)
movl   $0x8,-0x18(%rbp)
movl   $0x10,-0x1c(%rbp)
movl   $0x20,-0x20(%rbp)
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xe97(%rip),%rdi
lea    0xe9f(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%eax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xe67(%rip),%rdi
lea    0xec4(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%ebx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xe37(%rip),%rdi
lea    0xea2(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%ecx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xe07(%rip),%rdi
lea    0xe80(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%edx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xdd7(%rip),%rdi
lea    0xe5e(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%esi),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xda7(%rip),%rdi
lea    0xe3c(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%edi),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xd77(%rip),%rdi
lea    0xe1a(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x40(%eax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xd46(%rip),%rdi
lea    0xd55(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x40(%ebx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xd15(%rip),%rdi
lea    0xd30(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x40(%ecx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xce4(%rip),%rdi
lea    0xd0b(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x40(%edx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xcb3(%rip),%rdi
lea    0xce6(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x40(%esi),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xc82(%rip),%rdi
lea    0xcc1(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x40(%edi),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xc51(%rip),%rdi
lea    0xc9c(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000(%eax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xc1d(%rip),%rdi
lea    0xc74(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000(%ebx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xbe9(%rip),%rdi
lea    0xc4e(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000(%ecx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xbb5(%rip),%rdi
lea    0xc28(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000(%edx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xb81(%rip),%rdi
lea    0xc02(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000(%esi),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xb4d(%rip),%rdi
lea    0xbdc(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000(%edi),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xb19(%rip),%rdi
lea    0xbb6(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%eax,%ecx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xae8(%rip),%rdi
lea    0xbd3(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%ebx,%edx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xab7(%rip),%rdi
lea    0xbb7(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%ecx,%ecx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xa86(%rip),%rdi
lea    0xb31(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%edx,%ecx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xa55(%rip),%rdi
lea    0xb0f(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%esi,%ecx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0xa24(%rip),%rdi
lea    0xaed(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%edi,%ecx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x9f3(%rip),%rdi
lea    0xacb(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x40(%eax,%ecx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x9c1(%rip),%rdi
lea    0xaa8(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000(%ebx,%edx,1),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x98c(%rip),%rdi
lea    0xa86(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%ecx,%ecx,2),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x95b(%rip),%rdi
lea    0xadf(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%edx,%ecx,4),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x92a(%rip),%rdi
lea    0xac6(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    (%esi,%ecx,8),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x8f9(%rip),%rdi
lea    0xaad(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x0(,%eax,2),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x8c4(%rip),%rdi
lea    0x9d7(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x0(,%ebx,4),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x88f(%rip),%rdi
lea    0x9b2(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x0(,%ecx,8),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x85a(%rip),%rdi
lea    0x98d(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x40(,%eax,2),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x825(%rip),%rdi
lea    0x934(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x40(,%ebx,4),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x7f0(%rip),%rdi
lea    0x90f(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x40(,%ecx,8),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x7bb(%rip),%rdi
lea    0x8ea(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    -0xa(%ecx,%ecx,2),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x789(%rip),%rdi
lea    0x8c8(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    -0xa(%edx,%ecx,4),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x757(%rip),%rdi
lea    0x8ab(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    -0xa(%esi,%ecx,8),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x725(%rip),%rdi
lea    0x88e(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000(%ecx,%ecx,2),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x6f0(%rip),%rdi
lea    0x86e(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000(%edx,%ecx,4),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x6bb(%rip),%rdi
lea    0x851(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ebx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%esi
mov    -0x20(%rbp),%edi
lea    0x4000(%esi,%ecx,8),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edx
lea    0x686(%rip),%rdi
lea    0x834(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x28,%rsp
pop    %rbx
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_lea>:
push   %r14
push   %rbx
push   %rax
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x4000,%edx
lea    0xec0(%rip),%r14
lea    0xec8(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%eax),%edx
lea    0xeeb(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%ebx),%edx
lea    0xec7(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%ecx),%edx
lea    0xea3(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%edx),%edx
lea    0xe7f(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%esi),%edx
lea    0xe5b(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%edi),%edx
lea    0xe37(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x40(%eax),%edx
lea    0xd70(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x40(%ebx),%edx
lea    0xd49(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x40(%ecx),%edx
lea    0xd22(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x40(%edx),%edx
lea    0xcfb(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x40(%esi),%edx
lea    0xcd4(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x40(%edi),%edx
lea    0xcad(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x4000(%eax),%edx
lea    0xc83(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x4000(%ebx),%edx
lea    0xc5b(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x4000(%ecx),%edx
lea    0xc33(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x4000(%edx),%edx
lea    0xc0b(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x4000(%esi),%edx
lea    0xbe3(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x4000(%edi),%edx
lea    0xbbb(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%eax,%ecx,1),%edx
lea    0xbd6(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%ebx,%edx,1),%edx
lea    0xbb8(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%ecx,%ecx,1),%edx
lea    0xb30(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%edx,%ecx,1),%edx
lea    0xb0c(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%esi,%ecx,1),%edx
lea    0xae8(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%edi,%ecx,1),%edx
lea    0xac4(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x40(%eax,%ecx,1),%edx
lea    0xa9f(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x4000(%ebx,%edx,1),%edx
lea    0xa7b(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%ecx,%ecx,2),%edx
lea    0xad2(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%edx,%ecx,4),%edx
lea    0xab7(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    (%esi,%ecx,8),%edx
lea    0xa9c(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x0(,%eax,2),%edx
lea    0x9c4(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x0(,%ebx,4),%edx
lea    0x99d(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x0(,%ecx,8),%edx
lea    0x976(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x40(,%eax,2),%edx
lea    0x91b(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x40(,%ebx,4),%edx
lea    0x8f4(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x40(,%ecx,8),%edx
lea    0x8cd(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    -0xa(%ecx,%ecx,2),%edx
lea    0x8a9(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    -0xa(%edx,%ecx,4),%edx
lea    0x88a(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    -0xa(%esi,%ecx,8),%edx
lea    0x86b(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x4000(%ecx,%ecx,2),%edx
lea    0x849(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x8,%edx
mov    $0x10,%esi
mov    $0x20,%edi
lea    0x4000(%edx,%ecx,4),%edx
lea    0x82a(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%eax
mov    $0x2,%ebx
mov    $0x4,%ecx
mov    $0x20,%edi
mov    $0x10,%esi
mov    $0x8,%edx
lea    0x4000(%esi,%ecx,8),%edx
lea    0x80b(%rip),%rsi
mov    %r14,%rdi
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [15 x i8] c"lea %s = %08x\0A\00"
@.str.1 = [7 x i8] c"0x4000\00"
@.str.2 = [8 x i8] c"(%%eax)\00"
@.str.3 = [8 x i8] c"(%%ebx)\00"
@.str.4 = [8 x i8] c"(%%ecx)\00"
@.str.5 = [8 x i8] c"(%%edx)\00"
@.str.6 = [8 x i8] c"(%%esi)\00"
@.str.7 = [8 x i8] c"(%%edi)\00"
@.str.8 = [12 x i8] c"0x40(%%eax)\00"
@.str.9 = [12 x i8] c"0x40(%%ebx)\00"
@.str.10 = [12 x i8] c"0x40(%%ecx)\00"
@.str.11 = [12 x i8] c"0x40(%%edx)\00"
@.str.12 = [12 x i8] c"0x40(%%esi)\00"
@.str.13 = [12 x i8] c"0x40(%%edi)\00"
@.str.14 = [14 x i8] c"0x4000(%%eax)\00"
@.str.15 = [14 x i8] c"0x4000(%%ebx)\00"
@.str.16 = [14 x i8] c"0x4000(%%ecx)\00"
@.str.17 = [14 x i8] c"0x4000(%%edx)\00"
@.str.18 = [14 x i8] c"0x4000(%%esi)\00"
@.str.19 = [14 x i8] c"0x4000(%%edi)\00"
@.str.20 = [15 x i8] c"(%%eax, %%ecx)\00"
@.str.21 = [15 x i8] c"(%%ebx, %%edx)\00"
@.str.22 = [15 x i8] c"(%%ecx, %%ecx)\00"
@.str.23 = [15 x i8] c"(%%edx, %%ecx)\00"
@.str.24 = [15 x i8] c"(%%esi, %%ecx)\00"
@.str.25 = [15 x i8] c"(%%edi, %%ecx)\00"
@.str.26 = [19 x i8] c"0x40(%%eax, %%ecx)\00"
@.str.27 = [21 x i8] c"0x4000(%%ebx, %%edx)\00"
@.str.28 = [18 x i8] c"(%%ecx, %%ecx, 2)\00"
@.str.29 = [18 x i8] c"(%%edx, %%ecx, 4)\00"
@.str.30 = [18 x i8] c"(%%esi, %%ecx, 8)\00"
@.str.31 = [12 x i8] c"(,%%eax, 2)\00"
@.str.32 = [12 x i8] c"(,%%ebx, 4)\00"
@.str.33 = [12 x i8] c"(,%%ecx, 8)\00"
@.str.34 = [16 x i8] c"0x40(,%%eax, 2)\00"
@.str.35 = [16 x i8] c"0x40(,%%ebx, 4)\00"
@.str.36 = [16 x i8] c"0x40(,%%ecx, 8)\00"
@.str.37 = [21 x i8] c"-10(%%ecx, %%ecx, 2)\00"
@.str.38 = [21 x i8] c"-10(%%edx, %%ecx, 4)\00"
@.str.39 = [21 x i8] c"-10(%%esi, %%ecx, 8)\00"
@.str.40 = [24 x i8] c"0x4000(%%ecx, %%ecx, 2)\00"
@.str.41 = [24 x i8] c"0x4000(%%edx, %%ecx, 4)\00"
@.str.42 = [24 x i8] c"0x4000(%%esi, %%ecx, 8)\00"
define void @test_lea() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
store i32 1, i32* %1
store i32 2, i32* %2
store i32 4, i32* %3
store i32 8, i32* %4
store i32 16, i32* %5
store i32 32, i32* %6
%8 = load i32, i32* %1
%9 = load i32, i32* %2
%10 = load i32, i32* %3
%11 = load i32, i32* %4
%12 = load i32, i32* %5
%13 = load i32, i32* %6
%14 = call i32 asm "leal 0x4000, $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %8, i32 %9, i32 %10, i32 %11, i32 %12, i32 %13)
store i32 %14, i32* %7
%15 = load i32, i32* %7
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32 %15)
%17 = load i32, i32* %1
%18 = load i32, i32* %2
%19 = load i32, i32* %3
%20 = load i32, i32* %4
%21 = load i32, i32* %5
%22 = load i32, i32* %6
%23 = call i32 asm "leal (%eax), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %17, i32 %18, i32 %19, i32 %20, i32 %21, i32 %22)
store i32 %23, i32* %7
%24 = load i32, i32* %7
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0), i32 %24)
%26 = load i32, i32* %1
%27 = load i32, i32* %2
%28 = load i32, i32* %3
%29 = load i32, i32* %4
%30 = load i32, i32* %5
%31 = load i32, i32* %6
%32 = call i32 asm "leal (%ebx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %26, i32 %27, i32 %28, i32 %29, i32 %30, i32 %31)
store i32 %32, i32* %7
%33 = load i32, i32* %7
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0), i32 %33)
%35 = load i32, i32* %1
%36 = load i32, i32* %2
%37 = load i32, i32* %3
%38 = load i32, i32* %4
%39 = load i32, i32* %5
%40 = load i32, i32* %6
%41 = call i32 asm "leal (%ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %35, i32 %36, i32 %37, i32 %38, i32 %39, i32 %40)
store i32 %41, i32* %7
%42 = load i32, i32* %7
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i32 %42)
%44 = load i32, i32* %1
%45 = load i32, i32* %2
%46 = load i32, i32* %3
%47 = load i32, i32* %4
%48 = load i32, i32* %5
%49 = load i32, i32* %6
%50 = call i32 asm "leal (%edx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %44, i32 %45, i32 %46, i32 %47, i32 %48, i32 %49)
store i32 %50, i32* %7
%51 = load i32, i32* %7
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0), i32 %51)
%53 = load i32, i32* %1
%54 = load i32, i32* %2
%55 = load i32, i32* %3
%56 = load i32, i32* %4
%57 = load i32, i32* %5
%58 = load i32, i32* %6
%59 = call i32 asm "leal (%esi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %53, i32 %54, i32 %55, i32 %56, i32 %57, i32 %58)
store i32 %59, i32* %7
%60 = load i32, i32* %7
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0), i32 %60)
%62 = load i32, i32* %1
%63 = load i32, i32* %2
%64 = load i32, i32* %3
%65 = load i32, i32* %4
%66 = load i32, i32* %5
%67 = load i32, i32* %6
%68 = call i32 asm "leal (%edi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %62, i32 %63, i32 %64, i32 %65, i32 %66, i32 %67)
store i32 %68, i32* %7
%69 = load i32, i32* %7
%70 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0), i32 %69)
%71 = load i32, i32* %1
%72 = load i32, i32* %2
%73 = load i32, i32* %3
%74 = load i32, i32* %4
%75 = load i32, i32* %5
%76 = load i32, i32* %6
%77 = call i32 asm "leal 0x40(%eax), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %71, i32 %72, i32 %73, i32 %74, i32 %75, i32 %76)
store i32 %77, i32* %7
%78 = load i32, i32* %7
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0), i32 %78)
%80 = load i32, i32* %1
%81 = load i32, i32* %2
%82 = load i32, i32* %3
%83 = load i32, i32* %4
%84 = load i32, i32* %5
%85 = load i32, i32* %6
%86 = call i32 asm "leal 0x40(%ebx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %80, i32 %81, i32 %82, i32 %83, i32 %84, i32 %85)
store i32 %86, i32* %7
%87 = load i32, i32* %7
%88 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.9, i64 0, i64 0), i32 %87)
%89 = load i32, i32* %1
%90 = load i32, i32* %2
%91 = load i32, i32* %3
%92 = load i32, i32* %4
%93 = load i32, i32* %5
%94 = load i32, i32* %6
%95 = call i32 asm "leal 0x40(%ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %89, i32 %90, i32 %91, i32 %92, i32 %93, i32 %94)
store i32 %95, i32* %7
%96 = load i32, i32* %7
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0), i32 %96)
%98 = load i32, i32* %1
%99 = load i32, i32* %2
%100 = load i32, i32* %3
%101 = load i32, i32* %4
%102 = load i32, i32* %5
%103 = load i32, i32* %6
%104 = call i32 asm "leal 0x40(%edx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %98, i32 %99, i32 %100, i32 %101, i32 %102, i32 %103)
store i32 %104, i32* %7
%105 = load i32, i32* %7
%106 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.11, i64 0, i64 0), i32 %105)
%107 = load i32, i32* %1
%108 = load i32, i32* %2
%109 = load i32, i32* %3
%110 = load i32, i32* %4
%111 = load i32, i32* %5
%112 = load i32, i32* %6
%113 = call i32 asm "leal 0x40(%esi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %107, i32 %108, i32 %109, i32 %110, i32 %111, i32 %112)
store i32 %113, i32* %7
%114 = load i32, i32* %7
%115 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0), i32 %114)
%116 = load i32, i32* %1
%117 = load i32, i32* %2
%118 = load i32, i32* %3
%119 = load i32, i32* %4
%120 = load i32, i32* %5
%121 = load i32, i32* %6
%122 = call i32 asm "leal 0x40(%edi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %116, i32 %117, i32 %118, i32 %119, i32 %120, i32 %121)
store i32 %122, i32* %7
%123 = load i32, i32* %7
%124 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.13, i64 0, i64 0), i32 %123)
%125 = load i32, i32* %1
%126 = load i32, i32* %2
%127 = load i32, i32* %3
%128 = load i32, i32* %4
%129 = load i32, i32* %5
%130 = load i32, i32* %6
%131 = call i32 asm "leal 0x4000(%eax), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %125, i32 %126, i32 %127, i32 %128, i32 %129, i32 %130)
store i32 %131, i32* %7
%132 = load i32, i32* %7
%133 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.14, i64 0, i64 0), i32 %132)
%134 = load i32, i32* %1
%135 = load i32, i32* %2
%136 = load i32, i32* %3
%137 = load i32, i32* %4
%138 = load i32, i32* %5
%139 = load i32, i32* %6
%140 = call i32 asm "leal 0x4000(%ebx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %134, i32 %135, i32 %136, i32 %137, i32 %138, i32 %139)
store i32 %140, i32* %7
%141 = load i32, i32* %7
%142 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0), i32 %141)
%143 = load i32, i32* %1
%144 = load i32, i32* %2
%145 = load i32, i32* %3
%146 = load i32, i32* %4
%147 = load i32, i32* %5
%148 = load i32, i32* %6
%149 = call i32 asm "leal 0x4000(%ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %143, i32 %144, i32 %145, i32 %146, i32 %147, i32 %148)
store i32 %149, i32* %7
%150 = load i32, i32* %7
%151 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.16, i64 0, i64 0), i32 %150)
%152 = load i32, i32* %1
%153 = load i32, i32* %2
%154 = load i32, i32* %3
%155 = load i32, i32* %4
%156 = load i32, i32* %5
%157 = load i32, i32* %6
%158 = call i32 asm "leal 0x4000(%edx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %152, i32 %153, i32 %154, i32 %155, i32 %156, i32 %157)
store i32 %158, i32* %7
%159 = load i32, i32* %7
%160 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.17, i64 0, i64 0), i32 %159)
%161 = load i32, i32* %1
%162 = load i32, i32* %2
%163 = load i32, i32* %3
%164 = load i32, i32* %4
%165 = load i32, i32* %5
%166 = load i32, i32* %6
%167 = call i32 asm "leal 0x4000(%esi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %161, i32 %162, i32 %163, i32 %164, i32 %165, i32 %166)
store i32 %167, i32* %7
%168 = load i32, i32* %7
%169 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.18, i64 0, i64 0), i32 %168)
%170 = load i32, i32* %1
%171 = load i32, i32* %2
%172 = load i32, i32* %3
%173 = load i32, i32* %4
%174 = load i32, i32* %5
%175 = load i32, i32* %6
%176 = call i32 asm "leal 0x4000(%edi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %170, i32 %171, i32 %172, i32 %173, i32 %174, i32 %175)
store i32 %176, i32* %7
%177 = load i32, i32* %7
%178 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.19, i64 0, i64 0), i32 %177)
%179 = load i32, i32* %1
%180 = load i32, i32* %2
%181 = load i32, i32* %3
%182 = load i32, i32* %4
%183 = load i32, i32* %5
%184 = load i32, i32* %6
%185 = call i32 asm "leal (%eax, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %179, i32 %180, i32 %181, i32 %182, i32 %183, i32 %184)
store i32 %185, i32* %7
%186 = load i32, i32* %7
%187 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.20, i64 0, i64 0), i32 %186)
%188 = load i32, i32* %1
%189 = load i32, i32* %2
%190 = load i32, i32* %3
%191 = load i32, i32* %4
%192 = load i32, i32* %5
%193 = load i32, i32* %6
%194 = call i32 asm "leal (%ebx, %edx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %188, i32 %189, i32 %190, i32 %191, i32 %192, i32 %193)
store i32 %194, i32* %7
%195 = load i32, i32* %7
%196 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i32 %195)
%197 = load i32, i32* %1
%198 = load i32, i32* %2
%199 = load i32, i32* %3
%200 = load i32, i32* %4
%201 = load i32, i32* %5
%202 = load i32, i32* %6
%203 = call i32 asm "leal (%ecx, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %197, i32 %198, i32 %199, i32 %200, i32 %201, i32 %202)
store i32 %203, i32* %7
%204 = load i32, i32* %7
%205 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.22, i64 0, i64 0), i32 %204)
%206 = load i32, i32* %1
%207 = load i32, i32* %2
%208 = load i32, i32* %3
%209 = load i32, i32* %4
%210 = load i32, i32* %5
%211 = load i32, i32* %6
%212 = call i32 asm "leal (%edx, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %206, i32 %207, i32 %208, i32 %209, i32 %210, i32 %211)
store i32 %212, i32* %7
%213 = load i32, i32* %7
%214 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.23, i64 0, i64 0), i32 %213)
%215 = load i32, i32* %1
%216 = load i32, i32* %2
%217 = load i32, i32* %3
%218 = load i32, i32* %4
%219 = load i32, i32* %5
%220 = load i32, i32* %6
%221 = call i32 asm "leal (%esi, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %215, i32 %216, i32 %217, i32 %218, i32 %219, i32 %220)
store i32 %221, i32* %7
%222 = load i32, i32* %7
%223 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.24, i64 0, i64 0), i32 %222)
%224 = load i32, i32* %1
%225 = load i32, i32* %2
%226 = load i32, i32* %3
%227 = load i32, i32* %4
%228 = load i32, i32* %5
%229 = load i32, i32* %6
%230 = call i32 asm "leal (%edi, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %224, i32 %225, i32 %226, i32 %227, i32 %228, i32 %229)
store i32 %230, i32* %7
%231 = load i32, i32* %7
%232 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.25, i64 0, i64 0), i32 %231)
%233 = load i32, i32* %1
%234 = load i32, i32* %2
%235 = load i32, i32* %3
%236 = load i32, i32* %4
%237 = load i32, i32* %5
%238 = load i32, i32* %6
%239 = call i32 asm "leal 0x40(%eax, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %233, i32 %234, i32 %235, i32 %236, i32 %237, i32 %238)
store i32 %239, i32* %7
%240 = load i32, i32* %7
%241 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.26, i64 0, i64 0), i32 %240)
%242 = load i32, i32* %1
%243 = load i32, i32* %2
%244 = load i32, i32* %3
%245 = load i32, i32* %4
%246 = load i32, i32* %5
%247 = load i32, i32* %6
%248 = call i32 asm "leal 0x4000(%ebx, %edx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %242, i32 %243, i32 %244, i32 %245, i32 %246, i32 %247)
store i32 %248, i32* %7
%249 = load i32, i32* %7
%250 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.27, i64 0, i64 0), i32 %249)
%251 = load i32, i32* %1
%252 = load i32, i32* %2
%253 = load i32, i32* %3
%254 = load i32, i32* %4
%255 = load i32, i32* %5
%256 = load i32, i32* %6
%257 = call i32 asm "leal (%ecx, %ecx, 2), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %251, i32 %252, i32 %253, i32 %254, i32 %255, i32 %256)
store i32 %257, i32* %7
%258 = load i32, i32* %7
%259 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.28, i64 0, i64 0), i32 %258)
%260 = load i32, i32* %1
%261 = load i32, i32* %2
%262 = load i32, i32* %3
%263 = load i32, i32* %4
%264 = load i32, i32* %5
%265 = load i32, i32* %6
%266 = call i32 asm "leal (%edx, %ecx, 4), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %260, i32 %261, i32 %262, i32 %263, i32 %264, i32 %265)
store i32 %266, i32* %7
%267 = load i32, i32* %7
%268 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.29, i64 0, i64 0), i32 %267)
%269 = load i32, i32* %1
%270 = load i32, i32* %2
%271 = load i32, i32* %3
%272 = load i32, i32* %4
%273 = load i32, i32* %5
%274 = load i32, i32* %6
%275 = call i32 asm "leal (%esi, %ecx, 8), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %269, i32 %270, i32 %271, i32 %272, i32 %273, i32 %274)
store i32 %275, i32* %7
%276 = load i32, i32* %7
%277 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.30, i64 0, i64 0), i32 %276)
%278 = load i32, i32* %1
%279 = load i32, i32* %2
%280 = load i32, i32* %3
%281 = load i32, i32* %4
%282 = load i32, i32* %5
%283 = load i32, i32* %6
%284 = call i32 asm "leal (,%eax, 2), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %278, i32 %279, i32 %280, i32 %281, i32 %282, i32 %283)
store i32 %284, i32* %7
%285 = load i32, i32* %7
%286 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.31, i64 0, i64 0), i32 %285)
%287 = load i32, i32* %1
%288 = load i32, i32* %2
%289 = load i32, i32* %3
%290 = load i32, i32* %4
%291 = load i32, i32* %5
%292 = load i32, i32* %6
%293 = call i32 asm "leal (,%ebx, 4), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %287, i32 %288, i32 %289, i32 %290, i32 %291, i32 %292)
store i32 %293, i32* %7
%294 = load i32, i32* %7
%295 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.32, i64 0, i64 0), i32 %294)
%296 = load i32, i32* %1
%297 = load i32, i32* %2
%298 = load i32, i32* %3
%299 = load i32, i32* %4
%300 = load i32, i32* %5
%301 = load i32, i32* %6
%302 = call i32 asm "leal (,%ecx, 8), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %296, i32 %297, i32 %298, i32 %299, i32 %300, i32 %301)
store i32 %302, i32* %7
%303 = load i32, i32* %7
%304 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.33, i64 0, i64 0), i32 %303)
%305 = load i32, i32* %1
%306 = load i32, i32* %2
%307 = load i32, i32* %3
%308 = load i32, i32* %4
%309 = load i32, i32* %5
%310 = load i32, i32* %6
%311 = call i32 asm "leal 0x40(,%eax, 2), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %305, i32 %306, i32 %307, i32 %308, i32 %309, i32 %310)
store i32 %311, i32* %7
%312 = load i32, i32* %7
%313 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.34, i64 0, i64 0), i32 %312)
%314 = load i32, i32* %1
%315 = load i32, i32* %2
%316 = load i32, i32* %3
%317 = load i32, i32* %4
%318 = load i32, i32* %5
%319 = load i32, i32* %6
%320 = call i32 asm "leal 0x40(,%ebx, 4), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %314, i32 %315, i32 %316, i32 %317, i32 %318, i32 %319)
store i32 %320, i32* %7
%321 = load i32, i32* %7
%322 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.35, i64 0, i64 0), i32 %321)
%323 = load i32, i32* %1
%324 = load i32, i32* %2
%325 = load i32, i32* %3
%326 = load i32, i32* %4
%327 = load i32, i32* %5
%328 = load i32, i32* %6
%329 = call i32 asm "leal 0x40(,%ecx, 8), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %323, i32 %324, i32 %325, i32 %326, i32 %327, i32 %328)
store i32 %329, i32* %7
%330 = load i32, i32* %7
%331 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.36, i64 0, i64 0), i32 %330)
%332 = load i32, i32* %1
%333 = load i32, i32* %2
%334 = load i32, i32* %3
%335 = load i32, i32* %4
%336 = load i32, i32* %5
%337 = load i32, i32* %6
%338 = call i32 asm "leal -10(%ecx, %ecx, 2), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %332, i32 %333, i32 %334, i32 %335, i32 %336, i32 %337)
store i32 %338, i32* %7
%339 = load i32, i32* %7
%340 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.37, i64 0, i64 0), i32 %339)
%341 = load i32, i32* %1
%342 = load i32, i32* %2
%343 = load i32, i32* %3
%344 = load i32, i32* %4
%345 = load i32, i32* %5
%346 = load i32, i32* %6
%347 = call i32 asm "leal -10(%edx, %ecx, 4), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %341, i32 %342, i32 %343, i32 %344, i32 %345, i32 %346)
store i32 %347, i32* %7
%348 = load i32, i32* %7
%349 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.38, i64 0, i64 0), i32 %348)
%350 = load i32, i32* %1
%351 = load i32, i32* %2
%352 = load i32, i32* %3
%353 = load i32, i32* %4
%354 = load i32, i32* %5
%355 = load i32, i32* %6
%356 = call i32 asm "leal -10(%esi, %ecx, 8), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %350, i32 %351, i32 %352, i32 %353, i32 %354, i32 %355)
store i32 %356, i32* %7
%357 = load i32, i32* %7
%358 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.39, i64 0, i64 0), i32 %357)
%359 = load i32, i32* %1
%360 = load i32, i32* %2
%361 = load i32, i32* %3
%362 = load i32, i32* %4
%363 = load i32, i32* %5
%364 = load i32, i32* %6
%365 = call i32 asm "leal 0x4000(%ecx, %ecx, 2), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %359, i32 %360, i32 %361, i32 %362, i32 %363, i32 %364)
store i32 %365, i32* %7
%366 = load i32, i32* %7
%367 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.40, i64 0, i64 0), i32 %366)
%368 = load i32, i32* %1
%369 = load i32, i32* %2
%370 = load i32, i32* %3
%371 = load i32, i32* %4
%372 = load i32, i32* %5
%373 = load i32, i32* %6
%374 = call i32 asm "leal 0x4000(%edx, %ecx, 4), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %368, i32 %369, i32 %370, i32 %371, i32 %372, i32 %373)
store i32 %374, i32* %7
%375 = load i32, i32* %7
%376 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.41, i64 0, i64 0), i32 %375)
%377 = load i32, i32* %1
%378 = load i32, i32* %2
%379 = load i32, i32* %3
%380 = load i32, i32* %4
%381 = load i32, i32* %5
%382 = load i32, i32* %6
%383 = call i32 asm "leal 0x4000(%esi, %ecx, 8), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 %377, i32 %378, i32 %379, i32 %380, i32 %381, i32 %382)
store i32 %383, i32* %7
%384 = load i32, i32* %7
%385 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.42, i64 0, i64 0), i32 %384)
ret void
}

LLVM IR (-O2):
@.str = [15 x i8] c"lea %s = %08x\0A\00"
@.str.1 = [7 x i8] c"0x4000\00"
@.str.2 = [8 x i8] c"(%%eax)\00"
@.str.3 = [8 x i8] c"(%%ebx)\00"
@.str.4 = [8 x i8] c"(%%ecx)\00"
@.str.5 = [8 x i8] c"(%%edx)\00"
@.str.6 = [8 x i8] c"(%%esi)\00"
@.str.7 = [8 x i8] c"(%%edi)\00"
@.str.8 = [12 x i8] c"0x40(%%eax)\00"
@.str.9 = [12 x i8] c"0x40(%%ebx)\00"
@.str.10 = [12 x i8] c"0x40(%%ecx)\00"
@.str.11 = [12 x i8] c"0x40(%%edx)\00"
@.str.12 = [12 x i8] c"0x40(%%esi)\00"
@.str.13 = [12 x i8] c"0x40(%%edi)\00"
@.str.14 = [14 x i8] c"0x4000(%%eax)\00"
@.str.15 = [14 x i8] c"0x4000(%%ebx)\00"
@.str.16 = [14 x i8] c"0x4000(%%ecx)\00"
@.str.17 = [14 x i8] c"0x4000(%%edx)\00"
@.str.18 = [14 x i8] c"0x4000(%%esi)\00"
@.str.19 = [14 x i8] c"0x4000(%%edi)\00"
@.str.20 = [15 x i8] c"(%%eax, %%ecx)\00"
@.str.21 = [15 x i8] c"(%%ebx, %%edx)\00"
@.str.22 = [15 x i8] c"(%%ecx, %%ecx)\00"
@.str.23 = [15 x i8] c"(%%edx, %%ecx)\00"
@.str.24 = [15 x i8] c"(%%esi, %%ecx)\00"
@.str.25 = [15 x i8] c"(%%edi, %%ecx)\00"
@.str.26 = [19 x i8] c"0x40(%%eax, %%ecx)\00"
@.str.27 = [21 x i8] c"0x4000(%%ebx, %%edx)\00"
@.str.28 = [18 x i8] c"(%%ecx, %%ecx, 2)\00"
@.str.29 = [18 x i8] c"(%%edx, %%ecx, 4)\00"
@.str.30 = [18 x i8] c"(%%esi, %%ecx, 8)\00"
@.str.31 = [12 x i8] c"(,%%eax, 2)\00"
@.str.32 = [12 x i8] c"(,%%ebx, 4)\00"
@.str.33 = [12 x i8] c"(,%%ecx, 8)\00"
@.str.34 = [16 x i8] c"0x40(,%%eax, 2)\00"
@.str.35 = [16 x i8] c"0x40(,%%ebx, 4)\00"
@.str.36 = [16 x i8] c"0x40(,%%ecx, 8)\00"
@.str.37 = [21 x i8] c"-10(%%ecx, %%ecx, 2)\00"
@.str.38 = [21 x i8] c"-10(%%edx, %%ecx, 4)\00"
@.str.39 = [21 x i8] c"-10(%%esi, %%ecx, 8)\00"
@.str.40 = [24 x i8] c"0x4000(%%ecx, %%ecx, 2)\00"
@.str.41 = [24 x i8] c"0x4000(%%edx, %%ecx, 4)\00"
@.str.42 = [24 x i8] c"0x4000(%%esi, %%ecx, 8)\00"
define void @test_lea() {
%1 = tail call i32 asm "leal 0x4000, $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32 %1)
%3 = tail call i32 asm "leal (%eax), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%4 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0), i32 %3)
%5 = tail call i32 asm "leal (%ebx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%6 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0), i32 %5)
%7 = tail call i32 asm "leal (%ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i32 %7)
%9 = tail call i32 asm "leal (%edx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%10 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0), i32 %9)
%11 = tail call i32 asm "leal (%esi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%12 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0), i32 %11)
%13 = tail call i32 asm "leal (%edi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0), i32 %13)
%15 = tail call i32 asm "leal 0x40(%eax), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%16 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0), i32 %15)
%17 = tail call i32 asm "leal 0x40(%ebx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%18 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.9, i64 0, i64 0), i32 %17)
%19 = tail call i32 asm "leal 0x40(%ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%20 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0), i32 %19)
%21 = tail call i32 asm "leal 0x40(%edx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%22 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.11, i64 0, i64 0), i32 %21)
%23 = tail call i32 asm "leal 0x40(%esi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%24 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0), i32 %23)
%25 = tail call i32 asm "leal 0x40(%edi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%26 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.13, i64 0, i64 0), i32 %25)
%27 = tail call i32 asm "leal 0x4000(%eax), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%28 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.14, i64 0, i64 0), i32 %27)
%29 = tail call i32 asm "leal 0x4000(%ebx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%30 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0), i32 %29)
%31 = tail call i32 asm "leal 0x4000(%ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%32 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.16, i64 0, i64 0), i32 %31)
%33 = tail call i32 asm "leal 0x4000(%edx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%34 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.17, i64 0, i64 0), i32 %33)
%35 = tail call i32 asm "leal 0x4000(%esi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%36 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.18, i64 0, i64 0), i32 %35)
%37 = tail call i32 asm "leal 0x4000(%edi), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%38 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.19, i64 0, i64 0), i32 %37)
%39 = tail call i32 asm "leal (%eax, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%40 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.20, i64 0, i64 0), i32 %39)
%41 = tail call i32 asm "leal (%ebx, %edx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%42 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i32 %41)
%43 = tail call i32 asm "leal (%ecx, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%44 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.22, i64 0, i64 0), i32 %43)
%45 = tail call i32 asm "leal (%edx, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%46 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.23, i64 0, i64 0), i32 %45)
%47 = tail call i32 asm "leal (%esi, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%48 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.24, i64 0, i64 0), i32 %47)
%49 = tail call i32 asm "leal (%edi, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%50 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.25, i64 0, i64 0), i32 %49)
%51 = tail call i32 asm "leal 0x40(%eax, %ecx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%52 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.26, i64 0, i64 0), i32 %51)
%53 = tail call i32 asm "leal 0x4000(%ebx, %edx), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%54 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.27, i64 0, i64 0), i32 %53)
%55 = tail call i32 asm "leal (%ecx, %ecx, 2), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%56 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.28, i64 0, i64 0), i32 %55)
%57 = tail call i32 asm "leal (%edx, %ecx, 4), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%58 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.29, i64 0, i64 0), i32 %57)
%59 = tail call i32 asm "leal (%esi, %ecx, 8), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%60 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.30, i64 0, i64 0), i32 %59)
%61 = tail call i32 asm "leal (,%eax, 2), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%62 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.31, i64 0, i64 0), i32 %61)
%63 = tail call i32 asm "leal (,%ebx, 4), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%64 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.32, i64 0, i64 0), i32 %63)
%65 = tail call i32 asm "leal (,%ecx, 8), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%66 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.33, i64 0, i64 0), i32 %65)
%67 = tail call i32 asm "leal 0x40(,%eax, 2), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%68 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.34, i64 0, i64 0), i32 %67)
%69 = tail call i32 asm "leal 0x40(,%ebx, 4), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%70 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.35, i64 0, i64 0), i32 %69)
%71 = tail call i32 asm "leal 0x40(,%ecx, 8), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%72 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.36, i64 0, i64 0), i32 %71)
%73 = tail call i32 asm "leal -10(%ecx, %ecx, 2), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%74 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.37, i64 0, i64 0), i32 %73)
%75 = tail call i32 asm "leal -10(%edx, %ecx, 4), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%76 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.38, i64 0, i64 0), i32 %75)
%77 = tail call i32 asm "leal -10(%esi, %ecx, 8), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%78 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.39, i64 0, i64 0), i32 %77)
%79 = tail call i32 asm "leal 0x4000(%ecx, %ecx, 2), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%80 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.40, i64 0, i64 0), i32 %79)
%81 = tail call i32 asm "leal 0x4000(%edx, %ecx, 4), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%82 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.41, i64 0, i64 0), i32 %81)
%83 = tail call i32 asm "leal 0x4000(%esi, %ecx, 8), $0", "=r,{ax},{bx},{cx},{dx},{si},{di},~{dirflag},~{fpsr},~{flags}"(i32 1, i32 2, i32 4, i32 8, i32 16, i32 32)
%84 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.42, i64 0, i64 0), i32 %83)
ret void
}