## Check that llvm-bolt is able to read a file with DWARF Exception CFI
## information and fix CFI information after reordering.
# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o
# RUN: llvm-strip --strip-unneeded %t.o
# RUN: %clangxx %cflags %t.o -o %t.exe
# RUN: llvm-bolt %t.exe -o %t --reorder-blocks=cache --print-after-lowering \
# RUN: --print-only=_Z10SolveCubicddddPiPd 2>&1 | FileCheck %s
#
# Entry BB
# CHECK: divsd %xmm0, %xmm1
# CHECK: pushq %rbx
# CHECK: !CFI $0 ; OpDefCfaOffset
# CHECK: !CFI $1 ; OpOffset
# CHECK: movq %rsi, %rbx
# CHECK: subq $0x70, %rsp
# CHECK: !CFI $2 ; OpDefCfaOffset
# CHECK: divsd %xmm0, %xmm2
# Duplicated tail
# CHECK: addq $0x70, %rsp
# CHECK: !CFI $3 ; OpDefCfaOffset
# CHECK: popq %rbx
# CHECK: !CFI $4 ; OpDefCfaOffset
# CHECK: retq
# CHECK: !CFI {{.*}} ; OpDefCfa
# Epilogue rescheduled to the middle of the function
# CHECK: addq $0x70, %rsp
# CHECK: !CFI $6 ; OpDefCfaOffset
# CHECK: popq %rbx
# CHECK: !CFI $7 ; OpDefCfaOffset
# CHECK: retq
# CHECK: !CFI {{.*}} ; OpDefCfa
.text
.globl main
.type main, %function
main:
# FDATA: 0 [unknown] 0 1 main 0 0 0
.cfi_startproc
LBB00:
pushq %r15
.cfi_def_cfa_offset 16
.cfi_offset %r15, -16
movl $0x401520, %edi
pushq %r14
.cfi_def_cfa_offset 24
.cfi_offset %r14, -24
pushq %r13
.cfi_def_cfa_offset 32
.cfi_offset %r13, -32
pushq %r12
.cfi_def_cfa_offset 40
.cfi_offset %r12, -40
xorl %r12d, %r12d
pushq %rbp
.cfi_def_cfa_offset 48
.cfi_offset %rbp, -48
pushq %rbx
.cfi_def_cfa_offset 56
.cfi_offset %rbx, -56
subq $0x98, %rsp
.cfi_def_cfa_offset 208
leaq 0x60(%rsp), %rbx
leaq 0x8c(%rsp), %rbp
callq puts@PLT
movsd DATAat0x401640(%rip), %xmm3
movq %rbx, %rsi
movsd DATAat0x401648(%rip), %xmm2
movq %rbp, %rdi
movsd DATAat0x401650(%rip), %xmm1
movq %rbx, %r13
movsd DATAat0x401658(%rip), %xmm0
callq _Z10SolveCubicddddPiPd
movl $0x4015d8, %edi
xorl %eax, %eax
callq printf@PLT
LBB00_br: jmp Ltmp0
# FDATA: 1 main #LBB00_br# 1 main #Ltmp0# 0 0
Ltmp1:
movsd (%r13), %xmm0
movl $0x4015e3, %edi
movl $0x1, %eax
addl $0x1, %r12d
addq $0x8, %r13
Ltmp1_br: callq printf@PLT
# FDATA: 1 main #Ltmp1_br# 1 main #Ltmp0# 0 0
Ltmp0:
cmpl 0x8c(%rsp), %r12d
Ltmp0_br: jl Ltmp1
# FDATA: 1 main #Ltmp0_br# 1 main #Ltmp1# 0 0
# FDATA: 1 main #Ltmp0_br# 1 main #LFT2# 0 0
LFT2:
movl $0xa, %edi
movq %rbx, %r13
xorl %r12d, %r12d
callq putchar@PLT
movsd DATAat0x401640(%rip), %xmm3
movq %rbx, %rsi
movsd DATAat0x401660(%rip), %xmm2
movq %rbp, %rdi
movsd DATAat0x401668(%rip), %xmm1
movsd DATAat0x401658(%rip), %xmm0
callq _Z10SolveCubicddddPiPd
movl $0x4015d8, %edi
xorl %eax, %eax
callq printf@PLT
LFT2_br: jmp Ltmp2
# FDATA: 1 main #LFT2_br# 1 main #Ltmp2# 0 0
Ltmp3:
movsd (%r13), %xmm0
movl $0x4015e3, %edi
movl $0x1, %eax
addl $0x1, %r12d
addq $0x8, %r13
Ltmp3_br: callq printf@PLT
# FDATA: 1 main #Ltmp3_br# 1 main #Ltmp2# 0 0
Ltmp2:
cmpl 0x8c(%rsp), %r12d
Ltmp2_br: jl Ltmp3
# FDATA: 1 main #Ltmp2_br# 1 main #Ltmp3# 0 0
# FDATA: 1 main #Ltmp2_br# 1 main #LFT4# 0 0
LFT4:
movl $0xa, %edi
callq putchar@PLT
movsd DATAat0x401670(%rip), %xmm3
movq %rbx, %rsi
movsd DATAat0x401678(%rip), %xmm2
movq %rbp, %rdi
movsd DATAat0x401680(%rip), %xmm1
movsd DATAat0x401658(%rip), %xmm0
callq _Z10SolveCubicddddPiPd
movl $0x4015d8, %edi
xorl %eax, %eax
callq printf@PLT
movq %rbx, %r12
xorl %r13d, %r13d
LFT4_br: jmp Ltmp4
# FDATA: 1 main #LFT4_br# 1 main #Ltmp4# 0 0
Ltmp5:
movsd (%r12), %xmm0
movl $0x4015e3, %edi
movl $0x1, %eax
callq printf@PLT
addl $0x1, %r13d
Ltmp5_br: addq $0x8, %r12
# FDATA: 1 main #Ltmp5_br# 1 main #Ltmp4# 0 0
Ltmp4:
cmpl 0x8c(%rsp), %r13d
Ltmp4_br: jl Ltmp5
# FDATA: 1 main #Ltmp4_br# 1 main #Ltmp5# 0 0
# FDATA: 1 main #Ltmp4_br# 1 main #LFT6# 0 0
LFT6:
movl $0xa, %edi
LFT6_br: callq putchar@PLT
# FDATA: 1 main #LFT6_br# 1 main #Ltmp27# 0 0
Ltmp27:
movsd DATAat0x401658(%rip), %xmm2
movq %rbx, %rsi
movsd DATAat0x401688(%rip), %xmm3
movq %rbp, %rdi
movsd DATAat0x401690(%rip), %xmm1
movq %rbx, %r13
movapd %xmm2, %xmm0
xorl %r12d, %r12d
callq _Z10SolveCubicddddPiPd
movl $0x4015d8, %edi
xorl %eax, %eax
callq printf@PLT
Ltmp27_br: jmp Ltmp6
# FDATA: 1 main #Ltmp27_br# 1 main #Ltmp6# 0 0
Ltmp7:
movsd (%r13), %xmm0
movl $0x4015e3, %edi
movl $0x1, %eax
addl $0x1, %r12d
addq $0x8, %r13
Ltmp7_br: callq printf@PLT
# FDATA: 1 main #Ltmp7_br# 1 main #Ltmp6# 0 0
Ltmp6:
cmpl 0x8c(%rsp), %r12d
Ltmp6_br: jl Ltmp7
# FDATA: 1 main #Ltmp6_br# 1 main #Ltmp7# 0 0
# FDATA: 1 main #Ltmp6_br# 1 main #LFT9# 0 0
LFT9:
movl $0xa, %edi
movq %rbx, %r13
xorl %r12d, %r12d
callq putchar@PLT
movsd DATAat0x401698(%rip), %xmm3
movq %rbx, %rsi
movsd DATAat0x4016a0(%rip), %xmm2
movq %rbp, %rdi
movsd DATAat0x4016a8(%rip), %xmm1
movsd DATAat0x4016b0(%rip), %xmm0
callq _Z10SolveCubicddddPiPd
movl $0x4015d8, %edi
xorl %eax, %eax
callq printf@PLT
LFT9_br: jmp Ltmp8
# FDATA: 1 main #LFT9_br# 1 main #Ltmp8# 0 0
Ltmp9:
movsd (%r13), %xmm0
movl $0x4015e3, %edi
movl $0x1, %eax
addl $0x1, %r12d
addq $0x8, %r13
Ltmp9_br: callq printf@PLT
# FDATA: 1 main #Ltmp9_br# 1 main #Ltmp8# 0 0
Ltmp8:
cmpl 0x8c(%rsp), %r12d
Ltmp8_br: jl Ltmp9
# FDATA: 1 main #Ltmp8_br# 1 main #Ltmp9# 0 0
# FDATA: 1 main #Ltmp8_br# 1 main #LFT11# 0 0
LFT11:
movl $0xa, %edi
movq %rbx, %r13
xorl %r12d, %r12d
callq putchar@PLT
movsd DATAat0x4016b8(%rip), %xmm3
movq %rbx, %rsi
movsd DATAat0x4016c0(%rip), %xmm2
movq %rbp, %rdi
movsd DATAat0x4016c8(%rip), %xmm1
movsd DATAat0x4016d0(%rip), %xmm0
callq _Z10SolveCubicddddPiPd
movl $0x4015d8, %edi
xorl %eax, %eax
callq printf@PLT
LFT11_br: jmp Ltmp10
# FDATA: 1 main #LFT11_br# 1 main #Ltmp10# 0 0
Ltmp11:
movsd (%r13), %xmm0
movl $0x4015e3, %edi
movl $0x1, %eax
addl $0x1, %r12d
addq $0x8, %r13
Ltmp11_br: callq printf@PLT
# FDATA: 1 main #Ltmp11_br# 1 main #Ltmp10# 0 0
Ltmp10:
cmpl 0x8c(%rsp), %r12d
Ltmp10_br: jl Ltmp11
# FDATA: 1 main #Ltmp10_br# 1 main #Ltmp11# 0 0
# FDATA: 1 main #Ltmp10_br# 1 main #LFT13# 0 0
LFT13:
movl $0xa, %edi
callq putchar@PLT
movsd DATAat0x4016d8(%rip), %xmm3
movq %rbx, %rsi
movsd DATAat0x4016e0(%rip), %xmm2
movq %rbp, %rdi
movsd DATAat0x4016e8(%rip), %xmm1
movsd DATAat0x4016f0(%rip), %xmm0
callq _Z10SolveCubicddddPiPd
movl $0x4015d8, %edi
xorl %eax, %eax
callq printf@PLT
movq %rbx, %r12
xorl %r13d, %r13d
LFT13_br: jmp Ltmp12
# FDATA: 1 main #LFT13_br# 1 main #Ltmp12# 0 0
Ltmp13:
movsd (%r12), %xmm0
movl $0x4015e3, %edi
movl $0x1, %eax
callq printf@PLT
addl $0x1, %r13d
Ltmp13_br: addq $0x8, %r12
# FDATA: 1 main #Ltmp13_br# 1 main #Ltmp12# 0 0
Ltmp12:
cmpl 0x8c(%rsp), %r13d
Ltmp12_br: jl Ltmp13
# FDATA: 1 main #Ltmp12_br# 1 main #Ltmp13# 0 0
# FDATA: 1 main #Ltmp12_br# 1 main #LFT15# 0 0
LFT15:
movl $0xa, %edi
LFT15_br: callq putchar@PLT
# FDATA: 1 main #LFT15_br# 1 main #Ltmp29# 0 0
Ltmp29:
movsd DATAat0x4016f8(%rip), %xmm3
movq %rbx, %rsi
movsd DATAat0x401700(%rip), %xmm2
movq %rbp, %rdi
movsd DATAat0x401708(%rip), %xmm1
movq %rbx, %r13
movsd DATAat0x401710(%rip), %xmm0
xorl %r12d, %r12d
callq _Z10SolveCubicddddPiPd
movl $0x4015d8, %edi
xorl %eax, %eax
callq printf@PLT
Ltmp29_br: jmp Ltmp14
# FDATA: 1 main #Ltmp29_br# 1 main #Ltmp14# 0 0
Ltmp15:
movsd (%r13), %xmm0
movl $0x4015e3, %edi
movl $0x1, %eax
addl $0x1, %r12d
addq $0x8, %r13
Ltmp15_br: callq printf@PLT
# FDATA: 1 main #Ltmp15_br# 1 main #Ltmp14# 0 0
Ltmp14:
cmpl 0x8c(%rsp), %r12d
Ltmp14_br: jl Ltmp15
# FDATA: 1 main #Ltmp14_br# 1 main #Ltmp15# 0 0
# FDATA: 1 main #Ltmp14_br# 1 main #LFT16# 0 0
LFT16:
movl $0xa, %edi
movabsq $-0x4010000000000000, %r14
callq putchar@PLT
movabsq $0x3ff0000000000000, %rsi
movl $0x0, 0x5c(%rsp)
LFT16_br: movq %rsi, 0x50(%rsp)
# FDATA: 1 main #LFT16_br# 1 main #Ltmp21# 0 0
Ltmp21:
movabsq $0x4024000000000000, %rax
xorl %r15d, %r15d
Ltmp21_br: movq %rax, 0x48(%rsp)
# FDATA: 1 main #Ltmp21_br# 1 main #Ltmp20# 0 0
Ltmp20:
movabsq $0x4014000000000000, %rdx
xorl %r13d, %r13d
Ltmp20_br: movq %rdx, 0x40(%rsp)
# FDATA: 1 main #Ltmp20_br# 1 main #Ltmp19# 0 0
Ltmp19:
xorl %r12d, %r12d
Ltmp19_br: movq %r14, 0x38(%rsp)
# FDATA: 1 main #Ltmp19_br# 1 main #Ltmp18# 0 0
Ltmp18:
movsd 0x38(%rsp), %xmm3
movq %rbx, %rsi
movsd 0x40(%rsp), %xmm2
movq %rbp, %rdi
movsd 0x48(%rsp), %xmm1
movsd 0x50(%rsp), %xmm0
callq _Z10SolveCubicddddPiPd
xorl %eax, %eax
movl $0x4015d8, %edi
callq printf@PLT
movl 0x8c(%rsp), %ecx
testl %ecx, %ecx
Ltmp18_br: jle Ltmp16
# FDATA: 1 main #Ltmp18_br# 1 main #Ltmp16# 0 0
# FDATA: 1 main #Ltmp18_br# 1 main #LFT17# 0 0
LFT17:
movq %rbx, %rcx
LFT17_br: xorl %edx, %edx
# FDATA: 1 main #LFT17_br# 1 main #Ltmp17# 0 0
Ltmp17:
movsd (%rcx), %xmm0
movl $0x4015e3, %edi
movl $0x1, %eax
movl %edx, 0x20(%rsp)
movq %rcx, 0x30(%rsp)
callq printf@PLT
movl 0x20(%rsp), %edx
movq 0x30(%rsp), %rcx
addl $0x1, %edx
addq $0x8, %rcx
cmpl %edx, 0x8c(%rsp)
Ltmp17_br: jg Ltmp17
# FDATA: 1 main #Ltmp17_br# 1 main #Ltmp17# 0 0
# FDATA: 1 main #Ltmp17_br# 1 main #Ltmp16# 0 0
Ltmp16:
movl $0xa, %edi
addl $0x1, %r12d
callq putchar@PLT
movsd 0x38(%rsp), %xmm0
cmpl $0x9, %r12d
subsd DATAat0x401718(%rip), %xmm0
movsd %xmm0, 0x38(%rsp)
Ltmp16_br: jne Ltmp18
# FDATA: 1 main #Ltmp16_br# 1 main #Ltmp18# 0 0
# FDATA: 1 main #Ltmp16_br# 1 main #LFT18# 0 0
LFT18:
movsd DATAat0x401720(%rip), %xmm0
addl $0x1, %r13d
cmpl $0x11, %r13d
addsd 0x40(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
LFT18_br: jne Ltmp19
# FDATA: 1 main #LFT18_br# 1 main #Ltmp19# 0 0
# FDATA: 1 main #LFT18_br# 1 main #LFT19# 0 0
LFT19:
movsd 0x48(%rsp), %xmm0
addl $0x1, %r15d
cmpl $0x28, %r15d
subsd DATAat0x401728(%rip), %xmm0
movsd %xmm0, 0x48(%rsp)
LFT19_br: jne Ltmp20
# FDATA: 1 main #LFT19_br# 1 main #Ltmp20# 0 0
# FDATA: 1 main #LFT19_br# 1 main #LFT20# 0 0
LFT20:
movsd DATAat0x401658(%rip), %xmm0
addl $0x1, 0x5c(%rsp)
cmpl $0x9, 0x5c(%rsp)
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
LFT20_br: jne Ltmp21
# FDATA: 1 main #LFT20_br# 1 main #Ltmp21# 0 0
# FDATA: 1 main #LFT20_br# 1 main #LFT21# 0 0
LFT21:
leaq 0x80(%rsp), %r12
movl $0x401548, %edi
movl $0xc350, %ebp
xorl %ebx, %ebx
LFT21_br: callq puts@PLT
# FDATA: 1 main #LFT21_br# 1 main #Ltmp22# 0 0
Ltmp22:
movslq %ebx, %rdi
movq %r12, %rsi
callq _Z5usqrtmP8int_sqrt
movl 0x80(%rsp), %edx
movl %ebx, %esi
xorl %eax, %eax
movl $0x4015f2, %edi
addl $0x2, %ebx
callq printf@PLT
subl $0x1, %ebp
Ltmp22_br: jne Ltmp22
# FDATA: 1 main #Ltmp22_br# 1 main #Ltmp22# 0 0
# FDATA: 1 main #Ltmp22_br# 1 main #LFT22# 0 0
LFT22:
movl $0xa, %edi
movl $0x3fed0169, %ebx
LFT22_br: callq putchar@PLT
# FDATA: 1 main #LFT22_br# 1 main #Ltmp23# 0 0
Ltmp23:
movq %rbx, %rdi
movq %r12, %rsi
callq _Z5usqrtmP8int_sqrt
movl 0x80(%rsp), %edx
movq %rbx, %rsi
xorl %eax, %eax
movl $0x401603, %edi
addq $0x1, %rbx
callq printf@PLT
cmpq $0x3fed4169, %rbx
Ltmp23_br: jne Ltmp23
# FDATA: 1 main #Ltmp23_br# 1 main #Ltmp23# 0 0
# FDATA: 1 main #Ltmp23_br# 1 main #LFT23# 0 0
LFT23:
movl $0x401570, %edi
xorl %ebx, %ebx
callq puts@PLT
movq %rbx, 0x8(%rsp)
movsd DATAat0x401748(%rip), %xmm3
LFT23_br: movsd 0x8(%rsp), %xmm2
# FDATA: 1 main #LFT23_br# 1 main #Ltmp24# 0 0
Ltmp24:
movsd DATAat0x401730(%rip), %xmm1
movl $0x401598, %edi
movapd %xmm2, %xmm0
movl $0x2, %eax
mulsd %xmm2, %xmm1
movsd %xmm2, 0x20(%rsp)
movsd %xmm3, 0x10(%rsp)
divsd DATAat0x401738(%rip), %xmm1
callq printf@PLT
movsd 0x20(%rsp), %xmm2
movsd 0x10(%rsp), %xmm3
addsd DATAat0x401740(%rip), %xmm2
ucomisd %xmm2, %xmm3
Ltmp24_br: jae Ltmp24
# FDATA: 1 main #Ltmp24_br# 1 main #Ltmp24# 0 0
# FDATA: 1 main #Ltmp24_br# 1 main #LFT24# 0 0
LFT24:
movl $0x401612, %edi
callq puts@PLT
movq %rbx, 0x8(%rsp)
movsd DATAat0x401758(%rip), %xmm3
LFT24_br: movsd 0x8(%rsp), %xmm2
# FDATA: 1 main #LFT24_br# 1 main #Ltmp25# 0 0
Ltmp25:
movsd DATAat0x401738(%rip), %xmm1
movl $0x4015b8, %edi
movapd %xmm2, %xmm0
movl $0x2, %eax
mulsd %xmm2, %xmm1
movsd %xmm2, 0x20(%rsp)
movsd %xmm3, 0x10(%rsp)
divsd DATAat0x401730(%rip), %xmm1
callq printf@PLT
movsd 0x20(%rsp), %xmm2
movsd 0x10(%rsp), %xmm3
addsd DATAat0x401750(%rip), %xmm2
ucomisd %xmm2, %xmm3
Ltmp25_br: jae Ltmp25
# FDATA: 1 main #Ltmp25_br# 1 main #Ltmp25# 0 0
# FDATA: 1 main #Ltmp25_br# 1 main #LFT25# 0 0
LFT25:
addq $0x98, %rsp
.cfi_def_cfa_offset 56
xorl %eax, %eax
popq %rbx
.cfi_def_cfa_offset 48
popq %rbp
.cfi_def_cfa_offset 40
popq %r12
.cfi_def_cfa_offset 32
popq %r13
.cfi_def_cfa_offset 24
popq %r14
.cfi_def_cfa_offset 16
popq %r15
.cfi_def_cfa_offset 8
retq
.cfi_def_cfa %rsp, 208
LLP0:
cmpq $0x1, %rdx
movq %rax, %rdi
LLP0_br: je Ltmp26
# FDATA: 1 main #LLP0_br# 1 main #Ltmp26# 0 0
# FDATA: 1 main #LLP0_br# 1 main #Ltmp28# 0 0
Ltmp28:
Ltmp28_br: callq _Unwind_Resume@PLT
# FDATA: 1 main #Ltmp28_br# 1 main #Ltmp26# 0 0
Ltmp26:
callq __cxa_begin_catch@PLT
movl $0x4015e7, %edi
callq puts@PLT
callq __cxa_end_catch@PLT
Ltmp26_br: jmp Ltmp27
# FDATA: 1 main #Ltmp26_br# 1 main #Ltmp27# 0 0
Ltmp30:
movq %rax, 0x30(%rsp)
callq __cxa_end_catch@PLT
movq 0x30(%rsp), %rdi
Ltmp30_br: jmp Ltmp28
# FDATA: 1 main #Ltmp30_br# 1 main #Ltmp28# 0 0
LLP1:
cmpq $0x1, %rdx
movq %rax, %rdi
LLP1_br: jne Ltmp28
# FDATA: 1 main #LLP1_br# 1 main #Ltmp28# 0 0
# FDATA: 1 main #LLP1_br# 1 main #LFT26# 0 0
LFT26:
callq __cxa_begin_catch@PLT
movl $0x4015e7, %edi
callq puts@PLT
callq __cxa_end_catch@PLT
LFT26_br: jmp Ltmp29
# FDATA: 1 main #LFT26_br# 1 main #Ltmp29# 0 0
LLP2:
LLP2_br: jmp Ltmp30
# FDATA: 1 main #LLP2_br# 1 main #Ltmp30# 0 0
.cfi_endproc
.size main, .-main
.section .rodata
"DATAat0x401738":
"DATAat0x401748":
"DATAat0x401728":
"DATAat0x401718":
"DATAat0x4016f8":
"DATAat0x401690":
"DATAat0x401668":
"DATAat0x401650":
"DATAat0x401700":
"DATAat0x401698":
"DATAat0x401688":
"DATAat0x401648":
"DATAat0x401680":
"DATAat0x4016c8":
"DATAat0x401750":
"DATAat0x401678":
"DATAat0x4016c0":
"DATAat0x401758":
"DATAat0x401660":
"DATAat0x4016b0":
"DATAat0x401640":
"DATAat0x401658":
"DATAat0x401720":
"DATAat0x4016f0":
"DATAat0x401710":
"DATAat0x4016a8":
"DATAat0x401730":
"DATAat0x4016b8":
"DATAat0x401708":
"DATAat0x401670":
"DATAat0x4016a0":
"DATAat0x4016d0":
"DATAat0x4016d8":
"DATAat0x4016e0":
"DATAat0x401740":
"DATAat0x4016e8":
.text
.globl _Z10SolveCubicddddPiPd
.type _Z10SolveCubicddddPiPd, %function
_Z10SolveCubicddddPiPd:
# FDATA: 0 [unknown] 0 1 _Z10SolveCubicddddPiPd 0 0 57
.cfi_startproc
LBB01:
divsd %xmm0, %xmm1
pushq %rbx
.cfi_def_cfa_offset 16
.cfi_offset %rbx, -16
movq %rsi, %rbx
subq $0x70, %rsp
.cfi_def_cfa_offset 128
divsd %xmm0, %xmm2
movsd %xmm1, 0x48(%rsp)
fldl 0x48(%rsp)
divsd %xmm0, %xmm3
movsd %xmm2, 0x48(%rsp)
fldl 0x48(%rsp)
fld %st(1)
fmul %st(2), %st
movsd %xmm3, 0x48(%rsp)
fld %st(1)
fmuls DATAat0x401760(%rip)
faddp %st, %st(1)
fdivs DATAat0x401764(%rip)
fld %st(2)
fadd %st(3), %st
fmul %st(3), %st
fmul %st(3), %st
fld %st(3)
fmuls DATAat0x401768(%rip)
fmulp %st, %st(3)
faddp %st, %st(2)
flds DATAat0x40176c(%rip)
fmull 0x48(%rsp)
faddp %st, %st(2)
fxch %st(1)
fdivs DATAat0x401770(%rip)
fld %st(1)
fmul %st(2), %st
fmul %st(2), %st
fld %st(1)
fmul %st(2), %st
fsub %st(1), %st
fstpl 0x68(%rsp)
movsd 0x68(%rsp), %xmm0
ucomisd DATAat0x401778(%rip), %xmm0
LBB01_br: jbe Ltmp31
# FDATA: 1 _Z10SolveCubicddddPiPd #LBB01_br# 1 _Z10SolveCubicddddPiPd #Ltmp31# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #LBB01_br# 1 _Z10SolveCubicddddPiPd #LFT1# 0 0
LFT1:
fstp %st(0)
LFT1_br: jmp Ltmp32
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT1_br# 1 _Z10SolveCubicddddPiPd #Ltmp32# 0 0
Ltmp37:
Ltmp37_br: fstp %st(0)
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp37_br# 1 _Z10SolveCubicddddPiPd #Ltmp32# 0 0
Ltmp32:
sqrtsd %xmm0, %xmm1
movl $0x1, (%rdi)
ucomisd %xmm1, %xmm1
Ltmp32_br: jp Ltmp33
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp32_br# 1 _Z10SolveCubicddddPiPd #Ltmp33# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp32_br# 1 _Z10SolveCubicddddPiPd #LFT3# 0 0
LFT3:
LFT3_br: jne Ltmp33
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT3_br# 1 _Z10SolveCubicddddPiPd #Ltmp33# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT3_br# 1 _Z10SolveCubicddddPiPd #Ltmp36# 0 0
Ltmp36:
fstl 0x68(%rsp)
movsd DATAat0x4017b0(%rip), %xmm2
fstpt 0x30(%rsp)
fxch %st(1)
movsd 0x68(%rsp), %xmm0
fstpt 0x10(%rsp)
andpd %xmm2, %xmm0
fstpt 0x20(%rsp)
addsd %xmm1, %xmm0
movsd DATAat0x401798(%rip), %xmm1
callq pow@PLT
movsd %xmm0, 0x8(%rsp)
fldl 0x8(%rsp)
fldz
fldt 0x30(%rsp)
fxch %st(1)
fucompi %st(1), %st
fstp %st(0)
fldt 0x10(%rsp)
fldt 0x20(%rsp)
Ltmp36_br: ja Ltmp34
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp36_br# 1 _Z10SolveCubicddddPiPd #Ltmp34# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp36_br# 1 _Z10SolveCubicddddPiPd #LFT5# 0 0
LFT5:
LFT5_br: movsd DATAat0x4017a0(%rip), %xmm1
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT5_br# 1 _Z10SolveCubicddddPiPd #Ltmp35# 0 0
Ltmp35:
fdiv %st(2), %st
faddp %st, %st(2)
fxch %st(1)
fstpl 0x68(%rsp)
fdivs DATAat0x401760(%rip)
movsd 0x68(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rsp)
fldl 0x8(%rsp)
faddp %st, %st(1)
fstpl (%rbx)
addq $0x70, %rsp
.cfi_def_cfa_offset 16
popq %rbx
.cfi_def_cfa_offset 8
retq
.cfi_def_cfa %rsp, 128
Ltmp34:
movsd DATAat0x401658(%rip), %xmm1
Ltmp34_br: jmp Ltmp35
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp34_br# 1 _Z10SolveCubicddddPiPd #Ltmp35# 0 0
Ltmp33:
fstpt 0x30(%rsp)
fxch %st(1)
fstpt 0x10(%rsp)
fstpt 0x20(%rsp)
callq sqrt@PLT
movapd %xmm0, %xmm1
fldt 0x20(%rsp)
fldt 0x10(%rsp)
fldt 0x30(%rsp)
fxch %st(1)
fxch %st(2)
fxch %st(1)
Ltmp33_br: jmp Ltmp36
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp33_br# 1 _Z10SolveCubicddddPiPd #Ltmp36# 0 0
Ltmp31:
Ltmp31_br: jp Ltmp37
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp31_br# 1 _Z10SolveCubicddddPiPd #Ltmp37# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp31_br# 1 _Z10SolveCubicddddPiPd #LFT7# 0 0
LFT7:
fstpl 0x68(%rsp)
movl $0x3, (%rdi)
movsd 0x68(%rsp), %xmm1
sqrtsd %xmm1, %xmm0
ucomisd %xmm0, %xmm0
LFT7_br: jp Ltmp38
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT7_br# 1 _Z10SolveCubicddddPiPd #Ltmp38# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT7_br# 1 _Z10SolveCubicddddPiPd #LFT8# 0 0
LFT8:
LFT8_br: jne Ltmp38
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT8_br# 1 _Z10SolveCubicddddPiPd #Ltmp38# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT8_br# 1 _Z10SolveCubicddddPiPd #Ltmp47# 0 0
Ltmp47:
movsd %xmm0, 0x8(%rsp)
fldl 0x8(%rsp)
fdivrp %st, %st(1)
fstpl 0x68(%rsp)
fxch %st(1)
fstpt 0x10(%rsp)
movsd 0x68(%rsp), %xmm0
fstpt 0x20(%rsp)
callq acos@PLT
movsd %xmm0, 0x48(%rsp)
fldt 0x20(%rsp)
fstpl 0x60(%rsp)
sqrtsd 0x60(%rsp), %xmm1
movapd %xmm1, %xmm2
ucomisd %xmm1, %xmm1
fldt 0x10(%rsp)
Ltmp47_br: jp Ltmp39
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp47_br# 1 _Z10SolveCubicddddPiPd #Ltmp39# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp47_br# 1 _Z10SolveCubicddddPiPd #LFT10# 0 0
LFT10:
LFT10_br: jne Ltmp40
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT10_br# 1 _Z10SolveCubicddddPiPd #Ltmp40# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT10_br# 1 _Z10SolveCubicddddPiPd #Ltmp46# 0 0
Ltmp46:
divsd DATAat0x4016b0(%rip), %xmm0
movsd %xmm1, 0x20(%rsp)
movsd %xmm2, 0x30(%rsp)
fstpt 0x10(%rsp)
callq cos@PLT
movsd 0x30(%rsp), %xmm2
movsd 0x20(%rsp), %xmm1
fldt 0x10(%rsp)
ucomisd %xmm1, %xmm1
mulsd DATAat0x401780(%rip), %xmm2
fdivs DATAat0x401760(%rip)
mulsd %xmm0, %xmm2
movsd %xmm2, 0x8(%rsp)
movapd %xmm1, %xmm2
fld %st(0)
fstpt 0x50(%rsp)
fldl 0x8(%rsp)
faddp %st, %st(1)
fstpl (%rbx)
Ltmp46_br: jp Ltmp41
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp46_br# 1 _Z10SolveCubicddddPiPd #Ltmp41# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp46_br# 1 _Z10SolveCubicddddPiPd #LFT12# 0 0
LFT12:
LFT12_br: jne Ltmp41
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT12_br# 1 _Z10SolveCubicddddPiPd #Ltmp41# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT12_br# 1 _Z10SolveCubicddddPiPd #Ltmp44# 0 0
Ltmp44:
movsd 0x48(%rsp), %xmm0
movsd %xmm1, 0x20(%rsp)
addsd DATAat0x401788(%rip), %xmm0
movsd %xmm2, 0x30(%rsp)
divsd DATAat0x4016b0(%rip), %xmm0
callq cos@PLT
movsd 0x30(%rsp), %xmm2
fldt 0x50(%rsp)
mulsd DATAat0x401780(%rip), %xmm2
movsd 0x20(%rsp), %xmm1
ucomisd %xmm1, %xmm1
mulsd %xmm0, %xmm2
movsd %xmm2, 0x8(%rsp)
fldl 0x8(%rsp)
faddp %st, %st(1)
fstpl 0x8(%rbx)
Ltmp44_br: jp Ltmp42
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp44_br# 1 _Z10SolveCubicddddPiPd #Ltmp42# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp44_br# 1 _Z10SolveCubicddddPiPd #LFT14# 0 0
LFT14:
LFT14_br: jne Ltmp42
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT14_br# 1 _Z10SolveCubicddddPiPd #Ltmp42# 0 0
# FDATA: 1 _Z10SolveCubicddddPiPd #LFT14_br# 1 _Z10SolveCubicddddPiPd #Ltmp43# 0 0
Ltmp43:
movsd 0x48(%rsp), %xmm0
movsd %xmm1, 0x20(%rsp)
addsd DATAat0x401790(%rip), %xmm0
divsd DATAat0x4016b0(%rip), %xmm0
callq cos@PLT
fldt 0x50(%rsp)
movsd DATAat0x401780(%rip), %xmm2
movsd 0x20(%rsp), %xmm1
mulsd %xmm1, %xmm2
mulsd %xmm0, %xmm2
movsd %xmm2, 0x8(%rsp)
fldl 0x8(%rsp)
faddp %st, %st(1)
fstpl 0x10(%rbx)
addq $0x70, %rsp
.cfi_def_cfa_offset 16
popq %rbx
.cfi_def_cfa_offset 8
retq
.cfi_def_cfa %rsp, 128
Ltmp42:
movsd 0x60(%rsp), %xmm0
callq sqrt@PLT
movapd %xmm0, %xmm1
Ltmp42_br: jmp Ltmp43
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp42_br# 1 _Z10SolveCubicddddPiPd #Ltmp43# 0 0
Ltmp41:
movsd 0x60(%rsp), %xmm0
callq sqrt@PLT
movsd 0x20(%rsp), %xmm1
movapd %xmm0, %xmm2
Ltmp41_br: jmp Ltmp44
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp41_br# 1 _Z10SolveCubicddddPiPd #Ltmp44# 0 0
Ltmp39:
fstp %st(0)
Ltmp39_br: jmp Ltmp45
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp39_br# 1 _Z10SolveCubicddddPiPd #Ltmp45# 0 0
Ltmp40:
Ltmp40_br: fstp %st(0)
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp40_br# 1 _Z10SolveCubicddddPiPd #Ltmp45# 0 0
Ltmp45:
movsd 0x60(%rsp), %xmm0
movsd %xmm1, 0x20(%rsp)
callq sqrt@PLT
movsd 0x20(%rsp), %xmm1
movapd %xmm0, %xmm2
movsd 0x48(%rsp), %xmm0
fldt 0x10(%rsp)
Ltmp45_br: jmp Ltmp46
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp45_br# 1 _Z10SolveCubicddddPiPd #Ltmp46# 0 0
Ltmp38:
fstpt 0x30(%rsp)
fxch %st(1)
movapd %xmm1, %xmm0
fstpt 0x10(%rsp)
fstpt 0x20(%rsp)
callq sqrt@PLT
fldt 0x20(%rsp)
fldt 0x10(%rsp)
fldt 0x30(%rsp)
fxch %st(1)
fxch %st(2)
fxch %st(1)
Ltmp38_br: jmp Ltmp47
# FDATA: 1 _Z10SolveCubicddddPiPd #Ltmp38_br# 1 _Z10SolveCubicddddPiPd #Ltmp47# 0 0
.cfi_endproc
.size _Z10SolveCubicddddPiPd, .-_Z10SolveCubicddddPiPd
.section .rodata
"DATAat0x401788":
"DATAat0x401790":
"DATAat0x401780":
"DATAat0x401770":
"DATAat0x40176c":
"DATAat0x401760":
"DATAat0x401768":
"DATAat0x401778":
"DATAat0x401764":
"DATAat0x401798":
"DATAat0x4017b0":
"DATAat0x4017a0":
.text
.globl _Z5usqrtmP8int_sqrt
.type _Z5usqrtmP8int_sqrt, %function
_Z5usqrtmP8int_sqrt:
# FDATA: 0 [unknown] 0 1 _Z5usqrtmP8int_sqrt 0 0 6
.cfi_startproc
LBB02:
xorl %r9d, %r9d
xorl %eax, %eax
LBB02_br: xorl %ecx, %ecx
# FDATA: 1 _Z5usqrtmP8int_sqrt #LBB02_br# 1 _Z5usqrtmP8int_sqrt #Ltmp48# 0 0
Ltmp48:
movq %rdi, %rdx
leaq (%rax,%rax), %r10
leaq 0x1(,%rax,4), %r8
andl $0xc0000000, %edx
shlq $0x2, %rdi
shrq $0x1e, %rdx
leaq 0x1(%r10), %rax
leaq (%rdx,%rcx,4), %rdx
movq %rdx, %rcx
subq %r8, %rcx
cmpq %r8, %rdx
cmovbq %rdx, %rcx
cmovbq %r10, %rax
addl $0x1, %r9d
cmpl $0x20, %r9d
Ltmp48_br: jne Ltmp48
# FDATA: 1 _Z5usqrtmP8int_sqrt #Ltmp48_br# 1 _Z5usqrtmP8int_sqrt #Ltmp48# 0 0
# FDATA: 1 _Z5usqrtmP8int_sqrt #Ltmp48_br# 1 _Z5usqrtmP8int_sqrt #LFT0# 0 0
LFT0:
movq %rax, (%rsi)
retq
.cfi_endproc
.size _Z5usqrtmP8int_sqrt, .-_Z5usqrtmP8int_sqrt