Rule Access_Eval_N1 { Root N1_root {} Match N1_userroot { match = True } Match N1_frame { match = True } Delete N1_phase_D { value = "'eval'" match = True } Match N1_IP { value = "!access" match = True } Create N1_phase_C { value = "'finish'" } Delete N1_RV_D {} Create N1_RV_C {} Match N1_val {} MatchEdge (N1_root, N1_userroot) { value = "username" } MatchEdge (N1_userroot, N1_frame) { value = "'frame'" } MatchEdge (N1_frame, N1_IP) { value = "'IP'" } DeleteEdge (N1_frame, N1_phase_D) { value = "'phase'" } CreateEdge (N1_frame, N1_phase_C) { value = "'phase'" } CreateEdge (N1_frame, N1_RV_C) { value = "'returnvalue'" } DeleteEdge (N1_frame, N1_RV_D) { value = "'returnvalue'" } MatchEdge (N1_RV_D, N1_RV_C) { value = "'value'" } } Rule Access_Init_N2 { Root N2_root {} Match N2_userroot { match = True } Match N2_frame { match = True } Match N2_phase { match = True value = "'init'" } Match N2_IP_old { match = True value = "!access" } Create N2_evalstack_C {} Match N2_evalstack_M {} Match N2_IP_new {} Create N2_phase_new { value = "'eval'" } MatchEdge (N2_root, N2_userroot) { value = "username" } MatchEdge (N2_userroot, N2_frame) { value = "'frame'" } MatchEdge (N2_frame, N2_phase) { value = "'phase'" } DeleteEdge (N2_frame, N2_IP_old) { value = "'IP'" } CreateEdge (N2_frame, N2_evalstack_C) { value = "'evalstack'" } DeleteEdge (N2_frame, N2_evalstack_M) { value = "'evalstack'" } CreateEdge (N2_frame, N2_IP_new) { value = "'IP'" } CreateEdge (N2_evalstack_C, N2_evalstack_M) { value = "'prev'" } CreateEdge (N2_evalstack_M, N2_phase_new) { value = "'phase'" } CreateEdge (N2_evalstack_M, N2_IP) { value = "'inst'" } MatchEdge (N2_IP, N2_IP_new) { value = "'var'" } } Rule Assign_Assign_N3 { Root N3_0 {} Match N3_1 { match = True } Match N3_2 { match = True } Match N3_3 { match = True value = "!assign" } Delete N3_4 { match = True value = "'assign'" } Create N3_5 { value = "'finish'" } Match N3_6 {} Match N3_7 {} Match N3_8 {} MatchEdge (N3_0, N3_1) { value = "username" } MatchEdge (N3_1, N3_2) { value = "'frame'" } MatchEdge (N3_2, N3_3) { value = "'IP'" } DeleteEdge (N3_2, N3_4) { value = "'phase'" } CreateEdge (N3_2, N3_5) { value = "'phase'" } MatchEdge (N3_2, N3_6) { value = "'returnvalue'" } DeleteEdge (N3_2, N3_7) { value = "'variable'" } CreateEdge (N3_7, N3_6) { value = "'value'" } DeleteEdge (N3_7, N3_8) { value = "'value'" } } Rule Assign_Init_N4 { Root N4_0 {} Match N4_1 { match = True } Match N4_2 { match = True } Match N4_3 { match = True value = "'init'" } Create N4_4 {} Match N4_5 {} Match N4_6 { match = True value = "!assign" } Create N4_7 { value = "'value'" } Match N4_8 {} MatchEdge (N4_0, N4_1) { value = "username" } MatchEdge (N4_1, N4_2) { value = "'frame'" } MatchEdge (N4_2, N4_3) { value = "'phase'" } DeleteEdge (N4_2, N4_6) { value = "'IP'" } CreateEdge (N4_2, N4_4) { value = "'evalstack'" } DeleteEdge (N4_2, N4_5) { value = "'evalstack'" } CreateEdge (N4_2, N4_8) { value = "'IP'" } CreateEdge (N4_5, N4_6) { value = "'inst'" } CreateEdge (N4_5, N4_7) { value = "'phase'" } MatchEdge (N4_6, N4_8) { value = "'var'" } } Rule Assign_Value_N5 { Root N5_0 {} Match N5_1 { match = True } Match N5_2 { match = True } Match N5_3 { match = True value = "'value'" } Match N5_4 { match = True value = "!assign" } Create N5_5 { match = True } Create N5_6 { value = "'init'" } Match N5_7 {} Match N5_8 {} Match N5_9 {} Create N5_10 { value = "'assign'" } MatchEdge (N5_0, N5_1) { value = "username" } MatchEdge (N5_1, N5_2) { value = "'frame'" } DeleteEdge (N5_2, N5_3) { value = "'phase'" } DeleteEdge (N5_2, N5_4) { value = "'IP'" } CreateEdge (N5_2, N5_5) { value = "'evalstack'" } CreateEdge (N5_2, N5_6) { value = "'phase'" } DeleteEdge (N5_2, N5_9) { value = "'evalstack'" } CreateEdge (N5_2, N5_7) { value = "'IP'" } MatchEdge (N5_2, N5_8) { value = "'returnvalue'" } CreateEdge (N5_2, N5_8) { value = "'variable'" } CreateEdge (N5_5, N5_9) { value = "'prev'" } DeleteEdge (N5_5, N5_9) { value = "'evalstack'" } CreateEdge (N5_9, N5_4) { value = "'inst'" } CreateEdge (N5_9, N5_10) { value = "'phase'" } MatchEdge (N5_4, N5_7) { value = "'value'" } } Rule Break_N6 { Root N6_0 {} Match N6_1 { match = True } Match N6_2 { match = True } Delete N6_3 { value = "'init'" match = True } Create N6_4 { value = "'finish'" } Match N6_5 { value = "!break" match = True } Match N6_6 {} MatchEdge (N6_0, N6_1) { value = "username" } MatchEdge (N6_1, N6_2) { value = "'frame'" } DeleteEdge (N6_2, N6_3) { value = "'phase'" } CreateEdge (N6_2, N6_4) { value = "'phase'" } DeleteEdge (N6_2, N6_5) { value = "'IP'" } CreateEdge (N6_2, N6_6) { value = "'IP'" } MatchEdge (N6_5, N6_6) { value = "'while'" } } Rule Call_Call_None_N7 { Root N7_0 {} Match N7_1 { match = True } Create N7_2 {} Match N7_3 { match = True } Create N7_4 {} Create N7_5 {} Create N7_6 { value = "!call" } Create N7_7 {} Match N7_8 {} Create N7_9 { value = "'finish'" } Delete N7_10 { value = "'call'" match = True } NAC N7_11 {} Match N7_12 {} Create N7_13 { value = "'init'" } MatchEdge (N7_0, N7_1) { value = "username" } CreateEdge (N7_1, N7_2) { value = "'frame'" } DeleteEdge (N7_1, N7_3) { value = "'frame'" } CreateEdge (N7_2, N7_4) { value = "'evalstack'" } CreateEdge (N7_2, N7_5) { value = "'symbols'" } CreateEdge (N7_2, N7_6) { value = "'caller'" } CreateEdge (N7_2, N7_7) { value = "'returnvalue'" } CreateEdge (N7_2, N7_12) { value = "'IP'" } CreateEdge (N7_2, N7_13) { value = "'phase'" } NACEdge (N7_6, N7_11) { value = "'last_param'" } CreateEdge (N7_2, N7_3) { value = "'prev'" } MatchEdge (N7_3, N7_6) { value = "'IP'" } MatchEdge (N7_3, N7_8) { value = "'returnvalue'" } CreateEdge (N7_3, N7_9) { value = "'phase'" } DeleteEdge (N7_3, N7_10) { value = "'phase'" } MatchEdge (N7_8, N7_12) { value = "'body'" } } Rule Call_Call_Params_N8 { Root N8_0 {} Match N8_1 { match = True } Match N8_2 {} Match N8_3 {} Match N8_4 { value = "!call" } Match N8_5 {} Match N8_6 { value = "a" match = True } Create N8_7 { value = "'finish'" } Match N8_8 {} Match N8_9 {} Create N8_10 {} Match N8_11 {} Match N8_12 {} Match N8_13 {} Delete N8_14 { value = "'call'" } Match N8_15 {} Create N8_16 {} MatchEdge (N8_0, N8_1) { value = "username" } CreateEdge (N8_1, N8_2) { value = "'frame'" } DeleteEdge (N8_1, N8_3) { value = "'frame'" } MatchEdge (N8_2, N8_4) { value = "'caller'" } MatchEdge (N8_2, N8_3) { value = "'prev'" } MatchEdge (N8_2, N8_15) { value = "'symbols'" } MatchEdge (N8_2, N8_13) { value = "'IP'" } MatchEdge (N8_3, N8_4) { value = "!call" } CreateEdge (N8_3, N8_7) { value = "'finish'" } MatchEdge (N8_3, N8_8) { value = "'returnvalue'" } DeleteEdge (N8_3, N8_14) { value = "'phase'" } MatchEdge (N8_4, N8_5) { value = "'last_param'" } MatchEdge (N8_5, N8_6) { value = "'name'" } CreateEdge (N8_10, N8_8) { value = "'value'" } MatchEdge (N8_11, N8_9) { value = "a" } MatchEdge (N8_12, N8_13) { value = "'body'" } MatchEdge (N8_12, N8_11) { value = "'params'" } CreateEdge (N8_15, N8_16) {} CreateEdge (N8_16, N8_9) {} CreateEdge (N8_16, N8_10) {} } Rule Call_Params_First_Multi_N9 { } Rule If_False_N21 { Root N21_root {} Match N21_userroot { match = True } Match N21_frame { match = True } Delete N21_phase_D { value = "'cond'" match = True } Create N21_phase_C { value = "'finish'" } Match N21_IP { value = "!if" match = True } Match N21_RV { value = "False" match = True } NAC N21_else {} MatchEdge (N21_root, N21_userroot) { value = "username" } MatchEdge (N21_userroot, N21_frame) { value = "'frame'" } MatchEdge (N21_frame, N21_IP) { value = "'IP'" } MatchEdge (N21_frame, N21_RV) { value = "'returnvalue'" } DeleteEdge (N21_frame, N21_phase_D) { value = "'phase'" } CreateEdge (N21_frame, N21_phase_C) { value = "'phase'" } NACEdge (N21_IP, N21_else) { value = "'else'" } }