
.namespace []
.sub "_block1000"  :anon :subid("10_1781909137.17868")
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 0
    .const 'Sub' $P1003 = "11_1781909137.17868" 
    capture_lex $P1003
.annotate 'line', 1
    $P0 = find_dynamic_lex "$*CTXSAVE"
    if null $P0 goto ctxsave_done
    $I0 = can $P0, "ctxsave"
    unless $I0 goto ctxsave_done
    $P0."ctxsave"()
  ctxsave_done:
.annotate 'line', 6
    .const 'Sub' $P1003 = "11_1781909137.17868" 
    capture_lex $P1003
    $P101 = $P1003()
.annotate 'line', 1
    .return ($P101)
    .const 'Sub' $P1073 = "21_1781909137.17868" 
    .return ($P1073)
.end


.namespace []
.sub "" :load :init :subid("post22") :outer("10_1781909137.17868")
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 0
    .const 'Sub' $P1001 = "10_1781909137.17868" 
    .local pmc block
    set block, $P1001
    $P1075 = get_root_global ["parrot"], "P6metaclass"
    $P1075."new_class"("ProfTest::Matcher", "Hash" :named("parent"))
.end


.namespace ["ProfTest";"Matcher"]
.sub "_block1002"  :subid("11_1781909137.17868") :outer("10_1781909137.17868")
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 6
    .const 'Sub' $P1063 = "19_1781909137.17868" 
    capture_lex $P1063
    .const 'Sub' $P1057 = "18_1781909137.17868" 
    capture_lex $P1057
    .const 'Sub' $P1015 = "14_1781909137.17868" 
    capture_lex $P1015
    .const 'Sub' $P1004 = "12_1781909137.17868" 
    capture_lex $P1004
    $P0 = find_dynamic_lex "$*CTXSAVE"
    if null $P0 goto ctxsave_done
    $I0 = can $P0, "ctxsave"
    unless $I0 goto ctxsave_done
    $P0."ctxsave"()
  ctxsave_done:
.annotate 'line', 89
    .const 'Sub' $P1063 = "19_1781909137.17868" 
    newclosure $P1068, $P1063
.annotate 'line', 6
    .return ($P1068)
    .const 'Sub' $P1070 = "20_1781909137.17868" 
    .return ($P1070)
.end


.namespace ["ProfTest";"Matcher"]
.include "except_types.pasm"
.sub "new"  :subid("12_1781909137.17868") :method :outer("11_1781909137.17868")
    .param pmc param_1007 :slurpy
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 6
    .const 'Sub' $P1010 = "13_1781909137.17868" 
    capture_lex $P1010
    new $P1006, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1006, control_1005
    push_eh $P1006
    .lex "self", self
    .lex "@wants", param_1007
.annotate 'line', 7
    new $P100, "ResizablePMCArray"
    find_lex $P1008, "self"
    unless_null $P1008, vivify_23
    $P1008 = root_new ['parrot';'Hash']
    store_lex "self", $P1008
  vivify_23:
    set $P1008["wants"], $P100
.annotate 'line', 8
    find_lex $P101, "@wants"
    defined $I100, $P101
    unless $I100, for_undef_24
    iter $P100, $P101
    new $P103, 'ExceptionHandler', [.CONTROL_LOOP_NEXT;.CONTROL_LOOP_REDO;.CONTROL_LOOP_LAST]
    set_label $P103, loop1013_handler
    push_eh $P103
  loop1013_test:
    unless $P100, loop1013_done
    shift $P102, $P100
  loop1013_redo:
    .const 'Sub' $P1010 = "13_1781909137.17868" 
    capture_lex $P1010
    $P1010($P102)
  loop1013_next:
    goto loop1013_test
  loop1013_handler:
    .local pmc exception 
    .get_results (exception) 
    pop_upto_eh exception
    getattribute $P104, exception, 'type'
    eq $P104, .CONTROL_LOOP_NEXT, loop1013_next
    eq $P104, .CONTROL_LOOP_REDO, loop1013_redo
  loop1013_done:
    pop_eh 
  for_undef_24:
.annotate 'line', 12
    find_lex $P1014, "self"
    unless_null $P1014, vivify_27
    $P1014 = root_new ['parrot';'Hash']
  vivify_27:
    set $P100, $P1014["wants"]
    unless_null $P100, vivify_28
    new $P100, "Undef"
  vivify_28:
.annotate 'line', 13
    get_hll_global $P101, ["ProfTest";"Want"], "Goal"
    $P102 = $P101."new"()
    $P100."push"($P102)
