void op_dec_addr(void) {
  asm("dec %rsi");
  asm("cmp %rsi, %rbx");
  asm("jle _exit2");
  asm("mov %rsi, %rdx");
  asm("sub %rbx, %rdx");
  asm("mov %rcx, %rdi");
  asm("sub %rbx, %rdi");
  asm("add $0x20, %rdi");
  asm("push %rsi");
  asm("push %rbx");
  asm("push %rcx");
  asm("push %rdi");
  asm("push %rdx");
  asm("mov %rdi, %rsi");
  asm("mov %rbx, %rdi");
  asm("call realloc");
  asm("pop %rdx");
  asm("pop %rdi");
  asm("pop %rcx");
  asm("pop %rbx");
  asm("pop %rsi");
  asm("cmp $0, %rax");
  asm("jne _continue_alloc2");
  asm("push $1");
  asm("call _abort");
  asm("_continue_alloc2:");
  asm("mov %rax, %rbx");
  asm("mov %rbx, %rsi");
  asm("add $0x20, %rsi");
  asm("add %rdx, %rsi");
  asm("push %rsi");
  asm("push %rbx");
  asm("push %rcx");
  asm("push %rdi");
  asm("push %rdx");
  asm("mov  %rdi, %rdx");
  asm("sub  $0x20, %rdx");
  asm("mov  %rsi, %rdi");
  asm("inc  %rdi");
  asm("mov  %rbx, %rsi");
  asm("call memmove");
  asm("pop %rdx");
  asm("pop %rdi");
  asm("pop %rcx");
  asm("pop %rbx");
  asm("pop %rsi");
  asm("mov %rbx, %rcx");
  asm("add %rdi, %rcx");
  asm("mov %rbx, %rax");
  asm("_zero_memset2:");
  asm("movb $0, (%rax)");
  asm("cmp %rsi, %rax");
  asm("je  _exit2");
  asm("inc %rax");
  asm("jmp _zero_memset2");
  asm("_exit2:");
}


x86 assembly (clang, -O0):
<op_dec_addr>:
push   %rbp
mov    %rsp,%rbp
dec    %rsi
cmp    %rsi,%rbx
jle    11bf <_exit2>
mov    %rsi,%rdx
sub    %rbx,%rdx
mov    %rcx,%rdi
sub    %rbx,%rdi
add    $0x20,%rdi
push   %rsi
push   %rbx
push   %rcx
push   %rdi
push   %rdx
mov    %rdi,%rsi
mov    %rbx,%rdi
call   1030 <realloc@plt>
pop    %rdx
pop    %rdi
pop    %rcx
pop    %rbx
pop    %rsi
cmp    $0x0,%rax
jne    1176 <_continue_alloc2>
push   $0x1
call   1050 <_abort@plt>

x86 assembly (clang, -O2):
<op_dec_addr>:
dec    %rsi
cmp    %rsi,%rbx
jle    11ac <_exit2>
mov    %rsi,%rdx
sub    %rbx,%rdx
mov    %rcx,%rdi
sub    %rbx,%rdi
add    $0x20,%rdi
push   %rsi
push   %rbx
push   %rcx
push   %rdi
push   %rdx
mov    %rdi,%rsi
mov    %rbx,%rdi
call   1030 <realloc@plt>
pop    %rdx
pop    %rdi
pop    %rcx
pop    %rbx
pop    %rsi
cmp    $0x0,%rax
jne    116a <_continue_alloc2>
push   $0x1
call   1050 <_abort@plt>

LLVM IR (-O0):
define void @op_dec_addr() {
ret void
}

LLVM IR (-O2):
define void @op_dec_addr() {
tail call void asm sideeffect "dec %rsi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "cmp %rsi, %rbx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "jle _exit2", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rsi, %rdx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "sub %rbx, %rdx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rcx, %rdi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "sub %rbx, %rdi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "add $$0x20, %rdi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push %rsi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push %rbx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push %rcx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push %rdi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push %rdx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rdi, %rsi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rbx, %rdi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "call realloc", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "pop %rdx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "pop %rdi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "pop %rcx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "pop %rbx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "pop %rsi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "cmp $$0, %rax", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "jne _continue_alloc2", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push $$1", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "call _abort", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "_continue_alloc2:", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rax, %rbx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rbx, %rsi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "add $$0x20, %rsi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "add %rdx, %rsi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push %rsi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push %rbx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push %rcx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push %rdi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "push %rdx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rdi, %rdx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "sub $$0x20, %rdx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rsi, %rdi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "inc %rdi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rbx, %rsi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "call memmove", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "pop %rdx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "pop %rdi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "pop %rcx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "pop %rbx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "pop %rsi", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rbx, %rcx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "add %rdi, %rcx", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "mov %rbx, %rax", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "_zero_memset2:", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "movb $$0, (%rax)", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "cmp %rsi, %rax", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "je _exit2", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "inc %rax", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "jmp _zero_memset2", "~{dirflag},~{fpsr},~{flags}"()
tail call void asm sideeffect "_exit2:", "~{dirflag},~{fpsr},~{flags}"()
ret void
}