{"name": "vringh_bad", "code": "int vringh_bad ( const char * @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ , __int64 @@a5@@ , __int64 @@a6@@ , ... ) { int @@result@@ ; gcc_va_list @@arg@@ ; __int64 @@v8@@ ; __int64 @@v9@@ ; __int64 @@v10@@ ; __int64 @@v11@@ ; __int64 @@v12@@ ; @@v8@@ = @@a2@@ ; @@v9@@ = @@a3@@ ; @@v10@@ = @@a4@@ ; @@v11@@ = @@a5@@ ; @@v12@@ = @@a6@@ ; @@result@@ = vringh_rs_4301 ; if ( vringh_rs_4301 ) { @@arg@@ [ Number ] . gp_offset = Number ; va_start ( @@arg@@ , @@a6@@ ) ; printf ( & format ) ; @@result@@ = vprintf ( @@a1@@ , @@arg@@ ) ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "const char"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r72"}, {"n": "result", "t": {"T": 1, "n": "int", "s": 4}, "location": "r8"}, {"n": "a6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r80"}, {"n": "v12", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s136"}, {"n": "v11", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s144"}, {"n": "v10", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s152"}, {"n": "v9", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s160"}, {"n": "v8", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s168"}, {"n": "arg", "t": {"T": 2, "n": 1, "s": 24, "t": "__va_list_tag"}, "location": "s200"}]}
{"name": "__vringh_get_head", "code": "__int64 __fastcall _vringh_get_head ( __int64 @@a1@@ , __int64 ( __fastcall * @@a2@@ ) ( __int64 , __int16 * , __int64 ) , _WORD * @@a3@@ ) { __int64 v3 ; __int64 v4 ; __int64 v5 ; __int64 v6 ; __int64 @@result@@ ; __int64 v8 ; __int64 v9 ; __int64 v10 ; unsigned __int16 @@v12@@ ; __int16 @@v13@@ ; unsigned __int16 @@v14@@ ; unsigned int @@v15@@ ; @@v15@@ = @@a2@@ ( @@a1@@ , & @@v13@@ , * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ; if ( @@v15@@ ) { vringh_bad ( String , * ( _QWORD * ) ( @@a1@@ + Number ) + Number L , v3 , v4 , v5 , v6 ) ; @@result@@ = @@v15@@ ; } else if ( * @@a3@@ == @@v13@@ ) { @@result@@ = * ( unsigned int * ) ( @@a1@@ + Number ) ; } else { virtio_rmb ( * ( unsigned __int8 * ) ( @@a1@@ + Number ) ) ; @@v14@@ = * @@a3@@ & ( * ( _DWORD * ) ( @@a1@@ + Number ) - Number ) ; @@v15@@ = @@a2@@ ( @@a1@@ , ( __int16 * ) & @@v12@@ , Number L * @@v14@@ + * ( _QWORD * ) ( @@a1@@ + Number ) + Number ) ; if ( @@v15@@ ) { vringh_bad ( String , ( unsigned __int16 ) * @@a3@@ , Number L * @@v14@@ + * ( _QWORD * ) ( @@a1@@ + Number ) + Number , v8 , v9 , v10 ) ; @@result@@ = @@v15@@ ; } else if ( ( unsigned int ) @@v12@@ < * ( _DWORD * ) ( @@a1@@ + Number ) ) { ++ * @@a3@@ ; @@result@@ = @@v12@@ ; } else { vringh_bad ( String , @@v12@@ , * ( unsigned int * ) ( @@a1@@ + Number ) , v8 , v9 , v10 ) ; @@result@@ = Number L ; } } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "_WORD"}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 9, "n": "__int64 (__fastcall *)(__int64, __int16 *, __int64)"}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v12", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s10"}, {"n": "v15", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s4"}, {"n": "v14", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s6"}, {"n": "v13", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s8"}]} {"name": "range_check", "code": "__int64 __fastcall range_check ( __int64 @@a1@@ , unsigned __int64 @@a2@@ , __int64 * @@a3@@ , unsigned __int64 * @@a4@@ , unsigned __int8 ( __fastcall * @@a5@@ ) ( __int64 , unsigned __int64 , unsigned __int64 * ) , __int64 @@a6@@ ) { if ( ( @@a2@@ < * @@a4@@ || @@a2@@ > @@a4@@ [ Number ] ) && @@a5@@ ( @@a1@@ , @@a2@@ , @@a4@@ ) != Number ) return Number L ; if ( @@a2@@ < * @@a4@@ || @@a2@@ > @@a4@@ [ Number ] ) _assert_fail ( String , String , Number , String ) ; if ( * @@a3@@ + @@a2@@ ) { if ( @@a2@@ > * @@a3@@ + @@a2@@ ) { vringh_bad ( String , * @@a3@@ , @@a2@@ , ( __int64 ) @@a4@@ , ( __int64 ) @@a5@@ , @@a6@@ ) ; return Number L ; } if ( * @@a3@@ + @@a2@@ - Number <= @@a4@@ [ Number ] ) return Number L ; } else if ( @@a4@@ [ Number ] == Number ) { return Number L ; } * @@a3@@ = @@a4@@ [ Number ] - @@a2@@ + Number ; return Number L ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "__int64"}, "location": "r16"}, {"n": "a4", "t": {"T": 3, "t": "unsigned __int64"}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "r64"}, {"n": "a5", "t": {"T": 9, "n": "unsigned __int8 (__fastcall *)(__int64, unsigned __int64, unsigned __int64 *)"}, "location": "r72"}, {"n": "a6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r80"}]} {"name": "move_to_indirect", "code": "__int64 __fastcall move_to_indirect ( _BYTE * @@a1@@ , _DWORD * @@a2@@ , _WORD * @@a3@@ , __int64 @@a4@@ , __int64 @@a5@@ , __int64 * @@a6@@ , unsigned int * @@a7@@ ) { __int64 @@result@@ ; __int64 v8 ; __int64 v9 ; __int64 v10 ; __int64 v11 ; unsigned __int16 @@v12@@ ; unsigned int @@v17@@ ; if ( * @@a2@@ == Number ) { @@v17@@ = vringh32_to_cpu ( @@a1@@ , * ( _DWORD * ) ( @@a5@@ + Number ) ) ; if ( ( @@v17@@ & Number ) != Number ) { vringh_bad ( String , * ( unsigned int * ) ( @@a5@@ + Number ) , v8 , v9 , v10 , v11 ) ; @@result@@ = Number L ; } else { @@v12@@ = * ( _WORD * ) ( @@a5@@ + Number ) ; if ( ( @@v12@@ & ( unsigned __int16 ) cpu_to_vringh16 ( @@a1@@ , Number ) ) != Number ) * @@a2@@ = ( unsigned __int16 ) vringh16_to_cpu ( @@a1@@ , * ( _WORD * ) ( @@a5@@ + Number ) ) ; else * @@a2@@ = Number ; * @@a6@@ = @@a4@@ ; * @@a7@@ = @@v17@@ >> Number ; * @@a3@@ = Number ; @@result@@ = Number L ; } } else { vringh_bad ( String , ( unsigned int ) * @@a2@@ , ( unsigned __int16 ) * @@a3@@ , @@a4@@ , @@a5@@ , ( __int64 ) @@a6@@ ) ; @@result@@ = Number L ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "_WORD"}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "v12", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "r32"}, {"n": "a1", "t": {"T": 3, "t": "_BYTE"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_DWORD"}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r72"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "a6", "t": {"T": 3, "t": "__int64"}, "location": "r80"}, {"n": "a7", "t": {"T": 3, "t": "unsigned int"}, "location": "s-16"}, {"n": "v17", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s20"}]} {"name": "__vringh_iov", "code": "__int64 __fastcall _vringh_iov ( __int64 @@a1@@ , unsigned __int16 @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ , unsigned __int8 ( __fastcall * @@a5@@ ) ( __int64 , __int64 , __int64 * , __int64 , __int64 ) , __int64 @@a6@@ , unsigned int @@a7@@ , __int64 ( __fastcall * @@a8@@ ) ( __int64 , __int64 , __int64 ) ) { __int16 v8 ; __int64 v9 ; __int64 v10 ; __int64 v11 ; int v12 ; unsigned int v13 ; __int16 v14 ; __int64 v15 ; __int64 v16 ; __int64 v17 ; __int64 v18 ; const char * v19 ; unsigned __int64 v20 ; unsigned __int64 v21 ; int v22 ; int v23 ; unsigned __int64 v24 ; __int16 v25 ; __int64 v26 ; __int64 v27 ; __int64 v28 ; unsigned __int16 @@v34@@ ; _BYTE * @@v35@@ ; __int64 @@v36@@ ; __int64 @@v37@@ [ Number ] ; __int64 @@v38@@ ; __int64 @@v39@@ ; __int64 @@v40@@ ; __int64 @@v41@@ ; unsigned __int64 @@v42@@ ; unsigned int @@v43@@ ; __int16 @@v44@@ ; unsigned __int16 @@v45@@ ; int @@v46@@ ; int @@v47@@ ; unsigned __int64 @@v48@@ ; __int64 @@v49@@ ; __int64 @@v50@@ ; char @@v51@@ ; unsigned int @@v52@@ ; unsigned int @@v53@@ ; @@v35@@ = ( _BYTE * ) @@a1@@ ; @@v34@@ = @@a2@@ ; @@v52@@ = Number ; @@v39@@ = Number L ; @@v40@@ = Number L ; @@v38@@ = Number ; @@v51@@ = Number ; @@v41@@ = * ( _QWORD * ) ( @@a1@@ + Number ) ; @@v46@@ = * ( _DWORD * ) ( @@a1@@ + Number ) ; @@v47@@ = Number ; if ( @@a3@@ ) { * ( _DWORD * ) ( @@a3@@ + Number ) = Number ; * ( _DWORD * ) ( @@a3@@ + Number ) = * ( _DWORD * ) ( @@a3@@ + Number ) ; } else { if ( ! @@a4@@ ) abort ( ) ; * ( _DWORD * ) ( @@a4@@ + Number ) = Number ; * ( _DWORD * ) ( @@a4@@ + Number ) = * ( _DWORD * ) ( @@a4@@ + Number ) ; } while ( Number ) { @@v53@@ = @@v51@@ ? ( unsigned int ) slow_copy ( ( __int64 ) @@v35@@ , ( __int64 ) & @@v42@@ , @@v41@@ + Number L * @@v34@@ , @@a5@@ , @@a6@@ , ( __int64 ) @@v37@@ , @@a8@@ ) : ( unsigned int ) @@a8@@ ( ( __int64 ) & @@v42@@ , @@v41@@ + Number L * @@v34@@ , Number L ) ; if ( @@v53@@ ) break ; v8 = @@v44@@ ; if ( ( ( unsigned __int16 ) v8 & ( unsigned __int16 ) cpu_to_vringh16 ( @@v35@@ , Number ) ) != Number ) { @@v48@@ = vringh64_to_cpu ( @@v35@@ , @@v42@@ ) ; @@v36@@ = ( unsigned int ) vringh32_to_cpu ( @@v35@@ , @@v43@@ ) ; if ( @@a5@@ ( ( __int64 ) @@v35@@ , @@v48@@ , & @@v36@@ , ( __int64 ) & @@v38@@ , @@a6@@ ) != Number ) return ( unsigned int ) Number ; v12 = vringh32_to_cpu ( @@v35@@ , @@v43@@ ) ; if ( v12 != @@v36@@ ) { @@v51@@ = Number ; @@v37@@ [ Number ] = @@v38@@ ; @@v37@@ [ Number ] = @@v39@@ ; @@v37@@ [ Number ] = @@v40@@ ; } @@v49@@ = @@v40@@ + @@v48@@ ; @@v53@@ = move_to_indirect ( @@v35@@ , & @@v47@@ , & @@v34@@ , @@v40@@ + @@v48@@ , ( __int64 ) & @@v42@@ , & @@v41@@ , ( unsigned int * ) & @@v46@@ ) ; if ( @@v53@@ ) return @@v53@@ ; } else { v13 = @@v52@@ ++ ; if ( v13 == * ( ( _DWORD * ) @@v35@@ + Number ) ) { vringh_bad ( String , @@v41@@ , v13 , v9 , v10 , v11 ) ; return ( unsigned int ) Number ; } v14 = @@v44@@ ; if ( ( ( unsigned __int16 ) v14 & ( unsigned __int16 ) cpu_to_vringh16 ( @@v35@@ , Number ) ) != Number ) { @@v50@@ = @@a4@@ ; } else { @@v50@@ = @@a3@@ ; if ( @@a4@@ && * ( _DWORD * ) ( @@a4@@ + Number ) ) { vringh_bad ( String , Number L * @@v34@@ + @@v41@@ , Number L * @@v34@@ , v16 , v17 , v18 ) ; return ( unsigned int ) Number ; } } if ( ! @@v50@@ ) { if ( @@a4@@ ) v19 = String ; else v19 = String ; vringh_bad ( String , ( __int64 ) v19 , v15 , v16 , v17 , v18 , @@a6@@ , @@a5@@ ) ; return ( unsigned int ) Number ; } while ( Number ) { @@v36@@ = ( unsigned int ) vringh32_to_cpu ( @@v35@@ , @@v43@@ ) ; v20 = vringh64_to_cpu ( @@v35@@ , @@v42@@ ) ; if ( @@a5@@ ( ( __int64 ) @@v35@@ , v20 , & @@v36@@ , ( __int64 ) & @@v38@@ , @@a6@@ ) != Number ) return ( unsigned int ) Number ; v21 = vringh64_to_cpu ( @@v35@@ , @@v42@@ ) ; @@v49@@ = @@v40@@ + v21 ; if ( * ( _DWORD * ) ( @@v50@@ + Number ) == ( * ( _DWORD * ) ( @@v50@@ + Number ) & Number ) ) { @@v53@@ = resize_iovec ( @@v50@@ , @@a7@@ ) ; if ( @@v53@@ ) return @@v53@@ ; } * ( _QWORD * ) ( Number L * * ( unsigned int * ) ( @@v50@@ + Number ) + * ( _QWORD * ) @@v50@@ ) = @@v49@@ ; * ( _QWORD * ) ( Number L * ( unsigned int ) ( * ( _DWORD * ) ( @@v50@@ + Number ) ) ++ + * ( _QWORD * ) @@v50@@ + Number ) = @@v36@@ ; v22 = vringh32_to_cpu ( @@v35@@ , @@v43@@ ) ; if ( v22 == @@v36@@ ) break ; v23 = vringh32_to_cpu ( @@v35@@ , @@v43@@ ) ; @@v43@@ = cpu_to_vringh32 ( @@v35@@ , v23 - ( int ) @@v36@@ ) ; v24 = vringh64_to_cpu ( @@v35@@ , @@v42@@ ) ; @@v42@@ = cpu_to_vringh64 ( @@v35@@ , v24 + @@v36@@ ) ; } v25 = @@v44@@ ; if ( ( ( unsigned __int16 ) v25 & ( unsigned __int16 ) cpu_to_vringh16 ( @@v35@@ , Number ) ) != Number ) { @@v34@@ = vringh16_to_cpu ( @@v35@@ , @@v45@@ ) ; } else { if ( @@v47@@ <= Number ) return Number L ; @@v34@@ = return_from_indirect ( ( __int64 ) @@v35@@ , & @@v47@@ , & @@v41@@ , & @@v46@@ ) ; @@v51@@ = Number ; } if ( @@v34@@ >= @@v46@@ ) { vringh_bad ( String , @@v34@@ , ( unsigned int ) @@v46@@ , v26 , v27 , v28 ) ; return ( unsigned int ) Number ; } } } return @@v53@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "r64"}, {"n": "a5", "t": {"T": 9, "n": "unsigned __int8 (__fastcall *)(__int64, __int64, __int64 *, __int64, __int64)"}, "location": "r72"}, {"n": "a6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r80"}, {"n": "a7", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s-16"}, {"n": "a8", "t": {"T": 9, "n": "__int64 (__fastcall *)(__int64, __int64, __int64)"}, "location": "s-24"}, {"n": "v39", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s104"}, {"n": "v38", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s112"}, {"n": "v37", "t": {"T": 2, "n": 4, "s": 8, "t": "__int64"}, "location": "s144"}, {"n": "v36", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s152"}, {"n": "v35", "t": {"T": 3, "t": "_BYTE"}, "location": "s168"}, {"n": "v34", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s172"}, {"n": "v53", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s20"}, {"n": "v52", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s24"}, {"n": "v51", "t": {"T": 1, "n": "char", "s": 1}, "location": "s25"}, {"n": "v50", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s40"}, {"n": "v49", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s48"}, {"n": "v48", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s56"}, {"n": "v47", "t": {"T": 1, "n": "int", "s": 4}, "location": "s60"}, {"n": "v46", "t": {"T": 1, "n": "int", "s": 4}, "location": "s64"}, {"n": "v45", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s66"}, {"n": "v44", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s68"}, {"n": "v43", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s72"}, {"n": "v42", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s80"}, {"n": "v41", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s88"}, {"n": "v40", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s96"}]} {"name": "__vringh_complete", "code": "__int64 __fastcall _vringh_complete ( __int64 @@a1@@ , __int64 @@a2@@ , unsigned int @@a3@@ , __int64 ( __fastcall * @@a4@@ ) ( __int64 , __int64 , _QWORD ) , __int64 ( __fastcall * @@a5@@ ) ( __int64 , __int64 , _QWORD ) ) { __int64 v5 ; __int64 v6 ; __int64 @@result@@ ; __int64 v8 ; __int64 v9 ; __int64 v10 ; __int64 v11 ; unsigned __int16 @@v15@@ ; unsigned __int16 @@v16@@ ; unsigned __int16 @@v17@@ ; __int64 @@v18@@ ; unsigned int v19 ; unsigned int v20 ; @@v18@@ = * ( _QWORD * ) ( @@a1@@ + Number ) ; @@v17@@ = * ( _WORD * ) ( @@a1@@ + Number ) + * ( _DWORD * ) ( @@a1@@ + Number ) ; @@v16@@ = ( unsigned int ) @@v17@@ % * ( _DWORD * ) ( @@a1@@ + Number ) ; if ( @@a3@@ <= Number || @@a3@@ + @@v16@@ < * ( _DWORD * ) ( @@a1@@ + Number ) ) { v19 = @@a5@@ ( Number L * @@v16@@ + @@v18@@ + Number , @@a2@@ , @@a3@@ ) ; } else { @@v15@@ = * ( _DWORD * ) ( @@a1@@ + Number ) - @@v16@@ ; v19 = @@a5@@ ( Number L * @@v16@@ + @@v18@@ + Number , @@a2@@ , @@v15@@ ) ; if ( ! v19 ) v19 = @@a5@@ ( @@v18@@ + Number , Number L * @@v15@@ + @@a2@@ , @@a3@@ - @@v15@@ ) ; } if ( v19 ) { vringh_bad ( String , @@a3@@ , @@v16@@ , Number L * @@v16@@ + @@v18@@ + Number , v5 , v6 ) ; @@result@@ = v19 ; } else { virtio_wmb ( * ( unsigned __int8 * ) ( @@a1@@ + Number ) ) ; v20 = @@a4@@ ( @@a1@@ , * ( _QWORD * ) ( @@a1@@ + Number ) + Number L , ( unsigned __int16 ) ( @@a3@@ + @@v17@@ ) ) ; if ( v20 ) { vringh_bad ( String , * ( _QWORD * ) ( @@a1@@ + Number ) + Number L , v8 , v9 , v10 , v11 ) ; @@result@@ = v20 ; } else { * ( _DWORD * ) ( @@a1@@ + Number ) += @@a3@@ ; @@result@@ = Number L ; } } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 9, "n": "__int64 (__fastcall *)(__int64, __int64, _QWORD)"}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "a5", "t": {"T": 9, "n": "__int64 (__fastcall *)(__int64, __int64, _QWORD)"}, "location": "r72"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v18", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v17", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s18"}, {"n": "v16", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s20"}, {"n": "v15", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s22"}]} {"name": "__vringh_need_notify", "code": "__int64 __fastcall _vringh_need_notify ( __int64 @@a1@@ , __int64 ( __fastcall * @@a2@@ ) ( __int64 , __int16 * , __int64 ) ) { __int64 @@v2@@ ; __int64 v3 ; __int64 v4 ; __int64 v5 ; __int64 @@result@@ ; __int64 v7 ; __int64 v8 ; __int64 v9 ; __int16 @@v10@@ ; __int16 @@v11@@ ; unsigned int @@v12@@ ; bool @@v13@@ ; virtio_mb ( * ( unsigned __int8 * ) ( @@a1@@ + Number ) ) ; if ( * ( _BYTE * ) ( @@a1@@ + Number ) != Number ) { @@v12@@ = @@a2@@ ( @@a1@@ , & @@v10@@ , * ( _QWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v12@@ ) { vringh_bad ( String , * ( _QWORD * ) ( @@a1@@ + Number ) , @@v2@@ , v3 , v4 , v5 ) ; @@result@@ = @@v12@@ ; } else { @@result@@ = ( @@v10@@ & Number ) == Number ; } } else { @@v12@@ = @@a2@@ ( @@a1@@ , & @@v11@@ , * ( _QWORD * ) ( @@a1@@ + Number ) + Number L * * ( unsigned int * ) ( @@a1@@ + Number ) + Number ) ; if ( @@v12@@ ) { vringh_bad ( String , * ( _QWORD * ) ( @@a1@@ + Number ) + Number L * * ( unsigned int * ) ( @@a1@@ + Number ) + Number , * ( _QWORD * ) ( @@a1@@ + Number ) , v7 , v8 , v9 ) ; @@result@@ = @@v12@@ ; } else { if ( * ( _DWORD * ) ( @@a1@@ + Number ) <= Number ) @@v13@@ = vring_need_event ( @@v11@@ , * ( _WORD * ) ( @@a1@@ + Number ) + ( unsigned __int16 ) * ( _DWORD * ) ( @@a1@@ + Number ) , * ( _WORD * ) ( @@a1@@ + Number ) ) ; else @@v13@@ = Number ; * ( _WORD * ) ( @@a1@@ + Number ) += * ( _DWORD * ) ( @@a1@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; @@result@@ = @@v13@@ ; } } return @@result@@ ; }", "source": [{"n": "v2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 9, "n": "__int64 (__fastcall *)(__int64, __int16 *, __int64)"}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v13", "t": {"T": 1, "n": "bool", "s": 1}, "location": "s1"}, {"n": "v11", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s10"}, {"n": "v10", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "s12"}, {"n": "v12", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s8"}]} {"name": "__vringh_notify_enable", "code": "bool __fastcall _vringh_notify_enable ( __int64 @@a1@@ , unsigned int ( __fastcall * @@a2@@ ) ( __int64 , unsigned __int16 * , __int64 ) , unsigned int ( __fastcall * @@a3@@ ) ( __int64 , __int64 , _QWORD ) ) { __int64 v3 ; __int64 v4 ; __int64 v5 ; __int64 v6 ; __int64 v8 ; __int64 v9 ; __int64 v10 ; __int64 v11 ; __int64 v12 ; __int64 v13 ; __int64 v14 ; unsigned __int16 @@v15@@ ; if ( * ( _BYTE * ) ( @@a1@@ + Number ) != Number ) { if ( @@a3@@ ( @@a1@@ , * ( _QWORD * ) ( @@a1@@ + Number ) , Number L ) ) { vringh_bad ( String , * ( _QWORD * ) ( @@a1@@ + Number ) , v3 , v4 , v5 , v6 ) ; return Number ; } } else if ( @@a3@@ ( @@a1@@ , * ( _QWORD * ) ( @@a1@@ + Number ) + Number L * * ( unsigned int * ) ( @@a1@@ + Number ) + Number , * ( unsigned __int16 * ) ( @@a1@@ + Number ) ) ) { vringh_bad ( String , * ( _QWORD * ) ( @@a1@@ + Number ) + Number L * * ( unsigned int * ) ( @@a1@@ + Number ) + Number , * ( _QWORD * ) ( @@a1@@ + Number ) , v8 , v9 , v10 ) ; return Number ; } virtio_mb ( * ( unsigned __int8 * ) ( @@a1@@ + Number ) ) ; if ( ! @@a2@@ ( @@a1@@ , & @@v15@@ , * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ) return * ( _WORD * ) ( @@a1@@ + Number ) == @@v15@@ ; vringh_bad ( String , * ( _QWORD * ) ( @@a1@@ + Number ) + Number L , v11 , v12 , v13 , v14 ) ; return Number ; }", "source": [{"n": "a3", "t": {"T": 9, "n": "unsigned int (__fastcall *)(__int64, __int64, _QWORD)"}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 9, "n": "unsigned int (__fastcall *)(__int64, unsigned __int16 *, __int64)"}, "location": "r64"}, {"n": "v15", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s2"}]} {"name": "__vringh_notify_disable", "code": "int __fastcall _vringh_notify_disable ( __int64 @@a1@@ , __int64 ( __fastcall * @@a2@@ ) ( __int64 , _QWORD , __int64 ) ) { int @@result@@ ; __int64 @@v3@@ ; __int64 @@v4@@ ; __int64 @@v5@@ ; __int64 @@v6@@ ; @@result@@ = * ( unsigned __int8 * ) ( @@a1@@ + Number ) ^ Number ; if ( * ( _BYTE * ) ( @@a1@@ + Number ) != Number ) { @@result@@ = @@a2@@ ( @@a1@@ , * ( _QWORD * ) ( @@a1@@ + Number ) , Number L ) ; if ( @@result@@ ) @@result@@ = vringh_bad ( String , * ( _QWORD * ) ( @@a1@@ + Number ) , @@v3@@ , @@v4@@ , @@v5@@ , @@v6@@ ) ; } return @@result@@ ; }", "source": [{"n": "v3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "v4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 9, "n": "__int64 (__fastcall *)(__int64, _QWORD, __int64)"}, "location": "r64"}, {"n": "v5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r72"}, {"n": "result", "t": {"T": 1, "n": "int", "s": 4}, "location": "r8"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r80"}]} {"name": "vringh_init_user", "code": "__int64 __fastcall vringh_init_user ( __int64 @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ , __int64 @@a5@@ , __int64 @@a6@@ , __int64 @@a7@@ ) { __int64 @@result@@ ; if ( ( _DWORD ) @@a3@@ && ( unsigned int ) @@a3@@ <= Number && ( ( unsigned int ) @@a3@@ & ( ( _DWORD ) @@a3@@ - Number ) ) == Number ) { * ( _BYTE * ) @@a1@@ = ( @@a2@@ & Number ) != Number ; * ( _BYTE * ) ( @@a1@@ + Number ) = ( @@a2@@ & Number ) != Number ; * ( _BYTE * ) ( @@a1@@ + Number ) = @@a4@@ ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; * ( _WORD * ) ( @@a1@@ + Number ) = Number ; * ( _WORD * ) ( @@a1@@ + Number ) = Number ; * ( _DWORD * ) ( @@a1@@ + Number ) = @@a3@@ ; * ( _QWORD * ) ( @@a1@@ + Number ) = @@a5@@ ; * ( _QWORD * ) ( @@a1@@ + Number ) = @@a6@@ ; * ( _QWORD * ) ( @@a1@@ + Number ) = @@a7@@ ; @@result@@ = Number L ; } else { vringh_bad ( String , ( unsigned int ) @@a3@@ , @@a3@@ , @@a4@@ , @@a5@@ , @@a6@@ ) ; @@result@@ = Number L ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r72"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "a6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r80"}, {"n": "a7", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s-16"}]} {"name": "vringh_init_kern", "code": "__int64 __fastcall vringh_init_kern ( __int64 @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ , __int64 @@a5@@ , __int64 @@a6@@ , __int64 @@a7@@ ) { __int64 @@result@@ ; if ( ( _DWORD ) @@a3@@ && ( unsigned int ) @@a3@@ <= Number && ( ( unsigned int ) @@a3@@ & ( ( _DWORD ) @@a3@@ - Number ) ) == Number ) { * ( _BYTE * ) @@a1@@ = ( @@a2@@ & Number ) != Number ; * ( _BYTE * ) ( @@a1@@ + Number ) = ( @@a2@@ & Number ) != Number ; * ( _BYTE * ) ( @@a1@@ + Number ) = @@a4@@ ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; * ( _WORD * ) ( @@a1@@ + Number ) = Number ; * ( _WORD * ) ( @@a1@@ + Number ) = Number ; * ( _DWORD * ) ( @@a1@@ + Number ) = @@a3@@ ; * ( _QWORD * ) ( @@a1@@ + Number ) = @@a5@@ ; * ( _QWORD * ) ( @@a1@@ + Number ) = @@a6@@ ; * ( _QWORD * ) ( @@a1@@ + Number ) = @@a7@@ ; @@result@@ = Number L ; } else { vringh_bad ( String , ( unsigned int ) @@a3@@ , @@a3@@ , @@a4@@ , @@a5@@ , @@a6@@ ) ; @@result@@ = Number L ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r72"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "a6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r80"}, {"n": "a7", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s-16"}]}