.annotate 'line', 6
    find_lex $P100, "self"
    .return ($P100)
  control_1005:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P101, exception, "payload"
    .return ($P101)
.end


.namespace ["ProfTest";"Matcher"]
.sub "_block1009"  :anon :subid("13_1781909137.17868") :outer("12_1781909137.17868")
    .param pmc param_1011
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 8
    .lex "$want", param_1011
.annotate 'line', 9
    find_lex $P1012, "self"
    unless_null $P1012, vivify_25
    $P1012 = root_new ['parrot';'Hash']
  vivify_25:
    set $P103, $P1012["wants"]
    unless_null $P103, vivify_26
    new $P103, "Undef"
  vivify_26:
    find_lex $P104, "$want"
    $P103."push"($P104)
.annotate 'line', 10
    find_lex $P103, "self"
    new $P104, "String"
    assign $P104, "pushed a thing:"
    find_lex $P105, "$want"
    $S100 = $P105."get_str"()
    concat $P106, $P104, $S100
    $P107 = $P103."say"($P106)
.annotate 'line', 8
    .return ($P107)
.end


.namespace ["ProfTest";"Matcher"]
.include "except_types.pasm"
.sub "matches"  :subid("14_1781909137.17868") :method :outer("11_1781909137.17868")
    .param pmc param_1018
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 18
    .const 'Sub' $P1029 = "15_1781909137.17868" 
    capture_lex $P1029
    new $P1017, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1017, control_1016
    push_eh $P1017
    .lex "self", self
    .lex "$profile", param_1018
.annotate 'line', 20
    $P1020 = root_new ['parrot';'ResizablePMCArray']
    set $P1019, $P1020
    .lex "@backtracks", $P1019
.annotate 'line', 21
    new $P100, "Undef"
    set $P1021, $P100
    .lex "$line_idx", $P1021
.annotate 'line', 22
    new $P101, "Undef"
    set $P1022, $P101
    .lex "$want_idx", $P1022
.annotate 'line', 23
    new $P102, "Undef"
    set $P1023, $P102
    .lex "$start_line", $P1023
.annotate 'line', 24
    new $P103, "Undef"
    set $P1024, $P103
    .lex "$max_line", $P1024
.annotate 'line', 26
    $P1026 = root_new ['parrot';'Hash']
    set $P1025, $P1026
    .lex "%curr_line", $P1025
.annotate 'line', 27
    new $P104, "Undef"
    set $P1027, $P104
    .lex "$curr_want", $P1027
.annotate 'line', 20
    new $P105, "ResizablePMCArray"
    store_lex "@backtracks", $P105
.annotate 'line', 21
    new $P105, "Integer"
    assign $P105, 0
    store_lex "$line_idx", $P105
.annotate 'line', 22
    new $P105, "Integer"
    assign $P105, 0
    store_lex "$want_idx", $P105
.annotate 'line', 23
    new $P105, "Integer"
    assign $P105, 0
    store_lex "$start_line", $P105
.annotate 'line', 24
    find_lex $P105, "$profile"
    $P106 = $P105."profile_array"()
    set $N100, $P106
    new $P107, 'Float'
    set $P107, $N100
    store_lex "$max_line", $P107
.annotate 'line', 18
    find_lex $P105, "%curr_line"
    find_lex $P105, "$curr_want"
.annotate 'line', 29
    new $P108, 'ExceptionHandler', [.CONTROL_LOOP_NEXT;.CONTROL_LOOP_REDO;.CONTROL_LOOP_LAST]
    set_label $P108, loop1056_handler
    push_eh $P108
  loop1056_test:
    find_lex $P105, "$line_idx"
    set $N100, $P105
    find_lex $P106, "$max_line"
    set $N101, $P106
    islt $I100, $N100, $N101
    unless $I100, loop1056_done
  loop1056_redo:
    .const 'Sub' $P1029 = "15_1781909137.17868" 
    capture_lex $P1029
    $P1029()
  loop1056_next:
    goto loop1056_test
  loop1056_handler:
    .local pmc exception 
    .get_results (exception) 
    pop_upto_eh exception
    getattribute $P110, exception, 'type'
    eq $P110, .CONTROL_LOOP_NEXT, loop1056_next
    eq $P110, .CONTROL_LOOP_REDO, loop1056_redo
  loop1056_done:
    pop_eh 
.annotate 'line', 18
    .return ($I100)
  control_1016:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P105, exception, "payload"
    .return ($P105)
.end


