{"name": "async_lock", "code": "int __fastcall async_lock ( __int64 @@a1@@ ) { pthread_mutex_lock ( ( pthread_mutex_t * ) ( @@a1@@ + Number ) ) ; while ( * ( _DWORD * ) ( @@a1@@ + Number ) ) pthread_cond_wait ( ( pthread_cond_t * ) ( @@a1@@ + Number ) , ( pthread_mutex_t * ) ( @@a1@@ + Number ) ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; return pthread_mutex_unlock ( ( pthread_mutex_t * ) ( @@a1@@ + Number ) ) ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}]}
{"name": "ff_thread_decode_frame", "code": "__int64 __fastcall ff_thread_decode_frame ( __int64 @@a1@@ , __int64 @@a2@@ , _DWORD * @@a3@@ , __int64 @@a4@@ ) { int @@v4@@ ; __int64 @@v8@@ ; __int64 @@v9@@ ; int @@v10@@ ; int @@v11@@ ; @@v9@@ = * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ; @@v11@@ = * ( _DWORD * ) ( @@v9@@ + Number ) ; async_unlock ( @@v9@@ ) ; @@v10@@ = submit_packet ( ( __int64 * ) ( * ( _QWORD * ) @@v9@@ + Number L * * ( int * ) ( @@v9@@ + Number ) ) , @@a1@@ , @@a4@@ ) ; if ( ! @@v10@@ ) { if ( * ( _DWORD * ) ( @@v9@@ + Number ) > * ( _DWORD * ) ( @@a1@@ + Number ) - Number - ( * ( _DWORD * ) ( @@a1@@ + Number ) == Number ) ) * ( _DWORD * ) ( @@v9@@ + Number ) = Number ; if ( * ( _DWORD * ) ( @@v9@@ + Number ) && ( * @@a3@@ = Number , * ( _DWORD * ) ( @@a4@@ + Number ) ) ) { @@v10@@ = * ( _DWORD * ) ( @@a4@@ + Number ) ; } else { do { @@v4@@ = @@v11@@ ++ ; @@v8@@ = * ( _QWORD * ) @@v9@@ + Number L * @@v4@@ ; if ( * ( _DWORD * ) ( @@v8@@ + Number ) ) { pthread_mutex_lock ( ( pthread_mutex_t * ) ( @@v8@@ + Number ) ) ; while ( * ( _DWORD * ) ( @@v8@@ + Number ) ) pthread_cond_wait ( ( pthread_cond_t * ) ( @@v8@@ + Number ) , ( pthread_mutex_t * ) ( @@v8@@ + Number ) ) ; pthread_mutex_unlock ( ( pthread_mutex_t * ) ( @@v8@@ + Number ) ) ; } av_frame_move_ref ( @@a2@@ , * ( _QWORD * ) ( @@v8@@ + Number ) ) ; * @@a3@@ = * ( _DWORD * ) ( @@v8@@ + Number ) ; * ( _QWORD * ) ( @@a2@@ + Number ) = * ( _QWORD * ) ( @@v8@@ + Number ) ; @@v10@@ = * ( _DWORD * ) ( @@v8@@ + Number ) ; * ( _DWORD * ) ( @@v8@@ + Number ) = Number ; * ( _DWORD * ) ( @@v8@@ + Number ) = Number ; if ( @@v11@@ >= * ( _DWORD * ) ( @@a1@@ + Number ) ) @@v11@@ = Number ; } while ( ! * ( _DWORD * ) ( @@a4@@ + Number ) && ! * @@a3@@ && @@v10@@ >= Number && @@v11@@ != * ( _DWORD * ) ( @@v9@@ + Number ) ) ; update_context_from_thread ( @@a1@@ , * ( _QWORD * ) ( @@v8@@ + Number ) , Number ) ; if ( * ( _DWORD * ) ( @@v9@@ + Number ) >= * ( _DWORD * ) ( @@a1@@ + Number ) ) * ( _DWORD * ) ( @@v9@@ + Number ) = Number ; * ( _DWORD * ) ( @@v9@@ + Number ) = @@v11@@ ; if ( @@v10@@ >= Number ) @@v10@@ = * ( _DWORD * ) ( @@a4@@ + Number ) ; } } async_lock ( @@v9@@ ) ; return ( unsigned int ) @@v10@@ ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "_DWORD"}, "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": "v4", "t": {"T": 1, "n": "int", "s": 4}, "location": "r8"}, {"n": "v11", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s16"}, {"n": "v9", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v8", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s32"}]} {"name": "ff_thread_finish_setup", "code": "int __fastcall ff_thread_finish_setup ( __int64 @@a1@@ ) { int @@result@@ ; _DWORD * @@v2@@ ; @@v2@@ = * ( _DWORD * * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ; @@result@@ = * ( _DWORD * ) ( @@a1@@ + Number ) & Number ; if ( @@result@@ ) { if ( * ( _QWORD * ) ( @@a1@@ + Number ) && ! @@v2@@ [ Number ] ) { pthread_mutex_lock ( ( pthread_mutex_t * ) ( * ( _QWORD * ) @@v2@@ + Number L ) ) ; @@v2@@ [ Number ] = Number ; } if ( * ( _QWORD * ) ( @@a1@@ + Number ) && ( * ( _DWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) & Number ) == Number ) { @@v2@@ [ Number ] = Number ; async_lock ( * ( _QWORD * ) @@v2@@ ) ; } pthread_mutex_lock ( ( pthread_mutex_t * ) ( @@v2@@ + Number ) ) ; if ( @@v2@@ [ Number ] == Number ) av_log ( @@a1@@ , Number L , String ) ; @@v2@@ [ Number ] = Number ; _mm_mfence ( ) ; pthread_cond_broadcast ( ( pthread_cond_t * ) ( @@v2@@ + Number ) ) ; @@result@@ = pthread_mutex_unlock ( ( pthread_mutex_t * ) ( @@v2@@ + Number ) ) ; } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "int", "s": 4}, "location": "r8"}, {"n": "v2", "t": {"T": 3, "t": "_DWORD"}, "location": "s16"}]} {"name": "park_frame_worker_threads", "code": "int __fastcall park_frame_worker_threads ( _QWORD * @@a1@@ , int @@a2@@ ) { __int64 @@v3@@ ; int @@i@@ ; async_unlock ( ( __int64 ) @@a1@@ ) ; for ( @@i@@ = Number ; @@i@@ < @@a2@@ ; ++ @@i@@ ) { @@v3@@ = * @@a1@@ + Number L * @@i@@ ; if ( * ( _DWORD * ) ( @@v3@@ + Number ) ) { pthread_mutex_lock ( ( pthread_mutex_t * ) ( @@v3@@ + Number ) ) ; while ( * ( _DWORD * ) ( @@v3@@ + Number ) ) pthread_cond_wait ( ( pthread_cond_t * ) ( @@v3@@ + Number ) , ( pthread_mutex_t * ) ( @@v3@@ + Number ) ) ; pthread_mutex_unlock ( ( pthread_mutex_t * ) ( @@v3@@ + Number ) ) ; } * ( _DWORD * ) ( @@v3@@ + Number ) = Number ; } return async_lock ( ( __int64 ) @@a1@@ ) ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}]}