{"name": "init_put_bits", "code": "__int64 __fastcall init_put_bits ( __int64 @@a1@@ , __int64 @@a2@@ , int @@a3@@ ) { __int64 @@result@@ ; int @@v4@@ ; @@v4@@ = @@a3@@ ; if ( @@a3@@ < Number ) { @@v4@@ = Number ; @@a2@@ = Number L ; } * ( _DWORD * ) ( @@a1@@ + Number ) = Number * @@v4@@ ; * ( _QWORD * ) ( @@a1@@ + Number ) = @@a2@@ ; * ( _QWORD * ) ( @@a1@@ + Number ) = @@v4@@ + * ( _QWORD * ) ( @@a1@@ + Number ) ; * ( _QWORD * ) ( @@a1@@ + Number ) = * ( _QWORD * ) ( @@a1@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; @@result@@ = @@a1@@ ; * ( _DWORD * ) @@a1@@ = Number ; return @@result@@ ; }", "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": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v4", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}]}
{"name": "put_bits", "code": "int * __fastcall put_bits ( int * @@a1@@ , int @@a2@@ , unsigned int @@a3@@ ) { int * @@result@@ ; int v4 ; int v5 ; int v6 ; int v7 ; v6 = * @@a1@@ ; v4 = @@a1@@ [ Number ] ; if ( @@a2@@ >= v4 ) { * * ( ( _DWORD * * ) @@a1@@ + Number ) = ( ( ( unsigned __int16 ) ( ( ( unsigned __int16 ) ( @@a3@@ >> ( @@a2@@ - v4 ) ) | ( unsigned __int16 ) ( ( _WORD ) v6 << v4 ) ) << Number ) | ( unsigned __int8 ) ( ( unsigned __int16 ) ( ( @@a3@@ >> ( @@a2@@ - v4 ) ) | ( ( _WORD ) v6 << v4 ) ) >> Number ) ) << Number ) | ( ( ( @@a3@@ >> ( @@a2@@ - v4 ) ) | ( v6 << v4 ) ) >> Number ) | ( unsigned __int16 ) ( ( ( @@a3@@ >> ( @@a2@@ - v4 ) ) | ( v6 << v4 ) ) >> Number << Number ) ; * ( ( _QWORD * ) @@a1@@ + Number ) += Number L ; v5 = Number - @@a2@@ + v4 ; v7 = @@a3@@ ; } else { v7 = @@a3@@ | ( v6 << @@a2@@ ) ; v5 = v4 - @@a2@@ ; } * @@a1@@ = v7 ; @@result@@ = @@a1@@ ; @@a1@@ [ Number ] = v5 ; return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "int"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "result", "t": {"T": 3, "t": "int"}, "location": "r8"}]} {"name": "write_streaminfo", "code": "__int64 __fastcall write_streaminfo ( __int64 @@a1@@ , __int64 @@a2@@ ) { __int64 @@v2@@ ; __int64 @@result@@ ; int @@v4@@ [ Number ] ; memset ( ( void * ) @@a2@@ , Number , Number ) ; init_put_bits ( ( __int64 ) @@v4@@ , @@a2@@ , Number ) ; put_bits ( @@v4@@ , Number , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; put_bits ( @@v4@@ , Number , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; put_bits ( @@v4@@ , Number , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; put_bits ( @@v4@@ , Number , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; put_bits ( @@v4@@ , Number , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; put_bits ( @@v4@@ , Number , * ( _DWORD * ) ( @@a1@@ + Number ) - Number ) ; put_bits ( @@v4@@ , Number , Number ) ; put_bits ( @@v4@@ , Number , ( * ( _QWORD * ) ( @@a1@@ + Number ) >> Number ) & Number ) ; put_bits ( @@v4@@ , Number , * ( _DWORD * ) ( @@a1@@ + Number ) & Number ) ; flush_put_bits ( ( __int64 ) @@v4@@ ) ; @@v2@@ = * ( _QWORD * ) ( @@a1@@ + Number ) ; @@result@@ = * ( _QWORD * ) ( @@a1@@ + Number ) ; * ( _QWORD * ) ( @@a2@@ + Number ) = @@result@@ ; * ( _QWORD * ) ( @@a2@@ + Number ) = @@v2@@ ; return @@result@@ ; }", "source": [{"n": "v2", "t": {"T": 1, "n": "__int64", "s": 8}, "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": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v4", "t": {"T": 2, "n": 14, "s": 4, "t": "int"}, "location": "s56"}]} {"name": "write_frame", "code": "__int64 __fastcall write_frame ( _DWORD * @@a1@@ , __int64 @@a2@@ , int @@a3@@ ) { init_put_bits ( ( __int64 ) ( @@a1@@ + Number ) , @@a2@@ , @@a3@@ ) ; write_frame_header ( ( __int64 ) @@a1@@ ) ; write_subframes ( @@a1@@ ) ; write_frame_footer ( ( __int64 ) @@a1@@ ) ; return ( unsigned int ) ( ( int ) put_bits_count ( ( __int64 ) ( @@a1@@ + Number ) ) >> Number ) ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "_DWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}]}