.namespace ["ProfTest";"Matcher"]
.include "except_types.pasm"
.sub "_block1028"  :anon :subid("15_1781909137.17868") :outer("14_1781909137.17868")
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 29
    .const 'Sub' $P1051 = "17_1781909137.17868" 
    capture_lex $P1051
    .const 'Sub' $P1037 = "16_1781909137.17868" 
    capture_lex $P1037
.annotate 'line', 34
    new $P107, "Undef"
    set $P1030, $P107
    .lex "$line_desc", $P1030
.annotate 'line', 31
    find_lex $P108, "$line_idx"
    set $I101, $P108
    find_lex $P109, "$profile"
    $P110 = $P109."profile_array"()
    set $P111, $P110[$I101]
    unless_null $P111, vivify_29
    new $P111, "Undef"
  vivify_29:
    store_lex "%curr_line", $P111
.annotate 'line', 32
    find_lex $P108, "$want_idx"
    set $I101, $P108
    find_lex $P1031, "self"
    unless_null $P1031, vivify_30
    $P1031 = root_new ['parrot';'Hash']
  vivify_30:
    set $P1032, $P1031["wants"]
    unless_null $P1032, vivify_31
    $P1032 = root_new ['parrot';'ResizablePMCArray']
  vivify_31:
    set $P109, $P1032[$I101]
    unless_null $P109, vivify_32
    new $P109, "Undef"
  vivify_32:
    store_lex "$curr_want", $P109
.annotate 'line', 33
    find_lex $P108, "self"
    new $P109, "String"
    assign $P109, "current want: "
    find_lex $P110, "$curr_want"
    $S100 = $P110."get_str"()
    concat $P111, $P109, $S100
    $P108."say"($P111)
.annotate 'line', 29
    find_lex $P108, "$line_desc"
.annotate 'line', 35
    find_lex $P1034, "self"
    unless_null $P1034, vivify_33
    $P1034 = root_new ['parrot';'Hash']
  vivify_33:
    set $P108, $P1034["debugging"]
    unless_null $P108, vivify_34
    new $P108, "Undef"
  vivify_34:
    unless $P108, if_1033_end
.annotate 'line', 36
    new $P109, "String"
    assign $P109, "current line: "
    find_lex $P1035, "%curr_line"
    unless_null $P1035, vivify_35
    $P1035 = root_new ['parrot';'Hash']
  vivify_35:
    set $P110, $P1035["type"]
    unless_null $P110, vivify_36
    new $P110, "Undef"
  vivify_36:
    concat $P111, $P109, $P110
    concat $P112, $P111, "("
    store_lex "$line_desc", $P112
.annotate 'line', 37
    find_lex $P110, "%curr_line"
    defined $I101, $P110
    unless $I101, for_undef_37
    iter $P109, $P110
    new $P113, 'ExceptionHandler', [.CONTROL_LOOP_NEXT;.CONTROL_LOOP_REDO;.CONTROL_LOOP_LAST]
    set_label $P113, loop1041_handler
    push_eh $P113
  loop1041_test:
    unless $P109, loop1041_done
    shift $P111, $P109
  loop1041_redo:
    .const 'Sub' $P1037 = "16_1781909137.17868" 
    capture_lex $P1037
    $P1037($P111)
  loop1041_next:
    goto loop1041_test
  loop1041_handler:
    .local pmc exception 
    .get_results (exception) 
    pop_upto_eh exception
    getattribute $P114, exception, 'type'
    eq $P114, .CONTROL_LOOP_NEXT, loop1041_next
    eq $P114, .CONTROL_LOOP_REDO, loop1041_redo
  loop1041_done:
    pop_eh 
  for_undef_37:
.annotate 'line', 42
    find_lex $P109, "$line_desc"
    concat $P110, $P109, ")"
    store_lex "$line_desc", $P110
  if_1033_end:
.annotate 'line', 44
    find_lex $P108, "self"
    find_lex $P109, "$line_desc"
    $P108."say"($P109)
.annotate 'line', 46
    find_lex $P108, "$curr_want"
    $P109 = $P108."goal"()
    if $P109, if_1042
.annotate 'line', 50
    find_lex $P110, "$curr_want"
    find_lex $P111, "%curr_line"
    $P112 = $P110."accepts"($P111)
    if $P112, if_1043
.annotate 'line', 61
    find_lex $P113, "self"
    $P113."say"("REJECTED")
