{"name": "parse", "code": "__int64 __fastcall parse ( int * * @@a1@@ , __int64 @@a2@@ , __int64 * @@a3@@ , int * @@a4@@ , __int64 @@a5@@ , unsigned int @@a6@@ ) { __int64 @@result@@ ; unsigned int @@v11@@ ; __int64 @@v12@@ ; unsigned int @@v14@@ ; unsigned int @@v15@@ ; unsigned int @@v16@@ ; unsigned int @@v17@@ ; int @@v18@@ ; int @@v19@@ ; int @@v20@@ ; int * @@v22@@ ; int @@v23@@ ; unsigned __int8 * @@v24@@ ; int @@v25@@ ; @@v12@@ = @@a5@@ ; @@v11@@ = @@a6@@ ; @@v22@@ = * @@a1@@ ; if ( ( int ) @@a6@@ <= Number ) { * @@a4@@ = Number ; * @@a3@@ = @@a5@@ ; return Number L ; } if ( * @@v22@@ > Number ) { * @@a3@@ = @@a5@@ ; * @@a4@@ = @@v22@@ [ ( * @@v22@@ ) -- ] ; parse_frame ( ( __int64 ) @@a1@@ , * @@a3@@ , * @@a4@@ ) ; if ( * @@v22@@ <= Number ) @@result@@ = @@v11@@ ; else @@result@@ = ( unsigned int ) * @@a4@@ ; return @@result@@ ; } @@v20@@ = * ( unsigned __int8 * ) ( ( int ) @@a6@@ - Number L + @@a5@@ ) ; if ( ( @@v20@@ & Number ) != Number ) goto LABEL_60 ; @@v19@@ = ( ( @@v20@@ >> Number ) & Number ) + Number ; @@v25@@ = ( @@v20@@ & Number ) + Number ; @@v18@@ = @@v19@@ * @@v25@@ + Number ; if ( ( int ) @@a6@@ < @@v18@@ || @@v20@@ != * ( unsigned __int8 * ) ( ( int ) ( @@a6@@ - @@v18@@ ) + @@a5@@ ) ) goto LABEL_60 ; @@v24@@ = ( unsigned __int8 * ) ( ( int ) @@a6@@ - ( __int64 ) @@v18@@ + Number + @@a5@@ ) ; @@v23@@ = Number ; if ( ( ( @@v20@@ >> Number ) & Number ) == Number ) { while ( @@v25@@ -- ) { @@v17@@ = * ( _DWORD * ) @@v24@@ ; @@v24@@ += Number ; if ( ! @@v17@@ || @@v17@@ > @@v11@@ ) { * @@v22@@ = Number ; * @@a4@@ = @@v11@@ ; * @@a3@@ = @@v12@@ ; av_log ( @@a2@@ , Number L , String , @@v17@@ , @@v11@@ ) ; return @@a6@@ ; } if ( @@v23@@ ) { @@v23@@ = Number ; * @@a3@@ = @@v12@@ ; * @@a4@@ = @@v17@@ ; * @@v22@@ = @@v25@@ ; } else { @@v22@@ [ @@v25@@ + Number ] = @@v17@@ ; } @@v12@@ += @@v17@@ ; @@v11@@ -= @@v17@@ ; } parse_frame ( ( __int64 ) @@a1@@ , * @@a3@@ , * @@a4@@ ) ; if ( * @@v22@@ <= Number ) @@result@@ = @@a6@@ ; else @@result@@ = ( unsigned int ) * @@a4@@ ; return @@result@@ ; } if ( @@v19@@ > Number ) { LABEL_60 : * @@a3@@ = @@a5@@ ; * @@a4@@ = @@a6@@ ; parse_frame ( ( __int64 ) @@a1@@ , @@a5@@ , @@a6@@ ) ; return @@v11@@ ; } if ( ( ( @@v20@@ >> Number ) & Number ) == Number ) { while ( @@v25@@ -- ) { @@v16@@ = ( @@v24@@ [ Number ] << Number ) | ( @@v24@@ [ Number ] << Number ) | * @@v24@@ ; @@v24@@ += Number ; if ( ! @@v16@@ || @@v16@@ > @@v11@@ ) { * @@v22@@ = Number ; * @@a4@@ = @@v11@@ ; * @@a3@@ = @@v12@@ ; av_log ( @@a2@@ , Number L , String , @@v16@@ , @@v11@@ ) ; return @@a6@@ ; } if ( @@v23@@ ) { @@v23@@ = Number ; * @@a3@@ = @@v12@@ ; * @@a4@@ = @@v16@@ ; * @@v22@@ = @@v25@@ ; } else { @@v22@@ [ @@v25@@ + Number ] = @@v16@@ ; } @@v12@@ += @@v16@@ ; @@v11@@ -= @@v16@@ ; } parse_frame ( ( __int64 ) @@a1@@ , * @@a3@@ , * @@a4@@ ) ; if ( * @@v22@@ <= Number ) @@result@@ = @@a6@@ ; else @@result@@ = ( unsigned int ) * @@a4@@ ; } else if ( ( ( @@v20@@ >> Number ) & Number ) != Number ) { if ( ( ( @@v20@@ >> Number ) & Number ) != Number ) goto LABEL_60 ; while ( @@v25@@ -- ) { @@v15@@ = * ( unsigned __int16 * ) @@v24@@ ; @@v24@@ += Number ; if ( ! @@v15@@ || @@v15@@ > @@v11@@ ) { * @@v22@@ = Number ; * @@a4@@ = @@v11@@ ; * @@a3@@ = @@v12@@ ; av_log ( @@a2@@ , Number L , String , @@v15@@ , @@v11@@ ) ; return @@a6@@ ; } if ( @@v23@@ ) { @@v23@@ = Number ; * @@a3@@ = @@v12@@ ; * @@a4@@ = @@v15@@ ; * @@v22@@ = @@v25@@ ; } else { @@v22@@ [ @@v25@@ + Number ] = @@v15@@ ; } @@v12@@ += @@v15@@ ; @@v11@@ -= @@v15@@ ; } parse_frame ( ( __int64 ) @@a1@@ , * @@a3@@ , * @@a4@@ ) ; if ( * @@v22@@ <= Number ) @@result@@ = @@a6@@ ; else @@result@@ = ( unsigned int ) * @@a4@@ ; } else { while ( @@v25@@ -- ) { @@v14@@ = * @@v24@@ ++ ; if ( ! @@v14@@ || @@v14@@ > @@v11@@ ) { * @@v22@@ = Number ; * @@a4@@ = @@v11@@ ; * @@a3@@ = @@v12@@ ; av_log ( @@a2@@ , Number L , String , @@v14@@ , @@v11@@ ) ; return @@a6@@ ; } if ( @@v23@@ ) { @@v23@@ = Number ; * @@a3@@ = @@v12@@ ; * @@a4@@ = @@v14@@ ; * @@v22@@ = @@v25@@ ; } else { @@v22@@ [ @@v25@@ + Number ] = @@v14@@ ; } @@v12@@ += @@v14@@ ; @@v11@@ -= @@v14@@ ; } parse_frame ( ( __int64 ) @@a1@@ , * @@a3@@ , * @@a4@@ ) ; if ( * @@v22@@ <= Number ) @@result@@ = @@a6@@ ; else @@result@@ = ( unsigned int ) * @@a4@@ ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "__int64"}, "location": "r16"}, {"n": "a4", "t": {"T": 3, "t": "int"}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "int *"}, "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": "unsigned int", "s": 4}, "location": "r80"}, {"n": "v12", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s112"}, {"n": "v11", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s116"}, {"n": "v25", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v24", "t": {"T": 3, "t": "unsigned __int8"}, "location": "s24"}, {"n": "v23", "t": {"T": 1, "n": "int", "s": 4}, "location": "s28"}, {"n": "v22", "t": {"T": 3, "t": "int"}, "location": "s40"}, {"n": "v20", "t": {"T": 1, "n": "int", "s": 4}, "location": "s48"}, {"n": "v19", "t": {"T": 1, "n": "int", "s": 4}, "location": "s52"}, {"n": "v18", "t": {"T": 1, "n": "int", "s": 4}, "location": "s56"}, {"n": "v17", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s60"}, {"n": "v16", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s64"}, {"n": "v15", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s68"}, {"n": "v14", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s72"}]}
{"name": "parse_frame", "code": "__int64 __fastcall parse_frame ( __int64 @@a1@@ , __int64 @@a2@@ , int @@a3@@ ) { int v4 ; int v5 ; char @@v6@@ [ Number ] ; int @@v7@@ ; unsigned int @@v8@@ ; __int64 @@v9@@ ; _BOOL4 @@v10@@ ; _BOOL4 @@v11@@ ; @@v9@@ = * ( _QWORD * ) @@a1@@ ; @@v8@@ = init_get_bits8 ( ( __int64 ) @@v6@@ , @@a2@@ , @@a3@@ ) ; if ( ( @@v8@@ & Number ) != Number ) return @@v8@@ ; get_bits ( ( __int64 ) @@v6@@ , Number ) ; @@v7@@ = get_bits1 ( ( __int64 ) @@v6@@ ) ; v4 = get_bits1 ( ( __int64 ) @@v6@@ ) ; @@v7@@ |= Number * v4 ; if ( @@v7@@ == Number ) { v5 = get_bits1 ( ( __int64 ) @@v6@@ ) ; @@v7@@ += v5 ; } if ( ( unsigned int ) get_bits1 ( ( __int64 ) @@v6@@ ) ) { @@v11@@ = Number ; @@v10@@ = Number ; } else { @@v11@@ = get_bits1 ( ( __int64 ) @@v6@@ ) == Number ; @@v10@@ = get_bits1 ( ( __int64 ) @@v6@@ ) == Number ; } if ( @@v11@@ ) { * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; } else { * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; } if ( @@v10@@ ) { if ( * ( _QWORD * ) ( @@a1@@ + Number ) != Number ) { * ( _QWORD * ) ( @@v9@@ + Number ) = * ( _QWORD * ) ( @@a1@@ + Number ) ; * ( _QWORD * ) ( @@a1@@ + Number ) = Number ; } } else { if ( * ( _QWORD * ) ( @@a1@@ + Number ) == Number ) * ( _QWORD * ) ( @@a1@@ + Number ) = * ( _QWORD * ) ( @@v9@@ + Number ) ; * ( _QWORD * ) ( @@v9@@ + Number ) = Number ; } return Number L ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v9", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v8", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s20"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "s24"}, {"n": "v11", "t": {"T": 1, "n": "_BOOL4", "s": 4}, "location": "s4"}, {"n": "v6", "t": {"T": 2, "n": 40, "s": 1, "t": "char"}, "location": "s64"}, {"n": "v10", "t": {"T": 1, "n": "_BOOL4", "s": 4}, "location": "s8"}]}