{"name": "process_thread_etimer_process", "code": "__int64 __fastcall process_thread_etimer_process ( _WORD * @@a1@@ , char @@a2@@ , __int64 @@a3@@ ) { __int64 @@result@@ ; char @@v5@@ ; __int64 @@v6@@ ; __int64 v7 ; __int64 i ; @@v5@@ = Number ; if ( ! * @@a1@@ ) { timerlist = Number L ; goto LABEL_5 ; } if ( * @@a1@@ == Number ) { while ( @@v5@@ ) { if ( @@a2@@ == Number ) { while ( timerlist && @@a3@@ == * ( _QWORD * ) ( timerlist + Number ) ) timerlist = * ( _QWORD * ) ( timerlist + Number ) ; if ( timerlist ) { v7 = timerlist ; while ( * ( _QWORD * ) ( v7 + Number ) ) { if ( @@a3@@ == * ( _QWORD * ) ( * ( _QWORD * ) ( v7 + Number ) + Number L ) ) * ( _QWORD * ) ( v7 + Number ) = * ( _QWORD * ) ( * ( _QWORD * ) ( v7 + Number ) + Number L ) ; else v7 = * ( _QWORD * ) ( v7 + Number ) ; } } } else if ( @@a2@@ == Number ) { LABEL_21 : @@v6@@ = Number L ; for ( i = timerlist ; i ; i = * ( _QWORD * ) ( i + Number ) ) { if ( ( unsigned int ) timer_expired ( i ) ) { if ( ! ( unsigned int ) process_post ( * ( _QWORD * ) ( i + Number ) , Number L , i ) ) { * ( _QWORD * ) ( i + Number ) = Number L ; if ( @@v6@@ ) * ( _QWORD * ) ( @@v6@@ + Number ) = * ( _QWORD * ) ( i + Number ) ; else timerlist = * ( _QWORD * ) ( i + Number ) ; * ( _QWORD * ) ( i + Number ) = Number L ; update_time ( ) ; goto LABEL_21 ; } etimer_request_poll ( ) ; } @@v6@@ = i ; } } LABEL_5 : @@v5@@ = Number ; * @@a1@@ = Number ; } @@result@@ = Number L ; } else { * @@a1@@ = Number ; @@result@@ = Number L ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "_WORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "char", "s": 1}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v5", "t": {"T": 1, "n": "char", "s": 1}, "location": "s17"}]}
{"name": "update_time", "code": "__int64 update_time ( ) { __int64 @@result@@ ; __int64 @@v1@@ ; _QWORD * @@i@@ ; unsigned __int64 @@v3@@ ; @@result@@ = timerlist ; if ( timerlist ) { @@v1@@ = clock_time ( ) ; @@v3@@ = * ( _QWORD * ) timerlist + * ( _QWORD * ) ( timerlist + Number ) - @@v1@@ ; for ( @@i@@ = * ( _QWORD * * ) ( timerlist + Number ) ; @@i@@ ; @@i@@ = ( _QWORD * ) @@i@@ [ Number ] ) { if ( @@v3@@ > * @@i@@ + @@i@@ [ Number ] - @@v1@@ ) @@v3@@ = * @@i@@ + @@i@@ [ Number ] - @@v1@@ ; } @@result@@ = @@v1@@ + @@v3@@ ; next_expiration = @@v1@@ + @@v3@@ ; } else { next_expiration = Number L ; } return @@result@@ ; }", "source": [{"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "i", "t": {"T": 3, "t": "_QWORD"}, "location": "s16"}, {"n": "v1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v3", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "process_post", "code": "__int64 __fastcall process_post ( __int64 @@a1@@ , char @@a2@@ , __int64 @@a3@@ ) { if ( nevents == Number ) return Number L ; snum_2541 = ( fevent + nevents ) & Number ; * ( ( _BYTE * ) & events + Number * ( ( fevent + nevents ) & Number ) ) = @@a2@@ ; * ( ( _QWORD * ) & unk_420CC8 + Number * ( unsigned __int8 ) snum_2541 ) = @@a3@@ ; qword_420CD0 [ Number * ( unsigned __int8 ) snum_2541 ] = @@a1@@ ; ++ nevents ; return Number L ; }", "source": [{"n": "a3", "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": "char", "s": 1}, "location": "r64"}]} {"name": "timer_expired", "code": "_BOOL8 __fastcall timer_expired ( _QWORD * @@a1@@ ) { return ( unsigned __int64 ) ( clock_time ( ) - * @@a1@@ + Number ) > @@a1@@ [ Number ] ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}]}