{"name": "ehci_port_write", "code": "unsigned __int64 __fastcall ehci_port_write ( __int64 @@a1@@ , unsigned __int64 @@a2@@ , unsigned int @@a3@@ ) { int @@v5@@ ; int @@v6@@ ; unsigned int @@v7@@ ; unsigned int * @@v8@@ ; __int64 @@v9@@ ; unsigned __int64 @@v10@@ ; @@v10@@ = __readfsqword ( Number ) ; @@v6@@ = @@a2@@ >> Number ; @@v8@@ = ( unsigned int * ) ( Number * ( @@v6@@ + Number L ) + @@a1@@ + Number ) ; @@v7@@ = * @@v8@@ ; @@v9@@ = * ( _QWORD * ) ( @@a1@@ + Number L * @@v6@@ + Number ) ; trace_usb_ehci_portsc_write ( ( unsigned int ) @@a2@@ + * ( unsigned __int16 * ) ( @@a1@@ + Number ) , ( unsigned int ) @@v6@@ , @@a3@@ ) ; * @@v8@@ &= ~ ( @@a3@@ & Number ) ; * @@v8@@ &= @@a3@@ | Number ; handle_port_owner_write ( @@a1@@ , @@v6@@ , @@a3@@ ) ; @@v5@@ = @@a3@@ & Number ; if ( ( @@v5@@ & Number ) != Number && ( * @@v8@@ & Number ) == Number ) trace_usb_ehci_port_reset ( ( unsigned int ) @@v6@@ , Number L ) ; if ( ( @@v5@@ & Number ) == Number && ( * @@v8@@ & Number ) != Number ) { trace_usb_ehci_port_reset ( ( unsigned int ) @@v6@@ , Number L ) ; if ( @@v9@@ && * ( _DWORD * ) ( @@v9@@ + Number ) ) { usb_port_reset ( Number L * @@v6@@ + Number + @@a1@@ ) ; * @@v8@@ &= Number ; } if ( @@v9@@ && * ( _DWORD * ) ( @@v9@@ + Number ) && ( * ( _DWORD * ) ( @@v9@@ + Number ) & Number ) != Number ) @@v5@@ |= Number ; } * @@v8@@ &= Number ; * @@v8@@ |= @@v5@@ ; trace_usb_ehci_portsc_change ( * ( unsigned __int16 * ) ( @@a1@@ + Number ) + ( unsigned int ) @@a2@@ , ( unsigned int ) ( @@a2@@ >> Number ) , * @@v8@@ , @@v7@@ ) ; return __readfsqword ( Number ) ^ @@v10@@ ; }", "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": 1, "n": "unsigned __int64", "s": 8}, "location": "r64"}, {"n": "v9", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v8", "t": {"T": 3, "t": "unsigned int"}, "location": "s24"}, {"n": "v7", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s36"}, {"n": "v6", "t": {"T": 1, "n": "int", "s": 4}, "location": "s40"}, {"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "s72"}, {"n": "v10", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}
{"name": "handle_port_owner_write", "code": "unsigned __int64 __fastcall handle_port_owner_write ( __int64 @@a1@@ , int @@a2@@ , __int16 @@a3@@ ) { int @@v3@@ ; int @@v5@@ ; __int64 @@v6@@ ; int * @@v7@@ ; unsigned __int64 @@v8@@ ; @@v8@@ = __readfsqword ( Number ) ; @@v6@@ = * ( _QWORD * ) ( @@a1@@ + Number L * @@a2@@ + Number ) ; @@v7@@ = ( int * ) ( Number * ( @@a2@@ + Number L ) + @@a1@@ + Number ) ; if ( * ( _QWORD * ) ( @@a1@@ + Number * ( @@a2@@ + Number L ) ) ) { @@v5@@ = @@a3@@ & Number ; if ( @@v5@@ != ( * @@v7@@ & Number ) ) { if ( @@v6@@ && * ( _DWORD * ) ( @@v6@@ + Number ) ) usb_detach ( Number L * @@a2@@ + Number + @@a1@@ ) ; @@v3@@ = * @@v7@@ ; BYTE1 ( @@v3@@ ) = BYTE1 ( * @@v7@@ ) & Number ; * @@v7@@ = @@v3@@ ; * @@v7@@ |= @@v5@@ ; if ( @@v6@@ && * ( _DWORD * ) ( @@v6@@ + Number ) ) usb_attach ( Number L * @@a2@@ + Number + @@a1@@ ) ; } } return __readfsqword ( Number ) ^ @@v8@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int16", "s": 2}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r8"}, {"n": "v7", "t": {"T": 3, "t": "int"}, "location": "s16"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "s48"}, {"n": "v8", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}