{"name": "playback_thread", "code": "void __fastcall __noreturn playback_thread ( void * @@a1@@ ) { void * @@v1@@ ; const char * v2 ; const char * v3 ; const char * v4 ; _BYTE @@v5@@ [ Number ] ; __int64 @@v6@@ ; __int64 @@v7@@ ; __int64 @@v8@@ ; char @@v9@@ [ Number ] ; unsigned int @@v10@@ ; int @@v11@@ ; int @@v12@@ ; unsigned __int64 @@v13@@ ; __int64 @@v14@@ ; _DWORD * @@v15@@ ; int @@v16@@ ; int @@v17@@ ; * ( _QWORD * ) & @@v5@@ [ Number ] = @@a1@@ ; @@v15@@ = @@a1@@ ; alsa_open ( & @@v6@@ , Number , ( __int64 ) & @@v8@@ ) ; alsa_open ( & @@v7@@ , Number , ( __int64 ) @@v9@@ ) ; snd_pcm_start ( @@v6@@ ) ; @@v14@@ = @@v8@@ - Number ; @@v1@@ = alloca ( Number * ( ( Number * @@v8@@ + Number ) / Number ) ) ; @@v13@@ = Number * ( ( unsigned __int64 ) @@v5@@ >> Number ) ; while ( Number ) { LABEL_21 : if ( ! @@v15@@ [ Number ] ) goto LABEL_22 ; @@v12@@ = snd_pcm_avail_update ( @@v6@@ ) ; @@v11@@ = snd_pcm_avail_update ( @@v7@@ ) ; if ( @@v12@@ >= @@v11@@ ) @@v16@@ = @@v11@@ ; else @@v16@@ = @@v12@@ ; if ( @@v16@@ <= Number ) { usleep ( Number ) ; continue ; } @@v17@@ = snd_pcm_readi ( @@v6@@ , @@v13@@ , @@v16@@ ) ; if ( @@v17@@ == Number ) { v2 = ( const char * ) snd_strerror ( Number L ) ; fprintf ( stderr , String , v2 ) ; continue ; } if ( @@v17@@ == Number ) break ; if ( @@v17@@ < Number ) { v3 = ( const char * ) snd_strerror ( ( unsigned int ) @@v17@@ ) ; fprintf ( stderr , String , v3 ) ; @@v15@@ [ Number ] = Number ; goto LABEL_22 ; } while ( Number ) { while ( Number ) { if ( @@v17@@ <= Number ) goto LABEL_21 ; @@v10@@ = snd_pcm_writei ( @@v7@@ , @@v13@@ , @@v17@@ ) ; if ( @@v10@@ != Number ) break ; fwrite ( String , Number , Number , stderr ) ; if ( ( unsigned int ) alsa_recover ( @@v7@@ , Number L ) ) { @@v15@@ [ Number ] = Number ; goto LABEL_21 ; } } if ( ( int ) @@v10@@ <= Number ) break ; @@v17@@ -= @@v10@@ ; } v4 = ( const char * ) snd_strerror ( @@v10@@ ) ; fprintf ( stderr , String , @@v10@@ , v4 ) ; @@v15@@ [ Number ] = Number ; } fwrite ( String , Number , Number , stderr ) ; if ( ! ( unsigned int ) alsa_recover ( @@v6@@ , Number L ) ) goto LABEL_21 ; @@v15@@ [ Number ] = Number ; LABEL_22 : fwrite ( String , Number , Number , stderr ) ; snd_pcm_close ( @@v6@@ ) ; snd_pcm_close ( @@v7@@ ) ; pthread_exit ( Number L ) ; }", "source": [{"n": "v1", "t": {"T": 3, "t": "void"}, "location": "r40"}, {"n": "a1", "t": {"T": 3, "t": "void"}, "location": "r56"}, {"n": "v7", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s104"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s112"}, {"n": "v5", "t": {"T": 2, "n": 9, "s": 1, "t": "_BYTE"}, "location": "s121"}, {"n": "v17", "t": {"T": 1, "n": "int", "s": 4}, "location": "s36"}, {"n": "v16", "t": {"T": 1, "n": "int", "s": 4}, "location": "s40"}, {"n": "v15", "t": {"T": 3, "t": "_DWORD"}, "location": "s48"}, {"n": "v14", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s56"}, {"n": "v13", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s64"}, {"n": "v12", "t": {"T": 1, "n": "int", "s": 4}, "location": "s68"}, {"n": "v11", "t": {"T": 1, "n": "int", "s": 4}, "location": "s72"}, {"n": "v10", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s76"}, {"n": "v9", "t": {"T": 2, "n": 12, "s": 1, "t": "char"}, "location": "s88"}, {"n": "v8", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s96"}]}
{"name": "alsa_open", "code": "__int64 __fastcall alsa_open ( _QWORD * @@a1@@ , unsigned int @@a2@@ , __int64 @@a3@@ ) { const char * v3 ; const char * v4 ; const char * v5 ; const char * v6 ; const char * v7 ; const char * v8 ; const char * v9 ; const char * v10 ; int @@v13@@ ; int @@v14@@ ; __int64 @@v15@@ ; unsigned int @@v16@@ ; const char * @@v17@@ ; @@v17@@ = String ; fwrite ( String , Number , Number , stderr ) ; @@v16@@ = snd_pcm_open ( @@a1@@ , String , @@a2@@ , Number L ) ; if ( ( @@v16@@ & Number ) == Number ) { fwrite ( String , Number , Number , stderr ) ; snd_pcm_hw_params_malloc ( & @@v15@@ ) ; @@v16@@ = snd_pcm_hw_params_any ( * @@a1@@ , @@v15@@ ) ; if ( ( @@v16@@ & Number ) == Number ) { fwrite ( String , Number , Number , stderr ) ; @@v16@@ = snd_pcm_hw_params_set_access ( * @@a1@@ , @@v15@@ , Number L ) ; if ( ( @@v16@@ & Number ) == Number ) { fwrite ( String , Number , Number , stderr ) ; @@v16@@ = snd_pcm_hw_params_set_format ( * @@a1@@ , @@v15@@ , Number L ) ; if ( ( @@v16@@ & Number ) == Number ) { fwrite ( String , Number , Number , stderr ) ; @@v16@@ = snd_pcm_hw_params_set_channels ( * @@a1@@ , @@v15@@ , Number L ) ; if ( ( @@v16@@ & Number ) == Number ) { fwrite ( String , Number , Number , stderr ) ; @@v13@@ = Number ; @@v16@@ = snd_pcm_hw_params_set_rate_near ( * @@a1@@ , @@v15@@ , & @@v13@@ , Number L ) ; if ( ( @@v16@@ & Number ) == Number ) { @@v14@@ = Number ; @@v16@@ = snd_pcm_hw_params_set_buffer_time_near ( * @@a1@@ , @@v15@@ , & @@v14@@ , Number L ) ; snd_pcm_hw_params_get_buffer_size ( @@v15@@ , @@a3@@ ) ; fwrite ( String , Number , Number , stderr ) ; @@v16@@ = snd_pcm_hw_params ( * @@a1@@ , @@v15@@ ) ; if ( ( @@v16@@ & Number ) == Number ) { snd_pcm_hw_params_free ( @@v15@@ ) ; @@v16@@ = snd_pcm_prepare ( * @@a1@@ ) ; if ( ( @@v16@@ & Number ) == Number ) return * @@a1@@ ; v10 = ( const char * ) snd_strerror ( @@v16@@ ) ; fprintf ( stderr , String , v10 ) ; } else { v9 = ( const char * ) snd_strerror ( @@v16@@ ) ; fprintf ( stderr , String , v9 ) ; } } else { v8 = ( const char * ) snd_strerror ( @@v16@@ ) ; fprintf ( stderr , String , v8 ) ; } } else { v7 = ( const char * ) snd_strerror ( @@v16@@ ) ; fprintf ( stderr , String , v7 ) ; } } else { v6 = ( const char * ) snd_strerror ( @@v16@@ ) ; fprintf ( stderr , String , v6 ) ; } } else { v5 = ( const char * ) snd_strerror ( @@v16@@ ) ; fprintf ( stderr , String , v5 ) ; } } else { v4 = ( const char * ) snd_strerror ( @@v16@@ ) ; fprintf ( stderr , String , v4 ) ; } } else { v3 = ( const char * ) snd_strerror ( @@v16@@ ) ; fprintf ( stderr , String , v3 ) ; } if ( * @@a1@@ ) { snd_pcm_drain ( * @@a1@@ ) ; snd_pcm_close ( * @@a1@@ ) ; } return Number L ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}, {"n": "v16", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v15", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v14", "t": {"T": 1, "n": "int", "s": 4}, "location": "s28"}, {"n": "v13", "t": {"T": 1, "n": "int", "s": 4}, "location": "s32"}, {"n": "v17", "t": {"T": 3, "t": "const char"}, "location": "s8"}]} {"name": "alsa_recover", "code": "__int64 __fastcall alsa_recover ( __int64 @@a1@@ , __int64 @@a2@@ ) { __int64 v2 ; void * @@v3@@ ; size_t v4 ; int v5 ; const char * v6 ; __int64 result ; const char * v8 ; int v9 ; const char * v10 ; int v11 ; const char * v12 ; unsigned int v13 ; int v14 ; const char * v15 ; __int64 @@v16@@ ; __int64 @@v17@@ ; __int64 @@v18@@ ; __int64 @@v19@@ ; __int64 @@v20@@ ; struct timeval @@tv@@ ; void * @@s@@ ; unsigned int @@v23@@ ; @@v16@@ = @@a1@@ ; v2 = ( ( __int64 ( * ) ( void ) ) snd_pcm_status_sizeof ) ( ) ; @@v3@@ = alloca ( Number * ( ( v2 + Number ) / Number ) ) ; @@s@@ = ( void * ) ( Number * ( ( ( unsigned __int64 ) & @@v16@@ + Number ) >> Number ) ) ; v4 = snd_pcm_status_sizeof ( @@a1@@ , @@a2@@ , ( v2 + Number ) % Number ) ; memset ( @@s@@ , Number , v4 ) ; @@v23@@ = snd_pcm_status ( @@v16@@ , @@s@@ ) ; if ( ( @@v23@@ & Number ) == Number ) { if ( ( unsigned int ) snd_pcm_status_get_state ( @@s@@ ) == Number ) { gettimeofday ( & @@tv@@ , Number L ) ; snd_pcm_status_get_trigger_tstamp ( @@s@@ , & @@v17@@ ) ; @@v19@@ = @@tv@@ . tv_sec - @@v17@@ ; @@v20@@ = @@tv@@ . tv_usec - @@v18@@ ; if ( @@tv@@ . tv_usec - @@v18@@ < Number ) { -- @@v19@@ ; @@v20@@ += Number L ; } if ( @@v16@@ ) v8 = String ; else v8 = String ; fprintf ( stderr , String , v8 , ( double ) ( int ) @@v20@@ / Number + ( double ) ( Number * ( int ) @@v19@@ ) ) ; @@v23@@ = snd_pcm_prepare ( @@v16@@ ) ; if ( ( @@v23@@ & Number ) == Number ) { snd_pcm_start ( @@v16@@ ) ; result = Number L ; } else { v9 = snd_strerror ( @@v23@@ ) ; error ( ( int ) String , v9 , v10 ) ; result = Number ; } } else if ( ( unsigned int ) snd_pcm_status_get_state ( @@s@@ ) == Number && @@v16@@ == Number ) { fwrite ( String , Number , Number , stderr ) ; @@v23@@ = snd_pcm_prepare ( @@v16@@ ) ; if ( ( @@v23@@ & Number ) == Number ) { result = Number L ; } else { v11 = snd_strerror ( @@v23@@ ) ; error ( ( int ) String , v11 , v12 ) ; result = Number ; } } else { v13 = snd_pcm_status_get_state ( @@s@@ ) ; v14 = snd_pcm_state_name ( v13 ) ; error ( ( int ) String , v14 , v15 ) ; result = Number ; } } else { v5 = snd_strerror ( @@v23@@ ) ; error ( ( int ) String , v5 , v6 ) ; result = Number ; } return result ; }", "source": [{"n": "v3", "t": {"T": 3, "t": "void"}, "location": "r40"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "s", "t": {"T": 3, "t": "void"}, "location": "s16"}, {"n": "tv", "t": {"T": 6, "n": "struct timeval", "l": [{"T": 4, "n": "tv_sec", "t": "__time_t", "s": 8}, {"T": 4, "n": "tv_usec", "t": "__suseconds_t", "s": 8}]}, "location": "s32"}, {"n": "v23", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s4"}, {"n": "v20", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s40"}, {"n": "v19", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s48"}, {"n": "v18", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s56"}, {"n": "v17", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s64"}, {"n": "v16", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s72"}]} {"name": "crad_set_power", "code": "__int64 __fastcall crad_set_power ( __int64 @@a1@@ , unsigned int @@a2@@ ) { if ( ! @@a1@@ ) return Number L ; if ( ! @@a2@@ || * ( _DWORD * ) ( @@a1@@ + Number ) ) { if ( @@a2@@ || ! * ( _DWORD * ) ( @@a1@@ + Number ) ) { fprintf ( stderr , String , @@a2@@ , * ( unsigned int * ) ( @@a1@@ + Number ) ) ; } else { fwrite ( String , Number , Number , stderr ) ; select_input ( Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; crad_set_rds ( @@a1@@ , Number L ) ; } } else { select_input ( Number ) ; system ( String ) ; fwrite ( String , Number , Number , stderr ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; if ( pthread_create ( ( pthread_t * ) ( @@a1@@ + Number ) , Number L , ( void * ( * ) ( void * ) ) playback_thread , ( void * ) @@a1@@ ) ) { perror ( String ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; return Number L ; } pthread_detach ( * ( _QWORD * ) ( @@a1@@ + Number ) ) ; } return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}]}