.annotate 'line', 62
    find_lex $P114, "@backtracks"
    isfalse $I101, $P114
    if $I101, if_1047
    new $P113, 'Integer'
    set $P113, $I101
    goto if_1047_end
  if_1047:
    find_lex $P115, "$start_line"
    set $N102, $P115
    find_lex $P116, "$max_line"
    set $N103, $P116
    iseq $I102, $N102, $N103
    new $P113, 'Integer'
    set $P113, $I102
  if_1047_end:
    if $P113, if_1046
.annotate 'line', 66
    find_lex $P117, "@backtracks"
    isfalse $I103, $P117
    if $I103, if_1048
.annotate 'line', 71
    .const 'Sub' $P1051 = "17_1781909137.17868" 
    capture_lex $P1051
    $P1051()
    goto if_1048_end
  if_1048:
.annotate 'line', 66
    find_lex $P118, "$start_line"
    clone $P1049, $P118
    inc $P118
.annotate 'line', 68
    find_lex $P118, "$start_line"
    add $P119, $P118, 0
    store_lex "$line_idx", $P119
.annotate 'line', 69
    find_lex $P118, "self"
    new $P119, 'String'
    set $P119, "FAILURE: restarting at "
    find_lex $P120, "$line_idx"
    concat $P121, $P119, $P120
    concat $P122, $P121, "\n"
    $P118."say"($P122)
  if_1048_end:
.annotate 'line', 66
    goto if_1046_end
  if_1046:
.annotate 'line', 63
    find_lex $P117, "self"
    $P117."say"("FAILURE\n")
.annotate 'line', 64
    new $P117, "Exception"
    set $P117['type'], .CONTROL_RETURN
    new $P118, "Integer"
    assign $P118, 0
    setattribute $P117, 'payload', $P118
    throw $P117
  if_1046_end:
.annotate 'line', 60
    goto if_1043_end
  if_1043:
.annotate 'line', 52
    find_lex $P113, "self"
    $P113."say"("ACCEPTED")
.annotate 'line', 50
    find_lex $P113, "$line_idx"
    clone $P1044, $P113
    inc $P113
.annotate 'line', 55
    find_lex $P113, "@backtracks"
    find_lex $P114, "$line_idx"
    add $P115, $P114, 0
    find_lex $P116, "$want_idx"
    add $P117, $P116, 0
    new $P118, "ResizablePMCArray"
    push $P118, $P115
    push $P118, $P117
    $P113."push"($P118)
.annotate 'line', 56
    find_lex $P113, "self"
    new $P114, 'String'
    set $P114, "saving line "
    find_lex $P115, "$line_idx"
    concat $P116, $P114, $P115
    concat $P117, $P116, ", want "
    find_lex $P118, "$want_idx"
    concat $P119, $P117, $P118
    $P113."say"($P119)
.annotate 'line', 57
    find_lex $P113, "self"
    new $P114, "String"
    assign $P114, "now have "
    find_lex $P115, "@backtracks"
    set $S100, $P115
    concat $P116, $P114, $S100
    concat $P117, $P116, " elements in the stack"
    $P113."say"($P117)
.annotate 'line', 50
    find_lex $P113, "$want_idx"
    clone $P1045, $P113
    inc $P113
  if_1043_end:
    goto if_1042_end
  if_1042:
.annotate 'line', 47
    find_lex $P110, "self"
    $P110."say"("SUCCESS\n")
.annotate 'line', 48
    new $P110, "Exception"
    set $P110['type'], .CONTROL_RETURN
    new $P111, "Integer"
    assign $P111, 1
    setattribute $P110, 'payload', $P111
    throw $P110
  if_1042_end:
.annotate 'line', 79
    find_lex $P108, "self"
    $P109 = $P108."say"("")
.annotate 'line', 29
    .return ($P109)
.end


.namespace ["ProfTest";"Matcher"]
.sub "_block1036"  :anon :subid("16_1781909137.17868") :outer("15_1781909137.17868")
    .param pmc param_1038
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 37
    .lex "$k", param_1038
.annotate 'line', 38
    find_lex $P113, "$k"
    set $S100, $P113
    iseq $I102, $S100, "type"
    unless $I102, unless_1039
    new $P112, 'Integer'
    set $P112, $I102
    goto unless_1039_end
  unless_1039:
.annotate 'line', 39
    find_lex $P114, "$line_desc"
    concat $P115, $P114, " :"
    find_lex $P116, "$k"
    concat $P117, $P115, $P116
    concat $P118, $P117, "("
    find_lex $P119, "$k"
    find_lex $P1040, "%curr_line"
    unless_null $P1040, vivify_38
    $P1040 = root_new ['parrot';'Hash']
  vivify_38:
    set $P120, $P1040[$P119]
    unless_null $P120, vivify_39
    new $P120, "Undef"
  vivify_39:
    concat $P121, $P118, $P120
    concat $P122, $P121, ") "
    store_lex "$line_desc", $P122
