{"name": "_ZN4llvm21BranchProbabilityInfo24calcLoopBranchHeuristicsEPNS_10BasicBlockE", "code": "_BOOL8 __fastcall llvm BranchProbabilityInfo calcLoopBranchHeuristics ( llvm BranchProbabilityInfo * @@this@@ , llvm BasicBlock * @@a2@@ ) { __int64 v3 ; int v4 ; llvm BasicBlock * @@v5@@ ; int v6 ; __int64 v7 ; unsigned int v8 ; llvm BasicBlock * * v9 ; llvm BasicBlock * v10 ; int v11 ; llvm BasicBlock * v13 ; __int64 * v14 ; __int64 v15 ; unsigned int v16 ; __int64 v17 ; char * v18 ; char * v19 ; __int64 v20 ; __int64 @@v21@@ ; char * v22 ; __int64 ( __fastcall * v23 ) ( __int64 * , _QWORD , char * , __int64 ) ; bool @@v24@@ ; __int64 v25 ; const void * v26 ; int v27 ; __int64 v28 ; const llvm BasicBlock * * v29 ; const llvm BasicBlock * * v30 ; const llvm BasicBlock * * v31 ; const llvm BasicBlock * v32 ; const llvm BasicBlock * * v33 ; const llvm BasicBlock * * v34 ; int v35 ; __int64 v36 ; const llvm BasicBlock * * v37 ; const llvm BasicBlock * * v38 ; const llvm BasicBlock * * v39 ; const llvm BasicBlock * v40 ; const llvm BasicBlock * * v41 ; const llvm BasicBlock * * v42 ; int v43 ; __int64 v44 ; const llvm BasicBlock * * v45 ; const llvm BasicBlock * * v46 ; const llvm BasicBlock * v47 ; const llvm BasicBlock * v48 ; const llvm BasicBlock * * v49 ; const llvm BasicBlock * * v50 ; const void * v51 ; const void * v52 ; __int64 @@v53@@ ; int @@v54@@ ; bool @@v55@@ ; __m128i @@v56@@ ; __int64 @@v57@@ ; int @@v58@@ ; __int128 @@v59@@ [ Number ] ; __int64 @@v60@@ ; __m128i @@v61@@ ; __int64 @@v62@@ ; int @@v63@@ ; __int128 @@v64@@ [ Number ] ; __int64 @@v65@@ ; __m128i @@v66@@ ; __int64 @@v67@@ ; int @@v68@@ ; __int128 @@v69@@ [ Number ] ; __int64 @@v70@@ ; v3 = * ( ( _QWORD * ) @@this@@ + Number ) ; v4 = * ( _DWORD * ) ( v3 + Number ) ; if ( ! v4 ) return Number ; @@v5@@ = @@a2@@ ; @@v55@@ = ( llvm BasicBlock * ) ( ( char * ) @@a2@@ + Number ) != Number L && ( llvm BasicBlock * ) ( ( char * ) @@a2@@ + Number ) != Number L ; if ( ! @@v55@@ ) _assert_fail ( String String , String , Number , String String String String ) ; v6 = v4 - Number ; v7 = * ( _QWORD * ) ( v3 + Number ) ; v8 = ( ( unsigned int ) @@a2@@ >> Number ) ^ ( ( unsigned int ) @@a2@@ >> Number ) ; v9 = ( llvm BasicBlock * * ) ( v7 + Number L * ( v8 & v6 ) ) ; v10 = * v9 ; if ( @@a2@@ != * v9 ) { v11 = Number ; while ( v10 != ( llvm BasicBlock * ) Number ) { v8 += v11 ; @@a2@@ = ( llvm BasicBlock * ) ( unsigned int ) ( v11 + Number ) ; v9 = ( llvm BasicBlock * * ) ( v7 + Number L * ( v8 & v6 ) ) ; v10 = * v9 ; if ( @@v5@@ == * v9 ) goto LABEL_10 ; v11 = ( int ) @@a2@@ ; } return Number ; } LABEL_10 : v13 = v9 [ Number ] ; if ( ! v13 ) return Number ; @@v60@@ = Number L ; @@v57@@ = Number L ; @@v58@@ = Number ; @@v66@@ = _mm_unpacklo_epi64 ( ( __m128i ) ( unsigned __int64 ) @@v69@@ , ( __m128i ) ( unsigned __int64 ) @@v69@@ ) ; @@v61@@ = _mm_unpacklo_epi64 ( ( __m128i ) ( unsigned __int64 ) @@v64@@ , ( __m128i ) ( unsigned __int64 ) @@v64@@ ) ; @@v56@@ = _mm_unpacklo_epi64 ( ( __m128i ) ( unsigned __int64 ) @@v59@@ , ( __m128i ) ( unsigned __int64 ) @@v59@@ ) ; @@v59@@ [ Number ] = Number ; @@v59@@ [ Number ] = Number ; @@v59@@ [ Number ] = Number ; @@v59@@ [ Number ] = Number ; @@v64@@ [ Number ] = Number ; @@v64@@ [ Number ] = Number ; @@v64@@ [ Number ] = Number ; @@v64@@ [ Number ] = Number ; @@v69@@ [ Number ] = Number ; @@v69@@ [ Number ] = Number ; @@v69@@ [ Number ] = Number ; @@v69@@ [ Number ] = Number ; @@v65@@ = Number L ; @@v62@@ = Number L ; @@v63@@ = Number ; @@v70@@ = Number L ; @@v67@@ = Number L ; @@v68@@ = Number ; v14 = ( __int64 * ) llvm BasicBlock getTerminator ( @@v5@@ ) ; v15 = llvm BasicBlock getTerminator ( @@v5@@ ) ; if ( v15 ) { @@v54@@ = ( * ( __int64 ( __fastcall * * ) ( __int64 , llvm BasicBlock * ) ) ( * ( _QWORD * ) v15 + Number L ) ) ( v15 , @@a2@@ ) ; if ( @@v54@@ ) { v16 = Number ; while ( Number ) { v17 = ( * ( __int64 ( __fastcall * * ) ( __int64 * , _QWORD ) ) ( * v14 + Number ) ) ( v14 , v16 ) ; v18 = ( char * ) * ( ( _QWORD * ) v13 + Number ) ; v19 = ( char * ) * ( ( _QWORD * ) v13 + Number ) ; v20 = ( v18 - v19 ) >> Number ; @@v21@@ = ( v18 - v19 ) >> Number ; if ( v20 > Number ) { v22 = ( char * ) * ( ( _QWORD * ) v13 + Number ) ; v20 = ( __int64 ) & v19 [ Number * v20 ] ; while ( v17 != * ( _QWORD * ) v22 ) { if ( v17 == * ( ( _QWORD * ) v22 + Number ) ) { v22 += Number ; goto LABEL_21 ; } if ( v17 == * ( ( _QWORD * ) v22 + Number ) ) { v22 += Number ; goto LABEL_21 ; } if ( v17 == * ( ( _QWORD * ) v22 + Number ) ) { v22 += Number ; goto LABEL_21 ; } v22 += Number ; if ( ( char * ) v20 == v22 ) { @@v21@@ = ( v18 - v22 ) >> Number ; goto LABEL_68 ; } } goto LABEL_21 ; } v22 = ( char * ) * ( ( _QWORD * ) v13 + Number ) ; LABEL_68 : if ( @@v21@@ == Number ) goto LABEL_79 ; if ( @@v21@@ == Number ) break ; if ( @@v21@@ != Number ) goto LABEL_71 ; LABEL_81 : if ( v17 != * ( _QWORD * ) v22 ) { LABEL_71 : v23 = * ( __int64 ( __fastcall * * ) ( __int64 * , _QWORD , char * , __int64 ) ) ( * v14 + Number ) ; goto LABEL_72 ; } LABEL_21 : v23 = * ( __int64 ( __fastcall * * ) ( __int64 * , _QWORD , char * , __int64 ) ) ( * v14 + Number ) ; if ( v18 != v22 ) { @@v53@@ = * ( _QWORD * ) v19 ; @@v24@@ = @@v53@@ == v23 ( v14 , v16 , v22 , v20 ) ; v25 = * v14 ; if ( @@v24@@ ) { v52 = ( const void * ) ( * ( __int64 ( __fastcall * * ) ( __int64 * , _QWORD ) ) ( v25 + Number ) ) ( v14 , v16 ) ; llvm SmallPtrSetImpl insert_imp ( ( llvm SmallPtrSetImpl * ) & @@v56@@ , v52 ) ; } else { v26 = ( const void * ) ( * ( __int64 ( __fastcall * * ) ( __int64 * , _QWORD ) ) ( v25 + Number ) ) ( v14 , v16 ) ; llvm SmallPtrSetImpl insert_imp ( ( llvm SmallPtrSetImpl * ) & @@v66@@ , v26 ) ; } goto LABEL_24 ; } LABEL_72 : v51 = ( const void * ) v23 ( v14 , v16 , v22 , v20 ) ; llvm SmallPtrSetImpl insert_imp ( ( llvm SmallPtrSetImpl * ) & @@v61@@ , v51 ) ; LABEL_24 : if ( @@v54@@ == ++ v16 ) goto LABEL_25 ; } if ( v17 == * ( _QWORD * ) v22 ) goto LABEL_21 ; v22 += Number ; LABEL_79 : if ( v17 == * ( _QWORD * ) v22 ) goto LABEL_21 ; v22 += Number ; goto LABEL_81 ; } } LABEL_25 : if ( HIDWORD ( @@v57@@ ) ) { v27 = Number ; if ( Number / HIDWORD ( @@v57@@ ) >= Number ) v27 = Number / HIDWORD ( @@v57@@ ) ; if ( * ( _QWORD * ) @@v56@@ . m128i_i64 [ Number ] < Number ) { v29 = ( const llvm BasicBlock * * ) @@v56@@ . m128i_i64 [ Number ] ; } else { v28 = @@v56@@ . m128i_i64 [ Number ] + Number ; do { v29 = ( const llvm BasicBlock * * ) v28 ; v28 += Number L ; } while ( * v29 == ( const llvm BasicBlock * ) Number || ( char * ) * v29 + Number == ( char * ) & loc_1 ) ; } v30 = ( const llvm BasicBlock * * ) ( @@v56@@ . m128i_i64 [ Number ] + Number L * ( unsigned int ) @@v57@@ ) ; if ( ( unsigned __int64 ) * v30 >= Number ) { v31 = v30 + Number ; do v30 = v31 ++ ; while ( * v30 == ( const llvm BasicBlock * ) Number || ( char * ) * v30 + Number == ( char * ) & loc_1 ) ; } if ( v29 != v30 ) { v32 = * v29 ; do { while ( Number ) { llvm BranchProbabilityInfo setEdgeWeight ( @@this@@ , @@v5@@ , v32 , v27 ) ; v32 = v29 [ Number ] ; v33 = v29 + Number ; v34 = v29 + Number ; if ( ( unsigned __int64 ) v32 + Number <= Number ) break ; ++ v29 ; if ( v30 == v33 ) goto LABEL_39 ; } do { v32 = * v34 ; v29 = v34 ++ ; } while ( ( unsigned __int64 ) v32 + Number <= Number ) ; } while ( v30 != v29 ) ; } } LABEL_39 : if ( HIDWORD ( @@v67@@ ) ) { v35 = Number ; if ( Number / HIDWORD ( @@v67@@ ) >= Number ) v35 = Number / HIDWORD ( @@v67@@ ) ; if ( * ( _QWORD * ) @@v66@@ . m128i_i64 [ Number ] < Number ) { v37 = ( const llvm BasicBlock * * ) @@v66@@ . m128i_i64 [ Number ] ; } else { v36 = @@v66@@ . m128i_i64 [ Number ] + Number ; do { v37 = ( const llvm BasicBlock * * ) v36 ; v36 += Number L ; } while ( * v37 == ( const llvm BasicBlock * ) Number || ( char * ) * v37 + Number == ( char * ) & loc_1 ) ; } v38 = ( const llvm BasicBlock * * ) ( @@v66@@ . m128i_i64 [ Number ] + Number L * ( unsigned int ) @@v67@@ ) ; if ( ( unsigned __int64 ) * v38 >= Number ) { v39 = v38 + Number ; do v38 = v39 ++ ; while ( * v38 == ( const llvm BasicBlock * ) Number || ( char * ) * v38 + Number == ( char * ) & loc_1 ) ; } if ( v37 != v38 ) { v40 = * v37 ; do { while ( Number ) { llvm BranchProbabilityInfo setEdgeWeight ( @@this@@ , @@v5@@ , v40 , v35 ) ; v40 = v37 [ Number ] ; v41 = v37 + Number ; v42 = v37 + Number ; if ( ( unsigned __int64 ) v40 + Number <= Number ) break ; ++ v37 ; if ( v41 == v38 ) goto LABEL_53 ; } do { v40 = * v42 ; v37 = v42 ++ ; } while ( ( unsigned __int64 ) v40 + Number <= Number ) ; } while ( v37 != v38 ) ; } } LABEL_53 : if ( HIDWORD ( @@v62@@ ) ) { v43 = Number ; if ( HIDWORD ( @@v62@@ ) <= Number ) v43 = Number / HIDWORD ( @@v62@@ ) ; if ( * ( _QWORD * ) @@v61@@ . m128i_i64 [ Number ] < Number ) { v45 = ( const llvm BasicBlock * * ) @@v61@@ . m128i_i64 [ Number ] ; } else { v44 = @@v61@@ . m128i_i64 [ Number ] + Number ; do { v45 = ( const llvm BasicBlock * * ) v44 ; v44 += Number L ; } while ( * v45 == ( const llvm BasicBlock * ) Number || ( char * ) * v45 + Number == ( char * ) & loc_1 ) ; } v46 = ( const llvm BasicBlock * * ) ( @@v61@@ . m128i_i64 [ Number ] + Number L * ( unsigned int ) @@v62@@ ) ; if ( ( unsigned __int64 ) * v46 >= Number ) { do { v47 = v46 [ Number ] ; ++ v46 ; } while ( v47 == ( const llvm BasicBlock * ) Number || ( char * ) v47 + Number == ( char * ) & loc_1 ) ; } if ( v46 != v45 ) { v48 = * v45 ; do { while ( Number ) { llvm BranchProbabilityInfo setEdgeWeight ( @@this@@ , @@v5@@ , v48 , v43 ) ; v48 = v45 [ Number ] ; v49 = v45 + Number ; v50 = v45 + Number ; if ( ( unsigned __int64 ) v48 + Number <= Number ) break ; ++ v45 ; if ( v49 == v46 ) goto LABEL_66 ; } do { v48 = * v50 ; v45 = v50 ++ ; } while ( ( unsigned __int64 ) v48 + Number <= Number ) ; } while ( v45 != v46 ) ; } } LABEL_66 : llvm SmallPtrSetImpl ~ SmallPtrSetImpl ( ( llvm SmallPtrSetImpl * ) & @@v66@@ ) ; llvm SmallPtrSetImpl ~ SmallPtrSetImpl ( ( llvm SmallPtrSetImpl * ) & @@v61@@ ) ; llvm SmallPtrSetImpl ~ SmallPtrSetImpl ( ( llvm SmallPtrSetImpl * ) & @@v56@@ ) ; return @@v55@@ ; }", "source": [{"n": "v24", "t": {"T": 1, "n": "bool", "s": 1}, "location": "r1"}, {"n": "v5", "t": {"T": 3, "t": "llvm::BasicBlock"}, "location": "r32"}, {"n": "this", "t": {"T": 3, "t": "llvm::BranchProbabilityInfo"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "llvm::BasicBlock"}, "location": "r64"}, {"n": "v21", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r88"}, {"n": "v69", "t": {"T": 2, "n": 4, "s": 16, "t": "__int128"}, "location": "s136"}, {"n": "v68", "t": {"T": 1, "n": "int", "s": 4}, "location": "s144"}, {"n": "v67", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s152"}, {"n": "v66", "t": {"T": 8}, "location": "s168"}, {"n": "v65", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s184"}, {"n": "v64", "t": {"T": 2, "n": 4, "s": 16, "t": "__int128"}, "location": "s248"}, {"n": "v63", "t": {"T": 1, "n": "int", "s": 4}, "location": "s256"}, {"n": "v62", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s264"}, {"n": "v61", "t": {"T": 8}, "location": "s280"}, {"n": "v60", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s296"}, {"n": "v59", "t": {"T": 2, "n": 4, "s": 16, "t": "__int128"}, "location": "s360"}, {"n": "v58", "t": {"T": 1, "n": "int", "s": 4}, "location": "s368"}, {"n": "v57", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s376"}, {"n": "v56", "t": {"T": 8}, "location": "s392"}, {"n": "v55", "t": {"T": 1, "n": "bool", "s": 1}, "location": "s409"}, {"n": "v54", "t": {"T": 1, "n": "int", "s": 4}, "location": "s416"}, {"n": "v53", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s424"}, {"n": "v70", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s72"}]}