{"name": "_ZN4llvm21BranchProbabilityInfo19calcMetadataWeightsEPNS_10BasicBlockE", "code": "__int64 __fastcall llvm BranchProbabilityInfo calcMetadataWeights ( llvm BranchProbabilityInfo * @@this@@ , llvm BasicBlock * @@a2@@ ) { llvm Instruction * @@v4@@ ; llvm MDNode * v5 ; llvm MDNode * v6 ; int v7 ; __int64 result ; __int64 v9 ; unsigned int v10 ; unsigned int v11 ; int v12 ; unsigned int v13 ; __int64 @@v14@@ ; unsigned int v15 ; llvm APInt * v16 ; int v17 ; int v18 ; int @@v19@@ ; char * v20 ; char * v21 ; __int64 v22 ; __int64 v23 ; int v24 ; __int64 v25 ; unsigned int * v26 ; unsigned int v27 ; const llvm BasicBlock * v28 ; int v29 ; llvm APInt * v30 ; int v31 ; llvm APInt * @@v32@@ [ Number ] ; llvm SmallVectorBase * @@v33@@ ; __int64 @@v34@@ ; unsigned int @@v35@@ ; unsigned int @@v36@@ ; unsigned __int64 @@v37@@ ; int @@v38@@ ; int @@v39@@ ; void * @@ptr@@ [ Number ] ; char * @@v41@@ ; char @@v42@@ [ Number ] ; char @@v43@@ ; @@v4@@ = ( llvm Instruction * ) llvm BasicBlock getTerminator ( @@a2@@ ) ; if ( ( * ( unsigned int ( __fastcall * * ) ( llvm Instruction * ) ) ( * ( _QWORD * ) @@v4@@ + Number L ) ) ( @@v4@@ ) == Number || ( unsigned __int8 ) ( * ( ( _BYTE * ) @@v4@@ + Number ) - Number ) > Number || ! * ( ( _DWORD * ) @@v4@@ + Number ) && * ( ( __int16 * ) @@v4@@ + Number ) >= Number ) { return Number L ; } v5 = ( llvm MDNode * ) llvm Instruction getMetadataImpl ( @@v4@@ , Number ) ; v6 = v5 ; if ( ! v5 ) return Number L ; v7 = * ( ( _DWORD * ) v5 + Number ) ; if ( ( * ( unsigned int ( __fastcall * * ) ( llvm Instruction * ) ) ( * ( _QWORD * ) @@v4@@ + Number L ) ) ( @@v4@@ ) + Number != v7 ) return Number L ; @@v33@@ = ( llvm SmallVectorBase * ) @@ptr@@ ; * ( __m128i * ) @@v32@@ = _mm_unpacklo_epi64 ( ( __m128i ) ( unsigned __int64 ) @@v42@@ , ( __m128i ) ( unsigned __int64 ) @@v42@@ ) ; v9 = llvm BasicBlock getTerminator ( @@a2@@ ) ; v10 = ( * ( __int64 ( __fastcall * * ) ( __int64 ) ) ( * ( _QWORD * ) v9 + Number L ) ) ( v9 ) ; * ( __m128i * ) @@ptr@@ = _mm_load_si128 ( ( const __m128i * ) @@v32@@ ) ; @@v35@@ = Number / v10 ; @@v41@@ = & @@v43@@ ; v11 = ( * ( __int64 ( __fastcall * * ) ( llvm Instruction * , __int64 , _QWORD ) ) ( * ( _QWORD * ) @@v4@@ + Number L ) ) ( @@v4@@ , Number L , Number % v10 ) ; if ( ( @@v41@@ - ( char * ) @@ptr@@ [ Number ] ) >> Number < ( unsigned __int64 ) v11 ) llvm SmallVectorBase grow_pod ( @@v33@@ , Number L * v11 , Number ) ; v12 = * ( ( _DWORD * ) v6 + Number ) ; if ( v12 != Number ) { v13 = Number ; while ( Number ) { @@v14@@ = llvm MDNode getOperand ( v6 , v13 ) ; if ( * ( _BYTE * ) ( @@v14@@ + Number ) != Number ) { result = Number L ; goto LABEL_21 ; } v15 = * ( _DWORD * ) ( @@v14@@ + Number ) ; v16 = ( llvm APInt * ) ( @@v14@@ + Number ) ; @@v37@@ = @@v35@@ ; if ( v15 > Number ) { @@v36@@ = v15 ; @@v34@@ = @@v14@@ ; @@v32@@ [ Number ] = ( llvm APInt * ) ( @@v14@@ + Number ) ; v18 = llvm APInt countLeadingZerosSlowCase ( v16 ) ; v16 = @@v32@@ [ Number ] ; @@v14@@ = @@v34@@ ; if ( @@v36@@ - v18 > Number ) { LABEL_24 : v17 = @@v35@@ ; goto LABEL_25 ; } } else if ( ! * ( _QWORD * ) ( @@v14@@ + Number ) ) { goto LABEL_19 ; } if ( * ( _DWORD * ) ( @@v14@@ + Number ) > Number ) { @@v36@@ = * ( _DWORD * ) ( @@v14@@ + Number ) ; @@v34@@ = @@v14@@ ; @@v32@@ [ Number ] = v16 ; v29 = llvm APInt countLeadingZerosSlowCase ( v16 ) ; v30 = @@v32@@ [ Number ] ; @@v14@@ = @@v34@@ ; if ( @@v36@@ - v29 > Number ) goto LABEL_45 ; v17 = @@v35@@ ; if ( @@v37@@ < * * ( _QWORD * * ) ( @@v34@@ + Number ) ) goto LABEL_25 ; LODWORD ( @@v34@@ ) = * ( _DWORD * ) ( @@v34@@ + Number ) ; if ( ( unsigned int ) @@v34@@ > Number ) { @@v32@@ [ Number ] = ( llvm APInt * ) @@v14@@ ; v31 = llvm APInt countLeadingZerosSlowCase ( v30 ) ; if ( ( unsigned int ) ( @@v34@@ - v31 ) > Number ) LABEL_45 : _assert_fail ( String , String , Number , String ) ; v17 = * * ( ( _DWORD * * ) @@v32@@ [ Number ] + Number ) ; goto LABEL_25 ; } } else if ( @@v37@@ < * ( _QWORD * ) ( @@v14@@ + Number ) ) { goto LABEL_24 ; } LABEL_19 : v17 = * ( _DWORD * ) ( @@v14@@ + Number ) ; LABEL_25 : @@v19@@ = Number ; @@v39@@ = v17 ; if ( v17 ) @@v19@@ = v17 ; @@v38@@ = Number ; v20 = ( char * ) @@ptr@@ [ Number ] ; if ( @@ptr@@ [ Number ] >= @@v41@@ ) { ++ v13 ; LODWORD ( @@v32@@ [ Number ] ) = @@v19@@ ; llvm SmallVectorBase grow_pod ( @@v33@@ , Number L , Number ) ; v21 = ( char * ) @@ptr@@ [ Number ] + Number ; * ( _DWORD * ) @@ptr@@ [ Number ] = @@v32@@ [ Number ] ; @@ptr@@ [ Number ] = v21 ; if ( v12 == v13 ) goto LABEL_29 ; } else { * ( _DWORD * ) @@ptr@@ [ Number ] = @@v19@@ ; ++ v13 ; v21 = v20 + Number ; @@ptr@@ [ Number ] = v21 ; if ( v13 == v12 ) goto LABEL_29 ; } } } v21 = ( char * ) @@ptr@@ [ Number ] ; LABEL_29 : v22 = ( v21 - ( char * ) @@ptr@@ [ Number ] ) >> Number ; if ( ( * ( unsigned int ( __fastcall * * ) ( llvm Instruction * ) ) ( * ( _QWORD * ) @@v4@@ + Number L ) ) ( @@v4@@ ) != v22 ) _assert_fail ( String , String , Number , String ) ; v23 = Number L ; v24 = ( * ( __int64 ( __fastcall * * ) ( llvm Instruction * ) ) ( * ( _QWORD * ) @@v4@@ + Number L ) ) ( @@v4@@ ) ; v25 = ( unsigned int ) ( v24 - Number ) ; if ( v24 ) { while ( Number ) { v26 = ( unsigned int * ) ( ( char * ) @@ptr@@ [ Number ] + Number * v23 ) ; if ( v26 >= @@ptr@@ [ Number ] ) _assert_fail ( String , String , Number , String String ) ; v27 = * v26 ; v28 = ( const llvm BasicBlock * ) ( * ( __int64 ( __fastcall * * ) ( llvm Instruction * , _QWORD ) ) ( * ( _QWORD * ) @@v4@@ + Number L ) ) ( @@v4@@ , ( unsigned int ) v23 ) ; llvm BranchProbabilityInfo setEdgeWeight ( @@this@@ , @@a2@@ , v28 , v27 ) ; if ( v23 == v25 ) break ; ++ v23 ; } } result = Number L ; LABEL_21 : if ( @@ptr@@ [ Number ] != @@v42@@ ) { LOBYTE ( @@v35@@ ) = result ; free ( @@ptr@@ [ Number ] ) ; result = ( unsigned __int8 ) @@v35@@ ; } return result ; }", "source": [{"n": "v4", "t": {"T": 3, "t": "llvm::Instruction"}, "location": "r128"}, {"n": "v14", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "this", "t": {"T": 3, "t": "llvm::BranchProbabilityInfo"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "llvm::BasicBlock"}, "location": "r64"}, {"n": "v19", "t": {"T": 1, "n": "int", "s": 4}, "location": "r80"}, {"n": "v41", "t": {"T": 3, "t": "char"}, "location": "s104"}, {"n": "ptr", "t": {"T": 2, "n": 2, "s": 8, "t": "void *"}, "location": "s120"}, {"n": "v39", "t": {"T": 1, "n": "int", "s": 4}, "location": "s124"}, {"n": "v38", "t": {"T": 1, "n": "int", "s": 4}, "location": "s128"}, {"n": "v37", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s144"}, {"n": "v36", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s148"}, {"n": "v35", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s152"}, {"n": "v34", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s160"}, {"n": "v33", "t": {"T": 3, "t": "llvm::SmallVectorBase"}, "location": "s168"}, {"n": "v32", "t": {"T": 2, "n": 2, "s": 8, "t": "llvm::APInt *"}, "location": "s184"}, {"n": "v43", "t": {"T": 1, "n": "char", "s": 1}, "location": "s56"}, {"n": "v42", "t": {"T": 2, "n": 32, "s": 1, "t": "char"}, "location": "s88"}]}