.annotate 'line', 38
    set $P112, $P122
  unless_1039_end:
.annotate 'line', 37
    .return ($P112)
.end


.namespace ["ProfTest";"Matcher"]
.sub "_block1050"  :anon :subid("17_1781909137.17868") :outer("15_1781909137.17868")
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 72
    $P1053 = root_new ['parrot';'ResizablePMCArray']
    set $P1052, $P1053
    .lex "@a", $P1052
    find_lex $P118, "@backtracks"
    $P119 = $P118."pop"()
    store_lex "@a", $P119
.annotate 'line', 73
    find_lex $P1054, "@a"
    unless_null $P1054, vivify_40
    $P1054 = root_new ['parrot';'ResizablePMCArray']
  vivify_40:
    set $P118, $P1054[0]
    unless_null $P118, vivify_41
    new $P118, "Undef"
  vivify_41:
    store_lex "$line_idx", $P118
.annotate 'line', 74
    find_lex $P1055, "@a"
    unless_null $P1055, vivify_42
    $P1055 = root_new ['parrot';'ResizablePMCArray']
  vivify_42:
    set $P118, $P1055[1]
    unless_null $P118, vivify_43
    new $P118, "Undef"
  vivify_43:
    store_lex "$want_idx", $P118
.annotate 'line', 75
    find_lex $P118, "self"
    new $P119, 'String'
    set $P119, "backtracking to line "
    find_lex $P120, "$line_idx"
    concat $P121, $P119, $P120
    concat $P122, $P121, ", want "
    find_lex $P123, "$want_idx"
    concat $P124, $P122, $P123
    $P118."say"($P124)
.annotate 'line', 76
    find_lex $P118, "self"
    new $P119, "String"
    assign $P119, "now have "
    find_lex $P120, "@backtracks"
    set $S100, $P120
    concat $P121, $P119, $S100
    concat $P122, $P121, " elements in the stack"
    $P123 = $P118."say"($P122)
.annotate 'line', 71
    .return ($P123)
.end


.namespace ["ProfTest";"Matcher"]
.include "except_types.pasm"
.sub "say"  :subid("18_1781909137.17868") :method :outer("11_1781909137.17868")
    .param pmc param_1060
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 83
    new $P1059, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1059, control_1058
    push_eh $P1059
    .lex "self", self
    .lex "$str", param_1060
.annotate 'line', 84
    find_lex $P1062, "self"
    unless_null $P1062, vivify_44
    $P1062 = root_new ['parrot';'Hash']
  vivify_44:
    set $P101, $P1062["debugging"]
    unless_null $P101, vivify_45
    new $P101, "Undef"
  vivify_45:
    if $P101, if_1061
    set $P100, $P101
    goto if_1061_end
  if_1061:
.annotate 'line', 85
    find_lex $P102, "$str"
    say $P102
  if_1061_end:
.annotate 'line', 83
    .return ($P100)
  control_1058:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P101, exception, "payload"
    .return ($P101)
.end


.namespace ["ProfTest";"Matcher"]
.include "except_types.pasm"
.sub "debugging"  :subid("19_1781909137.17868") :method :outer("11_1781909137.17868")
    .param pmc param_1066
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 89
    new $P1065, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1065, control_1064
    push_eh $P1065
    .lex "self", self
    .lex "$i", param_1066
.annotate 'line', 90
    find_lex $P100, "$i"
    add $P101, $P100, 0
    find_lex $P1067, "self"
    unless_null $P1067, vivify_46
    $P1067 = root_new ['parrot';'Hash']
    store_lex "self", $P1067
  vivify_46:
    set $P1067["debugging"], $P101
.annotate 'line', 89
    .return ($P101)
  control_1064:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P100, exception, "payload"
    .return ($P100)
.end


.namespace ["ProfTest";"Matcher"]
.sub "_block1069" :load :anon :subid("20_1781909137.17868")
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 6
    .const '' $P1071 = "11_1781909137.17868" 
    $P100 = $P1071()
    .return ($P100)
.end


.namespace []
.sub "_block1072" :load :anon :subid("21_1781909137.17868")
.annotate 'file', "runtime/parrot/library/ProfTest/Matcher.nqp"
.annotate 'line', 1
    .const '' $P1074 = "10_1781909137.17868" 
    $P100 = $P1074()
    .return ($P100)
.end

