{"name": "thread_get_buffer_internal", "code": "__int64 __fastcall thread_get_buffer_internal ( __int64 @@a1@@ , _QWORD * @@a2@@ , unsigned int @@a3@@ ) { _DWORD * @@v5@@ ; __int64 @@v6@@ ; unsigned int @@v7@@ ; @@v6@@ = * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ; @@a2@@ [ Number ] = @@a1@@ ; @@a2@@ [ Number ] = @@a2@@ [ Number ] ; if ( ( * ( _DWORD * ) ( @@a1@@ + Number ) & Number ) == Number ) return ff_get_buffer ( @@a1@@ , * @@a2@@ , @@a3@@ ) ; if ( * ( _DWORD * ) ( @@v6@@ + Number ) != Number && ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) || ! * ( _DWORD * ) ( @@a1@@ + Number ) && * ( _UNKNOWN * * ) ( @@a1@@ + Number ) != & avcodec_default_get_buffer2 ) ) { av_log ( @@a1@@ , Number L , String ) ; return Number ; } if ( * ( _DWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ) { @@a2@@ [ Number ] = av_buffer_alloc ( Number L ) ; if ( ! @@a2@@ [ Number ] ) return Number L ; @@v5@@ = * ( _DWORD * * ) ( @@a2@@ [ Number ] + Number L ) ; * @@v5@@ = Number ; @@v5@@ [ Number ] = Number ; } pthread_mutex_lock ( ( pthread_mutex_t * ) ( * ( _QWORD * ) @@v6@@ + Number L ) ) ; if ( * ( _DWORD * ) ( @@a1@@ + Number ) || * ( _UNKNOWN * * ) ( @@a1@@ + Number ) == & avcodec_default_get_buffer2 ) { @@v7@@ = ff_get_buffer ( @@a1@@ , * @@a2@@ , @@a3@@ ) ; } else { pthread_mutex_lock ( ( pthread_mutex_t * ) ( @@v6@@ + Number ) ) ; * ( _QWORD * ) ( @@v6@@ + Number ) = * @@a2@@ ; * ( _DWORD * ) ( @@v6@@ + Number ) = @@a3@@ ; * ( _DWORD * ) ( @@v6@@ + Number ) = Number ; pthread_cond_broadcast ( ( pthread_cond_t * ) ( @@v6@@ + Number ) ) ; while ( * ( _DWORD * ) ( @@v6@@ + Number ) != Number ) pthread_cond_wait ( ( pthread_cond_t * ) ( @@v6@@ + Number ) , ( pthread_mutex_t * ) ( @@v6@@ + Number ) ) ; @@v7@@ = * ( _DWORD * ) ( @@v6@@ + Number ) ; pthread_mutex_unlock ( ( pthread_mutex_t * ) ( @@v6@@ + Number ) ) ; } if ( ! * ( _DWORD * ) ( @@a1@@ + Number ) && * ( _UNKNOWN * * ) ( @@a1@@ + Number ) != & avcodec_default_get_buffer2 && ! * ( _QWORD * ) ( * ( _QWORD * ) ( @@a1@@ + Number ) + Number L ) ) { ff_thread_finish_setup ( @@a1@@ ) ; } if ( @@v7@@ ) av_buffer_unref ( @@a2@@ + Number ) ; pthread_mutex_unlock ( ( pthread_mutex_t * ) ( * ( _QWORD * ) @@v6@@ + Number L ) ) ; return @@v7@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_QWORD"}, "location": "r64"}, {"n": "v7", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v5", "t": {"T": 3, "t": "_DWORD"}, "location": "s48"}]}
{"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": "ff_thread_get_buffer", "code": "__int64 __fastcall ff_thread_get_buffer ( __int64 @@a1@@ , _QWORD * @@a2@@ , unsigned int @@a3@@ ) { int @@v4@@ ; @@v4@@ = thread_get_buffer_internal ( @@a1@@ , @@a2@@ , @@a3@@ ) ; if ( @@v4@@ < Number ) av_log ( @@a1@@ , Number L , String ) ; return ( unsigned int ) @@v4@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_QWORD"}, "location": "r64"}, {"n": "v4", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}]}