{"name": "strfilter_node__alloc", "code": "_QWORD * __fastcall strfilter_node__alloc ( __int64 @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ ) { _QWORD * @@v5@@ ; @@v5@@ = zalloc ( Number ) ; if ( @@v5@@ ) { @@v5@@ [ Number ] = @@a1@@ ; * @@v5@@ = @@a2@@ ; @@v5@@ [ Number ] = @@a3@@ ; } return @@v5@@ ; }", "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": "__int64", "s": 8}, "location": "r64"}, {"n": "v5", "t": {"T": 3, "t": "_QWORD"}, "location": "s16"}]}
{"name": "zalloc", "code": "void * __fastcall zalloc ( size_t @@a1@@ ) { return calloc ( Number , @@a1@@ ) ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "size_t", "s": 8}, "location": "r56"}]} {"name": "strfilter_node__new", "code": "__int64 __fastcall strfilter_node__new ( char * @@a1@@ , char * * @@a2@@ ) { int v3 ; _QWORD * v4 ; __int64 v5 ; __int64 @@v6@@ ; char * @@string@@ ; _BYTE * @@v8@@ ; __int64 * @@v9@@ ; __int64 * @@v10@@ ; __int64 @@s@@ [ Number ] ; @@string@@ = @@a1@@ ; @@s@@ [ Number ] = __readfsqword ( Number ) ; if ( ! @@a1@@ ) return Number L ; memset ( @@s@@ , Number , Number ) ; @@v9@@ = @@s@@ ; @@v10@@ = @@s@@ ; for ( @@string@@ = get_token ( @@string@@ , & @@v8@@ ) ; * @@string@@ && * @@string@@ != Number ; @@string@@ = get_token ( @@v8@@ , & @@v8@@ ) ) { v3 = * @@string@@ ; if ( v3 == Number ) { if ( ! @@v9@@ [ Number ] || ! @@s@@ [ Number ] ) goto LABEL_35 ; @@v9@@ = strfilter_node__alloc ( ( __int64 ) OP_or , @@s@@ [ Number ] , Number L ) ; if ( ! @@v9@@ ) { LABEL_34 : @@string@@ = Number L ; goto LABEL_35 ; } @@s@@ [ Number ] = ( __int64 ) @@v9@@ ; @@v10@@ = @@v9@@ ; } else { if ( v3 > Number ) goto LABEL_38 ; if ( v3 == Number ) { if ( @@v9@@ [ Number ] ) goto LABEL_35 ; v5 = strfilter_node__new ( @@string@@ + Number , & @@string@@ ) ; @@v9@@ [ Number ] = v5 ; if ( ! @@string@@ ) goto LABEL_34 ; if ( ! @@v9@@ [ Number ] || * @@string@@ != Number ) goto LABEL_35 ; @@v8@@ = @@string@@ + Number ; continue ; } if ( v3 > Number ) goto LABEL_38 ; if ( v3 == Number ) { if ( @@v9@@ [ Number ] ) goto LABEL_35 ; v4 = strfilter_node__alloc ( ( __int64 ) OP_not , Number L , Number L ) ; @@v9@@ [ Number ] = ( __int64 ) v4 ; if ( ! @@v9@@ [ Number ] ) goto LABEL_34 ; @@v9@@ = ( __int64 * ) @@v9@@ [ Number ] ; continue ; } if ( v3 == Number ) { if ( ! @@v9@@ [ Number ] || ! @@v10@@ [ Number ] ) goto LABEL_35 ; @@v9@@ = strfilter_node__alloc ( ( __int64 ) OP_and , @@v10@@ [ Number ] , Number L ) ; if ( ! @@v9@@ ) goto LABEL_34 ; @@v10@@ [ Number ] = ( __int64 ) @@v9@@ ; @@v10@@ = @@v9@@ ; } else { LABEL_38 : if ( @@v9@@ [ Number ] ) goto LABEL_35 ; @@v9@@ [ Number ] = ( __int64 ) strfilter_node__alloc ( Number L , Number L , Number L ) ; if ( ! @@v9@@ [ Number ] ) goto LABEL_34 ; @@v6@@ = @@v9@@ [ Number ] ; * ( _QWORD * ) ( @@v6@@ + Number ) = strndup ( @@string@@ , @@v8@@ - @@string@@ ) ; if ( ! * ( _QWORD * ) ( @@v9@@ [ Number ] + Number ) ) goto LABEL_34 ; } } } if ( @@v9@@ [ Number ] ) { * @@a2@@ = @@string@@ ; return @@s@@ [ Number ] ; } LABEL_35 : * @@a2@@ = @@string@@ ; strfilter_node__delete ( ( void * * ) @@s@@ [ Number ] ) ; return Number L ; }", "source": [{"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r32"}, {"n": "a1", "t": {"T": 3, "t": "char"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "char *"}, "location": "r64"}, {"n": "s", "t": {"T": 2, "n": 6, "s": 8, "t": "__int64"}, "location": "s48"}, {"n": "v10", "t": {"T": 3, "t": "__int64"}, "location": "s56"}, {"n": "v9", "t": {"T": 3, "t": "__int64"}, "location": "s64"}, {"n": "v8", "t": {"T": 3, "t": "_BYTE"}, "location": "s72"}, {"n": "string", "t": {"T": 3, "t": "char"}, "location": "s88"}]}