{"name": "cd_read_sector", "code": "__int64 __fastcall cd_read_sector ( __int64 @@a1@@ , int @@a2@@ , _BYTE * @@a3@@ , int @@a4@@ ) { int @@v6@@ ; if ( @@a4@@ == Number ) { @@v6@@ = bdrv_read ( @@a1@@ , Number L * @@a2@@ , @@a3@@ , Number L ) ; } else if ( @@a4@@ == Number ) { @@v6@@ = bdrv_read ( @@a1@@ , Number L * @@a2@@ , @@a3@@ + Number , Number L ) ; if ( @@v6@@ < Number ) return ( unsigned int ) @@v6@@ ; cd_data_to_raw ( @@a3@@ , @@a2@@ ) ; } else { @@v6@@ = Number ; } return ( unsigned int ) @@v6@@ ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "_BYTE"}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "int", "s": 4}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v6", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}]}
{"name": "cd_data_to_raw", "code": "void * __fastcall cd_data_to_raw ( _BYTE * @@a1@@ , int @@a2@@ ) { * @@a1@@ = Number ; memset ( @@a1@@ + Number , Number , Number ) ; @@a1@@ [ Number ] = Number ; lba_to_msf ( @@a1@@ + Number , @@a2@@ ) ; @@a1@@ [ Number ] = Number ; return memset ( @@a1@@ + Number , Number , Number ) ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "_BYTE"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}]} {"name": "ide_atapi_cmd_reply_end", "code": "__int64 __fastcall ide_atapi_cmd_reply_end ( __int64 @@a1@@ ) { __int64 @@result@@ ; int @@v2@@ ; int v3 ; int v4 ; int @@v5@@ ; if ( * ( int * ) ( @@a1@@ + Number ) <= Number ) { ide_transfer_stop ( @@a1@@ ) ; * ( _BYTE * ) ( @@a1@@ + Number ) = Number ; * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a1@@ + Number ) & Number | Number ; return ide_set_irq ( * ( _QWORD * ) @@a1@@ ) ; } if ( * ( _DWORD * ) ( @@a1@@ + Number ) != Number && * ( _DWORD * ) ( @@a1@@ + Number ) >= * ( _DWORD * ) ( @@a1@@ + Number ) ) { @@v2@@ = cd_read_sector ( * ( _QWORD * ) ( @@a1@@ + Number ) , * ( _DWORD * ) ( @@a1@@ + Number ) , * ( _BYTE * * ) ( @@a1@@ + Number ) , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v2@@ < Number ) { ide_transfer_stop ( @@a1@@ ) ; return ide_atapi_io_error ( @@a1@@ , @@v2@@ ) ; } ++ * ( _DWORD * ) ( @@a1@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; } if ( * ( int * ) ( @@a1@@ + Number ) <= Number ) { * ( _DWORD * ) ( @@a1@@ + Number ) = * ( _DWORD * ) ( @@a1@@ + Number ) & Number | Number ; @@v5@@ = * ( unsigned __int16 * ) ( @@a1@@ + Number ) ; if ( @@v5@@ == Number ) @@v5@@ = Number ; v4 = * ( _DWORD * ) ( @@a1@@ + Number ) ; if ( v4 > @@v5@@ ) { if ( ( @@v5@@ & Number ) != Number ) -- @@v5@@ ; v4 = @@v5@@ ; } * ( _WORD * ) ( @@a1@@ + Number ) = v4 ; * ( _DWORD * ) ( @@a1@@ + Number ) = v4 ; if ( * ( _DWORD * ) ( @@a1@@ + Number ) != Number && v4 > * ( _DWORD * ) ( @@a1@@ + Number ) - * ( _DWORD * ) ( @@a1@@ + Number ) ) v4 = * ( _DWORD * ) ( @@a1@@ + Number ) - * ( _DWORD * ) ( @@a1@@ + Number ) ; ide_transfer_start ( @@a1@@ , * ( _QWORD * ) ( @@a1@@ + Number ) + * ( int * ) ( @@a1@@ + Number ) , v4 , ( __int64 ) ide_atapi_cmd_reply_end ) ; * ( _DWORD * ) ( @@a1@@ + Number ) -= v4 ; * ( _DWORD * ) ( @@a1@@ + Number ) -= v4 ; * ( _DWORD * ) ( @@a1@@ + Number ) += v4 ; @@result@@ = ide_set_irq ( * ( _QWORD * ) @@a1@@ ) ; } else { v3 = * ( _DWORD * ) ( @@a1@@ + Number ) - * ( _DWORD * ) ( @@a1@@ + Number ) ; if ( v3 > * ( _DWORD * ) ( @@a1@@ + Number ) ) v3 = * ( _DWORD * ) ( @@a1@@ + Number ) ; ide_transfer_start ( @@a1@@ , * ( _QWORD * ) ( @@a1@@ + Number ) + * ( int * ) ( @@a1@@ + Number ) , v3 , ( __int64 ) ide_atapi_cmd_reply_end ) ; * ( _DWORD * ) ( @@a1@@ + Number ) -= v3 ; * ( _DWORD * ) ( @@a1@@ + Number ) -= v3 ; @@result@@ = @@a1@@ ; * ( _DWORD * ) ( @@a1@@ + Number ) += v3 ; } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v2", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}]}