{"name": "kbd_mm_readb", "code": "__int64 __fastcall kbd_mm_readb ( __int64 @@a1@@ , __int64 @@a2@@ ) { __int64 @@result@@ ; if ( ( @@a2@@ & * ( _QWORD * ) ( @@a1@@ + Number ) ) != Number ) @@result@@ = ( unsigned __int8 ) kbd_read_status ( @@a1@@ ) ; else @@result@@ = ( unsigned __int8 ) kbd_read_data ( @@a1@@ ) ; return @@result@@ ; }", "source": [{"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"}]}
{"name": "kbd_read_status", "code": "__int64 __fastcall kbd_read_status ( __int64 @@a1@@ ) { return * ( unsigned __int8 * ) ( @@a1@@ + Number ) ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}]} {"name": "kbd_read_data", "code": "__int64 __fastcall kbd_read_data ( __int64 @@a1@@ ) { unsigned int @@v2@@ ; if ( * ( _BYTE * ) ( @@a1@@ + Number ) == Number ) @@v2@@ = ps2_read_data ( * ( _QWORD * ) ( @@a1@@ + Number ) ) ; else @@v2@@ = ps2_read_data ( * ( _QWORD * ) ( @@a1@@ + Number ) ) ; return @@v2@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "v2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}]}