{"name": "ff_thread_flush", "code": "_QWORD * __fastcall ff_thread_flush ( __int64 @@a1@@ ) { _QWORD * @@result@@ ; __int64 @@v2@@ ; _QWORD * @@v3@@ ; int @@i@@ ; @@result@@ = * ( _QWORD * * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ; @@v3@@ = @@result@@ ; if ( @@result@@ ) { park_frame_worker_threads ( @@result@@ , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v3@@ [ Number ] && @@v3@@ [ Number ] != * @@v3@@ ) update_context_from_thread ( * ( _QWORD * ) ( * @@v3@@ + Number L ) , * ( _QWORD * ) ( @@v3@@ [ Number ] + Number L ) , Number ) ; * ( ( _DWORD * ) @@v3@@ + Number ) = Number ; * ( ( _DWORD * ) @@v3@@ + Number ) = * ( ( _DWORD * ) @@v3@@ + Number ) ; * ( ( _DWORD * ) @@v3@@ + Number ) = Number ; @@v3@@ [ Number ] = Number L ; for ( @@i@@ = Number ; ; ++ @@i@@ ) { @@result@@ = ( _QWORD * ) * ( unsigned int * ) ( @@a1@@ + Number ) ; if ( @@i@@ >= ( int ) @@result@@ ) break ; @@v2@@ = * @@v3@@ + Number L * @@i@@ ; * ( _DWORD * ) ( @@v2@@ + Number ) = Number ; av_frame_unref ( * ( _QWORD * ) ( @@v2@@ + Number ) ) ; * ( _DWORD * ) ( @@v2@@ + Number ) = Number ; release_delayed_buffers ( ( __int64 * ) @@v2@@ ) ; if ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ) ( * ( void ( __fastcall * * ) ( _QWORD ) ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ) ( * ( _QWORD * ) ( @@v2@@ + Number ) ) ; } } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "result", "t": {"T": 3, "t": "_QWORD"}, "location": "r8"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v3", "t": {"T": 3, "t": "_QWORD"}, "location": "s24"}, {"n": "v2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s32"}]}
{"name": "frame_worker_thread", "code": "void * __fastcall frame_worker_thread ( void * @@a1@@ ) { __int64 @@v2@@ ; __int64 @@v3@@ ; @@v3@@ = * ( ( _QWORD * ) @@a1@@ + Number ) ; @@v2@@ = * ( _QWORD * ) ( @@v3@@ + Number ) ; pthread_mutex_lock ( ( pthread_mutex_t * ) ( ( char * ) @@a1@@ + Number ) ) ; while ( Number ) { while ( ! * ( ( _DWORD * ) @@a1@@ + Number ) && ! * ( ( _DWORD * ) @@a1@@ + Number ) ) pthread_cond_wait ( ( pthread_cond_t * ) ( ( char * ) @@a1@@ + Number ) , ( pthread_mutex_t * ) ( ( char * ) @@a1@@ + Number ) ) ; if ( * ( ( _DWORD * ) @@a1@@ + Number ) ) break ; if ( ! * ( _QWORD * ) ( @@v2@@ + Number ) && ( * ( _DWORD * ) ( @@v3@@ + Number ) || * ( _UNKNOWN * * ) ( @@v3@@ + Number ) == & avcodec_default_get_buffer2 ) ) ff_thread_finish_setup ( @@v3@@ ) ; if ( * ( ( _DWORD * ) @@a1@@ + Number ) ) { av_log ( Number L , Number L , String , String , String , Number L ) ; abort ( ) ; } if ( * ( _QWORD * ) ( @@v3@@ + Number ) ) { pthread_mutex_lock ( ( pthread_mutex_t * ) ( * ( _QWORD * ) @@a1@@ + Number L ) ) ; * ( ( _DWORD * ) @@a1@@ + Number ) = Number ; } av_frame_unref ( * ( ( _QWORD * ) @@a1@@ + Number ) ) ; * ( ( _DWORD * ) @@a1@@ + Number ) = Number ; * ( ( _DWORD * ) @@a1@@ + Number ) = ( * ( __int64 ( __fastcall * * ) ( __int64 , _QWORD , char * , char * ) ) ( @@v2@@ + Number ) ) ( @@v3@@ , * ( ( _QWORD * ) @@a1@@ + Number ) , ( char * ) @@a1@@ + Number , ( char * ) @@a1@@ + Number ) ; if ( ( * ( ( int * ) @@a1@@ + Number ) < Number || ! * ( ( _DWORD * ) @@a1@@ + Number ) ) && * ( _QWORD * ) ( * ( ( _QWORD * ) @@a1@@ + Number ) + Number L ) ) { if ( * ( _DWORD * ) ( * ( _QWORD * ) ( @@v3@@ + Number ) + Number L ) ) av_log ( @@v3@@ , Number L , String ) ; av_frame_unref ( * ( ( _QWORD * ) @@a1@@ + Number ) ) ; } if ( * ( ( _DWORD * ) @@a1@@ + Number ) == Number ) ff_thread_finish_setup ( @@v3@@ ) ; if ( * ( ( _DWORD * ) @@a1@@ + Number ) ) { * ( ( _DWORD * ) @@a1@@ + Number ) = Number ; pthread_mutex_unlock ( ( pthread_mutex_t * ) ( * ( _QWORD * ) @@a1@@ + Number L ) ) ; } if ( * ( ( _DWORD * ) @@a1@@ + Number ) ) { * ( ( _DWORD * ) @@a1@@ + Number ) = Number ; async_unlock ( * ( _QWORD * ) @@a1@@ ) ; } pthread_mutex_lock ( ( pthread_mutex_t * ) ( ( char * ) @@a1@@ + Number ) ) ; * ( ( _DWORD * ) @@a1@@ + Number ) = Number ; _mm_mfence ( ) ; pthread_cond_broadcast ( ( pthread_cond_t * ) ( ( char * ) @@a1@@ + Number ) ) ; pthread_cond_signal ( ( pthread_cond_t * ) ( ( char * ) @@a1@@ + Number ) ) ; pthread_mutex_unlock ( ( pthread_mutex_t * ) ( ( char * ) @@a1@@ + Number ) ) ; } pthread_mutex_unlock ( ( pthread_mutex_t * ) ( ( char * ) @@a1@@ + Number ) ) ; return Number L ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "void"}, "location": "r56"}, {"n": "v3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s32"}]} {"name": "update_context_from_thread", "code": "__int64 __fastcall update_context_from_thread ( __int64 @@a1@@ , __int64 @@a2@@ , int @@a3@@ ) { unsigned int @@v5@@ ; @@v5@@ = Number ; if ( @@a1@@ != @@a2@@ && ( @@a3@@ || ( * ( _DWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) & Number ) == Number ) ) { * ( _QWORD * ) ( @@a1@@ + Number ) = * ( _QWORD * ) ( @@a2@@ + Number ) ; * ( _QWORD * ) ( @@a1@@ + Number ) = * ( _QWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _QWORD * ) ( @@a1@@ + Number ) = * ( _QWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _QWORD * ) ( @@a1@@ + Number ) = * ( _QWORD * ) ( @@a2@@ + Number ) ; * ( _QWORD * ) ( @@a1@@ + Number ) = * ( _QWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; * ( _QWORD * ) ( @@a1@@ + Number ) = * ( _QWORD * ) ( @@a2@@ + Number ) ; * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) = * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) ; if ( ( * ( _QWORD * ) ( @@a1@@ + Number ) != Number L ) != ( * ( _QWORD * ) ( @@a2@@ + Number ) != Number L ) || * ( _QWORD * ) ( @@a1@@ + Number ) && * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) != * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) ) { av_buffer_unref ( @@a1@@ + Number ) ; if ( * ( _QWORD * ) ( @@a2@@ + Number ) ) { * ( _QWORD * ) ( @@a1@@ + Number ) = av_buffer_ref ( * ( _QWORD * ) ( @@a2@@ + Number ) ) ; if ( ! * ( _QWORD * ) ( @@a1@@ + Number ) ) return Number L ; } } * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) ; } if ( @@a3@@ ) { * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a2@@ + Number ) - Number ; * ( _QWORD * ) ( @@a1@@ + Number ) = * ( _QWORD * ) ( @@a2@@ + Number ) ; } else if ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ) { @@v5@@ = ( * ( __int64 ( __fastcall * * ) ( __int64 , __int64 ) ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ) ( @@a1@@ , @@a2@@ ) ; } return @@v5@@ ; }", "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": "v5", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}]} {"name": "release_delayed_buffers", "code": "__int64 __fastcall release_delayed_buffers ( __int64 * @@a1@@ ) { __int64 @@v1@@ ; __int64 @@result@@ ; __int64 @@v3@@ ; __int64 @@i@@ ; for ( @@i@@ = * @@a1@@ ; ; pthread_mutex_unlock ( ( pthread_mutex_t * ) ( @@i@@ + Number ) ) ) { @@result@@ = * ( ( unsigned int * ) @@a1@@ + Number ) ; if ( ( int ) @@result@@ <= Number ) break ; pthread_mutex_lock ( ( pthread_mutex_t * ) ( @@i@@ + Number ) ) ; if ( * ( _DWORD * ) ( @@a1@@ [ Number ] + Number ) ) { if ( * ( _DWORD * ) ( @@a1@@ [ Number ] + Number ) != Number ) { av_log ( Number L , Number L , String , String , String , Number L ) ; abort ( ) ; } } @@v1@@ = @@a1@@ [ Number ] ; @@v3@@ = @@v1@@ + Number L * ( int ) -- * ( ( _DWORD * ) @@a1@@ + Number ) ; * ( _QWORD * ) ( @@v3@@ + Number ) = @@v3@@ ; av_frame_unref ( @@v3@@ ) ; } return @@result@@ ; }", "source": [{"n": "v1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "__int64"}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "i", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}]} {"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"}]}