summaryrefslogtreecommitdiff
path: root/stuck/tnslc.asm
diff options
context:
space:
mode:
Diffstat (limited to 'stuck/tnslc.asm')
-rwxr-xr-xstuck/tnslc.asm77877
1 files changed, 77877 insertions, 0 deletions
diff --git a/stuck/tnslc.asm b/stuck/tnslc.asm
new file mode 100755
index 0000000..fc3b7d2
--- /dev/null
+++ b/stuck/tnslc.asm
@@ -0,0 +1,77877 @@
+BITS 64
+extern malloc, realloc, free, printf, putchar, open, close, read, write, lseek, perror
+global _alloc
+global _realloc
+global _delete
+global _putchar
+global _printf
+global _print_num
+global _create_file
+global _open_file
+global _close_file
+global _read_byte
+global _fseek
+global _write_byte
+global _perror
+global print_alert
+global main
+
+section .data
+
+_alert#ptr:
+ dq 8
+ db 65, 108, 101, 114, 116, 33, 10, 0
+_alert:
+ dq _alert#ptr + 8
+
+_dec#ptr:
+ dq 4
+ db 37, 100, 10, 0
+_dec:
+ dq _dec#ptr + 8
+
+_ptr#ptr:
+ dq 4
+ db 37, 112, 10, 0
+_ptr:
+ dq _ptr#ptr + 8
+
+NULL:
+ dq 0
+
+DEFAULT_FOUT#ptr:
+ dq 8
+ db 111, 117, 116, 46, 97, 115, 109, 0
+DEFAULT_FOUT:
+ dq DEFAULT_FOUT#ptr + 8
+
+USAGE#ptr:
+ dq 285
+ db 10, 84, 78, 83, 76, 67, 32, 118, 48, 46, 55, 46, 53, 32, 40, 67, 41, 32, 50, 48, 50, 54, 32, 67, 105, 114, 99, 108, 101, 83, 104, 105, 102, 116, 32, 40, 77, 80, 76, 32, 50, 46, 48, 41, 10, 10, 117, 115, 97, 103, 101, 58, 10, 9, 116, 110, 115, 108, 99, 32, 91, 111, 112, 116, 105, 111, 110, 115, 93, 32, 40, 102, 105, 108, 101, 32, 105, 110, 41, 10, 10, 111, 112, 116, 105, 111, 110, 115, 58, 10, 9, 45, 111, 32, 91, 111, 117, 116, 112, 117, 116, 32, 102, 105, 108, 101, 93, 10, 9, 9, 83, 101, 116, 115, 32, 116, 104, 101, 32, 102, 105, 108, 101, 32, 116, 111, 32, 111, 117, 116, 112, 117, 116, 32, 97, 115, 109, 32, 99, 111, 100, 101, 32, 116, 111, 32, 40, 100, 101, 102, 97, 117, 108, 116, 32, 105, 115, 32, 34, 111, 117, 116, 46, 97, 115, 109, 34, 41, 10, 9, 10, 9, 45, 112, 10, 9, 9, 80, 114, 105, 110, 116, 32, 116, 104, 101, 32, 112, 97, 114, 115, 101, 32, 116, 114, 101, 101, 32, 97, 110, 100, 32, 101, 120, 105, 116, 32, 119, 105, 116, 104, 111, 117, 116, 32, 99, 111, 109, 112, 105, 108, 105, 110, 103, 10, 9, 10, 9, 45, 109, 10, 9, 9, 80, 114, 105, 110, 116, 32, 116, 104, 101, 32, 109, 111, 100, 117, 108, 101, 32, 116, 114, 101, 101, 32, 97, 110, 100, 32, 101, 120, 105, 116, 32, 119, 105, 116, 104, 111, 117, 116, 32, 99, 111, 109, 112, 105, 108, 105, 110, 103, 10, 9, 10, 0
+USAGE:
+ dq USAGE#ptr + 8
+
+FOPEN_ERR#ptr:
+ dq 20
+ db 69, 114, 114, 111, 114, 32, 111, 112, 101, 110, 105, 110, 103, 32, 102, 105, 108, 101, 10, 0
+FOPEN_ERR:
+ dq FOPEN_ERR#ptr + 8
+
+char_str#ptr:
+ dq 3
+ db 37, 99, 0
+char_str:
+ dq char_str#ptr + 8
+
+newline#ptr:
+ dq 2
+ db 10, 0
+newline:
+ dq newline#ptr + 8
+
+main#1#wrap#0#if#0#wrap#0#if#0#const:
+ dq 3
+ db 45, 112, 0
+main#1#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq main#1#wrap#0#if#0#wrap#0#if#0#const + 8
+main#1#wrap#0#if#0#wrap#1#if#0#const:
+ dq 3
+ db 45, 109, 0
+main#1#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq main#1#wrap#0#if#0#wrap#1#if#0#const + 8
+main#1#wrap#0#if#0#wrap#2#if#0#const:
+ dq 3
+ db 45, 111, 0
+main#1#wrap#0#if#0#wrap#2#if#0#const#ptr:
+ dq main#1#wrap#0#if#0#wrap#2#if#0#const + 8
+utils.VECTOR_MIN_ELEMENTS:
+ dq 4
+
+utils.VECTOR_MAX_GROW:
+ dq 256
+
+utils.NUM_STR#ptr:
+ dq 8
+ db 78, 117, 109, 32, 37, 100, 10, 0
+utils.NUM_STR:
+ dq utils.NUM_STR#ptr + 8
+
+utils.PT_HANDLE#ptr:
+ dq 12
+ db 72, 97, 110, 100, 108, 101, 58, 32, 37, 112, 10, 0
+utils.PT_HANDLE:
+ dq utils.PT_HANDLE#ptr + 8
+
+utils.PARENT_DIR#ptr:
+ dq 2
+ db 46, 46
+utils.PARENT_DIR:
+ dq utils.PARENT_DIR#ptr + 8
+
+utils.CURRENT_DIR#ptr:
+ dq 1
+ db 46
+utils.CURRENT_DIR:
+ dq utils.CURRENT_DIR#ptr + 8
+
+utils._#File.read#1#wrap#1#if#0#const:
+ dq 24
+ db 69, 114, 114, 111, 114, 32, 114, 101, 97, 100, 105, 110, 103, 32, 102, 114, 111, 109, 32, 102, 105, 108, 101, 0
+utils._#File.read#1#wrap#1#if#0#const#ptr:
+ dq utils._#File.read#1#wrap#1#if#0#const + 8
+utils._#File.read#1#wrap#1#if#1#const:
+ dq 9
+ db 70, 68, 58, 32, 37, 108, 100, 10, 0
+utils._#File.read#1#wrap#1#if#1#const#ptr:
+ dq utils._#File.read#1#wrap#1#if#1#const + 8
+parse.TTYPE_DELIM:
+ dq 0
+
+parse.TTYPE_SEP:
+ dq 1
+
+parse.TTYPE_KEYWD:
+ dq 2
+
+parse.TTYPE_KEYTP:
+ dq 3
+
+parse.TTYPE_LITRL:
+ dq 4
+
+parse.TTYPE_AUG:
+ dq 5
+
+parse.TTYPE_USRWD:
+ dq 6
+
+parse.TTYPE_COMNT:
+ dq 7
+
+parse.TTYPE_UNKNOWN:
+ dq 998
+
+parse.TTYPE_ERR:
+ dq 999
+
+parse.KEYWORDS#ptr:
+ dq 126
+ db 105, 109, 112, 111, 114, 116, 44, 117, 115, 105, 110, 103, 44, 109, 111, 100, 117, 108, 101, 44, 101, 120, 112, 111, 114, 116, 44, 115, 116, 114, 117, 99, 116, 44, 109, 101, 116, 104, 111, 100, 44, 105, 109, 112, 108, 101, 109, 101, 110, 116, 115, 44, 105, 110, 116, 101, 114, 102, 97, 99, 101, 44, 111, 112, 101, 114, 97, 116, 111, 114, 44, 101, 110, 117, 109, 44, 105, 102, 44, 101, 108, 115, 101, 44, 108, 111, 111, 112, 44, 99, 111, 110, 116, 105, 110, 117, 101, 44, 98, 114, 101, 97, 107, 44, 114, 101, 116, 117, 114, 110, 44, 108, 97, 98, 101, 108, 44, 103, 111, 116, 111, 44, 97, 115, 109, 0
+parse.KEYWORDS:
+ dq parse.KEYWORDS#ptr + 8
+
+parse.KEYTYPES#ptr:
+ dq 101
+ db 117, 105, 110, 116, 56, 44, 117, 105, 110, 116, 49, 54, 44, 117, 105, 110, 116, 51, 50, 44, 117, 105, 110, 116, 54, 52, 44, 117, 105, 110, 116, 44, 105, 110, 116, 56, 44, 105, 110, 116, 49, 54, 44, 105, 110, 116, 51, 50, 44, 105, 110, 116, 54, 52, 44, 105, 110, 116, 44, 102, 108, 111, 97, 116, 51, 50, 44, 102, 108, 111, 97, 116, 54, 52, 44, 102, 108, 111, 97, 116, 44, 98, 111, 111, 108, 44, 118, 111, 105, 100, 44, 118, 101, 99, 116, 44, 116, 121, 112, 101, 0
+parse.KEYTYPES:
+ dq parse.KEYTYPES#ptr + 8
+
+parse.LITERALS#ptr:
+ dq 21
+ db 102, 97, 108, 115, 101, 44, 116, 114, 117, 101, 44, 110, 117, 108, 108, 44, 105, 111, 116, 97, 0
+parse.LITERALS:
+ dq parse.LITERALS#ptr + 8
+
+parse.RESERVED#ptr:
+ dq 32
+ db 126, 96, 33, 64, 35, 36, 37, 94, 38, 42, 40, 41, 91, 93, 123, 125, 45, 43, 61, 34, 39, 92, 124, 59, 58, 47, 63, 46, 62, 44, 60, 0
+parse.RESERVED:
+ dq parse.RESERVED#ptr + 8
+
+parse.OP#ptr:
+ dq 16
+ db 96, 126, 33, 37, 94, 38, 124, 42, 45, 61, 43, 46, 47, 62, 60, 0
+parse.OP:
+ dq parse.OP#ptr + 8
+
+parse.MULTI_OP#ptr:
+ dq 63
+ db 61, 61, 44, 38, 38, 44, 124, 124, 44, 94, 94, 44, 33, 61, 61, 44, 33, 38, 38, 44, 33, 124, 124, 44, 33, 94, 94, 44, 33, 60, 44, 33, 62, 44, 60, 60, 44, 62, 62, 44, 33, 38, 44, 33, 124, 44, 33, 94, 44, 43, 43, 44, 45, 45, 44, 62, 61, 61, 44, 60, 61, 61, 0
+parse.MULTI_OP:
+ dq parse.MULTI_OP#ptr + 8
+
+parse.MAX_MULTI:
+ dq 3
+
+parse.MULTI_OP_W#ptr:
+ dq 7
+ db 105, 115, 44, 108, 101, 110, 0
+parse.MULTI_OP_W:
+ dq parse.MULTI_OP_W#ptr + 8
+
+parse.DELIMS#ptr:
+ dq 7
+ db 40, 41, 91, 93, 123, 125, 0
+parse.DELIMS:
+ dq parse.DELIMS#ptr + 8
+
+parse.NTYPE_MODULE:
+ dw 0
+
+parse.NTYPE_EXPORT:
+ dw 1
+
+parse.NTYPE_STRUCT:
+ dw 2
+
+parse.NTYPE_TYPE:
+ dw 3
+
+parse.NTYPE_ID:
+ dw 4
+
+parse.NTYPE_BIN_OP:
+ dw 5
+
+parse.NTYPE_PRE_OP:
+ dw 6
+
+parse.NTYPE_POST_OP:
+ dw 7
+
+parse.NTYPE_FUNCTION:
+ dw 8
+
+parse.NTYPE_METHOD:
+ dw 9
+
+parse.NTYPE_TLIST:
+ dw 10
+
+parse.NTYPE_DLIST:
+ dw 11
+
+parse.NTYPE_ELIST:
+ dw 12
+
+parse.NTYPE_SLIST:
+ dw 13
+
+parse.NTYPE_LITERAL:
+ dw 14
+
+parse.NTYPE_ENUM:
+ dw 15
+
+parse.NTYPE_DECL:
+ dw 16
+
+parse.NTYPE_VLIST:
+ dw 17
+
+parse.NTYPE_VALUE:
+ dw 18
+
+parse.NTYPE_CAST:
+ dw 19
+
+parse.NTYPE_FLOW_CONTROL:
+ dw 20
+
+parse.NTYPE_IF_BLOCK:
+ dw 21
+
+parse.NTYPE_ELIF_BLOCK:
+ dw 22
+
+parse.NTYPE_ELSE_BLOCK:
+ dw 23
+
+parse.NTYPE_LOOP_BLOCK:
+ dw 24
+
+parse.NTYPE_ASM:
+ dw 998
+
+parse.NTYPE_EMPTY:
+ dw 999
+
+parse.MAX_ERR_SHOW:
+ dq 15
+
+parse.errors_shown:
+ dq 0
+
+parse.is_comment_block#0#const:
+ dq 3
+ db 47, 35, 0
+parse.is_comment_block#0#const#ptr:
+ dq parse.is_comment_block#0#const + 8
+parse.is_multi_delim#0#wrap#0#if#0#const:
+ dq 3
+ db 47, 59, 0
+parse.is_multi_delim#0#wrap#0#if#0#const#ptr:
+ dq parse.is_multi_delim#0#wrap#0#if#0#const + 8
+parse.is_multi_delim#0#wrap#1#if#0#const:
+ dq 3
+ db 59, 59, 0
+parse.is_multi_delim#0#wrap#1#if#0#const#ptr:
+ dq parse.is_multi_delim#0#wrap#1#if#0#const + 8
+parse.is_multi_delim#0#wrap#2#if#0#const:
+ dq 3
+ db 59, 47, 0
+parse.is_multi_delim#0#wrap#2#if#0#const#ptr:
+ dq parse.is_multi_delim#0#wrap#2#if#0#const + 8
+parse.produce_next_token#3#const:
+ dq 1
+ db 0
+parse.produce_next_token#3#const#ptr:
+ dq parse.produce_next_token#3#const + 8
+parse.print_token_type#0#wrap#0#if#0#const:
+ dq 6
+ db 68, 69, 76, 73, 77, 0
+parse.print_token_type#0#wrap#0#if#0#const#ptr:
+ dq parse.print_token_type#0#wrap#0#if#0#const + 8
+parse.print_token_type#0#wrap#1#if#0#const:
+ dq 4
+ db 83, 69, 80, 0
+parse.print_token_type#0#wrap#1#if#0#const#ptr:
+ dq parse.print_token_type#0#wrap#1#if#0#const + 8
+parse.print_token_type#0#wrap#2#if#0#const:
+ dq 6
+ db 75, 69, 89, 87, 68, 0
+parse.print_token_type#0#wrap#2#if#0#const#ptr:
+ dq parse.print_token_type#0#wrap#2#if#0#const + 8
+parse.print_token_type#0#wrap#3#if#0#const:
+ dq 6
+ db 75, 69, 89, 84, 80, 0
+parse.print_token_type#0#wrap#3#if#0#const#ptr:
+ dq parse.print_token_type#0#wrap#3#if#0#const + 8
+parse.print_token_type#0#wrap#4#if#0#const:
+ dq 6
+ db 76, 73, 84, 82, 76, 0
+parse.print_token_type#0#wrap#4#if#0#const#ptr:
+ dq parse.print_token_type#0#wrap#4#if#0#const + 8
+parse.print_token_type#0#wrap#5#if#0#const:
+ dq 4
+ db 65, 85, 71, 0
+parse.print_token_type#0#wrap#5#if#0#const#ptr:
+ dq parse.print_token_type#0#wrap#5#if#0#const + 8
+parse.print_token_type#0#wrap#6#if#0#const:
+ dq 6
+ db 85, 83, 82, 87, 68, 0
+parse.print_token_type#0#wrap#6#if#0#const#ptr:
+ dq parse.print_token_type#0#wrap#6#if#0#const + 8
+parse.print_token_type#0#wrap#7#if#0#const:
+ dq 6
+ db 67, 79, 77, 78, 84, 0
+parse.print_token_type#0#wrap#7#if#0#const#ptr:
+ dq parse.print_token_type#0#wrap#7#if#0#const + 8
+parse.print_token_type#0#wrap#8#if#0#const:
+ dq 8
+ db 85, 78, 75, 78, 79, 87, 78, 0
+parse.print_token_type#0#wrap#8#if#0#const#ptr:
+ dq parse.print_token_type#0#wrap#8#if#0#const + 8
+parse.print_token_type#0#wrap#9#if#0#const:
+ dq 4
+ db 69, 82, 82, 0
+parse.print_token_type#0#wrap#9#if#0#const#ptr:
+ dq parse.print_token_type#0#wrap#9#if#0#const + 8
+parse.print_token#0#const:
+ dq 10
+ db 84, 111, 107, 101, 110, 32, 123, 32, 34, 0
+parse.print_token#0#const#ptr:
+ dq parse.print_token#0#const + 8
+parse.print_token#1#const:
+ dq 12
+ db 34, 44, 32, 108, 105, 110, 101, 58, 32, 37, 117, 0
+parse.print_token#1#const#ptr:
+ dq parse.print_token#1#const + 8
+parse.print_token#2#const:
+ dq 18
+ db 44, 32, 99, 111, 108, 58, 32, 37, 117, 44, 32, 116, 121, 112, 101, 58, 32, 0
+parse.print_token#2#const#ptr:
+ dq parse.print_token#2#const + 8
+parse.print_token#3#const:
+ dq 4
+ db 32, 125, 10, 0
+parse.print_token#3#const#ptr:
+ dq parse.print_token#3#const + 8
+parse._ast_print_err#0#const:
+ dq 3
+ db 58, 10, 0
+parse._ast_print_err#0#const#ptr:
+ dq parse._ast_print_err#0#const + 8
+parse._ast_print_err#1#const:
+ dq 9
+ db 32, 32, 70, 105, 108, 101, 58, 32, 0
+parse._ast_print_err#1#const#ptr:
+ dq parse._ast_print_err#1#const + 8
+parse._ast_print_err#2#const:
+ dq 8
+ db 10, 32, 32, 65, 116, 58, 32, 0
+parse._ast_print_err#2#const#ptr:
+ dq parse._ast_print_err#2#const + 8
+parse._ast_print_err#3#const:
+ dq 2
+ db 10, 0
+parse._ast_print_err#3#const#ptr:
+ dq parse._ast_print_err#3#const + 8
+parse._ast_print_err#4#wrap#0#if#0#const:
+ dq 60
+ db 10, 84, 111, 111, 32, 109, 97, 110, 121, 32, 101, 114, 114, 111, 114, 115, 32, 116, 111, 32, 112, 114, 105, 110, 116, 44, 32, 111, 116, 104, 101, 114, 32, 101, 114, 114, 111, 114, 115, 32, 119, 105, 108, 108, 32, 98, 101, 32, 115, 117, 112, 112, 114, 101, 115, 115, 101, 100, 10, 0
+parse._ast_print_err#4#wrap#0#if#0#const#ptr:
+ dq parse._ast_print_err#4#wrap#0#if#0#const + 8
+parse._ast_block_pass#0#loop#1#wrap#0#if#0#const:
+ dq 3
+ db 59, 47, 0
+parse._ast_block_pass#0#loop#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_block_pass#0#loop#1#wrap#0#if#0#const + 8
+parse._ast_block_pass#0#loop#1#wrap#1#if#0#const:
+ dq 3
+ db 47, 59, 0
+parse._ast_block_pass#0#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._ast_block_pass#0#loop#1#wrap#1#if#0#const + 8
+parse._ast_block_pass#0#loop#1#wrap#2#if#1#const:
+ dq 3
+ db 59, 59, 0
+parse._ast_block_pass#0#loop#1#wrap#2#if#1#const#ptr:
+ dq parse._ast_block_pass#0#loop#1#wrap#2#if#1#const + 8
+parse._op_prefix#1#wrap#0#if#2#const:
+ dq 4
+ db 108, 101, 110, 0
+parse._op_prefix#1#wrap#0#if#2#const#ptr:
+ dq parse._op_prefix#1#wrap#0#if#2#const + 8
+parse._op_prefix#1#wrap#0#if#3#const:
+ dq 3
+ db 45, 45, 0
+parse._op_prefix#1#wrap#0#if#3#const#ptr:
+ dq parse._op_prefix#1#wrap#0#if#3#const + 8
+parse._op_prefix#1#wrap#0#if#4#const:
+ dq 3
+ db 43, 43, 0
+parse._op_prefix#1#wrap#0#if#4#const#ptr:
+ dq parse._op_prefix#1#wrap#0#if#4#const + 8
+parse._op_postfix#0#wrap#0#if#2#const:
+ dq 2
+ db 96, 0
+parse._op_postfix#0#wrap#0#if#2#const#ptr:
+ dq parse._op_postfix#0#wrap#0#if#2#const + 8
+parse._op_postfix#0#wrap#0#if#3#const:
+ dq 3
+ db 43, 43, 0
+parse._op_postfix#0#wrap#0#if#3#const#ptr:
+ dq parse._op_postfix#0#wrap#0#if#3#const + 8
+parse._op_postfix#0#wrap#0#if#4#const:
+ dq 3
+ db 45, 45, 0
+parse._op_postfix#0#wrap#0#if#4#const#ptr:
+ dq parse._op_postfix#0#wrap#0#if#4#const + 8
+parse._op_bin#0#wrap#0#if#0#const:
+ dq 2
+ db 45, 0
+parse._op_bin#0#wrap#0#if#0#const#ptr:
+ dq parse._op_bin#0#wrap#0#if#0#const + 8
+parse._op_order#0#wrap#1#if#0#wrap#0#if#0#const:
+ dq 3
+ db 105, 115, 0
+parse._op_order#0#wrap#1#if#0#wrap#0#if#0#const#ptr:
+ dq parse._op_order#0#wrap#1#if#0#wrap#0#if#0#const + 8
+parse._op_order#0#wrap#2#if#0#wrap#0#if#0#const:
+ dq 4
+ db 108, 101, 110, 0
+parse._op_order#0#wrap#2#if#0#wrap#0#if#0#const#ptr:
+ dq parse._op_order#0#wrap#2#if#0#wrap#0#if#0#const + 8
+parse._op_order#1#const:
+ dq 65
+ db 91, 70, 65, 84, 65, 76, 93, 32, 91, 67, 77, 80, 69, 82, 82, 93, 32, 95, 111, 112, 95, 111, 114, 100, 101, 114, 58, 32, 65, 117, 103, 109, 101, 110, 116, 32, 110, 111, 116, 32, 105, 109, 112, 108, 101, 109, 101, 110, 116, 101, 100, 32, 105, 110, 32, 111, 114, 100, 101, 114, 105, 110, 103, 32, 0
+parse._op_order#1#const#ptr:
+ dq parse._op_order#1#const + 8
+parse._op_order#2#const:
+ dq 6
+ db 39, 37, 115, 39, 10, 0
+parse._op_order#2#const#ptr:
+ dq parse._op_order#2#const + 8
+parse._astv_pre_id#0#loop#0#wrap#0#if#0#const:
+ dq 85
+ db 79, 110, 108, 121, 32, 99, 101, 114, 116, 97, 105, 110, 32, 97, 117, 103, 109, 101, 110, 116, 115, 32, 40, 45, 44, 32, 33, 44, 32, 126, 44, 32, 45, 45, 44, 32, 43, 43, 44, 32, 108, 101, 110, 41, 32, 99, 97, 110, 32, 98, 101, 32, 117, 115, 101, 100, 32, 97, 115, 32, 112, 114, 101, 102, 105, 120, 101, 115, 32, 102, 111, 114, 32, 98, 97, 114, 101, 32, 118, 97, 108, 117, 101, 115, 0
+parse._astv_pre_id#0#loop#0#wrap#0#if#0#const#ptr:
+ dq parse._astv_pre_id#0#loop#0#wrap#0#if#0#const + 8
+parse._astv_cast#0#wrap#0#if#0#const:
+ dq 2
+ db 91, 0
+parse._astv_cast#0#wrap#0#if#0#const#ptr:
+ dq parse._astv_cast#0#wrap#0#if#0#const + 8
+parse._astv_cast#0#wrap#0#if#1#const:
+ dq 1
+ db 0
+parse._astv_cast#0#wrap#0#if#1#const#ptr:
+ dq parse._astv_cast#0#wrap#0#if#1#const + 8
+parse._astv_post_id#0#loop#1#wrap#2#if#0#const:
+ dq 2
+ db 40, 0
+parse._astv_post_id#0#loop#1#wrap#2#if#0#const#ptr:
+ dq parse._astv_post_id#0#loop#1#wrap#2#if#0#const + 8
+parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#0#if#1#const:
+ dq 2
+ db 91, 0
+parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#0#if#1#const#ptr:
+ dq parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#0#if#1#const + 8
+parse._astv_post_id#0#loop#1#wrap#3#if#0#const:
+ dq 2
+ db 123, 0
+parse._astv_post_id#0#loop#1#wrap#3#if#0#const#ptr:
+ dq parse._astv_post_id#0#loop#1#wrap#3#if#0#const + 8
+parse._astv_post_id#0#loop#1#wrap#3#if#1#wrap#0#if#0#const:
+ dq 45
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 118, 97, 108, 117, 101, 32, 102, 111, 114, 32, 105, 110, 100, 101, 120, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 32, 97, 102, 116, 101, 114, 32, 39, 123, 39, 0
+parse._astv_post_id#0#loop#1#wrap#3#if#1#wrap#0#if#0#const#ptr:
+ dq parse._astv_post_id#0#loop#1#wrap#3#if#1#wrap#0#if#0#const + 8
+parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#0#if#0#const:
+ dq 2
+ db 125, 0
+parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#0#if#0#const#ptr:
+ dq parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#0#if#0#const + 8
+parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#0#if#1#const:
+ dq 67
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 125, 39, 32, 116, 111, 32, 115, 104, 111, 119, 32, 116, 104, 101, 32, 101, 110, 100, 32, 111, 102, 32, 97, 110, 32, 105, 110, 100, 101, 120, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 32, 97, 102, 116, 101, 114, 32, 116, 104, 101, 32, 118, 97, 108, 117, 101, 0
+parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#0#if#1#const#ptr:
+ dq parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#0#if#1#const + 8
+parse._ast_value_bare#0#wrap#0#if#0#const:
+ dq 2
+ db 123, 0
+parse._ast_value_bare#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_value_bare#0#wrap#0#if#0#const + 8
+parse._ast_value_bare#0#wrap#1#if#0#const:
+ dq 2
+ db 40, 0
+parse._ast_value_bare#0#wrap#1#if#0#const#ptr:
+ dq parse._ast_value_bare#0#wrap#1#if#0#const + 8
+parse._ast_value_bare#0#wrap#1#if#1#wrap#0#if#0#const:
+ dq 2
+ db 41, 0
+parse._ast_value_bare#0#wrap#1#if#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_value_bare#0#wrap#1#if#1#wrap#0#if#0#const + 8
+parse._ast_value_bare#0#wrap#1#if#1#wrap#0#if#1#const:
+ dq 33
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 99, 108, 111, 115, 105, 110, 103, 32, 39, 41, 39, 32, 102, 111, 114, 32, 115, 105, 110, 103, 108, 101, 116, 0
+parse._ast_value_bare#0#wrap#1#if#1#wrap#0#if#1#const#ptr:
+ dq parse._ast_value_bare#0#wrap#1#if#1#wrap#0#if#1#const + 8
+parse._ast_value_bare#0#wrap#4#if#0#const:
+ dq 72
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 99, 111, 109, 112, 111, 117, 110, 100, 44, 32, 112, 97, 114, 101, 110, 116, 104, 101, 116, 105, 99, 97, 108, 44, 32, 108, 105, 116, 101, 114, 97, 108, 44, 32, 111, 114, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 102, 111, 114, 32, 98, 97, 114, 101, 32, 118, 97, 108, 117, 101, 0
+parse._ast_value_bare#0#wrap#4#if#0#const#ptr:
+ dq parse._ast_value_bare#0#wrap#4#if#0#const + 8
+parse._ast_value_bare#2#loop#1#const:
+ dq 2
+ db 46, 0
+parse._ast_value_bare#2#loop#1#const#ptr:
+ dq parse._ast_value_bare#2#loop#1#const + 8
+parse._ast_value_bare#2#loop#2#wrap#0#if#0#const:
+ dq 38
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 109, 101, 116, 104, 111, 100, 47, 109, 101, 109, 98, 101, 114, 32, 110, 97, 109, 101, 32, 97, 102, 116, 101, 114, 32, 39, 46, 39, 0
+parse._ast_value_bare#2#loop#2#wrap#0#if#0#const#ptr:
+ dq parse._ast_value_bare#2#loop#2#wrap#0#if#0#const + 8
+parse._ast_value_bare#2#loop#3#const:
+ dq 2
+ db 46, 0
+parse._ast_value_bare#2#loop#3#const#ptr:
+ dq parse._ast_value_bare#2#loop#3#const + 8
+parse._ast_value_bare#2#loop#6#const:
+ dq 2
+ db 46, 0
+parse._ast_value_bare#2#loop#6#const#ptr:
+ dq parse._ast_value_bare#2#loop#6#const + 8
+parse._ast_value#0#const:
+ dq 1
+ db 0
+parse._ast_value#0#const#ptr:
+ dq parse._ast_value#0#const + 8
+parse._ast_value#1#loop#1#wrap#1#if#0#const:
+ dq 2
+ db 46, 0
+parse._ast_value#1#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._ast_value#1#loop#1#wrap#1#if#0#const + 8
+parse._ast_value#1#loop#1#wrap#2#if#3#wrap#0#if#0#const:
+ dq 3
+ db 105, 115, 0
+parse._ast_value#1#loop#1#wrap#2#if#3#wrap#0#if#0#const#ptr:
+ dq parse._ast_value#1#loop#1#wrap#2#if#3#wrap#0#if#0#const + 8
+parse._ast_keyword_expr#0#wrap#0#if#2#const:
+ dq 7
+ db 114, 101, 116, 117, 114, 110, 0
+parse._ast_keyword_expr#0#wrap#0#if#2#const#ptr:
+ dq parse._ast_keyword_expr#0#wrap#0#if#2#const + 8
+parse._ast_keyword_expr#0#wrap#0#if#3#const:
+ dq 9
+ db 99, 111, 110, 116, 105, 110, 117, 101, 0
+parse._ast_keyword_expr#0#wrap#0#if#3#const#ptr:
+ dq parse._ast_keyword_expr#0#wrap#0#if#3#const + 8
+parse._ast_keyword_expr#0#wrap#0#if#4#const:
+ dq 6
+ db 98, 114, 101, 97, 107, 0
+parse._ast_keyword_expr#0#wrap#0#if#4#const#ptr:
+ dq parse._ast_keyword_expr#0#wrap#0#if#4#const + 8
+parse._ast_keyword_expr#0#wrap#1#if#0#const:
+ dq 30
+ db 85, 110, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 107, 101, 121, 119, 111, 114, 100, 32, 115, 116, 97, 116, 101, 109, 101, 110, 116, 0
+parse._ast_keyword_expr#0#wrap#1#if#0#const#ptr:
+ dq parse._ast_keyword_expr#0#wrap#1#if#0#const + 8
+parse._type_helper_pre#0#loop#1#wrap#0#if#1#const:
+ dq 2
+ db 126, 0
+parse._type_helper_pre#0#loop#1#wrap#0#if#1#const#ptr:
+ dq parse._type_helper_pre#0#loop#1#wrap#0#if#1#const + 8
+parse._type_helper_pre#0#loop#1#wrap#1#if#1#const:
+ dq 2
+ db 123, 0
+parse._type_helper_pre#0#loop#1#wrap#1#if#1#const#ptr:
+ dq parse._type_helper_pre#0#loop#1#wrap#1#if#1#const + 8
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#0#if#0#const:
+ dq 2
+ db 125, 0
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#0#if#0#const + 8
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#1#if#0#const:
+ dq 55
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 99, 108, 111, 115, 105, 110, 103, 32, 39, 125, 39, 32, 97, 102, 116, 101, 114, 32, 105, 110, 116, 101, 103, 101, 114, 32, 105, 110, 32, 116, 121, 112, 101, 32, 100, 101, 99, 108, 97, 114, 97, 116, 105, 111, 110, 0
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#1#if#0#const#ptr:
+ dq parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#1#if#0#const + 8
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#1#if#0#const:
+ dq 2
+ db 125, 0
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#1#if#0#const#ptr:
+ dq parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#1#if#0#const + 8
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#2#if#0#const:
+ dq 95
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 105, 110, 116, 101, 103, 101, 114, 32, 111, 114, 32, 39, 125, 39, 32, 116, 111, 32, 100, 101, 102, 105, 110, 101, 32, 101, 105, 116, 104, 101, 114, 32, 97, 32, 102, 105, 120, 101, 100, 32, 115, 105, 122, 101, 100, 32, 97, 114, 114, 97, 121, 32, 111, 114, 32, 112, 111, 105, 110, 116, 101, 114, 32, 116, 111, 32, 117, 110, 107, 110, 111, 119, 110, 32, 115, 105, 122, 101, 100, 32, 97, 114, 114, 97, 121, 0
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#2#if#0#const#ptr:
+ dq parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#2#if#0#const + 8
+parse._type_helper_func#0#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+parse._type_helper_func#0#wrap#0#if#0#const#ptr:
+ dq parse._type_helper_func#0#wrap#0#if#0#const + 8
+parse._type_helper_func#1#wrap#0#if#0#const:
+ dq 2
+ db 91, 0
+parse._type_helper_func#1#wrap#0#if#0#const#ptr:
+ dq parse._type_helper_func#1#wrap#0#if#0#const + 8
+parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#0#if#1#const:
+ dq 2
+ db 46, 0
+parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#0#if#1#const + 8
+parse._type_helper_usertype#0#loop#1#wrap#1#if#0#const:
+ dq 50
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 105, 110, 32, 102, 117, 108, 108, 121, 32, 113, 117, 97, 108, 105, 102, 105, 101, 100, 32, 116, 121, 112, 101, 32, 99, 104, 97, 105, 110, 0
+parse._type_helper_usertype#0#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._type_helper_usertype#0#loop#1#wrap#1#if#0#const + 8
+parse._type_helper_usertype#1#wrap#0#if#1#const:
+ dq 2
+ db 40, 0
+parse._type_helper_usertype#1#wrap#0#if#1#const#ptr:
+ dq parse._type_helper_usertype#1#wrap#0#if#1#const + 8
+parse._ast_type#0#const:
+ dq 1
+ db 0
+parse._ast_type#0#const#ptr:
+ dq parse._ast_type#0#const + 8
+parse._ast_type#1#wrap#0#if#0#const:
+ dq 5
+ db 118, 111, 105, 100, 0
+parse._ast_type#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_type#1#wrap#0#if#0#const + 8
+parse._ast_type#2#wrap#2#if#0#const:
+ dq 47
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 107, 101, 121, 116, 121, 112, 101, 32, 111, 114, 32, 117, 115, 101, 114, 116, 121, 112, 101, 32, 119, 104, 101, 110, 32, 112, 97, 114, 115, 105, 110, 103, 32, 116, 121, 112, 101, 0
+parse._ast_type#2#wrap#2#if#0#const#ptr:
+ dq parse._ast_type#2#wrap#2#if#0#const + 8
+parse._ast_type#3#wrap#0#if#0#const:
+ dq 2
+ db 96, 0
+parse._ast_type#3#wrap#0#if#0#const#ptr:
+ dq parse._ast_type#3#wrap#0#if#0#const + 8
+parse._ast_list_value#0#loop#1#wrap#0#if#1#const:
+ dq 2
+ db 44, 0
+parse._ast_list_value#0#loop#1#wrap#0#if#1#const#ptr:
+ dq parse._ast_list_value#0#loop#1#wrap#0#if#1#const + 8
+parse._ast_list_value#0#loop#1#wrap#0#if#3#const:
+ dq 63
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 44, 39, 32, 116, 111, 32, 99, 111, 110, 116, 105, 110, 117, 101, 32, 116, 104, 101, 32, 118, 97, 108, 117, 101, 32, 108, 105, 115, 116, 32, 111, 114, 32, 97, 32, 99, 108, 111, 115, 105, 110, 103, 32, 100, 101, 108, 105, 109, 105, 116, 101, 114, 0
+parse._ast_list_value#0#loop#1#wrap#0#if#3#const#ptr:
+ dq parse._ast_list_value#0#loop#1#wrap#0#if#3#const + 8
+parse._maybe_helper_decl#0#wrap#0#if#2#const:
+ dq 2
+ db 44, 0
+parse._maybe_helper_decl#0#wrap#0#if#2#const#ptr:
+ dq parse._maybe_helper_decl#0#wrap#0#if#2#const + 8
+parse._maybe_helper_decl#1#const:
+ dq 1
+ db 0
+parse._maybe_helper_decl#1#const#ptr:
+ dq parse._maybe_helper_decl#1#const + 8
+parse._maybe_helper_decl#2#wrap#0#if#1#const:
+ dq 2
+ db 46, 0
+parse._maybe_helper_decl#2#wrap#0#if#1#const#ptr:
+ dq parse._maybe_helper_decl#2#wrap#0#if#1#const + 8
+parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#0#if#1#const:
+ dq 2
+ db 46, 0
+parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#0#if#1#const + 8
+parse._maybe_helper_decl#3#loop#1#wrap#1#if#0#const:
+ dq 50
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 105, 110, 32, 102, 117, 108, 108, 121, 32, 113, 117, 97, 108, 105, 102, 105, 101, 100, 32, 116, 121, 112, 101, 32, 99, 104, 97, 105, 110, 0
+parse._maybe_helper_decl#3#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._maybe_helper_decl#3#loop#1#wrap#1#if#0#const + 8
+parse._maybe_helper_decl#4#wrap#0#if#1#const:
+ dq 2
+ db 40, 0
+parse._maybe_helper_decl#4#wrap#0#if#1#const#ptr:
+ dq parse._maybe_helper_decl#4#wrap#0#if#1#const + 8
+parse._maybe_helper_decl#5#wrap#0#if#0#const:
+ dq 49
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 97, 102, 116, 101, 114, 32, 117, 115, 101, 114, 32, 116, 121, 112, 101, 32, 105, 110, 32, 116, 121, 112, 101, 32, 108, 105, 115, 116, 0
+parse._maybe_helper_decl#5#wrap#0#if#0#const#ptr:
+ dq parse._maybe_helper_decl#5#wrap#0#if#0#const + 8
+parse._ast_list_decl#0#loop#1#wrap#0#if#3#const:
+ dq 2
+ db 126, 0
+parse._ast_list_decl#0#loop#1#wrap#0#if#3#const#ptr:
+ dq parse._ast_list_decl#0#loop#1#wrap#0#if#3#const + 8
+parse._ast_list_decl#0#loop#1#wrap#0#if#4#const:
+ dq 2
+ db 123, 0
+parse._ast_list_decl#0#loop#1#wrap#0#if#4#const#ptr:
+ dq parse._ast_list_decl#0#loop#1#wrap#0#if#4#const + 8
+parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#0#if#0#const:
+ dq 65
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 116, 121, 112, 101, 32, 116, 104, 101, 110, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 97, 115, 32, 102, 105, 114, 115, 116, 32, 105, 116, 101, 109, 115, 32, 105, 110, 32, 100, 101, 99, 108, 97, 114, 97, 116, 105, 111, 110, 32, 108, 105, 115, 116, 0
+parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#0#if#0#const + 8
+parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#1#if#0#const:
+ dq 52
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 97, 102, 116, 101, 114, 32, 116, 121, 112, 101, 32, 105, 110, 32, 112, 97, 114, 97, 109, 115, 47, 115, 116, 114, 117, 99, 116, 32, 100, 101, 102, 0
+parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#1#if#0#const + 8
+parse._ast_list_decl#0#loop#1#wrap#2#if#0#const:
+ dq 52
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 116, 121, 112, 101, 32, 111, 114, 32, 112, 97, 114, 97, 109, 101, 116, 101, 114, 32, 110, 97, 109, 101, 32, 105, 110, 32, 100, 101, 99, 108, 97, 114, 97, 116, 105, 111, 110, 32, 108, 105, 115, 116, 0
+parse._ast_list_decl#0#loop#1#wrap#2#if#0#const#ptr:
+ dq parse._ast_list_decl#0#loop#1#wrap#2#if#0#const + 8
+parse._ast_list_decl#0#loop#2#wrap#0#if#1#const:
+ dq 2
+ db 44, 0
+parse._ast_list_decl#0#loop#2#wrap#0#if#1#const#ptr:
+ dq parse._ast_list_decl#0#loop#2#wrap#0#if#1#const + 8
+parse._ast_list_decl#0#loop#2#wrap#0#if#2#const:
+ dq 69
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 44, 39, 32, 116, 111, 32, 99, 111, 110, 116, 105, 110, 117, 101, 32, 116, 104, 101, 32, 100, 101, 99, 108, 97, 114, 97, 116, 105, 111, 110, 32, 108, 105, 115, 116, 32, 111, 114, 32, 97, 32, 99, 108, 111, 115, 105, 110, 103, 32, 100, 101, 108, 105, 109, 105, 116, 101, 114, 0
+parse._ast_list_decl#0#loop#2#wrap#0#if#2#const#ptr:
+ dq parse._ast_list_decl#0#loop#2#wrap#0#if#2#const + 8
+parse._ast_list_enum#0#loop#1#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 61, 0
+parse._ast_list_enum#0#loop#1#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_list_enum#0#loop#1#wrap#0#if#0#wrap#0#if#0#const + 8
+parse._ast_list_enum#0#loop#1#wrap#1#if#0#const:
+ dq 48
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 105, 110, 32, 98, 111, 100, 121, 32, 111, 102, 32, 101, 110, 117, 109, 32, 100, 101, 99, 108, 97, 114, 97, 116, 105, 111, 110, 0
+parse._ast_list_enum#0#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._ast_list_enum#0#loop#1#wrap#1#if#0#const + 8
+parse._ast_list_enum#0#loop#2#wrap#0#if#0#const:
+ dq 2
+ db 44, 0
+parse._ast_list_enum#0#loop#2#wrap#0#if#0#const#ptr:
+ dq parse._ast_list_enum#0#loop#2#wrap#0#if#0#const + 8
+parse._ast_list_enum#0#loop#3#wrap#0#if#1#const:
+ dq 2
+ db 44, 0
+parse._ast_list_enum#0#loop#3#wrap#0#if#1#const#ptr:
+ dq parse._ast_list_enum#0#loop#3#wrap#0#if#1#const + 8
+parse._ast_list_enum#0#loop#3#wrap#0#if#2#const:
+ dq 62
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 44, 39, 32, 116, 111, 32, 99, 111, 110, 116, 105, 110, 117, 101, 32, 116, 104, 101, 32, 116, 121, 112, 101, 32, 108, 105, 115, 116, 32, 111, 114, 32, 97, 32, 99, 108, 111, 115, 105, 110, 103, 32, 100, 101, 108, 105, 109, 105, 116, 101, 114, 0
+parse._ast_list_enum#0#loop#3#wrap#0#if#2#const#ptr:
+ dq parse._ast_list_enum#0#loop#3#wrap#0#if#2#const + 8
+parse._ast_list_type#0#loop#1#wrap#0#if#3#const:
+ dq 2
+ db 126, 0
+parse._ast_list_type#0#loop#1#wrap#0#if#3#const#ptr:
+ dq parse._ast_list_type#0#loop#1#wrap#0#if#3#const + 8
+parse._ast_list_type#0#loop#1#wrap#0#if#4#const:
+ dq 2
+ db 123, 0
+parse._ast_list_type#0#loop#1#wrap#0#if#4#const#ptr:
+ dq parse._ast_list_type#0#loop#1#wrap#0#if#4#const + 8
+parse._ast_list_type#0#loop#1#wrap#1#if#0#const:
+ dq 27
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 116, 121, 112, 101, 32, 105, 110, 32, 116, 121, 112, 101, 32, 108, 105, 115, 116, 0
+parse._ast_list_type#0#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._ast_list_type#0#loop#1#wrap#1#if#0#const + 8
+parse._ast_list_type#0#loop#2#wrap#0#if#1#const:
+ dq 2
+ db 44, 0
+parse._ast_list_type#0#loop#2#wrap#0#if#1#const#ptr:
+ dq parse._ast_list_type#0#loop#2#wrap#0#if#1#const + 8
+parse._ast_list_type#0#loop#2#wrap#0#if#2#const:
+ dq 62
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 44, 39, 32, 116, 111, 32, 99, 111, 110, 116, 105, 110, 117, 101, 32, 116, 104, 101, 32, 116, 121, 112, 101, 32, 108, 105, 115, 116, 32, 111, 114, 32, 97, 32, 99, 108, 111, 115, 105, 110, 103, 32, 100, 101, 108, 105, 109, 105, 116, 101, 114, 0
+parse._ast_list_type#0#loop#2#wrap#0#if#2#const#ptr:
+ dq parse._ast_list_type#0#loop#2#wrap#0#if#2#const + 8
+parse._ast_list_stmt#0#loop#2#wrap#0#if#0#const:
+ dq 4
+ db 97, 115, 109, 0
+parse._ast_list_stmt#0#loop#2#wrap#0#if#0#const#ptr:
+ dq parse._ast_list_stmt#0#loop#2#wrap#0#if#0#const + 8
+parse._ast_list_stmt#0#loop#2#wrap#1#if#1#const:
+ dq 2
+ db 123, 0
+parse._ast_list_stmt#0#loop#2#wrap#1#if#1#const#ptr:
+ dq parse._ast_list_stmt#0#loop#2#wrap#1#if#1#const + 8
+parse._ast_list_stmt#0#loop#2#wrap#2#if#1#const:
+ dq 2
+ db 126, 0
+parse._ast_list_stmt#0#loop#2#wrap#2#if#1#const#ptr:
+ dq parse._ast_list_stmt#0#loop#2#wrap#2#if#1#const + 8
+parse._ast_list_stmt#0#loop#2#wrap#3#if#2#const:
+ dq 2
+ db 40, 0
+parse._ast_list_stmt#0#loop#2#wrap#3#if#2#const#ptr:
+ dq parse._ast_list_stmt#0#loop#2#wrap#3#if#2#const + 8
+parse._ast_list_stmt#0#loop#2#wrap#5#if#0#const:
+ dq 2
+ db 59, 0
+parse._ast_list_stmt#0#loop#2#wrap#5#if#0#const#ptr:
+ dq parse._ast_list_stmt#0#loop#2#wrap#5#if#0#const + 8
+parse._ast_list_stmt#0#loop#2#wrap#5#if#1#const:
+ dq 1
+ db 0
+parse._ast_list_stmt#0#loop#2#wrap#5#if#1#const#ptr:
+ dq parse._ast_list_stmt#0#loop#2#wrap#5#if#1#const + 8
+parse._ast_list_stmt#0#loop#2#wrap#6#if#0#const:
+ dq 58
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 100, 101, 102, 105, 110, 105, 116, 105, 111, 110, 44, 32, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 44, 32, 111, 114, 32, 39, 59, 39, 32, 105, 110, 32, 115, 116, 97, 116, 101, 109, 101, 110, 116, 32, 108, 105, 115, 116, 0
+parse._ast_list_stmt#0#loop#2#wrap#6#if#0#const#ptr:
+ dq parse._ast_list_stmt#0#loop#2#wrap#6#if#0#const + 8
+parse._ast_list_stmt#0#loop#3#wrap#0#if#0#const:
+ dq 2
+ db 59, 0
+parse._ast_list_stmt#0#loop#3#wrap#0#if#0#const#ptr:
+ dq parse._ast_list_stmt#0#loop#3#wrap#0#if#0#const + 8
+parse._ast_list_stmt#1#wrap#0#if#1#const:
+ dq 42
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 99, 108, 111, 115, 105, 110, 103, 32, 97, 116, 32, 101, 110, 100, 32, 111, 102, 32, 115, 116, 97, 116, 101, 109, 101, 110, 116, 32, 108, 105, 115, 116, 0
+parse._ast_list_stmt#1#wrap#0#if#1#const#ptr:
+ dq parse._ast_list_stmt#1#wrap#0#if#1#const + 8
+parse._block_helper_method#0#loop#0#wrap#1#if#0#const:
+ dq 55
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 114, 32, 111, 112, 101, 114, 97, 116, 111, 114, 32, 111, 118, 101, 114, 108, 111, 97, 100, 32, 105, 110, 32, 109, 101, 116, 104, 111, 100, 32, 98, 108, 111, 99, 107, 0
+parse._block_helper_method#0#loop#0#wrap#1#if#0#const#ptr:
+ dq parse._block_helper_method#0#loop#0#wrap#1#if#0#const + 8
+parse._block_helper_method#0#loop#1#wrap#0#if#0#const:
+ dq 3
+ db 59, 47, 0
+parse._block_helper_method#0#loop#1#wrap#0#if#0#const#ptr:
+ dq parse._block_helper_method#0#loop#1#wrap#0#if#0#const + 8
+parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#1#if#0#const:
+ dq 3
+ db 47, 59, 0
+parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#1#if#0#const#ptr:
+ dq parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#1#if#0#const + 8
+parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#1#if#1#const:
+ dq 39
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 111, 112, 101, 110, 105, 110, 103, 32, 98, 108, 111, 99, 107, 32, 105, 110, 32, 109, 101, 116, 104, 111, 100, 32, 98, 108, 111, 99, 107, 0
+parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#1#if#1#const#ptr:
+ dq parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#1#if#1#const + 8
+parse._block_helper_method#0#loop#1#wrap#1#if#0#const:
+ dq 3
+ db 59, 59, 0
+parse._block_helper_method#0#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._block_helper_method#0#loop#1#wrap#1#if#0#const + 8
+parse._block_helper_method#0#loop#1#wrap#1#if#1#const:
+ dq 55
+ db 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 102, 105, 110, 100, 32, 99, 108, 111, 115, 105, 110, 103, 32, 59, 47, 32, 102, 111, 114, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 105, 110, 32, 109, 101, 116, 104, 111, 100, 32, 98, 108, 111, 99, 107, 0
+parse._block_helper_method#0#loop#1#wrap#1#if#1#const#ptr:
+ dq parse._block_helper_method#0#loop#1#wrap#1#if#1#const + 8
+parse._ast_method#0#wrap#0#if#0#const:
+ dq 45
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 111, 102, 32, 115, 116, 114, 117, 99, 116, 32, 97, 102, 116, 101, 114, 32, 39, 109, 101, 116, 104, 111, 100, 39, 0
+parse._ast_method#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_method#0#wrap#0#if#0#const + 8
+parse._ast_method#1#loop#1#wrap#0#if#0#const:
+ dq 3
+ db 47, 59, 0
+parse._ast_method#1#loop#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_method#1#loop#1#wrap#0#if#0#const + 8
+parse._ast_method#1#loop#1#wrap#1#if#0#wrap#0#if#0#const:
+ dq 62
+ db 77, 101, 116, 104, 111, 100, 32, 98, 108, 111, 99, 107, 32, 98, 101, 105, 110, 103, 32, 115, 107, 105, 112, 112, 101, 100, 46, 32, 80, 97, 114, 115, 105, 110, 103, 32, 119, 105, 108, 108, 32, 114, 101, 115, 117, 109, 101, 32, 97, 102, 116, 101, 114, 32, 116, 104, 101, 32, 101, 110, 100, 0
+parse._ast_method#1#loop#1#wrap#1#if#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_method#1#loop#1#wrap#1#if#0#wrap#0#if#0#const + 8
+parse._ast_method#2#wrap#0#if#0#const:
+ dq 3
+ db 59, 47, 0
+parse._ast_method#2#wrap#0#if#0#const#ptr:
+ dq parse._ast_method#2#wrap#0#if#0#const + 8
+parse._ast_method#2#wrap#0#if#1#const:
+ dq 43
+ db 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 102, 105, 110, 100, 32, 99, 108, 111, 115, 105, 110, 103, 32, 59, 47, 32, 102, 111, 114, 32, 109, 101, 116, 104, 111, 100, 32, 98, 108, 111, 99, 107, 0
+parse._ast_method#2#wrap#0#if#1#const#ptr:
+ dq parse._ast_method#2#wrap#0#if#1#const + 8
+parse._ast_flow#0#wrap#0#if#0#const:
+ dq 5
+ db 101, 108, 115, 101, 0
+parse._ast_flow#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_flow#0#wrap#0#if#0#const + 8
+parse._ast_flow#0#wrap#0#if#1#wrap#0#if#0#const:
+ dq 3
+ db 105, 102, 0
+parse._ast_flow#0#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_flow#0#wrap#0#if#1#wrap#0#if#0#const + 8
+parse._ast_flow#0#wrap#1#if#0#const:
+ dq 5
+ db 108, 111, 111, 112, 0
+parse._ast_flow#0#wrap#1#if#0#const#ptr:
+ dq parse._ast_flow#0#wrap#1#if#0#const + 8
+parse._ast_flow#1#const:
+ dq 1
+ db 0
+parse._ast_flow#1#const#ptr:
+ dq parse._ast_flow#1#const + 8
+parse._ast_flow#2#wrap#0#if#1#const:
+ dq 2
+ db 40, 0
+parse._ast_flow#2#wrap#0#if#1#const#ptr:
+ dq parse._ast_flow#2#wrap#0#if#1#const + 8
+parse._ast_flow#3#wrap#0#if#1#const:
+ dq 2
+ db 91, 0
+parse._ast_flow#3#wrap#0#if#1#const#ptr:
+ dq parse._ast_flow#3#wrap#0#if#1#const + 8
+parse._ast_flow#4#loop#1#wrap#1#if#0#const:
+ dq 4
+ db 97, 115, 109, 0
+parse._ast_flow#4#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._ast_flow#4#loop#1#wrap#1#if#0#const + 8
+parse._ast_flow#4#loop#1#wrap#2#if#0#const:
+ dq 3
+ db 47, 59, 0
+parse._ast_flow#4#loop#1#wrap#2#if#0#const#ptr:
+ dq parse._ast_flow#4#loop#1#wrap#2#if#0#const + 8
+parse._ast_flow#4#loop#1#wrap#3#if#1#const:
+ dq 2
+ db 123, 0
+parse._ast_flow#4#loop#1#wrap#3#if#1#const#ptr:
+ dq parse._ast_flow#4#loop#1#wrap#3#if#1#const + 8
+parse._ast_flow#4#loop#1#wrap#4#if#1#const:
+ dq 2
+ db 126, 0
+parse._ast_flow#4#loop#1#wrap#4#if#1#const#ptr:
+ dq parse._ast_flow#4#loop#1#wrap#4#if#1#const + 8
+parse._ast_flow#4#loop#1#wrap#5#if#2#const:
+ dq 2
+ db 40, 0
+parse._ast_flow#4#loop#1#wrap#5#if#2#const#ptr:
+ dq parse._ast_flow#4#loop#1#wrap#5#if#2#const + 8
+parse._ast_flow#4#loop#1#wrap#7#if#0#const:
+ dq 60
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 100, 101, 102, 105, 110, 105, 116, 105, 111, 110, 44, 32, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 44, 32, 111, 114, 32, 115, 117, 98, 32, 98, 108, 111, 99, 107, 32, 105, 110, 32, 102, 108, 111, 119, 32, 98, 108, 111, 99, 107, 0
+parse._ast_flow#4#loop#1#wrap#7#if#0#const#ptr:
+ dq parse._ast_flow#4#loop#1#wrap#7#if#0#const + 8
+parse._ast_fun_block#0#loop#1#wrap#0#if#2#const:
+ dq 3
+ db 105, 102, 0
+parse._ast_fun_block#0#loop#1#wrap#0#if#2#const#ptr:
+ dq parse._ast_fun_block#0#loop#1#wrap#0#if#2#const + 8
+parse._ast_fun_block#0#loop#1#wrap#0#if#3#const:
+ dq 5
+ db 101, 108, 115, 101, 0
+parse._ast_fun_block#0#loop#1#wrap#0#if#3#const#ptr:
+ dq parse._ast_fun_block#0#loop#1#wrap#0#if#3#const + 8
+parse._ast_fun_block#0#loop#1#wrap#0#if#4#const:
+ dq 5
+ db 108, 111, 111, 112, 0
+parse._ast_fun_block#0#loop#1#wrap#0#if#4#const#ptr:
+ dq parse._ast_fun_block#0#loop#1#wrap#0#if#4#const + 8
+parse._ast_fun_block#0#loop#1#wrap#1#if#0#const:
+ dq 58
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 105, 102, 39, 44, 32, 39, 101, 108, 115, 101, 39, 44, 32, 111, 114, 32, 39, 108, 111, 111, 112, 39, 32, 102, 111, 114, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 108, 101, 118, 101, 108, 32, 98, 108, 111, 99, 107, 0
+parse._ast_fun_block#0#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._ast_fun_block#0#loop#1#wrap#1#if#0#const + 8
+parse._ast_fun_block#0#loop#2#const:
+ dq 3
+ db 59, 59, 0
+parse._ast_fun_block#0#loop#2#const#ptr:
+ dq parse._ast_fun_block#0#loop#2#const + 8
+parse._ast_fun_block#0#loop#3#wrap#0#if#1#const:
+ dq 3
+ db 59, 47, 0
+parse._ast_fun_block#0#loop#3#wrap#0#if#1#const#ptr:
+ dq parse._ast_fun_block#0#loop#3#wrap#0#if#1#const + 8
+parse._ast_fun_block#0#loop#3#wrap#0#if#2#const:
+ dq 56
+ db 66, 108, 111, 99, 107, 32, 98, 101, 105, 110, 103, 32, 115, 107, 105, 112, 112, 101, 100, 46, 32, 80, 97, 114, 115, 105, 110, 103, 32, 119, 105, 108, 108, 32, 112, 105, 99, 107, 32, 117, 112, 32, 97, 102, 116, 101, 114, 32, 116, 104, 101, 32, 101, 110, 100, 0
+parse._ast_fun_block#0#loop#3#wrap#0#if#2#const#ptr:
+ dq parse._ast_fun_block#0#loop#3#wrap#0#if#2#const + 8
+parse._ast_fun_block#1#wrap#0#if#0#const:
+ dq 3
+ db 59, 47, 0
+parse._ast_fun_block#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_fun_block#1#wrap#0#if#0#const + 8
+parse._ast_fun_block#1#wrap#0#if#1#const:
+ dq 40
+ db 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 102, 105, 110, 100, 32, 99, 108, 111, 115, 105, 110, 103, 32, 59, 47, 32, 102, 111, 114, 32, 116, 111, 112, 32, 98, 108, 111, 99, 107, 0
+parse._ast_fun_block#1#wrap#0#if#1#const#ptr:
+ dq parse._ast_fun_block#1#wrap#0#if#1#const + 8
+parse._mhf_post_list#0#loop#1#const:
+ dq 1
+ db 0
+parse._mhf_post_list#0#loop#1#const#ptr:
+ dq parse._mhf_post_list#0#loop#1#const + 8
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#0#if#1#const:
+ dq 2
+ db 44, 0
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#0#if#1#const#ptr:
+ dq parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#0#if#1#const + 8
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#1#if#1#const:
+ dq 2
+ db 41, 0
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#1#if#1#const#ptr:
+ dq parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#1#if#1#const + 8
+parse._mhf_post#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 5
+ db 118, 111, 105, 100, 0
+parse._mhf_post#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq parse._mhf_post#0#wrap#0#if#0#wrap#0#if#0#const + 8
+parse._mhf_post#0#wrap#0#if#0#wrap#1#if#0#const:
+ dq 2
+ db 96, 0
+parse._mhf_post#0#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq parse._mhf_post#0#wrap#0#if#0#wrap#1#if#0#const + 8
+parse._mhf_post#1#loop#1#wrap#1#if#0#const:
+ dq 18
+ db 82, 101, 116, 117, 114, 110, 105, 110, 103, 32, 109, 111, 100, 32, 97, 116, 32, 0
+parse._mhf_post#1#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._mhf_post#1#loop#1#wrap#1#if#0#const + 8
+parse._mhf_post#1#loop#1#wrap#1#if#1#const:
+ dq 2
+ db 10, 0
+parse._mhf_post#1#loop#1#wrap#1#if#1#const#ptr:
+ dq parse._mhf_post#1#loop#1#wrap#1#if#1#const + 8
+parse._mhf_post#1#loop#2#wrap#1#if#0#const:
+ dq 2
+ db 46, 0
+parse._mhf_post#1#loop#2#wrap#1#if#0#const#ptr:
+ dq parse._mhf_post#1#loop#2#wrap#1#if#0#const + 8
+parse._mhf_post#1#loop#2#wrap#2#if#1#const:
+ dq 2
+ db 40, 0
+parse._mhf_post#1#loop#2#wrap#2#if#1#const#ptr:
+ dq parse._mhf_post#1#loop#2#wrap#2#if#1#const + 8
+parse._mhf_post#2#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+parse._mhf_post#2#wrap#0#if#0#const#ptr:
+ dq parse._mhf_post#2#wrap#0#if#0#const + 8
+parse._mhf_post#2#wrap#0#if#1#wrap#0#if#1#const:
+ dq 2
+ db 41, 0
+parse._mhf_post#2#wrap#0#if#1#wrap#0#if#1#const#ptr:
+ dq parse._mhf_post#2#wrap#0#if#1#wrap#0#if#1#const + 8
+parse._mhf_transform#0#const:
+ dq 1
+ db 0
+parse._mhf_transform#0#const#ptr:
+ dq parse._mhf_transform#0#const + 8
+parse._mhf_transform#2#loop#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 46, 0
+parse._mhf_transform#2#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq parse._mhf_transform#2#loop#0#wrap#0#if#0#wrap#0#if#0#const + 8
+parse._mhf_transform#2#loop#0#wrap#0#if#1#wrap#0#if#0#const:
+ dq 2
+ db 46, 0
+parse._mhf_transform#2#loop#0#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq parse._mhf_transform#2#loop#0#wrap#0#if#1#wrap#0#if#0#const + 8
+parse._mhf_transform#2#loop#0#wrap#1#if#1#const:
+ dq 2
+ db 40, 0
+parse._mhf_transform#2#loop#0#wrap#1#if#1#const#ptr:
+ dq parse._mhf_transform#2#loop#0#wrap#1#if#1#const + 8
+parse._mhf_transform#2#loop#0#wrap#1#if#2#const:
+ dq 2
+ db 40, 0
+parse._mhf_transform#2#loop#0#wrap#1#if#2#const#ptr:
+ dq parse._mhf_transform#2#loop#0#wrap#1#if#2#const + 8
+parse._mhf_escape#0#loop#2#wrap#0#if#0#const:
+ dq 2
+ db 41, 0
+parse._mhf_escape#0#loop#2#wrap#0#if#0#const#ptr:
+ dq parse._mhf_escape#0#loop#2#wrap#0#if#0#const + 8
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#1#if#0#const:
+ dq 2
+ db 40, 0
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#1#if#0#const#ptr:
+ dq parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#1#if#0#const + 8
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#1#const:
+ dq 2
+ db 40, 0
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#1#const#ptr:
+ dq parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#1#const + 8
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#3#const:
+ dq 2
+ db 40, 0
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#3#const#ptr:
+ dq parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#3#const + 8
+parse._mhf_escape#0#loop#2#wrap#0#if#2#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+parse._mhf_escape#0#loop#2#wrap#0#if#2#wrap#0#if#0#const#ptr:
+ dq parse._mhf_escape#0#loop#2#wrap#0#if#2#wrap#0#if#0#const + 8
+parse._mhf_escape#0#loop#2#wrap#1#if#0#const:
+ dq 2
+ db 40, 0
+parse._mhf_escape#0#loop#2#wrap#1#if#0#const#ptr:
+ dq parse._mhf_escape#0#loop#2#wrap#1#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#1#if#0#const:
+ dq 2
+ db 46, 0
+parse._mhf_post_value#0#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#1#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#0#if#0#const:
+ dq 2
+ db 46, 0
+parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#0#if#0#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#0#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#1#if#0#const:
+ dq 30
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 97, 102, 116, 101, 114, 32, 39, 46, 39, 0
+parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#1#if#0#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#1#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#2#if#0#const:
+ dq 51
+ db 85, 110, 115, 117, 114, 101, 32, 119, 104, 101, 114, 101, 32, 119, 101, 32, 97, 114, 101, 32, 97, 116, 32, 105, 110, 32, 116, 104, 101, 32, 116, 114, 101, 101, 32, 40, 39, 96, 39, 41, 46, 32, 91, 67, 77, 80, 69, 82, 82, 93, 0
+parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#2#if#0#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#2#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#3#if#0#const:
+ dq 2
+ db 40, 0
+parse._mhf_post_value#0#loop#1#wrap#3#if#0#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#3#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#2#if#0#const:
+ dq 51
+ db 85, 110, 115, 117, 114, 101, 32, 119, 104, 101, 114, 101, 32, 119, 101, 32, 97, 114, 101, 32, 97, 116, 32, 105, 110, 32, 116, 104, 101, 32, 116, 114, 101, 101, 32, 40, 39, 40, 39, 41, 46, 32, 91, 67, 77, 80, 69, 82, 82, 93, 0
+parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#2#if#0#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#2#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#4#if#0#const:
+ dq 2
+ db 123, 0
+parse._mhf_post_value#0#loop#1#wrap#4#if#0#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#4#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#4#if#1#wrap#0#if#0#const:
+ dq 45
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 118, 97, 108, 117, 101, 32, 102, 111, 114, 32, 105, 110, 100, 101, 120, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 32, 97, 102, 116, 101, 114, 32, 39, 123, 39, 0
+parse._mhf_post_value#0#loop#1#wrap#4#if#1#wrap#0#if#0#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#4#if#1#wrap#0#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#2#if#0#const:
+ dq 51
+ db 85, 110, 115, 117, 114, 101, 32, 119, 104, 101, 114, 101, 32, 119, 101, 32, 97, 114, 101, 32, 97, 116, 32, 105, 110, 32, 116, 104, 101, 32, 116, 114, 101, 101, 32, 40, 39, 123, 39, 41, 46, 32, 91, 67, 77, 80, 69, 82, 82, 93, 0
+parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#2#if#0#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#2#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#0#if#0#const:
+ dq 2
+ db 125, 0
+parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#0#if#0#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#0#if#0#const + 8
+parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#0#if#1#const:
+ dq 67
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 125, 39, 32, 116, 111, 32, 115, 104, 111, 119, 32, 116, 104, 101, 32, 101, 110, 100, 32, 111, 102, 32, 97, 110, 32, 105, 110, 100, 101, 120, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 32, 97, 102, 116, 101, 114, 32, 116, 104, 101, 32, 118, 97, 108, 117, 101, 0
+parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#0#if#1#const#ptr:
+ dq parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#0#if#1#const + 8
+parse._mhf_inner_value#1#loop#1#wrap#0#if#1#const:
+ dq 2
+ db 41, 0
+parse._mhf_inner_value#1#loop#1#wrap#0#if#1#const#ptr:
+ dq parse._mhf_inner_value#1#loop#1#wrap#0#if#1#const + 8
+parse._mhf_inner_value#1#loop#1#wrap#0#if#2#const:
+ dq 2
+ db 44, 0
+parse._mhf_inner_value#1#loop#1#wrap#0#if#2#const#ptr:
+ dq parse._mhf_inner_value#1#loop#1#wrap#0#if#2#const + 8
+parse._mhf_inner_value#1#loop#1#wrap#1#if#0#const:
+ dq 2
+ db 46, 0
+parse._mhf_inner_value#1#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._mhf_inner_value#1#loop#1#wrap#1#if#0#const + 8
+parse._mhf_inner_value#1#loop#1#wrap#1#if#1#const:
+ dq 94
+ db 85, 110, 101, 120, 112, 101, 99, 116, 101, 100, 32, 116, 111, 107, 101, 110, 32, 119, 105, 116, 104, 105, 110, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 97, 108, 108, 32, 40, 49, 41, 46, 32, 32, 69, 120, 112, 101, 99, 116, 101, 100, 32, 98, 105, 110, 97, 114, 121, 32, 111, 112, 101, 114, 97, 116, 111, 114, 32, 116, 104, 101, 110, 32, 118, 97, 108, 117, 101, 44, 32, 39, 44, 39, 44, 32, 111, 114, 32, 39, 41, 39, 46, 0
+parse._mhf_inner_value#1#loop#1#wrap#1#if#1#const#ptr:
+ dq parse._mhf_inner_value#1#loop#1#wrap#1#if#1#const + 8
+parse._mhf_inner_value#1#loop#1#wrap#2#if#3#wrap#0#if#0#const:
+ dq 3
+ db 105, 115, 0
+parse._mhf_inner_value#1#loop#1#wrap#2#if#3#wrap#0#if#0#const#ptr:
+ dq parse._mhf_inner_value#1#loop#1#wrap#2#if#3#wrap#0#if#0#const + 8
+parse._mhf_inner_value#1#loop#1#wrap#3#if#0#const:
+ dq 94
+ db 85, 110, 101, 120, 112, 101, 99, 116, 101, 100, 32, 116, 111, 107, 101, 110, 32, 119, 105, 116, 104, 105, 110, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 97, 108, 108, 32, 40, 50, 41, 46, 32, 32, 69, 120, 112, 101, 99, 116, 101, 100, 32, 98, 105, 110, 97, 114, 121, 32, 111, 112, 101, 114, 97, 116, 111, 114, 32, 116, 104, 101, 110, 32, 118, 97, 108, 117, 101, 44, 32, 39, 44, 39, 44, 32, 111, 114, 32, 39, 41, 39, 46, 0
+parse._mhf_inner_value#1#loop#1#wrap#3#if#0#const#ptr:
+ dq parse._mhf_inner_value#1#loop#1#wrap#3#if#0#const + 8
+parse._mhf_inner_value#3#wrap#0#if#0#const:
+ dq 2
+ db 41, 0
+parse._mhf_inner_value#3#wrap#0#if#0#const#ptr:
+ dq parse._mhf_inner_value#3#wrap#0#if#0#const + 8
+parse._mhf_inner_value#3#wrap#0#if#1#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+parse._mhf_inner_value#3#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq parse._mhf_inner_value#3#wrap#0#if#1#wrap#0#if#0#const + 8
+parse._mhf_inner_value#3#wrap#1#if#0#const:
+ dq 2
+ db 44, 0
+parse._mhf_inner_value#3#wrap#1#if#0#const#ptr:
+ dq parse._mhf_inner_value#3#wrap#1#if#0#const + 8
+parse._mhf_inner_value#3#wrap#1#if#1#const:
+ dq 47
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 41, 39, 32, 111, 114, 32, 39, 44, 39, 32, 116, 111, 32, 99, 111, 109, 112, 108, 101, 116, 101, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 97, 108, 108, 46, 0
+parse._mhf_inner_value#3#wrap#1#if#1#const#ptr:
+ dq parse._mhf_inner_value#3#wrap#1#if#1#const + 8
+parse._mhf_outer_list#1#loop#1#const:
+ dq 2
+ db 41, 0
+parse._mhf_outer_list#1#loop#1#const#ptr:
+ dq parse._mhf_outer_list#1#loop#1#const + 8
+parse._mhf_outer_list#1#loop#2#wrap#0#if#1#const:
+ dq 2
+ db 44, 0
+parse._mhf_outer_list#1#loop#2#wrap#0#if#1#const#ptr:
+ dq parse._mhf_outer_list#1#loop#2#wrap#0#if#1#const + 8
+parse._mhf_outer_list#1#loop#2#wrap#0#if#2#const:
+ dq 2
+ db 41, 0
+parse._mhf_outer_list#1#loop#2#wrap#0#if#2#const#ptr:
+ dq parse._mhf_outer_list#1#loop#2#wrap#0#if#2#const + 8
+parse._mhf_outer_list#1#loop#2#wrap#0#if#3#const:
+ dq 63
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 44, 39, 32, 116, 111, 32, 99, 111, 110, 116, 105, 110, 117, 101, 32, 116, 104, 101, 32, 118, 97, 108, 117, 101, 32, 108, 105, 115, 116, 32, 111, 114, 32, 97, 32, 99, 108, 111, 115, 105, 110, 103, 32, 100, 101, 108, 105, 109, 105, 116, 101, 114, 0
+parse._mhf_outer_list#1#loop#2#wrap#0#if#3#const#ptr:
+ dq parse._mhf_outer_list#1#loop#2#wrap#0#if#3#const + 8
+parse._mhf_outer_list#1#loop#4#const:
+ dq 2
+ db 41, 0
+parse._mhf_outer_list#1#loop#4#const#ptr:
+ dq parse._mhf_outer_list#1#loop#4#const + 8
+parse._mhf_finish_value#0#loop#4#wrap#0#if#2#const:
+ dq 42
+ db 91, 67, 77, 80, 69, 82, 82, 93, 32, 85, 110, 115, 117, 114, 101, 32, 119, 104, 101, 114, 101, 32, 119, 101, 32, 97, 114, 101, 32, 105, 110, 32, 116, 104, 101, 32, 116, 114, 101, 101, 10, 0
+parse._mhf_finish_value#0#loop#4#wrap#0#if#2#const#ptr:
+ dq parse._mhf_finish_value#0#loop#4#wrap#0#if#2#const + 8
+parse._mhf_finish_value#1#wrap#0#if#1#wrap#0#if#0#const:
+ dq 9
+ db 69, 115, 99, 97, 112, 105, 110, 103, 0
+parse._mhf_finish_value#1#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq parse._mhf_finish_value#1#wrap#0#if#1#wrap#0#if#0#const + 8
+parse._mhf_finish_value#2#loop#1#wrap#2#if#0#const:
+ dq 2
+ db 46, 0
+parse._mhf_finish_value#2#loop#1#wrap#2#if#0#const#ptr:
+ dq parse._mhf_finish_value#2#loop#1#wrap#2#if#0#const + 8
+parse._mhf_finish_value#2#loop#1#wrap#3#if#3#wrap#0#if#0#const:
+ dq 3
+ db 105, 115, 0
+parse._mhf_finish_value#2#loop#1#wrap#3#if#3#wrap#0#if#0#const#ptr:
+ dq parse._mhf_finish_value#2#loop#1#wrap#3#if#3#wrap#0#if#0#const + 8
+parse._mhf_finish_decl#0#const:
+ dq 1
+ db 0
+parse._mhf_finish_decl#0#const#ptr:
+ dq parse._mhf_finish_decl#0#const + 8
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#0#if#1#const:
+ dq 2
+ db 61, 0
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#0#if#1#const + 8
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#0#if#0#const:
+ dq 2
+ db 44, 0
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#0#if#0#const + 8
+parse._mhf_finish_decl#1#loop#0#wrap#1#if#0#const:
+ dq 38
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 110, 97, 109, 101, 32, 105, 110, 32, 100, 101, 99, 108, 97, 114, 97, 116, 105, 111, 110, 0
+parse._mhf_finish_decl#1#loop#0#wrap#1#if#0#const#ptr:
+ dq parse._mhf_finish_decl#1#loop#0#wrap#1#if#0#const + 8
+parse._maybe_helper_fun#0#const:
+ dq 1
+ db 0
+parse._maybe_helper_fun#0#const#ptr:
+ dq parse._maybe_helper_fun#0#const + 8
+parse._maybe_helper_fun#1#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+parse._maybe_helper_fun#1#wrap#0#if#0#const#ptr:
+ dq parse._maybe_helper_fun#1#wrap#0#if#0#const + 8
+parse._maybe_helper_fun#1#wrap#1#if#1#const:
+ dq 88
+ db 85, 110, 101, 120, 112, 101, 99, 116, 101, 100, 32, 116, 111, 107, 101, 110, 46, 32, 69, 120, 112, 101, 99, 116, 101, 100, 32, 116, 104, 101, 32, 99, 111, 109, 112, 108, 101, 116, 105, 111, 110, 32, 111, 102, 32, 97, 32, 100, 101, 99, 108, 97, 114, 97, 116, 105, 111, 110, 32, 111, 114, 32, 118, 97, 108, 117, 101, 32, 40, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 111, 114, 32, 39, 40, 39, 41, 0
+parse._maybe_helper_fun#1#wrap#1#if#1#const#ptr:
+ dq parse._maybe_helper_fun#1#wrap#1#if#1#const + 8
+parse._ast_function#0#wrap#0#if#0#const:
+ dq 40
+ db 91, 70, 65, 84, 65, 76, 93, 32, 91, 67, 77, 80, 69, 82, 82, 93, 32, 69, 120, 112, 101, 99, 116, 101, 100, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 97, 109, 101, 0
+parse._ast_function#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_function#0#wrap#0#if#0#const + 8
+parse._ast_function#1#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+parse._ast_function#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_function#1#wrap#0#if#0#const + 8
+parse._ast_function#2#wrap#0#if#0#const:
+ dq 2
+ db 91, 0
+parse._ast_function#2#wrap#0#if#0#const#ptr:
+ dq parse._ast_function#2#wrap#0#if#0#const + 8
+parse._ast_function#3#loop#1#wrap#0#if#0#const:
+ dq 4
+ db 97, 115, 109, 0
+parse._ast_function#3#loop#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_function#3#loop#1#wrap#0#if#0#const + 8
+parse._ast_function#3#loop#1#wrap#1#if#0#const:
+ dq 3
+ db 47, 59, 0
+parse._ast_function#3#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._ast_function#3#loop#1#wrap#1#if#0#const + 8
+parse._ast_function#3#loop#1#wrap#2#if#1#const:
+ dq 2
+ db 123, 0
+parse._ast_function#3#loop#1#wrap#2#if#1#const#ptr:
+ dq parse._ast_function#3#loop#1#wrap#2#if#1#const + 8
+parse._ast_function#3#loop#1#wrap#3#if#1#const:
+ dq 2
+ db 126, 0
+parse._ast_function#3#loop#1#wrap#3#if#1#const#ptr:
+ dq parse._ast_function#3#loop#1#wrap#3#if#1#const + 8
+parse._ast_function#3#loop#1#wrap#4#if#2#const:
+ dq 2
+ db 40, 0
+parse._ast_function#3#loop#1#wrap#4#if#2#const#ptr:
+ dq parse._ast_function#3#loop#1#wrap#4#if#2#const + 8
+parse._ast_function#3#loop#1#wrap#7#if#0#const:
+ dq 58
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 100, 101, 102, 105, 110, 105, 116, 105, 111, 110, 44, 32, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 44, 32, 111, 114, 32, 115, 117, 98, 32, 98, 108, 111, 99, 107, 32, 105, 110, 32, 102, 117, 110, 99, 116, 105, 111, 110, 0
+parse._ast_function#3#loop#1#wrap#7#if#0#const#ptr:
+ dq parse._ast_function#3#loop#1#wrap#7#if#0#const + 8
+parse._ast_import#0#wrap#0#if#1#const:
+ dq 49
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 115, 116, 114, 105, 110, 103, 32, 111, 114, 32, 105, 109, 112, 111, 114, 116, 32, 108, 105, 116, 101, 114, 97, 108, 32, 97, 102, 116, 101, 114, 32, 39, 105, 109, 112, 111, 114, 116, 39, 0
+parse._ast_import#0#wrap#0#if#1#const#ptr:
+ dq parse._ast_import#0#wrap#0#if#1#const + 8
+parse._ast_import#1#const:
+ dq 11
+ db 73, 109, 112, 111, 114, 116, 105, 110, 103, 32, 0
+parse._ast_import#1#const#ptr:
+ dq parse._ast_import#1#const + 8
+parse._ast_import#2#const:
+ dq 2
+ db 10, 0
+parse._ast_import#2#const#ptr:
+ dq parse._ast_import#2#const + 8
+parse._ast_asm#0#wrap#0#if#1#const:
+ dq 36
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 115, 116, 114, 105, 110, 103, 32, 108, 105, 116, 101, 114, 97, 108, 32, 97, 102, 116, 101, 114, 32, 39, 97, 115, 116, 39, 0
+parse._ast_asm#0#wrap#0#if#1#const#ptr:
+ dq parse._ast_asm#0#wrap#0#if#1#const + 8
+parse._ast_struct#0#wrap#0#if#0#const:
+ dq 51
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 110, 101, 119, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 102, 111, 114, 32, 116, 121, 112, 101, 100, 101, 102, 32, 97, 102, 116, 101, 114, 32, 39, 115, 116, 114, 117, 99, 116, 39, 0
+parse._ast_struct#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_struct#0#wrap#0#if#0#const + 8
+parse._ast_struct#1#wrap#0#if#1#const:
+ dq 51
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 110, 101, 119, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 102, 111, 114, 32, 116, 121, 112, 101, 100, 101, 102, 32, 97, 102, 116, 101, 114, 32, 39, 115, 116, 114, 117, 99, 116, 39, 0
+parse._ast_struct#1#wrap#0#if#1#const#ptr:
+ dq parse._ast_struct#1#wrap#0#if#1#const + 8
+parse._ast_enum#0#wrap#0#if#0#const:
+ dq 45
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 110, 101, 119, 32, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 102, 111, 114, 32, 100, 101, 102, 32, 97, 102, 116, 101, 114, 32, 39, 101, 110, 117, 109, 39, 0
+parse._ast_enum#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_enum#0#wrap#0#if#0#const + 8
+parse._ast_enum#2#wrap#0#if#1#const:
+ dq 35
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 123, 39, 32, 97, 102, 116, 101, 114, 32, 101, 110, 117, 109, 32, 100, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0
+parse._ast_enum#2#wrap#0#if#1#const#ptr:
+ dq parse._ast_enum#2#wrap#0#if#1#const + 8
+parse._ast_decl#0#const:
+ dq 1
+ db 0
+parse._ast_decl#0#const#ptr:
+ dq parse._ast_decl#0#const + 8
+parse._ast_decl#1#loop#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 61, 0
+parse._ast_decl#1#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_decl#1#loop#0#wrap#0#if#0#wrap#0#if#0#const + 8
+parse._ast_decl#1#loop#0#wrap#0#if#1#wrap#0#if#0#const:
+ dq 2
+ db 44, 0
+parse._ast_decl#1#loop#0#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_decl#1#loop#0#wrap#0#if#1#wrap#0#if#0#const + 8
+parse._ast_decl#1#loop#0#wrap#1#if#0#const:
+ dq 38
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 110, 97, 109, 101, 32, 105, 110, 32, 100, 101, 99, 108, 97, 114, 97, 116, 105, 111, 110, 0
+parse._ast_decl#1#loop#0#wrap#1#if#0#const#ptr:
+ dq parse._ast_decl#1#loop#0#wrap#1#if#0#const + 8
+parse._ast_top_block#0#loop#1#wrap#0#if#1#const:
+ dq 7
+ db 109, 111, 100, 117, 108, 101, 0
+parse._ast_top_block#0#loop#1#wrap#0#if#1#const#ptr:
+ dq parse._ast_top_block#0#loop#1#wrap#0#if#1#const + 8
+parse._ast_top_block#0#loop#1#wrap#0#if#2#const:
+ dq 7
+ db 101, 120, 112, 111, 114, 116, 0
+parse._ast_top_block#0#loop#1#wrap#0#if#2#const#ptr:
+ dq parse._ast_top_block#0#loop#1#wrap#0#if#2#const + 8
+parse._ast_top_block#0#loop#1#wrap#1#if#0#const:
+ dq 7
+ db 109, 101, 116, 104, 111, 100, 0
+parse._ast_top_block#0#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._ast_top_block#0#loop#1#wrap#1#if#0#const + 8
+parse._ast_top_block#0#loop#1#wrap#3#if#0#const:
+ dq 57
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 109, 111, 100, 117, 108, 101, 44, 32, 109, 101, 116, 104, 111, 100, 44, 32, 111, 114, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 111, 114, 32, 116, 111, 112, 32, 108, 101, 118, 101, 108, 32, 98, 108, 111, 99, 107, 0
+parse._ast_top_block#0#loop#1#wrap#3#if#0#const#ptr:
+ dq parse._ast_top_block#0#loop#1#wrap#3#if#0#const + 8
+parse._ast_top_block#0#loop#2#const:
+ dq 3
+ db 59, 59, 0
+parse._ast_top_block#0#loop#2#const#ptr:
+ dq parse._ast_top_block#0#loop#2#const + 8
+parse._ast_top_block#0#loop#3#wrap#0#if#2#const:
+ dq 3
+ db 59, 47, 0
+parse._ast_top_block#0#loop#3#wrap#0#if#2#const#ptr:
+ dq parse._ast_top_block#0#loop#3#wrap#0#if#2#const + 8
+parse._ast_top_block#0#loop#3#wrap#0#if#3#const:
+ dq 3
+ db 59, 59, 0
+parse._ast_top_block#0#loop#3#wrap#0#if#3#const#ptr:
+ dq parse._ast_top_block#0#loop#3#wrap#0#if#3#const + 8
+parse._ast_top_block#0#loop#3#wrap#0#if#4#const:
+ dq 56
+ db 66, 108, 111, 99, 107, 32, 98, 101, 105, 110, 103, 32, 115, 107, 105, 112, 112, 101, 100, 46, 32, 80, 97, 114, 115, 105, 110, 103, 32, 119, 105, 108, 108, 32, 112, 105, 99, 107, 32, 117, 112, 32, 97, 102, 116, 101, 114, 32, 116, 104, 101, 32, 101, 110, 100, 0
+parse._ast_top_block#0#loop#3#wrap#0#if#4#const#ptr:
+ dq parse._ast_top_block#0#loop#3#wrap#0#if#4#const + 8
+parse._ast_top_block#1#wrap#0#if#1#const:
+ dq 3
+ db 59, 47, 0
+parse._ast_top_block#1#wrap#0#if#1#const#ptr:
+ dq parse._ast_top_block#1#wrap#0#if#1#const + 8
+parse._ast_top_block#1#wrap#0#if#2#const:
+ dq 3
+ db 59, 59, 0
+parse._ast_top_block#1#wrap#0#if#2#const#ptr:
+ dq parse._ast_top_block#1#wrap#0#if#2#const + 8
+parse._ast_top_block#1#wrap#0#if#3#const:
+ dq 40
+ db 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 102, 105, 110, 100, 32, 99, 108, 111, 115, 105, 110, 103, 32, 59, 47, 32, 102, 111, 114, 32, 116, 111, 112, 32, 98, 108, 111, 99, 107, 0
+parse._ast_top_block#1#wrap#0#if#3#const#ptr:
+ dq parse._ast_top_block#1#wrap#0#if#3#const + 8
+parse._ast_module#0#wrap#0#if#0#const:
+ dq 7
+ db 101, 120, 112, 111, 114, 116, 0
+parse._ast_module#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_module#0#wrap#0#if#0#const + 8
+parse._ast_module#0#wrap#0#if#1#wrap#0#if#0#const:
+ dq 7
+ db 109, 111, 100, 117, 108, 101, 0
+parse._ast_module#0#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_module#0#wrap#0#if#1#wrap#0#if#0#const + 8
+parse._ast_module#0#wrap#0#if#1#wrap#0#if#1#const:
+ dq 41
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 109, 111, 100, 117, 108, 101, 39, 32, 107, 101, 121, 119, 111, 114, 100, 32, 97, 102, 116, 101, 114, 32, 39, 101, 120, 112, 111, 114, 116, 39, 0
+parse._ast_module#0#wrap#0#if#1#wrap#0#if#1#const#ptr:
+ dq parse._ast_module#0#wrap#0#if#1#wrap#0#if#1#const + 8
+parse._ast_module#0#wrap#1#if#0#const:
+ dq 7
+ db 109, 111, 100, 117, 108, 101, 0
+parse._ast_module#0#wrap#1#if#0#const#ptr:
+ dq parse._ast_module#0#wrap#1#if#0#const + 8
+parse._ast_module#0#wrap#1#if#1#const:
+ dq 69
+ db 91, 70, 65, 84, 65, 76, 93, 32, 84, 104, 101, 32, 102, 111, 108, 108, 111, 119, 105, 110, 103, 32, 105, 115, 115, 117, 101, 32, 105, 115, 32, 119, 105, 116, 104, 32, 116, 104, 101, 32, 99, 111, 109, 112, 105, 108, 101, 114, 44, 32, 110, 111, 116, 32, 121, 111, 117, 114, 32, 112, 114, 111, 103, 114, 97, 109, 46, 10, 0
+parse._ast_module#0#wrap#1#if#1#const#ptr:
+ dq parse._ast_module#0#wrap#1#if#1#const + 8
+parse._ast_module#0#wrap#1#if#2#const:
+ dq 62
+ db 91, 70, 65, 84, 65, 76, 93, 32, 80, 108, 101, 97, 115, 101, 32, 114, 101, 112, 111, 114, 116, 32, 116, 104, 101, 32, 102, 111, 108, 108, 111, 119, 105, 110, 103, 32, 105, 115, 115, 117, 101, 32, 116, 111, 32, 116, 110, 115, 108, 99, 32, 117, 112, 115, 116, 114, 101, 97, 109, 46, 10, 0
+parse._ast_module#0#wrap#1#if#2#const#ptr:
+ dq parse._ast_module#0#wrap#1#if#2#const + 8
+parse._ast_module#0#wrap#1#if#3#const:
+ dq 81
+ db 91, 70, 65, 84, 65, 76, 93, 32, 91, 67, 77, 80, 69, 82, 82, 93, 32, 83, 104, 111, 117, 108, 100, 32, 111, 110, 108, 121, 32, 99, 97, 108, 108, 32, 95, 97, 115, 116, 95, 109, 111, 100, 117, 108, 101, 32, 119, 104, 101, 110, 32, 39, 109, 111, 100, 117, 108, 101, 39, 32, 111, 114, 32, 39, 101, 120, 112, 111, 114, 116, 39, 32, 97, 114, 101, 32, 115, 101, 101, 110, 0
+parse._ast_module#0#wrap#1#if#3#const#ptr:
+ dq parse._ast_module#0#wrap#1#if#3#const + 8
+parse._ast_module#1#wrap#0#if#0#const:
+ dq 49
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 109, 111, 100, 117, 108, 101, 32, 110, 97, 109, 101, 32, 40, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 41, 32, 97, 102, 116, 101, 114, 32, 39, 109, 111, 100, 117, 108, 101, 39, 0
+parse._ast_module#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_module#1#wrap#0#if#0#const + 8
+parse._ast_module#2#loop#1#wrap#0#if#0#const:
+ dq 7
+ db 105, 109, 112, 111, 114, 116, 0
+parse._ast_module#2#loop#1#wrap#0#if#0#const#ptr:
+ dq parse._ast_module#2#loop#1#wrap#0#if#0#const + 8
+parse._ast_module#2#loop#1#wrap#1#if#0#const:
+ dq 7
+ db 115, 116, 114, 117, 99, 116, 0
+parse._ast_module#2#loop#1#wrap#1#if#0#const#ptr:
+ dq parse._ast_module#2#loop#1#wrap#1#if#0#const + 8
+parse._ast_module#2#loop#1#wrap#2#if#0#const:
+ dq 5
+ db 101, 110, 117, 109, 0
+parse._ast_module#2#loop#1#wrap#2#if#0#const#ptr:
+ dq parse._ast_module#2#loop#1#wrap#2#if#0#const + 8
+parse._ast_module#2#loop#1#wrap#3#if#0#const:
+ dq 4
+ db 97, 115, 109, 0
+parse._ast_module#2#loop#1#wrap#3#if#0#const#ptr:
+ dq parse._ast_module#2#loop#1#wrap#3#if#0#const + 8
+parse._ast_module#2#loop#1#wrap#4#if#0#const:
+ dq 3
+ db 47, 59, 0
+parse._ast_module#2#loop#1#wrap#4#if#0#const#ptr:
+ dq parse._ast_module#2#loop#1#wrap#4#if#0#const + 8
+parse._ast_module#2#loop#1#wrap#5#if#3#const:
+ dq 2
+ db 126, 0
+parse._ast_module#2#loop#1#wrap#5#if#3#const#ptr:
+ dq parse._ast_module#2#loop#1#wrap#5#if#3#const + 8
+parse._ast_module#2#loop#1#wrap#5#if#4#const:
+ dq 2
+ db 123, 0
+parse._ast_module#2#loop#1#wrap#5#if#4#const#ptr:
+ dq parse._ast_module#2#loop#1#wrap#5#if#4#const + 8
+parse._ast_module#2#loop#1#wrap#7#if#0#const:
+ dq 71
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 105, 109, 112, 111, 114, 116, 39, 44, 32, 39, 115, 116, 114, 117, 99, 116, 39, 44, 32, 39, 97, 115, 109, 39, 44, 32, 98, 108, 111, 99, 107, 44, 32, 111, 114, 32, 100, 101, 99, 108, 97, 114, 97, 116, 105, 111, 110, 32, 105, 110, 32, 116, 111, 112, 32, 108, 101, 118, 101, 108, 0
+parse._ast_module#2#loop#1#wrap#7#if#0#const#ptr:
+ dq parse._ast_module#2#loop#1#wrap#7#if#0#const + 8
+parse._ast_file#0#loop#0#wrap#0#if#0#const:
+ dq 7
+ db 105, 109, 112, 111, 114, 116, 0
+parse._ast_file#0#loop#0#wrap#0#if#0#const#ptr:
+ dq parse._ast_file#0#loop#0#wrap#0#if#0#const + 8
+parse._ast_file#0#loop#0#wrap#1#if#0#const:
+ dq 7
+ db 115, 116, 114, 117, 99, 116, 0
+parse._ast_file#0#loop#0#wrap#1#if#0#const#ptr:
+ dq parse._ast_file#0#loop#0#wrap#1#if#0#const + 8
+parse._ast_file#0#loop#0#wrap#2#if#0#const:
+ dq 5
+ db 101, 110, 117, 109, 0
+parse._ast_file#0#loop#0#wrap#2#if#0#const#ptr:
+ dq parse._ast_file#0#loop#0#wrap#2#if#0#const + 8
+parse._ast_file#0#loop#0#wrap#3#if#0#const:
+ dq 4
+ db 97, 115, 109, 0
+parse._ast_file#0#loop#0#wrap#3#if#0#const#ptr:
+ dq parse._ast_file#0#loop#0#wrap#3#if#0#const + 8
+parse._ast_file#0#loop#0#wrap#4#if#0#const:
+ dq 3
+ db 47, 59, 0
+parse._ast_file#0#loop#0#wrap#4#if#0#const#ptr:
+ dq parse._ast_file#0#loop#0#wrap#4#if#0#const + 8
+parse._ast_file#0#loop#0#wrap#5#if#3#const:
+ dq 2
+ db 126, 0
+parse._ast_file#0#loop#0#wrap#5#if#3#const#ptr:
+ dq parse._ast_file#0#loop#0#wrap#5#if#3#const + 8
+parse._ast_file#0#loop#0#wrap#5#if#4#const:
+ dq 2
+ db 123, 0
+parse._ast_file#0#loop#0#wrap#5#if#4#const#ptr:
+ dq parse._ast_file#0#loop#0#wrap#5#if#4#const + 8
+parse._ast_file#0#loop#0#wrap#6#if#0#const:
+ dq 110
+ db 69, 120, 112, 101, 99, 116, 101, 100, 32, 39, 105, 109, 112, 111, 114, 116, 39, 44, 32, 39, 115, 116, 114, 117, 99, 116, 39, 44, 32, 39, 97, 115, 109, 39, 44, 32, 98, 108, 111, 99, 107, 32, 40, 115, 116, 97, 114, 116, 115, 32, 119, 105, 116, 104, 32, 39, 47, 59, 39, 41, 44, 32, 111, 114, 32, 116, 121, 112, 101, 32, 40, 102, 111, 114, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 100, 101, 99, 108, 97, 114, 97, 116, 105, 111, 110, 41, 32, 105, 110, 32, 116, 111, 112, 32, 108, 101, 118, 101, 108, 0
+parse._ast_file#0#loop#0#wrap#6#if#0#const#ptr:
+ dq parse._ast_file#0#loop#0#wrap#6#if#0#const + 8
+parse.print_node_type#0#wrap#0#if#0#const:
+ dq 7
+ db 77, 79, 68, 85, 76, 69, 0
+parse.print_node_type#0#wrap#0#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#0#if#0#const + 8
+parse.print_node_type#0#wrap#1#if#0#const:
+ dq 7
+ db 69, 88, 80, 79, 82, 84, 0
+parse.print_node_type#0#wrap#1#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#1#if#0#const + 8
+parse.print_node_type#0#wrap#2#if#0#const:
+ dq 7
+ db 83, 84, 82, 85, 67, 84, 0
+parse.print_node_type#0#wrap#2#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#2#if#0#const + 8
+parse.print_node_type#0#wrap#3#if#0#const:
+ dq 5
+ db 84, 89, 80, 69, 0
+parse.print_node_type#0#wrap#3#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#3#if#0#const + 8
+parse.print_node_type#0#wrap#4#if#0#const:
+ dq 3
+ db 73, 68, 0
+parse.print_node_type#0#wrap#4#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#4#if#0#const + 8
+parse.print_node_type#0#wrap#5#if#0#const:
+ dq 7
+ db 66, 73, 78, 95, 79, 80, 0
+parse.print_node_type#0#wrap#5#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#5#if#0#const + 8
+parse.print_node_type#0#wrap#6#if#0#const:
+ dq 7
+ db 80, 82, 69, 95, 79, 80, 0
+parse.print_node_type#0#wrap#6#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#6#if#0#const + 8
+parse.print_node_type#0#wrap#7#if#0#const:
+ dq 8
+ db 80, 79, 83, 84, 95, 79, 80, 0
+parse.print_node_type#0#wrap#7#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#7#if#0#const + 8
+parse.print_node_type#0#wrap#8#if#0#const:
+ dq 9
+ db 70, 85, 78, 67, 84, 73, 79, 78, 0
+parse.print_node_type#0#wrap#8#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#8#if#0#const + 8
+parse.print_node_type#0#wrap#9#if#0#const:
+ dq 7
+ db 77, 69, 84, 72, 79, 68, 0
+parse.print_node_type#0#wrap#9#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#9#if#0#const + 8
+parse.print_node_type#0#wrap#10#if#0#const:
+ dq 6
+ db 84, 76, 73, 83, 84, 0
+parse.print_node_type#0#wrap#10#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#10#if#0#const + 8
+parse.print_node_type#0#wrap#11#if#0#const:
+ dq 6
+ db 68, 76, 73, 83, 84, 0
+parse.print_node_type#0#wrap#11#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#11#if#0#const + 8
+parse.print_node_type#0#wrap#12#if#0#const:
+ dq 6
+ db 69, 76, 73, 83, 84, 0
+parse.print_node_type#0#wrap#12#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#12#if#0#const + 8
+parse.print_node_type#0#wrap#13#if#0#const:
+ dq 6
+ db 83, 76, 73, 83, 84, 0
+parse.print_node_type#0#wrap#13#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#13#if#0#const + 8
+parse.print_node_type#0#wrap#14#if#0#const:
+ dq 8
+ db 76, 73, 84, 69, 82, 65, 76, 0
+parse.print_node_type#0#wrap#14#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#14#if#0#const + 8
+parse.print_node_type#0#wrap#15#if#0#const:
+ dq 5
+ db 69, 78, 85, 77, 0
+parse.print_node_type#0#wrap#15#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#15#if#0#const + 8
+parse.print_node_type#0#wrap#16#if#0#const:
+ dq 5
+ db 68, 69, 67, 76, 0
+parse.print_node_type#0#wrap#16#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#16#if#0#const + 8
+parse.print_node_type#0#wrap#17#if#0#const:
+ dq 6
+ db 86, 76, 73, 83, 84, 0
+parse.print_node_type#0#wrap#17#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#17#if#0#const + 8
+parse.print_node_type#0#wrap#18#if#0#const:
+ dq 6
+ db 86, 65, 76, 85, 69, 0
+parse.print_node_type#0#wrap#18#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#18#if#0#const + 8
+parse.print_node_type#0#wrap#19#if#0#const:
+ dq 5
+ db 67, 65, 83, 84, 0
+parse.print_node_type#0#wrap#19#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#19#if#0#const + 8
+parse.print_node_type#0#wrap#20#if#0#const:
+ dq 13
+ db 70, 76, 79, 87, 95, 67, 79, 78, 84, 82, 79, 76, 0
+parse.print_node_type#0#wrap#20#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#20#if#0#const + 8
+parse.print_node_type#0#wrap#21#if#0#const:
+ dq 9
+ db 73, 70, 95, 66, 76, 79, 67, 75, 0
+parse.print_node_type#0#wrap#21#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#21#if#0#const + 8
+parse.print_node_type#0#wrap#22#if#0#const:
+ dq 11
+ db 69, 76, 73, 70, 95, 66, 76, 79, 67, 75, 0
+parse.print_node_type#0#wrap#22#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#22#if#0#const + 8
+parse.print_node_type#0#wrap#23#if#0#const:
+ dq 11
+ db 69, 76, 83, 69, 95, 66, 76, 79, 67, 75, 0
+parse.print_node_type#0#wrap#23#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#23#if#0#const + 8
+parse.print_node_type#0#wrap#24#if#0#const:
+ dq 11
+ db 76, 79, 79, 80, 95, 66, 76, 79, 67, 75, 0
+parse.print_node_type#0#wrap#24#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#24#if#0#const + 8
+parse.print_node_type#0#wrap#25#if#0#const:
+ dq 4
+ db 65, 83, 77, 0
+parse.print_node_type#0#wrap#25#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#25#if#0#const + 8
+parse.print_node_type#0#wrap#26#if#0#const:
+ dq 6
+ db 69, 77, 80, 84, 89, 0
+parse.print_node_type#0#wrap#26#if#0#const#ptr:
+ dq parse.print_node_type#0#wrap#26#if#0#const + 8
+parse.print_node_head#0#const:
+ dq 3
+ db 123, 32, 0
+parse.print_node_head#0#const#ptr:
+ dq parse.print_node_head#0#const + 8
+parse.print_node_head#1#const:
+ dq 9
+ db 44, 32, 68, 65, 84, 65, 58, 32, 0
+parse.print_node_head#1#const#ptr:
+ dq parse.print_node_head#1#const + 8
+parse.print_node_head#2#const:
+ dq 2
+ db 10, 0
+parse.print_node_head#2#const#ptr:
+ dq parse.print_node_head#2#const + 8
+parse.print_ast_rec#0#loop#0#const:
+ dq 3
+ db 32, 32, 0
+parse.print_ast_rec#0#loop#0#const#ptr:
+ dq parse.print_ast_rec#0#loop#0#const + 8
+parse.print_ast_rec#2#loop#0#const:
+ dq 3
+ db 32, 32, 0
+parse.print_ast_rec#2#loop#0#const#ptr:
+ dq parse.print_ast_rec#2#loop#0#const + 8
+parse.print_ast_rec#3#const:
+ dq 3
+ db 125, 10, 0
+parse.print_ast_rec#3#const#ptr:
+ dq parse.print_ast_rec#3#const + 8
+parse.print_ast#0#wrap#0#if#0#const:
+ dq 23
+ db 73, 110, 116, 101, 103, 114, 105, 116, 121, 32, 116, 101, 115, 116, 32, 102, 97, 105, 108, 101, 100, 10, 0
+parse.print_ast#0#wrap#0#if#0#const#ptr:
+ dq parse.print_ast#0#wrap#0#if#0#const + 8
+parse.print_ast#0#wrap#1#if#0#const:
+ dq 23
+ db 73, 110, 116, 101, 103, 114, 105, 116, 121, 32, 116, 101, 115, 116, 32, 112, 97, 115, 115, 101, 100, 10, 0
+parse.print_ast#0#wrap#1#if#0#const#ptr:
+ dq parse.print_ast#0#wrap#1#if#0#const + 8
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#0#const:
+ dq 18
+ db 84, 101, 115, 116, 32, 102, 97, 105, 108, 101, 100, 32, 97, 116, 58, 32, 10, 0
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#0#const#ptr:
+ dq parse.verify_ast_integrity#0#loop#0#wrap#0#if#0#const + 8
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#1#const:
+ dq 3
+ db 125, 10, 0
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#1#const#ptr:
+ dq parse.verify_ast_integrity#0#loop#0#wrap#0#if#1#const + 8
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#2#const:
+ dq 10
+ db 80, 97, 114, 101, 110, 116, 58, 32, 10, 0
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#2#const#ptr:
+ dq parse.verify_ast_integrity#0#loop#0#wrap#0#if#2#const + 8
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#3#const:
+ dq 3
+ db 125, 10, 0
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#3#const#ptr:
+ dq parse.verify_ast_integrity#0#loop#0#wrap#0#if#3#const + 8
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#4#const:
+ dq 14
+ db 69, 120, 112, 101, 99, 116, 101, 100, 58, 32, 37, 112, 10, 0
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#4#const#ptr:
+ dq parse.verify_ast_integrity#0#loop#0#wrap#0#if#4#const + 8
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#5#const:
+ dq 9
+ db 71, 111, 116, 58, 32, 37, 112, 10, 0
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#5#const#ptr:
+ dq parse.verify_ast_integrity#0#loop#0#wrap#0#if#5#const + 8
+compile.PRIMITIVE_1#ptr:
+ dq 16
+ db 98, 111, 111, 108, 44, 117, 105, 110, 116, 56, 44, 105, 110, 116, 56, 0
+compile.PRIMITIVE_1:
+ dq compile.PRIMITIVE_1#ptr + 8
+
+compile.PRIMITIVE_2#ptr:
+ dq 13
+ db 117, 105, 110, 116, 49, 54, 44, 105, 110, 116, 49, 54, 0
+compile.PRIMITIVE_2:
+ dq compile.PRIMITIVE_2#ptr + 8
+
+compile.PRIMITIVE_4#ptr:
+ dq 21
+ db 117, 105, 110, 116, 51, 50, 44, 105, 110, 116, 51, 50, 44, 102, 108, 111, 97, 116, 51, 50, 0
+compile.PRIMITIVE_4:
+ dq compile.PRIMITIVE_4#ptr + 8
+
+compile.PRIMITIVE_8#ptr:
+ dq 41
+ db 117, 105, 110, 116, 54, 52, 44, 105, 110, 116, 54, 52, 44, 102, 108, 111, 97, 116, 54, 52, 44, 105, 110, 116, 44, 117, 105, 110, 116, 44, 102, 108, 111, 97, 116, 44, 118, 111, 105, 100, 0
+compile.PRIMITIVE_8:
+ dq compile.PRIMITIVE_8#ptr + 8
+
+compile.VLOC_DATA:
+ dq 2
+
+compile.VLOC_STCK:
+ dq 1
+
+compile.VLOC_LITL:
+ dq 0
+
+compile.PTYPE_NONE:
+ dd 2
+
+compile.PTYPE_PTR:
+ dd 1
+
+compile.PTYPE_REF:
+ dd 0
+
+compile.PTYPE_ARR:
+ dd 1
+
+compile.PRIM_CSV_BOO#ptr:
+ dq 5
+ db 98, 111, 111, 108, 0
+compile.PRIM_CSV_BOO:
+ dq compile.PRIM_CSV_BOO#ptr + 8
+
+compile.PRIM_CSV_INT#ptr:
+ dq 59
+ db 105, 110, 116, 44, 105, 110, 116, 56, 44, 105, 110, 116, 49, 54, 44, 105, 110, 116, 51, 50, 44, 105, 110, 116, 54, 52, 44, 117, 105, 110, 116, 44, 117, 105, 110, 116, 56, 44, 117, 105, 110, 116, 49, 54, 44, 117, 105, 110, 116, 51, 50, 44, 117, 105, 110, 116, 54, 52, 0
+compile.PRIM_CSV_INT:
+ dq compile.PRIM_CSV_INT#ptr + 8
+
+compile.PRIM_CSV_FLT#ptr:
+ dq 22
+ db 102, 108, 111, 97, 116, 44, 102, 108, 111, 97, 116, 51, 50, 44, 102, 108, 111, 97, 116, 54, 52, 0
+compile.PRIM_CSV_FLT:
+ dq compile.PRIM_CSV_FLT#ptr + 8
+
+compile.BOOL_OPS#ptr:
+ dq 21
+ db 38, 38, 44, 124, 124, 44, 94, 94, 44, 33, 38, 38, 44, 33, 124, 124, 44, 33, 94, 94, 0
+compile.BOOL_OPS:
+ dq compile.BOOL_OPS#ptr + 8
+
+compile.CMP_OPS#ptr:
+ dq 25
+ db 61, 61, 44, 60, 44, 62, 44, 33, 61, 61, 44, 33, 60, 44, 33, 62, 44, 60, 61, 61, 44, 62, 61, 61, 0
+compile.CMP_OPS:
+ dq compile.CMP_OPS#ptr + 8
+
+compile.SEARCH_VAR:
+ dq 0
+
+compile.SEARCH_STRUCT:
+ dq 1
+
+compile.SEARCH_FUNC:
+ dq 2
+
+compile.SEARCH_SUB:
+ dq 3
+
+compile._print_type#0#loop#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 46, 0
+compile._print_type#0#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._print_type#0#loop#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile.reg_string#0#wrap#2#if#0#const:
+ dq 4
+ db 120, 109, 109, 0
+compile.reg_string#0#wrap#2#if#0#const#ptr:
+ dq compile.reg_string#0#wrap#2#if#0#const + 8
+compile.var_test_mov#0#const:
+ dq 4
+ db 105, 110, 116, 0
+compile.var_test_mov#0#const#ptr:
+ dq compile.var_test_mov#0#const + 8
+compile.var_test_mov#1#const:
+ dq 45
+ db 59, 32, 116, 101, 115, 116, 58, 32, 114, 101, 103, 105, 115, 116, 101, 114, 32, 116, 111, 32, 114, 101, 103, 105, 115, 116, 101, 114, 32, 109, 111, 118, 101, 44, 32, 98, 111, 116, 104, 32, 105, 110, 116, 10, 0
+compile.var_test_mov#1#const#ptr:
+ dq compile.var_test_mov#1#const + 8
+compile.var_test_mov#2#const:
+ dq 32
+ db 59, 32, 116, 101, 115, 116, 58, 32, 114, 101, 103, 105, 115, 116, 101, 114, 32, 116, 111, 32, 115, 116, 97, 99, 107, 32, 109, 111, 118, 101, 10, 0
+compile.var_test_mov#2#const#ptr:
+ dq compile.var_test_mov#2#const + 8
+compile.var_test_mov#3#const:
+ dq 32
+ db 59, 32, 116, 101, 115, 116, 58, 32, 115, 116, 97, 99, 107, 32, 116, 111, 32, 114, 101, 103, 105, 115, 116, 101, 114, 32, 109, 111, 118, 101, 10, 0
+compile.var_test_mov#3#const#ptr:
+ dq compile.var_test_mov#3#const + 8
+compile.var_test_mov#4#const:
+ dq 29
+ db 59, 32, 116, 101, 115, 116, 58, 32, 115, 116, 97, 99, 107, 32, 116, 111, 32, 115, 116, 97, 99, 107, 32, 109, 111, 118, 101, 10, 0
+compile.var_test_mov#4#const#ptr:
+ dq compile.var_test_mov#4#const + 8
+compile.var_test_mov#5#const:
+ dq 2
+ db 10, 0
+compile.var_test_mov#5#const#ptr:
+ dq compile.var_test_mov#5#const + 8
+compile.var_test_movsx#0#const:
+ dq 4
+ db 105, 110, 116, 0
+compile.var_test_movsx#0#const#ptr:
+ dq compile.var_test_movsx#0#const + 8
+compile.var_test_movsx#1#const:
+ dq 6
+ db 105, 110, 116, 51, 50, 0
+compile.var_test_movsx#1#const#ptr:
+ dq compile.var_test_movsx#1#const + 8
+compile.var_test_movsx#2#const:
+ dq 5
+ db 105, 110, 116, 56, 0
+compile.var_test_movsx#2#const#ptr:
+ dq compile.var_test_movsx#2#const + 8
+compile.var_test_movsx#3#const:
+ dq 44
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 56, 32, 116, 111, 32, 105, 110, 116, 51, 50, 10, 0
+compile.var_test_movsx#3#const#ptr:
+ dq compile.var_test_movsx#3#const + 8
+compile.var_test_movsx#4#const:
+ dq 42
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 56, 32, 116, 111, 32, 105, 110, 116, 10, 0
+compile.var_test_movsx#4#const#ptr:
+ dq compile.var_test_movsx#4#const + 8
+compile.var_test_movsx#5#const:
+ dq 43
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 51, 50, 32, 116, 111, 32, 105, 110, 116, 10, 0
+compile.var_test_movsx#5#const#ptr:
+ dq compile.var_test_movsx#5#const + 8
+compile.var_test_movsx#6#const:
+ dq 59
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 56, 32, 116, 111, 32, 105, 110, 116, 51, 50, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 114, 101, 103, 41, 10, 0
+compile.var_test_movsx#6#const#ptr:
+ dq compile.var_test_movsx#6#const + 8
+compile.var_test_movsx#7#const:
+ dq 59
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 56, 32, 116, 111, 32, 105, 110, 116, 51, 50, 32, 40, 114, 101, 103, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movsx#7#const#ptr:
+ dq compile.var_test_movsx#7#const + 8
+compile.var_test_movsx#8#const:
+ dq 61
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 56, 32, 116, 111, 32, 105, 110, 116, 51, 50, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movsx#8#const#ptr:
+ dq compile.var_test_movsx#8#const + 8
+compile.var_test_movsx#9#const:
+ dq 57
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 56, 32, 116, 111, 32, 105, 110, 116, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 114, 101, 103, 41, 10, 0
+compile.var_test_movsx#9#const#ptr:
+ dq compile.var_test_movsx#9#const + 8
+compile.var_test_movsx#10#const:
+ dq 57
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 56, 32, 116, 111, 32, 105, 110, 116, 32, 40, 114, 101, 103, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movsx#10#const#ptr:
+ dq compile.var_test_movsx#10#const + 8
+compile.var_test_movsx#11#const:
+ dq 59
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 56, 32, 116, 111, 32, 105, 110, 116, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movsx#11#const#ptr:
+ dq compile.var_test_movsx#11#const + 8
+compile.var_test_movsx#12#const:
+ dq 58
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 51, 50, 32, 116, 111, 32, 105, 110, 116, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 114, 101, 103, 41, 10, 0
+compile.var_test_movsx#12#const#ptr:
+ dq compile.var_test_movsx#12#const + 8
+compile.var_test_movsx#13#const:
+ dq 58
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 51, 50, 32, 116, 111, 32, 105, 110, 116, 32, 40, 114, 101, 103, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movsx#13#const#ptr:
+ dq compile.var_test_movsx#13#const + 8
+compile.var_test_movsx#14#const:
+ dq 60
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 105, 110, 116, 51, 50, 32, 116, 111, 32, 105, 110, 116, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movsx#14#const#ptr:
+ dq compile.var_test_movsx#14#const + 8
+compile.var_test_movsx#15#const:
+ dq 2
+ db 10, 0
+compile.var_test_movsx#15#const#ptr:
+ dq compile.var_test_movsx#15#const + 8
+compile.var_test_movzx#0#const:
+ dq 5
+ db 117, 105, 110, 116, 0
+compile.var_test_movzx#0#const#ptr:
+ dq compile.var_test_movzx#0#const + 8
+compile.var_test_movzx#1#const:
+ dq 7
+ db 117, 105, 110, 116, 51, 50, 0
+compile.var_test_movzx#1#const#ptr:
+ dq compile.var_test_movzx#1#const + 8
+compile.var_test_movzx#2#const:
+ dq 6
+ db 117, 105, 110, 116, 56, 0
+compile.var_test_movzx#2#const#ptr:
+ dq compile.var_test_movzx#2#const + 8
+compile.var_test_movzx#3#const:
+ dq 46
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 56, 32, 116, 111, 32, 117, 105, 110, 116, 51, 50, 10, 0
+compile.var_test_movzx#3#const#ptr:
+ dq compile.var_test_movzx#3#const + 8
+compile.var_test_movzx#4#const:
+ dq 44
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 56, 32, 116, 111, 32, 117, 105, 110, 116, 10, 0
+compile.var_test_movzx#4#const#ptr:
+ dq compile.var_test_movzx#4#const + 8
+compile.var_test_movzx#5#const:
+ dq 45
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 51, 50, 32, 116, 111, 32, 117, 105, 110, 116, 10, 0
+compile.var_test_movzx#5#const#ptr:
+ dq compile.var_test_movzx#5#const + 8
+compile.var_test_movzx#6#const:
+ dq 61
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 56, 32, 116, 111, 32, 117, 105, 110, 116, 51, 50, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 114, 101, 103, 41, 10, 0
+compile.var_test_movzx#6#const#ptr:
+ dq compile.var_test_movzx#6#const + 8
+compile.var_test_movzx#7#const:
+ dq 61
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 56, 32, 116, 111, 32, 117, 105, 110, 116, 51, 50, 32, 40, 114, 101, 103, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movzx#7#const#ptr:
+ dq compile.var_test_movzx#7#const + 8
+compile.var_test_movzx#8#const:
+ dq 63
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 56, 32, 116, 111, 32, 117, 105, 110, 116, 51, 50, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movzx#8#const#ptr:
+ dq compile.var_test_movzx#8#const + 8
+compile.var_test_movzx#9#const:
+ dq 59
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 56, 32, 116, 111, 32, 117, 105, 110, 116, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 114, 101, 103, 41, 10, 0
+compile.var_test_movzx#9#const#ptr:
+ dq compile.var_test_movzx#9#const + 8
+compile.var_test_movzx#10#const:
+ dq 59
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 56, 32, 116, 111, 32, 117, 105, 110, 116, 32, 40, 114, 101, 103, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movzx#10#const#ptr:
+ dq compile.var_test_movzx#10#const + 8
+compile.var_test_movzx#11#const:
+ dq 61
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 56, 32, 116, 111, 32, 117, 105, 110, 116, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movzx#11#const#ptr:
+ dq compile.var_test_movzx#11#const + 8
+compile.var_test_movzx#12#const:
+ dq 60
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 51, 50, 32, 116, 111, 32, 117, 105, 110, 116, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 114, 101, 103, 41, 10, 0
+compile.var_test_movzx#12#const#ptr:
+ dq compile.var_test_movzx#12#const + 8
+compile.var_test_movzx#13#const:
+ dq 60
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 51, 50, 32, 116, 111, 32, 117, 105, 110, 116, 32, 40, 114, 101, 103, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movzx#13#const#ptr:
+ dq compile.var_test_movzx#13#const + 8
+compile.var_test_movzx#14#const:
+ dq 62
+ db 59, 32, 116, 101, 115, 116, 58, 32, 109, 111, 118, 32, 119, 105, 116, 104, 32, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 45, 32, 117, 105, 110, 116, 51, 50, 32, 116, 111, 32, 117, 105, 110, 116, 32, 40, 115, 116, 97, 99, 107, 32, 116, 111, 32, 115, 116, 97, 99, 107, 41, 10, 0
+compile.var_test_movzx#14#const#ptr:
+ dq compile.var_test_movzx#14#const + 8
+compile.var_test_movzx#15#const:
+ dq 2
+ db 10, 0
+compile.var_test_movzx#15#const#ptr:
+ dq compile.var_test_movzx#15#const + 8
+compile.var_test_movref#0#const:
+ dq 4
+ db 105, 110, 116, 0
+compile.var_test_movref#0#const#ptr:
+ dq compile.var_test_movref#0#const + 8
+compile.var_test_movref#1#const:
+ dq 6
+ db 105, 110, 116, 51, 50, 0
+compile.var_test_movref#1#const#ptr:
+ dq compile.var_test_movref#1#const + 8
+compile._gen_test_struct#0#const:
+ dq 5
+ db 116, 101, 115, 116, 0
+compile._gen_test_struct#0#const#ptr:
+ dq compile._gen_test_struct#0#const + 8
+compile._gen_test_struct#2#const:
+ dq 5
+ db 116, 101, 115, 116, 0
+compile._gen_test_struct#2#const#ptr:
+ dq compile._gen_test_struct#2#const + 8
+compile.var_tests#0#const:
+ dq 1
+ db 0
+compile.var_tests#0#const#ptr:
+ dq compile.var_tests#0#const + 8
+compile._indent#0#loop#0#const:
+ dq 3
+ db 32, 32, 0
+compile._indent#0#loop#0#const#ptr:
+ dq compile._indent#0#loop#0#const + 8
+compile._gen_prims#0#const:
+ dq 5
+ db 98, 111, 111, 108, 0
+compile._gen_prims#0#const#ptr:
+ dq compile._gen_prims#0#const + 8
+compile._gen_prims#1#const:
+ dq 6
+ db 117, 105, 110, 116, 56, 0
+compile._gen_prims#1#const#ptr:
+ dq compile._gen_prims#1#const + 8
+compile._gen_prims#2#const:
+ dq 5
+ db 105, 110, 116, 56, 0
+compile._gen_prims#2#const#ptr:
+ dq compile._gen_prims#2#const + 8
+compile._gen_prims#3#const:
+ dq 7
+ db 117, 105, 110, 116, 49, 54, 0
+compile._gen_prims#3#const#ptr:
+ dq compile._gen_prims#3#const + 8
+compile._gen_prims#4#const:
+ dq 6
+ db 105, 110, 116, 49, 54, 0
+compile._gen_prims#4#const#ptr:
+ dq compile._gen_prims#4#const + 8
+compile._gen_prims#5#const:
+ dq 7
+ db 117, 105, 110, 116, 51, 50, 0
+compile._gen_prims#5#const#ptr:
+ dq compile._gen_prims#5#const + 8
+compile._gen_prims#6#const:
+ dq 6
+ db 105, 110, 116, 51, 50, 0
+compile._gen_prims#6#const#ptr:
+ dq compile._gen_prims#6#const + 8
+compile._gen_prims#7#const:
+ dq 8
+ db 102, 108, 111, 97, 116, 51, 50, 0
+compile._gen_prims#7#const#ptr:
+ dq compile._gen_prims#7#const + 8
+compile._gen_prims#8#const:
+ dq 7
+ db 117, 105, 110, 116, 54, 52, 0
+compile._gen_prims#8#const#ptr:
+ dq compile._gen_prims#8#const + 8
+compile._gen_prims#9#const:
+ dq 6
+ db 105, 110, 116, 54, 52, 0
+compile._gen_prims#9#const#ptr:
+ dq compile._gen_prims#9#const + 8
+compile._gen_prims#10#const:
+ dq 8
+ db 102, 108, 111, 97, 116, 54, 52, 0
+compile._gen_prims#10#const#ptr:
+ dq compile._gen_prims#10#const + 8
+compile._gen_prims#11#const:
+ dq 5
+ db 117, 105, 110, 116, 0
+compile._gen_prims#11#const#ptr:
+ dq compile._gen_prims#11#const + 8
+compile._gen_prims#12#const:
+ dq 4
+ db 105, 110, 116, 0
+compile._gen_prims#12#const#ptr:
+ dq compile._gen_prims#12#const + 8
+compile._gen_prims#13#const:
+ dq 6
+ db 102, 108, 111, 97, 116, 0
+compile._gen_prims#13#const#ptr:
+ dq compile._gen_prims#13#const + 8
+compile._gen_prims#14#const:
+ dq 5
+ db 118, 111, 105, 100, 0
+compile._gen_prims#14#const#ptr:
+ dq compile._gen_prims#14#const + 8
+compile._#CompBuf.write_to#0#const:
+ dq 9
+ db 66, 73, 84, 83, 32, 54, 52, 10, 0
+compile._#CompBuf.write_to#0#const#ptr:
+ dq compile._#CompBuf.write_to#0#const + 8
+compile._#CompBuf.write_to#1#const:
+ dq 17
+ db 10, 115, 101, 99, 116, 105, 111, 110, 32, 46, 100, 97, 116, 97, 10, 10, 0
+compile._#CompBuf.write_to#1#const#ptr:
+ dq compile._#CompBuf.write_to#1#const + 8
+compile._#CompBuf.write_to#2#const:
+ dq 17
+ db 10, 115, 101, 99, 116, 105, 111, 110, 32, 46, 116, 101, 120, 116, 10, 10, 0
+compile._#CompBuf.write_to#2#const#ptr:
+ dq compile._#CompBuf.write_to#2#const + 8
+compile._#Struct._print#0#const:
+ dq 12
+ db 123, 32, 83, 116, 114, 117, 99, 116, 32, 58, 32, 0
+compile._#Struct._print#0#const#ptr:
+ dq compile._#Struct._print#0#const + 8
+compile._#Struct._print#1#const:
+ dq 2
+ db 10, 0
+compile._#Struct._print#1#const#ptr:
+ dq compile._#Struct._print#1#const + 8
+compile._#Struct._print#2#const:
+ dq 10
+ db 115, 105, 122, 101, 58, 32, 37, 100, 10, 0
+compile._#Struct._print#2#const#ptr:
+ dq compile._#Struct._print#2#const + 8
+compile._#Struct._print#3#const:
+ dq 10
+ db 109, 101, 109, 98, 101, 114, 115, 58, 10, 0
+compile._#Struct._print#3#const#ptr:
+ dq compile._#Struct._print#3#const + 8
+compile._#Struct._print#5#const:
+ dq 3
+ db 125, 10, 0
+compile._#Struct._print#5#const#ptr:
+ dq compile._#Struct._print#5#const + 8
+compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#0#if#0#const:
+ dq 69
+ db 69, 82, 82, 79, 82, 58, 32, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 102, 105, 110, 100, 32, 116, 121, 112, 101, 32, 119, 104, 101, 110, 32, 116, 114, 121, 105, 110, 103, 32, 116, 111, 32, 99, 114, 101, 97, 116, 101, 32, 109, 101, 109, 98, 101, 114, 32, 102, 111, 114, 32, 115, 116, 114, 117, 99, 116, 32, 39, 0
+compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#0#if#0#const + 8
+compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#0#if#1#const:
+ dq 2
+ db 10, 0
+compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#0#if#1#const + 8
+compile._#Struct._compute_type_size#0#wrap#0#if#0#const:
+ dq 29
+ db 69, 82, 82, 79, 82, 58, 32, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 102, 105, 110, 100, 32, 116, 121, 112, 101, 32, 39, 0
+compile._#Struct._compute_type_size#0#wrap#0#if#0#const#ptr:
+ dq compile._#Struct._compute_type_size#0#wrap#0#if#0#const + 8
+compile._#Struct._compute_type_size#0#wrap#0#if#1#const:
+ dq 22
+ db 39, 32, 102, 111, 114, 32, 117, 115, 101, 32, 105, 110, 32, 115, 116, 114, 117, 99, 116, 32, 39, 0
+compile._#Struct._compute_type_size#0#wrap#0#if#1#const#ptr:
+ dq compile._#Struct._compute_type_size#0#wrap#0#if#1#const + 8
+compile._#Struct._compute_type_size#0#wrap#0#if#2#const:
+ dq 3
+ db 39, 10, 0
+compile._#Struct._compute_type_size#0#wrap#0#if#2#const#ptr:
+ dq compile._#Struct._compute_type_size#0#wrap#0#if#2#const + 8
+compile._#Struct._compute_type_size#3#wrap#0#if#0#const:
+ dq 35
+ db 69, 82, 82, 79, 82, 58, 32, 67, 121, 99, 108, 105, 99, 32, 115, 116, 114, 117, 99, 116, 32, 100, 101, 102, 105, 110, 105, 116, 105, 111, 110, 58, 32, 39, 0
+compile._#Struct._compute_type_size#3#wrap#0#if#0#const#ptr:
+ dq compile._#Struct._compute_type_size#3#wrap#0#if#0#const + 8
+compile._#Struct._compute_type_size#3#wrap#0#if#1#const:
+ dq 18
+ db 39, 32, 105, 109, 112, 111, 114, 116, 101, 100, 32, 102, 114, 111, 109, 32, 39, 0
+compile._#Struct._compute_type_size#3#wrap#0#if#1#const#ptr:
+ dq compile._#Struct._compute_type_size#3#wrap#0#if#1#const + 8
+compile._#Struct._compute_type_size#3#wrap#0#if#2#const:
+ dq 3
+ db 39, 10, 0
+compile._#Struct._compute_type_size#3#wrap#0#if#2#const#ptr:
+ dq compile._#Struct._compute_type_size#3#wrap#0#if#2#const + 8
+compile._#Var._init#0#const:
+ dq 6
+ db 100, 117, 109, 109, 121, 0
+compile._#Var._init#0#const#ptr:
+ dq compile._#Var._init#0#const + 8
+compile._#Var.is_bool#1#const:
+ dq 5
+ db 98, 111, 111, 108, 0
+compile._#Var.is_bool#1#const#ptr:
+ dq compile._#Var.is_bool#1#const + 8
+compile._#Var.find_method#0#loop#0#wrap#0#if#0#const:
+ dq 30
+ db 69, 82, 82, 79, 82, 58, 32, 84, 114, 105, 101, 100, 32, 116, 111, 32, 102, 105, 110, 100, 32, 109, 101, 116, 104, 111, 100, 32, 34, 0
+compile._#Var.find_method#0#loop#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var.find_method#0#loop#0#wrap#0#if#0#const + 8
+compile._#Var.find_method#0#loop#0#wrap#0#if#1#const:
+ dq 51
+ db 34, 32, 111, 110, 32, 97, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 98, 117, 116, 32, 119, 101, 32, 104, 97, 100, 32, 97, 32, 112, 111, 105, 110, 116, 101, 114, 32, 105, 110, 32, 116, 104, 101, 32, 99, 104, 97, 105, 110, 10, 0
+compile._#Var.find_method#0#loop#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var.find_method#0#loop#0#wrap#0#if#1#const + 8
+compile._#Var.find_method#0#loop#0#wrap#0#if#2#const:
+ dq 28
+ db 69, 82, 82, 79, 82, 58, 32, 79, 70, 70, 69, 78, 68, 73, 78, 71, 32, 86, 65, 82, 73, 65, 66, 76, 69, 58, 10, 0
+compile._#Var.find_method#0#loop#0#wrap#0#if#2#const#ptr:
+ dq compile._#Var.find_method#0#loop#0#wrap#0#if#2#const + 8
+compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 126, 0
+compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var._static_compile_arr#0#const:
+ dq 28
+ db 84, 79, 68, 79, 32, 59, 32, 83, 116, 97, 116, 105, 99, 32, 99, 111, 109, 112, 105, 108, 101, 32, 97, 114, 114, 97, 121, 0
+compile._#Var._static_compile_arr#0#const#ptr:
+ dq compile._#Var._static_compile_arr#0#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#0#const:
+ dq 3
+ db 58, 10, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#1#const:
+ dq 8
+ db 32, 32, 32, 32, 100, 113, 32, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#1#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#2#const:
+ dq 2
+ db 10, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#2#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#2#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#3#wrap#0#if#0#const:
+ dq 8
+ db 32, 32, 32, 32, 100, 98, 32, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#3#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#3#wrap#0#if#0#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#4#loop#0#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#4#loop#0#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#4#loop#0#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#6#const:
+ dq 2
+ db 10, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#6#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#6#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#7#const:
+ dq 8
+ db 32, 32, 32, 32, 100, 113, 32, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#7#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#7#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#8#wrap#0#if#0#const:
+ dq 5
+ db 32, 43, 32, 56, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#8#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#8#wrap#0#if#0#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#9#const:
+ dq 2
+ db 10, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#9#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#9#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#1#const:
+ dq 8
+ db 32, 32, 32, 32, 100, 113, 32, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#1#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#1#const + 8
+compile._#Var._static_compile_ptr#1#wrap#0#if#2#const:
+ dq 2
+ db 10, 0
+compile._#Var._static_compile_ptr#1#wrap#0#if#2#const#ptr:
+ dq compile._#Var._static_compile_ptr#1#wrap#0#if#2#const + 8
+compile._#Var._static_compile_ptr#2#const:
+ dq 31
+ db 69, 82, 82, 79, 82, 58, 32, 83, 116, 97, 116, 105, 99, 32, 99, 111, 109, 112, 105, 108, 101, 32, 112, 111, 105, 110, 116, 101, 114, 10, 0
+compile._#Var._static_compile_ptr#2#const#ptr:
+ dq compile._#Var._static_compile_ptr#2#const + 8
+compile._#Var._static_compile_ptr#3#const:
+ dq 26
+ db 84, 79, 68, 79, 32, 59, 32, 83, 116, 97, 116, 105, 99, 32, 99, 111, 109, 112, 105, 108, 101, 32, 112, 116, 114, 0
+compile._#Var._static_compile_ptr#3#const#ptr:
+ dq compile._#Var._static_compile_ptr#3#const + 8
+compile._#Var._static_compile_struct#0#const:
+ dq 29
+ db 84, 79, 68, 79, 32, 59, 32, 83, 116, 97, 116, 105, 99, 32, 99, 111, 109, 112, 105, 108, 101, 32, 115, 116, 114, 117, 99, 116, 0
+compile._#Var._static_compile_struct#0#const#ptr:
+ dq compile._#Var._static_compile_struct#0#const + 8
+compile._#Var._static_comp_prim_r_dot#0#const:
+ dq 31
+ db 84, 79, 68, 79, 58, 32, 95, 115, 116, 97, 116, 105, 99, 95, 99, 111, 109, 112, 95, 112, 114, 105, 109, 95, 114, 95, 100, 111, 116, 10, 0
+compile._#Var._static_comp_prim_r_dot#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_dot#0#const + 8
+compile._#Var._static_comp_prim_r_bin#1#wrap#0#if#0#const:
+ dq 94
+ db 84, 79, 68, 79, 58, 32, 95, 115, 116, 97, 116, 105, 99, 95, 99, 111, 109, 112, 95, 112, 114, 105, 109, 95, 114, 95, 98, 105, 110, 58, 32, 80, 111, 105, 110, 116, 101, 114, 32, 116, 121, 112, 101, 115, 32, 110, 111, 116, 32, 121, 101, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 105, 110, 32, 98, 105, 110, 97, 114, 121, 32, 111, 112, 115, 32, 97, 116, 32, 99, 111, 109, 112, 105, 108, 101, 32, 116, 105, 109, 101, 10, 0
+compile._#Var._static_comp_prim_r_bin#1#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_bin#1#wrap#0#if#0#const + 8
+compile._#Var._static_comp_prim_r_bin#1#wrap#1#if#0#const:
+ dq 94
+ db 84, 79, 68, 79, 58, 32, 95, 115, 116, 97, 116, 105, 99, 95, 99, 111, 109, 112, 95, 112, 114, 105, 109, 95, 114, 95, 98, 105, 110, 58, 32, 80, 111, 105, 110, 116, 101, 114, 32, 116, 121, 112, 101, 115, 32, 110, 111, 116, 32, 121, 101, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 105, 110, 32, 98, 105, 110, 97, 114, 121, 32, 111, 112, 115, 32, 97, 116, 32, 99, 111, 109, 112, 105, 108, 101, 32, 116, 105, 109, 101, 10, 0
+compile._#Var._static_comp_prim_r_bin#1#wrap#1#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_bin#1#wrap#1#if#0#const + 8
+compile._#Var._static_comp_prim_r_bin#2#wrap#0#if#0#const:
+ dq 2
+ db 42, 0
+compile._#Var._static_comp_prim_r_bin#2#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_bin#2#wrap#0#if#0#const + 8
+compile._#Var._static_comp_prim_r_bin#2#wrap#1#if#0#const:
+ dq 2
+ db 47, 0
+compile._#Var._static_comp_prim_r_bin#2#wrap#1#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_bin#2#wrap#1#if#0#const + 8
+compile._#Var._static_comp_prim_r_bin#2#wrap#2#if#0#const:
+ dq 2
+ db 37, 0
+compile._#Var._static_comp_prim_r_bin#2#wrap#2#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_bin#2#wrap#2#if#0#const + 8
+compile._#Var._static_comp_prim_r_bin#2#wrap#3#if#0#const:
+ dq 2
+ db 43, 0
+compile._#Var._static_comp_prim_r_bin#2#wrap#3#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_bin#2#wrap#3#if#0#const + 8
+compile._#Var._static_comp_prim_r_bin#2#wrap#4#if#0#const:
+ dq 2
+ db 45, 0
+compile._#Var._static_comp_prim_r_bin#2#wrap#4#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_bin#2#wrap#4#if#0#const + 8
+compile._#Var._static_comp_prim_r_bin#2#wrap#5#if#0#const:
+ dq 40
+ db 84, 79, 68, 79, 58, 32, 95, 115, 116, 97, 116, 105, 99, 95, 99, 111, 109, 112, 95, 112, 114, 105, 109, 95, 114, 95, 98, 105, 110, 58, 32, 66, 105, 110, 32, 111, 112, 32, 34, 0
+compile._#Var._static_comp_prim_r_bin#2#wrap#5#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_bin#2#wrap#5#if#0#const + 8
+compile._#Var._static_comp_prim_r_bin#2#wrap#5#if#1#const:
+ dq 33
+ db 34, 32, 110, 111, 116, 32, 121, 101, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 97, 116, 32, 99, 111, 109, 112, 116, 105, 109, 101, 10, 0
+compile._#Var._static_comp_prim_r_bin#2#wrap#5#if#1#const#ptr:
+ dq compile._#Var._static_comp_prim_r_bin#2#wrap#5#if#1#const + 8
+compile._#Var._static_comp_prim_r_pre#0#const:
+ dq 31
+ db 84, 79, 68, 79, 58, 32, 95, 115, 116, 97, 116, 105, 99, 95, 99, 111, 109, 112, 95, 112, 114, 105, 109, 95, 114, 95, 112, 114, 101, 10, 0
+compile._#Var._static_comp_prim_r_pre#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_pre#0#const + 8
+compile._#Var._static_comp_prim_r_post#0#const:
+ dq 32
+ db 84, 79, 68, 79, 58, 32, 95, 115, 116, 97, 116, 105, 99, 95, 99, 111, 109, 112, 95, 112, 114, 105, 109, 95, 114, 95, 112, 111, 115, 116, 10, 0
+compile._#Var._static_comp_prim_r_post#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_post#0#const + 8
+compile._#Var._static_comp_prim_r_id#0#wrap#0#if#0#const:
+ dq 27
+ db 69, 82, 82, 79, 82, 58, 32, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 102, 105, 110, 100, 32, 105, 100, 32, 34, 0
+compile._#Var._static_comp_prim_r_id#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#0#wrap#0#if#0#const + 8
+compile._#Var._static_comp_prim_r_id#0#wrap#0#if#1#const:
+ dq 26
+ db 34, 32, 119, 104, 101, 110, 32, 99, 111, 109, 112, 105, 108, 105, 110, 103, 32, 103, 108, 111, 98, 97, 108, 32, 34, 0
+compile._#Var._static_comp_prim_r_id#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#0#wrap#0#if#1#const + 8
+compile._#Var._static_comp_prim_r_id#0#wrap#0#if#2#const:
+ dq 18
+ db 32, 114, 101, 116, 117, 114, 110, 105, 110, 103, 32, 100, 117, 109, 109, 121, 10, 0
+compile._#Var._static_comp_prim_r_id#0#wrap#0#if#2#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#0#wrap#0#if#2#const + 8
+compile._#Var._static_comp_prim_r_id#1#wrap#0#if#0#const:
+ dq 62
+ db 69, 82, 82, 79, 82, 58, 32, 67, 73, 82, 67, 85, 76, 65, 82, 32, 82, 69, 70, 69, 82, 69, 78, 67, 69, 32, 68, 69, 84, 69, 67, 84, 69, 68, 32, 87, 72, 69, 78, 32, 73, 78, 73, 84, 73, 65, 76, 73, 90, 73, 78, 71, 32, 71, 76, 79, 66, 65, 76, 33, 10, 0
+compile._#Var._static_comp_prim_r_id#1#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#1#wrap#0#if#0#const + 8
+compile._#Var._static_comp_prim_r_id#1#wrap#0#if#1#const:
+ dq 22
+ db 32, 32, 32, 32, 32, 32, 32, 83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 105, 110, 32, 34, 0
+compile._#Var._static_comp_prim_r_id#1#wrap#0#if#1#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#1#wrap#0#if#1#const + 8
+compile._#Var._static_comp_prim_r_id#1#wrap#0#if#2#const:
+ dq 14
+ db 34, 32, 100, 101, 112, 101, 110, 100, 115, 32, 111, 110, 32, 34
+compile._#Var._static_comp_prim_r_id#1#wrap#0#if#2#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#1#wrap#0#if#2#const + 8
+compile._#Var._static_comp_prim_r_id#1#wrap#0#if#3#const:
+ dq 32
+ db 34, 32, 119, 104, 105, 99, 104, 32, 100, 101, 112, 101, 110, 100, 115, 32, 111, 110, 32, 116, 104, 101, 32, 102, 111, 114, 109, 101, 114, 46, 10, 0
+compile._#Var._static_comp_prim_r_id#1#wrap#0#if#3#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#1#wrap#0#if#3#const + 8
+compile._#Var._static_comp_prim_r_id#2#wrap#0#if#0#const:
+ dq 43
+ db 69, 82, 82, 79, 82, 58, 32, 65, 116, 116, 101, 109, 112, 116, 101, 100, 32, 116, 111, 32, 115, 101, 116, 32, 112, 114, 105, 109, 105, 116, 105, 118, 101, 32, 103, 108, 111, 98, 97, 108, 32, 34, 0
+compile._#Var._static_comp_prim_r_id#2#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#2#wrap#0#if#0#const + 8
+compile._#Var._static_comp_prim_r_id#2#wrap#0#if#1#const:
+ dq 6
+ db 34, 32, 116, 111, 32, 34
+compile._#Var._static_comp_prim_r_id#2#wrap#0#if#1#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#2#wrap#0#if#1#const + 8
+compile._#Var._static_comp_prim_r_id#2#wrap#0#if#2#const:
+ dq 38
+ db 34, 32, 119, 104, 105, 99, 104, 32, 105, 115, 32, 97, 32, 115, 116, 114, 117, 99, 116, 44, 32, 110, 111, 116, 32, 97, 32, 112, 114, 105, 109, 105, 116, 105, 118, 101, 10, 0
+compile._#Var._static_comp_prim_r_id#2#wrap#0#if#2#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#2#wrap#0#if#2#const + 8
+compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#0#if#0#const:
+ dq 44
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 87, 104, 101, 110, 32, 115, 116, 97, 116, 105, 99, 32, 99, 111, 109, 112, 105, 108, 105, 110, 103, 32, 118, 97, 114, 32, 34, 0
+compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#0#if#0#const + 8
+compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#0#if#1#const:
+ dq 32
+ db 34, 32, 116, 104, 101, 32, 115, 117, 98, 45, 110, 111, 100, 101, 32, 119, 97, 115, 32, 110, 111, 116, 32, 97, 32, 118, 97, 108, 117, 101, 10, 0
+compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#0#if#1#const + 8
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#0#if#0#const:
+ dq 5
+ db 116, 114, 117, 101, 0
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#1#if#0#const:
+ dq 5
+ db 105, 111, 116, 97, 0
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#1#if#1#const:
+ dq 42
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 105, 111, 116, 97, 32, 110, 111, 116, 32, 121, 101, 116, 32, 105, 109, 112, 108, 101, 109, 101, 110, 116, 101, 100, 10, 0
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#1#if#1#const#ptr:
+ dq compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#1#if#1#const + 8
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#0#const:
+ dq 73
+ db 69, 82, 82, 79, 82, 58, 32, 65, 116, 116, 101, 109, 112, 116, 101, 100, 32, 116, 111, 32, 115, 101, 116, 32, 97, 32, 110, 111, 110, 45, 112, 111, 105, 110, 116, 101, 114, 32, 111, 114, 32, 110, 111, 110, 45, 97, 114, 114, 97, 121, 32, 116, 111, 32, 97, 32, 115, 116, 114, 105, 110, 103, 32, 108, 105, 116, 101, 114, 97, 108, 33, 10, 0
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#0#const#ptr:
+ dq compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#0#const + 8
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#1#const:
+ dq 17
+ db 32, 32, 32, 32, 32, 32, 32, 76, 105, 116, 101, 114, 97, 108, 58, 32, 0
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#1#const#ptr:
+ dq compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#1#const + 8
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#2#const:
+ dq 2
+ db 10, 0
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#2#const#ptr:
+ dq compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#2#const + 8
+compile._#Var._static_comp_prim_r#2#const:
+ dq 67
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 95, 115, 116, 97, 116, 105, 99, 95, 99, 111, 109, 112, 95, 112, 114, 105, 109, 95, 114, 58, 32, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 119, 111, 114, 107, 32, 111, 110, 32, 110, 111, 100, 101, 32, 103, 105, 118, 101, 110, 10, 0
+compile._#Var._static_comp_prim_r#2#const#ptr:
+ dq compile._#Var._static_comp_prim_r#2#const + 8
+compile._#Var._static_compile_prim#0#wrap#0#if#0#const:
+ dq 8
+ db 32, 32, 32, 32, 100, 98, 32, 0
+compile._#Var._static_compile_prim#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_compile_prim#0#wrap#0#if#0#const + 8
+compile._#Var._static_compile_prim#0#wrap#1#if#0#const:
+ dq 8
+ db 32, 32, 32, 32, 100, 119, 32, 0
+compile._#Var._static_compile_prim#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var._static_compile_prim#0#wrap#1#if#0#const + 8
+compile._#Var._static_compile_prim#0#wrap#2#if#0#const:
+ dq 8
+ db 32, 32, 32, 32, 100, 100, 32, 0
+compile._#Var._static_compile_prim#0#wrap#2#if#0#const#ptr:
+ dq compile._#Var._static_compile_prim#0#wrap#2#if#0#const + 8
+compile._#Var._static_compile_prim#0#wrap#3#if#0#const:
+ dq 8
+ db 32, 32, 32, 32, 100, 113, 32, 0
+compile._#Var._static_compile_prim#0#wrap#3#if#0#const#ptr:
+ dq compile._#Var._static_compile_prim#0#wrap#3#if#0#const + 8
+compile._#Var._static_compile_prim#1#wrap#0#if#0#const:
+ dq 2
+ db 10, 0
+compile._#Var._static_compile_prim#1#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_compile_prim#1#wrap#0#if#0#const + 8
+compile._#Var._static_compile_prim#1#wrap#1#if#0#const:
+ dq 66
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 84, 121, 112, 101, 32, 111, 102, 32, 118, 97, 114, 32, 37, 100, 32, 110, 111, 116, 32, 121, 101, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 102, 111, 114, 32, 115, 116, 97, 116, 105, 99, 32, 99, 111, 109, 112, 10, 0
+compile._#Var._static_compile_prim#1#wrap#1#if#0#const#ptr:
+ dq compile._#Var._static_compile_prim#1#wrap#1#if#0#const + 8
+compile._#Var._static_compile_zero#0#const:
+ dq 8
+ db 32, 32, 32, 32, 100, 98, 32, 0
+compile._#Var._static_compile_zero#0#const#ptr:
+ dq compile._#Var._static_compile_zero#0#const + 8
+compile._#Var._static_compile_zero#1#loop#0#const:
+ dq 4
+ db 48, 44, 32, 0
+compile._#Var._static_compile_zero#1#loop#0#const#ptr:
+ dq compile._#Var._static_compile_zero#1#loop#0#const + 8
+compile._#Var._static_compile_zero#2#const:
+ dq 3
+ db 48, 10, 0
+compile._#Var._static_compile_zero#2#const#ptr:
+ dq compile._#Var._static_compile_zero#2#const + 8
+compile._#Var._static_compile#0#wrap#1#if#0#wrap#0#if#0#const:
+ dq 44
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 87, 104, 101, 110, 32, 115, 116, 97, 116, 105, 99, 32, 99, 111, 109, 112, 105, 108, 105, 110, 103, 32, 118, 97, 114, 32, 34, 0
+compile._#Var._static_compile#0#wrap#1#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._static_compile#0#wrap#1#if#0#wrap#0#if#0#const + 8
+compile._#Var._static_compile#0#wrap#1#if#0#wrap#0#if#1#const:
+ dq 32
+ db 34, 32, 116, 104, 101, 32, 115, 117, 98, 45, 110, 111, 100, 101, 32, 119, 97, 115, 32, 110, 111, 116, 32, 97, 32, 118, 97, 108, 117, 101, 10, 0
+compile._#Var._static_compile#0#wrap#1#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var._static_compile#0#wrap#1#if#0#wrap#0#if#1#const + 8
+compile._#Var._static_compile#2#const:
+ dq 3
+ db 58, 10, 0
+compile._#Var._static_compile#2#const#ptr:
+ dq compile._#Var._static_compile#2#const + 8
+compile._#Var._static_compile#3#const:
+ dq 2
+ db 10, 0
+compile._#Var._static_compile#3#const#ptr:
+ dq compile._#Var._static_compile#3#const + 8
+compile._#Var._global_ptr#1#const:
+ dq 5
+ db 35, 112, 116, 114, 0
+compile._#Var._global_ptr#1#const#ptr:
+ dq compile._#Var._global_ptr#1#const + 8
+compile._#Var._set_struct_r#0#const:
+ dq 44
+ db 32, 32, 32, 32, 59, 32, 112, 117, 116, 116, 105, 110, 103, 32, 115, 116, 114, 117, 99, 116, 32, 97, 100, 100, 114, 101, 115, 115, 32, 105, 110, 116, 111, 32, 114, 101, 103, 105, 115, 116, 101, 114, 10, 0
+compile._#Var._set_struct_r#0#const#ptr:
+ dq compile._#Var._set_struct_r#0#const + 8
+compile._#Var._set_struct_r#1#wrap#0#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var._set_struct_r#1#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_struct_r#1#wrap#0#if#0#const + 8
+compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#0#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#0#if#0#const + 8
+compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#1#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 108, 101, 97, 32, 0
+compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#1#if#0#const + 8
+compile._#Var._set_struct_r#1#wrap#2#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 108, 101, 97, 32, 0
+compile._#Var._set_struct_r#1#wrap#2#if#0#const#ptr:
+ dq compile._#Var._set_struct_r#1#wrap#2#if#0#const + 8
+compile._#Var._set_struct_r#2#const:
+ dq 4
+ db 44, 32, 91, 0
+compile._#Var._set_struct_r#2#const#ptr:
+ dq compile._#Var._set_struct_r#2#const + 8
+compile._#Var._set_struct_r#3#wrap#0#if#0#const:
+ dq 5
+ db 114, 101, 108, 32, 0
+compile._#Var._set_struct_r#3#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_struct_r#3#wrap#0#if#0#const + 8
+compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#0#if#0#const:
+ dq 4
+ db 32, 45, 32, 0
+compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#1#if#0#const:
+ dq 4
+ db 32, 43, 32, 0
+compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Var._set_struct_r#5#const:
+ dq 42
+ db 93, 32, 59, 32, 105, 110, 105, 116, 105, 97, 108, 32, 115, 116, 114, 117, 99, 116, 32, 97, 100, 100, 114, 32, 109, 111, 118, 101, 32, 40, 83, 69, 84, 95, 83, 84, 82, 95, 82, 41, 10, 0
+compile._#Var._set_struct_r#5#const#ptr:
+ dq compile._#Var._set_struct_r#5#const + 8
+compile._#Var._set_struct_r#6#loop#0#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var._set_struct_r#6#loop#0#const#ptr:
+ dq compile._#Var._set_struct_r#6#loop#0#const + 8
+compile._#Var._set_struct_r#6#loop#1#const:
+ dq 4
+ db 44, 32, 91, 0
+compile._#Var._set_struct_r#6#loop#1#const#ptr:
+ dq compile._#Var._set_struct_r#6#loop#1#const + 8
+compile._#Var._set_struct_r#6#loop#2#const:
+ dq 33
+ db 93, 32, 59, 32, 114, 101, 102, 101, 114, 101, 110, 99, 101, 32, 99, 104, 97, 105, 110, 32, 40, 83, 69, 84, 95, 83, 84, 82, 95, 82, 41, 10, 0
+compile._#Var._set_struct_r#6#loop#2#const#ptr:
+ dq compile._#Var._set_struct_r#6#loop#2#const + 8
+compile._#Var._set_struct#0#wrap#0#if#0#const:
+ dq 49
+ db 69, 82, 82, 79, 82, 58, 32, 84, 121, 112, 101, 115, 32, 100, 111, 32, 110, 111, 116, 32, 109, 97, 116, 99, 104, 32, 119, 104, 101, 110, 32, 115, 101, 116, 116, 105, 110, 103, 32, 115, 116, 114, 117, 99, 116, 46, 32, 91, 0
+compile._#Var._set_struct#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_struct#0#wrap#0#if#0#const + 8
+compile._#Var._set_struct#0#wrap#0#if#1#const:
+ dq 8
+ db 93, 32, 33, 61, 61, 32, 91, 0
+compile._#Var._set_struct#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var._set_struct#0#wrap#0#if#1#const + 8
+compile._#Var._set_struct#0#wrap#0#if#2#const:
+ dq 3
+ db 93, 10, 0
+compile._#Var._set_struct#0#wrap#0#if#2#const#ptr:
+ dq compile._#Var._set_struct#0#wrap#0#if#2#const + 8
+compile._#Var._set_struct#1#const:
+ dq 14
+ db 32, 32, 32, 32, 109, 111, 118, 32, 114, 99, 120, 44, 32, 0
+compile._#Var._set_struct#1#const#ptr:
+ dq compile._#Var._set_struct#1#const + 8
+compile._#Var._set_struct#2#const:
+ dq 20
+ db 32, 59, 32, 115, 105, 122, 101, 32, 111, 102, 32, 115, 116, 114, 117, 99, 116, 32, 91, 0
+compile._#Var._set_struct#2#const#ptr:
+ dq compile._#Var._set_struct#2#const + 8
+compile._#Var._set_struct#3#const:
+ dq 12
+ db 93, 32, 105, 110, 32, 98, 121, 116, 101, 115, 10, 0
+compile._#Var._set_struct#3#const#ptr:
+ dq compile._#Var._set_struct#3#const + 8
+compile._#Var._set_struct#4#const:
+ dq 29
+ db 32, 32, 32, 32, 114, 101, 112, 32, 109, 111, 118, 115, 98, 32, 59, 32, 109, 111, 118, 101, 32, 115, 116, 114, 117, 99, 116, 10, 0
+compile._#Var._set_struct#4#const#ptr:
+ dq compile._#Var._set_struct#4#const + 8
+compile._#Var._set_prim_l_base#0#wrap#0#if#0#const:
+ dq 56
+ db 83, 69, 84, 32, 87, 65, 83, 32, 67, 65, 76, 76, 69, 68, 32, 79, 78, 32, 65, 32, 76, 73, 84, 69, 82, 65, 76, 33, 32, 32, 84, 72, 73, 83, 32, 73, 83, 32, 65, 32, 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 33, 0
+compile._#Var._set_prim_l_base#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#0#wrap#0#if#0#const + 8
+compile._#Var._set_prim_l_base#0#wrap#0#if#1#const:
+ dq 55
+ db 69, 82, 82, 32, 83, 72, 79, 85, 76, 68, 32, 78, 79, 84, 32, 72, 65, 80, 80, 69, 78, 32, 45, 32, 84, 82, 73, 69, 68, 32, 84, 79, 32, 83, 69, 84, 80, 82, 73, 77, 76, 32, 79, 78, 32, 65, 32, 76, 73, 84, 69, 82, 65, 76, 0
+compile._#Var._set_prim_l_base#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var._set_prim_l_base#0#wrap#0#if#1#const + 8
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 4
+ db 32, 45, 32, 0
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const:
+ dq 4
+ db 32, 43, 32, 0
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#0#if#0#const:
+ dq 4
+ db 114, 98, 112, 0
+compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#0#if#0#const + 8
+compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#1#if#0#const:
+ dq 5
+ db 114, 101, 108, 32, 0
+compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#1#if#0#const + 8
+compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#0#if#0#const:
+ dq 4
+ db 32, 45, 32, 0
+compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#0#if#0#const + 8
+compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#1#if#0#const:
+ dq 4
+ db 32, 43, 32, 0
+compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#1#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#1#if#0#const + 8
+compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#0#const:
+ dq 15
+ db 32, 32, 32, 32, 109, 111, 118, 32, 114, 100, 105, 44, 32, 91, 0
+compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#0#const + 8
+compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#1#const:
+ dq 17
+ db 93, 32, 59, 32, 40, 83, 69, 84, 95, 80, 82, 77, 95, 76, 41, 10, 0
+compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#1#const#ptr:
+ dq compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#1#const + 8
+compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#2#const:
+ dq 4
+ db 114, 100, 105, 0
+compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#2#const#ptr:
+ dq compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#2#const + 8
+compile._#Var._set_prim_l_base#2#wrap#0#if#0#const:
+ dq 2
+ db 91, 0
+compile._#Var._set_prim_l_base#2#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#2#wrap#0#if#0#const + 8
+compile._#Var._set_prim_l_base#2#wrap#0#if#1#const:
+ dq 2
+ db 93, 0
+compile._#Var._set_prim_l_base#2#wrap#0#if#1#const#ptr:
+ dq compile._#Var._set_prim_l_base#2#wrap#0#if#1#const + 8
+compile._#Var._set_prim_l_base#3#wrap#0#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 109, 111, 118, 32, 114, 100, 105, 44, 32, 0
+compile._#Var._set_prim_l_base#3#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#3#wrap#0#if#0#const + 8
+compile._#Var._set_prim_l_base#3#wrap#0#if#1#const:
+ dq 27
+ db 32, 59, 32, 97, 117, 116, 111, 32, 100, 101, 114, 101, 102, 32, 40, 83, 69, 84, 95, 80, 82, 77, 95, 76, 41, 10, 0
+compile._#Var._set_prim_l_base#3#wrap#0#if#1#const#ptr:
+ dq compile._#Var._set_prim_l_base#3#wrap#0#if#1#const + 8
+compile._#Var._set_prim_l_base#3#wrap#0#if#2#const:
+ dq 6
+ db 91, 114, 100, 105, 93, 0
+compile._#Var._set_prim_l_base#3#wrap#0#if#2#const#ptr:
+ dq compile._#Var._set_prim_l_base#3#wrap#0#if#2#const + 8
+compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#0#if#0#const:
+ dq 45
+ db 32, 32, 32, 32, 109, 111, 118, 32, 114, 100, 105, 44, 32, 91, 114, 100, 105, 93, 32, 59, 32, 97, 117, 116, 111, 32, 100, 101, 114, 101, 102, 32, 40, 83, 69, 84, 95, 80, 82, 77, 95, 76, 41, 10, 0
+compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#0#if#0#const + 8
+compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#0#if#1#const:
+ dq 12
+ db 65, 85, 84, 79, 32, 68, 69, 82, 69, 70, 10, 0
+compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#0#if#1#const + 8
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#0#if#0#const:
+ dq 6
+ db 98, 121, 116, 101, 32, 0
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#1#if#0#const:
+ dq 6
+ db 119, 111, 114, 100, 32, 0
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#2#if#0#const:
+ dq 7
+ db 100, 119, 111, 114, 100, 32, 0
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#2#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#2#if#0#const + 8
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#3#if#0#const:
+ dq 7
+ db 113, 119, 111, 114, 100, 32, 0
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#3#if#0#const#ptr:
+ dq compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#3#if#0#const + 8
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const:
+ dq 11
+ db 32, 32, 32, 32, 109, 111, 118, 115, 120, 32, 0
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const + 8
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#1#if#0#const:
+ dq 12
+ db 32, 32, 32, 32, 109, 111, 118, 115, 120, 100, 32, 0
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#1#if#0#const#ptr:
+ dq compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#1#if#0#const + 8
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#2#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#2#const#ptr:
+ dq compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#2#const + 8
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#1#if#0#const:
+ dq 11
+ db 32, 32, 32, 32, 109, 111, 118, 122, 120, 32, 0
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#1#if#1#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#1#if#1#const#ptr:
+ dq compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#1#if#1#const + 8
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#2#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 109, 111, 118, 32, 101, 115, 105, 44, 32, 0
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#2#if#0#const#ptr:
+ dq compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#2#if#0#const + 8
+compile._#Var._set_prim_r#1#wrap#0#if#1#const:
+ dq 16
+ db 32, 59, 32, 40, 83, 69, 84, 95, 80, 82, 77, 95, 82, 41, 10, 0
+compile._#Var._set_prim_r#1#wrap#0#if#1#const#ptr:
+ dq compile._#Var._set_prim_r#1#wrap#0#if#1#const + 8
+compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#1#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#1#const + 8
+compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#2#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#2#const#ptr:
+ dq compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#2#const + 8
+compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#3#const:
+ dq 16
+ db 32, 59, 32, 40, 83, 69, 84, 95, 80, 82, 77, 95, 82, 41, 10, 0
+compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#3#const#ptr:
+ dq compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#3#const + 8
+compile._#Var.set#1#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var.set#1#const#ptr:
+ dq compile._#Var.set#1#const + 8
+compile._#Var.set#2#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var.set#2#const#ptr:
+ dq compile._#Var.set#2#const + 8
+compile._#Var.set#3#const:
+ dq 10
+ db 32, 59, 32, 40, 83, 69, 84, 41, 10, 0
+compile._#Var.set#3#const#ptr:
+ dq compile._#Var.set#3#const + 8
+compile._#Var.set_ref#0#wrap#0#if#0#const:
+ dq 70
+ db 69, 82, 82, 79, 82, 58, 32, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 115, 101, 116, 32, 114, 101, 102, 101, 114, 101, 110, 99, 101, 44, 32, 100, 101, 112, 116, 104, 32, 37, 100, 32, 101, 113, 117, 97, 108, 115, 32, 111, 114, 32, 101, 120, 99, 101, 101, 100, 115, 32, 109, 97, 120, 95, 100, 101, 112, 116, 104, 32, 0
+compile._#Var.set_ref#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var.set_ref#0#wrap#0#if#0#const + 8
+compile._#Var.set_ref#0#wrap#0#if#1#const:
+ dq 4
+ db 37, 100, 10, 0
+compile._#Var.set_ref#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var.set_ref#0#wrap#0#if#1#const + 8
+compile._#Var.set_ref#0#wrap#0#if#2#const:
+ dq 37
+ db 32, 32, 32, 32, 32, 32, 32, 87, 104, 101, 110, 32, 116, 97, 107, 105, 110, 103, 32, 114, 101, 102, 32, 111, 102, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 34, 0
+compile._#Var.set_ref#0#wrap#0#if#2#const#ptr:
+ dq compile._#Var.set_ref#0#wrap#0#if#2#const + 8
+compile._#Var.set_ref#0#wrap#0#if#3#const:
+ dq 18
+ db 34, 32, 105, 110, 116, 111, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 34, 0
+compile._#Var.set_ref#0#wrap#0#if#3#const#ptr:
+ dq compile._#Var.set_ref#0#wrap#0#if#3#const + 8
+compile._#Var.set_ref#0#wrap#0#if#4#const:
+ dq 3
+ db 34, 10, 0
+compile._#Var.set_ref#0#wrap#0#if#4#const#ptr:
+ dq compile._#Var.set_ref#0#wrap#0#if#4#const + 8
+compile._#Var.take_ptr#0#wrap#0#if#0#const:
+ dq 40
+ db 69, 82, 82, 79, 82, 58, 32, 85, 78, 65, 66, 76, 69, 32, 84, 79, 32, 71, 69, 84, 32, 82, 69, 70, 69, 82, 69, 78, 67, 69, 32, 79, 70, 32, 86, 65, 82, 32, 34, 0
+compile._#Var.take_ptr#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var.take_ptr#0#wrap#0#if#0#const + 8
+compile._#Var.take_ptr#0#wrap#0#if#1#const:
+ dq 3
+ db 34, 10, 0
+compile._#Var.take_ptr#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var.take_ptr#0#wrap#0#if#1#const + 8
+compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 108, 101, 97, 32, 0
+compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#0#const + 8
+compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#1#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#1#const#ptr:
+ dq compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#1#const + 8
+compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#2#const:
+ dq 15
+ db 32, 59, 32, 40, 84, 65, 75, 69, 95, 80, 84, 82, 41, 10, 0
+compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#2#const#ptr:
+ dq compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#2#const + 8
+compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 73
+ db 69, 82, 82, 79, 82, 58, 32, 67, 97, 110, 39, 116, 32, 116, 97, 107, 101, 32, 100, 105, 114, 101, 99, 116, 32, 100, 101, 45, 114, 101, 102, 32, 111, 102, 32, 97, 114, 114, 97, 121, 32, 118, 97, 114, 105, 97, 98, 108, 101, 44, 32, 116, 114, 121, 32, 97, 110, 32, 105, 110, 100, 101, 120, 32, 40, 110, 97, 109, 101, 58, 32, 34, 0
+compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#0#if#1#const:
+ dq 4
+ db 34, 41, 10, 0
+compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#0#if#1#const + 8
+compile._#Var.index#0#const:
+ dq 17
+ db 32, 32, 32, 32, 59, 32, 71, 101, 110, 32, 105, 110, 100, 101, 120, 10, 0
+compile._#Var.index#0#const#ptr:
+ dq compile._#Var.index#0#const + 8
+compile._#Var.index#3#wrap#0#if#0#wrap#0#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 108, 101, 97, 32, 114, 115, 105, 44, 32, 0
+compile._#Var.index#3#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var.index#3#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var.index#3#wrap#0#if#0#wrap#1#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 109, 111, 118, 32, 114, 115, 105, 44, 32, 0
+compile._#Var.index#3#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var.index#3#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Var.index#3#wrap#1#if#0#const:
+ dq 48
+ db 69, 82, 82, 79, 82, 58, 32, 67, 97, 110, 39, 116, 32, 116, 97, 107, 101, 32, 105, 110, 100, 101, 120, 32, 111, 102, 32, 110, 111, 110, 45, 97, 114, 114, 97, 121, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 34, 0
+compile._#Var.index#3#wrap#1#if#0#const#ptr:
+ dq compile._#Var.index#3#wrap#1#if#0#const + 8
+compile._#Var.index#3#wrap#1#if#1#const:
+ dq 3
+ db 34, 10, 0
+compile._#Var.index#3#wrap#1#if#1#const#ptr:
+ dq compile._#Var.index#3#wrap#1#if#1#const + 8
+compile._#Var.index#4#const:
+ dq 14
+ db 32, 59, 32, 40, 71, 69, 78, 95, 73, 68, 88, 41, 10, 0
+compile._#Var.index#4#const#ptr:
+ dq compile._#Var.index#4#const + 8
+compile._#Var.index#5#const:
+ dq 9
+ db 32, 32, 32, 32, 97, 100, 100, 32, 0
+compile._#Var.index#5#const#ptr:
+ dq compile._#Var.index#5#const + 8
+compile._#Var.index#6#const:
+ dq 19
+ db 44, 32, 114, 115, 105, 32, 59, 32, 40, 71, 69, 78, 95, 73, 68, 88, 41, 10, 0
+compile._#Var.index#6#const#ptr:
+ dq compile._#Var.index#6#const + 8
+compile._#Var.standard_op#0#const:
+ dq 5
+ db 32, 32, 32, 32, 0
+compile._#Var.standard_op#0#const#ptr:
+ dq compile._#Var.standard_op#0#const + 8
+compile._#Var.standard_op#1#const:
+ dq 2
+ db 32, 0
+compile._#Var.standard_op#1#const#ptr:
+ dq compile._#Var.standard_op#1#const + 8
+compile._#Var.standard_op#2#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var.standard_op#2#const#ptr:
+ dq compile._#Var.standard_op#2#const + 8
+compile._#Var.standard_op#3#const:
+ dq 13
+ db 32, 59, 32, 40, 83, 84, 68, 95, 79, 80, 41, 10, 0
+compile._#Var.standard_op#3#const#ptr:
+ dq compile._#Var.standard_op#3#const + 8
+compile._#Var.add#1#wrap#0#if#0#wrap#0#if#0#const:
+ dq 12
+ db 79, 102, 102, 115, 101, 116, 32, 56, 32, 64, 10, 0
+compile._#Var.add#1#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var.add#1#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var.add#1#wrap#0#if#1#const:
+ dq 4
+ db 97, 100, 100, 0
+compile._#Var.add#1#wrap#0#if#1#const#ptr:
+ dq compile._#Var.add#1#wrap#0#if#1#const + 8
+compile._#Var.add#1#wrap#1#if#0#const:
+ dq 4
+ db 97, 100, 100, 0
+compile._#Var.add#1#wrap#1#if#0#const#ptr:
+ dq compile._#Var.add#1#wrap#1#if#0#const + 8
+compile._#Var.sub#1#wrap#0#if#1#const:
+ dq 4
+ db 115, 117, 98, 0
+compile._#Var.sub#1#wrap#0#if#1#const#ptr:
+ dq compile._#Var.sub#1#wrap#0#if#1#const + 8
+compile._#Var.sub#1#wrap#1#if#0#const:
+ dq 4
+ db 115, 117, 98, 0
+compile._#Var.sub#1#wrap#1#if#0#const#ptr:
+ dq compile._#Var.sub#1#wrap#1#if#0#const + 8
+compile._#Var.and#1#const:
+ dq 4
+ db 97, 110, 100, 0
+compile._#Var.and#1#const#ptr:
+ dq compile._#Var.and#1#const + 8
+compile._#Var.or#1#const:
+ dq 3
+ db 111, 114, 0
+compile._#Var.or#1#const#ptr:
+ dq compile._#Var.or#1#const + 8
+compile._#Var.xor#1#const:
+ dq 4
+ db 120, 111, 114, 0
+compile._#Var.xor#1#const#ptr:
+ dq compile._#Var.xor#1#const + 8
+compile._#Var.mul#1#wrap#0#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var.mul#1#wrap#0#if#0#const#ptr:
+ dq compile._#Var.mul#1#wrap#0#if#0#const + 8
+compile._#Var.mul#1#wrap#0#if#1#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var.mul#1#wrap#0#if#1#const#ptr:
+ dq compile._#Var.mul#1#wrap#0#if#1#const + 8
+compile._#Var.mul#1#wrap#0#if#2#const:
+ dq 10
+ db 32, 59, 32, 40, 77, 85, 76, 41, 10, 0
+compile._#Var.mul#1#wrap#0#if#2#const#ptr:
+ dq compile._#Var.mul#1#wrap#0#if#2#const + 8
+compile._#Var.mul#1#wrap#0#if#3#const:
+ dq 10
+ db 32, 32, 32, 32, 105, 109, 117, 108, 32, 0
+compile._#Var.mul#1#wrap#0#if#3#const#ptr:
+ dq compile._#Var.mul#1#wrap#0#if#3#const + 8
+compile._#Var.mul#1#wrap#0#if#4#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var.mul#1#wrap#0#if#4#const#ptr:
+ dq compile._#Var.mul#1#wrap#0#if#4#const + 8
+compile._#Var.mul#1#wrap#0#if#5#const:
+ dq 10
+ db 32, 59, 32, 40, 77, 85, 76, 41, 10, 0
+compile._#Var.mul#1#wrap#0#if#5#const#ptr:
+ dq compile._#Var.mul#1#wrap#0#if#5#const + 8
+compile._#Var.mul#1#wrap#0#if#6#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var.mul#1#wrap#0#if#6#const#ptr:
+ dq compile._#Var.mul#1#wrap#0#if#6#const + 8
+compile._#Var.mul#1#wrap#0#if#7#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var.mul#1#wrap#0#if#7#const#ptr:
+ dq compile._#Var.mul#1#wrap#0#if#7#const + 8
+compile._#Var.mul#1#wrap#0#if#8#const:
+ dq 10
+ db 32, 59, 32, 40, 77, 85, 76, 41, 10, 0
+compile._#Var.mul#1#wrap#0#if#8#const#ptr:
+ dq compile._#Var.mul#1#wrap#0#if#8#const + 8
+compile._#Var.mul#1#wrap#1#if#0#const:
+ dq 10
+ db 32, 32, 32, 32, 105, 109, 117, 108, 32, 0
+compile._#Var.mul#1#wrap#1#if#0#const#ptr:
+ dq compile._#Var.mul#1#wrap#1#if#0#const + 8
+compile._#Var.mul#1#wrap#1#if#1#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var.mul#1#wrap#1#if#1#const#ptr:
+ dq compile._#Var.mul#1#wrap#1#if#1#const + 8
+compile._#Var.mul#1#wrap#1#if#2#const:
+ dq 10
+ db 32, 59, 32, 40, 77, 85, 76, 41, 10, 0
+compile._#Var.mul#1#wrap#1#if#2#const#ptr:
+ dq compile._#Var.mul#1#wrap#1#if#2#const + 8
+compile._#Var._div#0#wrap#0#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 109, 111, 118, 32, 114, 99, 120, 44, 32, 0
+compile._#Var._div#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._div#0#wrap#0#if#0#const + 8
+compile._#Var._div#0#wrap#0#if#1#const:
+ dq 10
+ db 32, 59, 32, 40, 68, 73, 86, 41, 10, 0
+compile._#Var._div#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var._div#0#wrap#0#if#1#const + 8
+compile._#Var._div#1#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var._div#1#const#ptr:
+ dq compile._#Var._div#1#const + 8
+compile._#Var._div#2#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var._div#2#const#ptr:
+ dq compile._#Var._div#2#const + 8
+compile._#Var._div#3#const:
+ dq 10
+ db 32, 59, 32, 40, 68, 73, 86, 41, 10, 0
+compile._#Var._div#3#const#ptr:
+ dq compile._#Var._div#3#const + 8
+compile._#Var._div#4#wrap#0#if#0#wrap#0#if#0#const:
+ dq 18
+ db 32, 32, 32, 32, 109, 111, 118, 115, 120, 32, 97, 120, 44, 32, 97, 108, 10, 0
+compile._#Var._div#4#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._div#4#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var._div#4#wrap#0#if#0#wrap#1#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 99, 119, 100, 10, 0
+compile._#Var._div#4#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var._div#4#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Var._div#4#wrap#0#if#0#wrap#2#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 99, 100, 113, 10, 0
+compile._#Var._div#4#wrap#0#if#0#wrap#2#if#0#const#ptr:
+ dq compile._#Var._div#4#wrap#0#if#0#wrap#2#if#0#const + 8
+compile._#Var._div#4#wrap#0#if#0#wrap#3#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 99, 113, 111, 10, 0
+compile._#Var._div#4#wrap#0#if#0#wrap#3#if#0#const#ptr:
+ dq compile._#Var._div#4#wrap#0#if#0#wrap#3#if#0#const + 8
+compile._#Var._div#4#wrap#0#if#1#const:
+ dq 10
+ db 32, 32, 32, 32, 105, 100, 105, 118, 32, 0
+compile._#Var._div#4#wrap#0#if#1#const#ptr:
+ dq compile._#Var._div#4#wrap#0#if#1#const + 8
+compile._#Var._div#4#wrap#1#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 120, 111, 114, 32, 0
+compile._#Var._div#4#wrap#1#if#0#const#ptr:
+ dq compile._#Var._div#4#wrap#1#if#0#const + 8
+compile._#Var._div#4#wrap#1#if#1#wrap#0#if#0#const:
+ dq 8
+ db 97, 104, 44, 32, 97, 104, 10, 0
+compile._#Var._div#4#wrap#1#if#1#wrap#0#if#0#const#ptr:
+ dq compile._#Var._div#4#wrap#1#if#1#wrap#0#if#0#const + 8
+compile._#Var._div#4#wrap#1#if#1#wrap#1#if#0#const:
+ dq 8
+ db 100, 120, 44, 32, 100, 120, 10, 0
+compile._#Var._div#4#wrap#1#if#1#wrap#1#if#0#const#ptr:
+ dq compile._#Var._div#4#wrap#1#if#1#wrap#1#if#0#const + 8
+compile._#Var._div#4#wrap#1#if#1#wrap#2#if#0#const:
+ dq 10
+ db 101, 100, 120, 44, 32, 101, 100, 120, 10, 0
+compile._#Var._div#4#wrap#1#if#1#wrap#2#if#0#const#ptr:
+ dq compile._#Var._div#4#wrap#1#if#1#wrap#2#if#0#const + 8
+compile._#Var._div#4#wrap#1#if#1#wrap#3#if#0#const:
+ dq 10
+ db 114, 100, 120, 44, 32, 114, 100, 120, 10, 0
+compile._#Var._div#4#wrap#1#if#1#wrap#3#if#0#const#ptr:
+ dq compile._#Var._div#4#wrap#1#if#1#wrap#3#if#0#const + 8
+compile._#Var._div#4#wrap#1#if#2#const:
+ dq 9
+ db 32, 32, 32, 32, 100, 105, 118, 32, 0
+compile._#Var._div#4#wrap#1#if#2#const#ptr:
+ dq compile._#Var._div#4#wrap#1#if#2#const + 8
+compile._#Var._div#5#const:
+ dq 2
+ db 10, 0
+compile._#Var._div#5#const#ptr:
+ dq compile._#Var._div#5#const + 8
+compile._#Var._div#6#wrap#0#if#1#const:
+ dq 3
+ db 97, 104, 0
+compile._#Var._div#6#wrap#0#if#1#const#ptr:
+ dq compile._#Var._div#6#wrap#0#if#1#const + 8
+compile._#Var._div#7#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var._div#7#const#ptr:
+ dq compile._#Var._div#7#const + 8
+compile._#Var._div#8#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var._div#8#const#ptr:
+ dq compile._#Var._div#8#const + 8
+compile._#Var._div#9#const:
+ dq 10
+ db 32, 59, 32, 40, 68, 73, 86, 41, 10, 0
+compile._#Var._div#9#const#ptr:
+ dq compile._#Var._div#9#const + 8
+compile._#Var._unary#0#const:
+ dq 5
+ db 32, 32, 32, 32, 0
+compile._#Var._unary#0#const#ptr:
+ dq compile._#Var._unary#0#const + 8
+compile._#Var._unary#1#const:
+ dq 2
+ db 32, 0
+compile._#Var._unary#1#const#ptr:
+ dq compile._#Var._unary#1#const + 8
+compile._#Var._unary#2#wrap#0#if#0#wrap#0#if#0#const:
+ dq 6
+ db 98, 121, 116, 101, 32, 0
+compile._#Var._unary#2#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._unary#2#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var._unary#2#wrap#0#if#0#wrap#1#if#0#const:
+ dq 6
+ db 119, 111, 114, 100, 32, 0
+compile._#Var._unary#2#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var._unary#2#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Var._unary#2#wrap#0#if#0#wrap#2#if#0#const:
+ dq 7
+ db 100, 119, 111, 114, 100, 32, 0
+compile._#Var._unary#2#wrap#0#if#0#wrap#2#if#0#const#ptr:
+ dq compile._#Var._unary#2#wrap#0#if#0#wrap#2#if#0#const + 8
+compile._#Var._unary#2#wrap#0#if#0#wrap#3#if#0#const:
+ dq 7
+ db 113, 119, 111, 114, 100, 32, 0
+compile._#Var._unary#2#wrap#0#if#0#wrap#3#if#0#const#ptr:
+ dq compile._#Var._unary#2#wrap#0#if#0#wrap#3#if#0#const + 8
+compile._#Var._unary#3#const:
+ dq 12
+ db 32, 59, 32, 40, 85, 78, 65, 82, 89, 41, 10, 0
+compile._#Var._unary#3#const#ptr:
+ dq compile._#Var._unary#3#const + 8
+compile._#Var.not#1#const:
+ dq 4
+ db 110, 111, 116, 0
+compile._#Var.not#1#const#ptr:
+ dq compile._#Var.not#1#const + 8
+compile._#Var.neg#1#const:
+ dq 4
+ db 110, 101, 103, 0
+compile._#Var.neg#1#const#ptr:
+ dq compile._#Var.neg#1#const + 8
+compile._#Var.inc#1#wrap#0#if#1#const:
+ dq 4
+ db 97, 100, 100, 0
+compile._#Var.inc#1#wrap#0#if#1#const#ptr:
+ dq compile._#Var.inc#1#wrap#0#if#1#const + 8
+compile._#Var.inc#1#wrap#1#if#0#const:
+ dq 4
+ db 105, 110, 99, 0
+compile._#Var.inc#1#wrap#1#if#0#const#ptr:
+ dq compile._#Var.inc#1#wrap#1#if#0#const + 8
+compile._#Var.dec#1#wrap#0#if#1#const:
+ dq 4
+ db 115, 117, 98, 0
+compile._#Var.dec#1#wrap#0#if#1#const#ptr:
+ dq compile._#Var.dec#1#wrap#0#if#1#const + 8
+compile._#Var.dec#1#wrap#1#if#0#const:
+ dq 4
+ db 100, 101, 99, 0
+compile._#Var.dec#1#wrap#1#if#0#const#ptr:
+ dq compile._#Var.dec#1#wrap#1#if#0#const + 8
+compile._#Var.test#0#const:
+ dq 9
+ db 32, 32, 32, 32, 99, 109, 112, 32, 0
+compile._#Var.test#0#const#ptr:
+ dq compile._#Var.test#0#const + 8
+compile._#Var.test#1#wrap#0#if#0#wrap#0#if#0#const:
+ dq 6
+ db 98, 121, 116, 101, 32, 0
+compile._#Var.test#1#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var.test#1#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var.test#1#wrap#0#if#0#wrap#1#if#0#const:
+ dq 6
+ db 119, 111, 114, 100, 32, 0
+compile._#Var.test#1#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var.test#1#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Var.test#1#wrap#0#if#0#wrap#2#if#0#const:
+ dq 7
+ db 100, 119, 111, 114, 100, 32, 0
+compile._#Var.test#1#wrap#0#if#0#wrap#2#if#0#const#ptr:
+ dq compile._#Var.test#1#wrap#0#if#0#wrap#2#if#0#const + 8
+compile._#Var.test#1#wrap#0#if#0#wrap#3#if#0#const:
+ dq 7
+ db 113, 119, 111, 114, 100, 32, 0
+compile._#Var.test#1#wrap#0#if#0#wrap#3#if#0#const#ptr:
+ dq compile._#Var.test#1#wrap#0#if#0#wrap#3#if#0#const + 8
+compile._#Var.test#2#const:
+ dq 5
+ db 44, 32, 48, 10, 0
+compile._#Var.test#2#const#ptr:
+ dq compile._#Var.test#2#const + 8
+compile._#Var.cmov#0#const:
+ dq 9
+ db 32, 32, 32, 32, 99, 109, 112, 32, 0
+compile._#Var.cmov#0#const#ptr:
+ dq compile._#Var.cmov#0#const + 8
+compile._#Var.cmov#1#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var.cmov#1#const#ptr:
+ dq compile._#Var.cmov#1#const + 8
+compile._#Var.cmov#2#const:
+ dq 2
+ db 10, 0
+compile._#Var.cmov#2#const#ptr:
+ dq compile._#Var.cmov#2#const + 8
+compile._#Var.cmov#3#const:
+ dq 15
+ db 32, 32, 32, 32, 109, 111, 118, 32, 97, 120, 44, 32, 48, 10, 0
+compile._#Var.cmov#3#const#ptr:
+ dq compile._#Var.cmov#3#const + 8
+compile._#Var.cmov#4#const:
+ dq 15
+ db 32, 32, 32, 32, 109, 111, 118, 32, 99, 120, 44, 32, 49, 10, 0
+compile._#Var.cmov#4#const#ptr:
+ dq compile._#Var.cmov#4#const + 8
+compile._#Var.cmov#5#const:
+ dq 9
+ db 32, 32, 32, 32, 99, 109, 111, 118, 0
+compile._#Var.cmov#5#const#ptr:
+ dq compile._#Var.cmov#5#const + 8
+compile._#Var.cmov#6#const:
+ dq 23
+ db 32, 97, 120, 44, 32, 99, 120, 32, 59, 32, 67, 111, 109, 112, 97, 114, 101, 32, 115, 101, 116, 10, 0
+compile._#Var.cmov#6#const#ptr:
+ dq compile._#Var.cmov#6#const + 8
+compile._#Var.cmov#7#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var.cmov#7#const#ptr:
+ dq compile._#Var.cmov#7#const + 8
+compile._#Var.cmov#8#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var.cmov#8#const#ptr:
+ dq compile._#Var.cmov#8#const + 8
+compile._#Var.cmov#9#const:
+ dq 22
+ db 32, 59, 32, 77, 111, 118, 32, 97, 102, 116, 101, 114, 32, 99, 111, 109, 112, 97, 114, 101, 10, 0
+compile._#Var.cmov#9#const#ptr:
+ dq compile._#Var.cmov#9#const + 8
+compile._#Var.cset#0#const:
+ dq 15
+ db 32, 32, 32, 32, 109, 111, 118, 32, 97, 120, 44, 32, 48, 10, 0
+compile._#Var.cset#0#const#ptr:
+ dq compile._#Var.cset#0#const + 8
+compile._#Var.cset#1#const:
+ dq 15
+ db 32, 32, 32, 32, 109, 111, 118, 32, 99, 120, 44, 32, 49, 10, 0
+compile._#Var.cset#1#const#ptr:
+ dq compile._#Var.cset#1#const + 8
+compile._#Var.cset#2#const:
+ dq 9
+ db 32, 32, 32, 32, 99, 109, 111, 118, 0
+compile._#Var.cset#2#const#ptr:
+ dq compile._#Var.cset#2#const + 8
+compile._#Var.cset#3#const:
+ dq 23
+ db 32, 97, 120, 44, 32, 99, 120, 32, 59, 32, 67, 111, 109, 112, 97, 114, 101, 32, 115, 101, 116, 10, 0
+compile._#Var.cset#3#const#ptr:
+ dq compile._#Var.cset#3#const + 8
+compile._#Var.cset#4#const:
+ dq 9
+ db 32, 32, 32, 32, 109, 111, 118, 32, 0
+compile._#Var.cset#4#const#ptr:
+ dq compile._#Var.cset#4#const + 8
+compile._#Var.cset#5#const:
+ dq 3
+ db 44, 32, 0
+compile._#Var.cset#5#const#ptr:
+ dq compile._#Var.cset#5#const + 8
+compile._#Var.cset#6#const:
+ dq 22
+ db 32, 59, 32, 77, 111, 118, 32, 97, 102, 116, 101, 114, 32, 99, 111, 109, 112, 97, 114, 101, 10, 0
+compile._#Var.cset#6#const#ptr:
+ dq compile._#Var.cset#6#const + 8
+compile._#Var.member#0#wrap#0#if#0#const:
+ dq 41
+ db 69, 82, 82, 79, 82, 58, 32, 65, 116, 116, 101, 109, 112, 116, 101, 100, 32, 116, 111, 32, 103, 101, 116, 32, 97, 32, 109, 101, 109, 98, 101, 114, 32, 110, 97, 109, 101, 100, 32, 34, 0
+compile._#Var.member#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var.member#0#wrap#0#if#0#const + 8
+compile._#Var.member#0#wrap#0#if#1#const:
+ dq 26
+ db 34, 32, 102, 114, 111, 109, 32, 97, 32, 112, 114, 105, 109, 105, 116, 105, 118, 101, 32, 116, 121, 112, 101, 32, 34, 0
+compile._#Var.member#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var.member#0#wrap#0#if#1#const + 8
+compile._#Var.member#0#wrap#0#if#2#const:
+ dq 3
+ db 34, 10, 0
+compile._#Var.member#0#wrap#0#if#2#const#ptr:
+ dq compile._#Var.member#0#wrap#0#if#2#const + 8
+compile._#Var.member#0#wrap#0#if#3#const:
+ dq 96
+ db 32, 32, 32, 32, 32, 32, 32, 40, 73, 102, 32, 116, 104, 101, 32, 112, 114, 101, 118, 105, 111, 117, 115, 32, 116, 121, 112, 101, 32, 119, 97, 115, 32, 105, 110, 32, 102, 97, 99, 116, 32, 97, 32, 115, 116, 114, 117, 99, 116, 117, 114, 101, 32, 116, 104, 101, 110, 32, 116, 104, 101, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 119, 97, 115, 32, 112, 114, 111, 98, 97, 98, 108, 121, 32, 97, 32, 112, 111, 105, 110, 116, 101, 114, 41, 10, 0
+compile._#Var.member#0#wrap#0#if#3#const#ptr:
+ dq compile._#Var.member#0#wrap#0#if#3#const + 8
+compile._#Var.member#1#wrap#0#if#0#const:
+ dq 16
+ db 69, 82, 82, 79, 82, 58, 32, 109, 101, 109, 98, 101, 114, 32, 34, 0
+compile._#Var.member#1#wrap#0#if#0#const#ptr:
+ dq compile._#Var.member#1#wrap#0#if#0#const + 8
+compile._#Var.member#1#wrap#0#if#1#const:
+ dq 24
+ db 34, 32, 110, 111, 116, 32, 102, 111, 117, 110, 100, 32, 105, 110, 32, 115, 116, 114, 117, 99, 116, 32, 34, 0
+compile._#Var.member#1#wrap#0#if#1#const#ptr:
+ dq compile._#Var.member#1#wrap#0#if#1#const + 8
+compile._#Var.member#1#wrap#0#if#2#const:
+ dq 2
+ db 10, 0
+compile._#Var.member#1#wrap#0#if#2#const#ptr:
+ dq compile._#Var.member#1#wrap#0#if#2#const + 8
+compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 115, 117, 98, 32, 114, 115, 105, 44, 32, 0
+compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 97, 100, 100, 32, 114, 115, 105, 44, 32, 0
+compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Var.member#2#wrap#0#if#0#wrap#0#if#1#const:
+ dq 44
+ db 32, 59, 32, 65, 100, 100, 32, 111, 102, 102, 115, 101, 116, 32, 119, 104, 101, 110, 32, 103, 101, 116, 116, 105, 110, 103, 32, 109, 101, 109, 98, 101, 114, 32, 40, 77, 69, 77, 66, 69, 82, 41, 10, 0
+compile._#Var.member#2#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Var.member#2#wrap#0#if#0#wrap#0#if#1#const + 8
+compile._#Var._len#0#wrap#0#if#0#const:
+ dq 17
+ db 84, 79, 68, 79, 58, 32, 97, 114, 114, 97, 121, 32, 108, 101, 110, 10, 0
+compile._#Var._len#0#wrap#0#if#0#const#ptr:
+ dq compile._#Var._len#0#wrap#0#if#0#const + 8
+compile._#Var._print#0#const:
+ dq 9
+ db 123, 32, 86, 97, 114, 32, 58, 32, 0
+compile._#Var._print#0#const#ptr:
+ dq compile._#Var._print#0#const + 8
+compile._#Var._print#1#const:
+ dq 2
+ db 10, 0
+compile._#Var._print#1#const#ptr:
+ dq compile._#Var._print#1#const + 8
+compile._#Var._print#2#const:
+ dq 7
+ db 116, 121, 112, 101, 58, 32, 0
+compile._#Var._print#2#const#ptr:
+ dq compile._#Var._print#2#const + 8
+compile._#Var._print#3#wrap#1#if#0#const:
+ dq 6
+ db 40, 110, 105, 108, 41, 0
+compile._#Var._print#3#wrap#1#if#0#const#ptr:
+ dq compile._#Var._print#3#wrap#1#if#0#const + 8
+compile._#Var._print#4#const:
+ dq 2
+ db 10, 0
+compile._#Var._print#4#const#ptr:
+ dq compile._#Var._print#4#const + 8
+compile._#Var._print#5#const:
+ dq 7
+ db 112, 116, 114, 99, 58, 32, 0
+compile._#Var._print#5#const#ptr:
+ dq compile._#Var._print#5#const + 8
+compile._#Var._print#6#loop#0#const:
+ dq 4
+ db 37, 100, 32, 0
+compile._#Var._print#6#loop#0#const#ptr:
+ dq compile._#Var._print#6#loop#0#const + 8
+compile._#Var._print#7#wrap#0#if#0#const:
+ dq 6
+ db 40, 110, 105, 108, 41, 0
+compile._#Var._print#7#wrap#0#if#0#const#ptr:
+ dq compile._#Var._print#7#wrap#0#if#0#const + 8
+compile._#Var._print#8#const:
+ dq 2
+ db 10, 0
+compile._#Var._print#8#const#ptr:
+ dq compile._#Var._print#8#const + 8
+compile._#Var._print#9#const:
+ dq 9
+ db 108, 111, 99, 58, 32, 37, 100, 10, 0
+compile._#Var._print#9#const#ptr:
+ dq compile._#Var._print#9#const + 8
+compile._#Var._print#10#const:
+ dq 9
+ db 111, 102, 102, 58, 32, 37, 100, 10, 0
+compile._#Var._print#10#const#ptr:
+ dq compile._#Var._print#10#const + 8
+compile._#Var._print#11#const:
+ dq 3
+ db 125, 10, 0
+compile._#Var._print#11#const#ptr:
+ dq compile._#Var._print#11#const + 8
+compile._#Function._resolve_dlist#0#wrap#0#if#0#const:
+ dq 5
+ db 115, 101, 108, 102, 0
+compile._#Function._resolve_dlist#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._resolve_dlist#0#wrap#0#if#0#const + 8
+compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#0#wrap#0#if#0#const:
+ dq 66
+ db 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 100, 101, 99, 108, 97, 114, 101, 100, 32, 105, 110, 32, 112, 97, 114, 97, 109, 101, 116, 101, 114, 32, 108, 105, 115, 116, 32, 98, 101, 102, 111, 114, 101, 32, 97, 110, 121, 32, 116, 121, 112, 101, 32, 119, 97, 115, 32, 102, 111, 117, 110, 100, 33, 10, 0
+compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#0#wrap#0#if#0#const + 8
+compile._#Function._resolve_tlist#0#const:
+ dq 11
+ db 35, 32, 79, 85, 84, 80, 85, 84, 32, 35, 0
+compile._#Function._resolve_tlist#0#const#ptr:
+ dq compile._#Function._resolve_tlist#0#const + 8
+compile._#Function._build_func#0#wrap#0#if#0#const:
+ dq 8
+ db 103, 108, 111, 98, 97, 108, 32, 0
+compile._#Function._build_func#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._build_func#0#wrap#0#if#0#const + 8
+compile._#Function._build_func#0#wrap#0#if#1#const:
+ dq 2
+ db 10, 0
+compile._#Function._build_func#0#wrap#0#if#1#const#ptr:
+ dq compile._#Function._build_func#0#wrap#0#if#1#const + 8
+compile._#Function._build_func#1#const:
+ dq 14
+ db 32, 32, 32, 32, 112, 117, 115, 104, 32, 114, 98, 112, 10, 0
+compile._#Function._build_func#1#const#ptr:
+ dq compile._#Function._build_func#1#const + 8
+compile._#Function._build_func#2#const:
+ dq 24
+ db 32, 32, 32, 32, 108, 101, 97, 32, 114, 98, 112, 44, 32, 91, 114, 115, 112, 32, 43, 32, 56, 93, 10, 0
+compile._#Function._build_func#2#const#ptr:
+ dq compile._#Function._build_func#2#const + 8
+compile._#Function._build_func#3#const:
+ dq 14
+ db 32, 32, 32, 32, 112, 117, 115, 104, 32, 114, 49, 48, 10, 0
+compile._#Function._build_func#3#const#ptr:
+ dq compile._#Function._build_func#3#const + 8
+compile._#Function._build_func#4#const:
+ dq 14
+ db 32, 32, 32, 32, 112, 117, 115, 104, 32, 114, 49, 49, 10, 0
+compile._#Function._build_func#4#const#ptr:
+ dq compile._#Function._build_func#4#const + 8
+compile._#Function._build_func#5#const:
+ dq 14
+ db 32, 32, 32, 32, 112, 117, 115, 104, 32, 114, 49, 50, 10, 0
+compile._#Function._build_func#5#const#ptr:
+ dq compile._#Function._build_func#5#const + 8
+compile._#Function._build_func#6#const:
+ dq 14
+ db 32, 32, 32, 32, 112, 117, 115, 104, 32, 114, 49, 51, 10, 0
+compile._#Function._build_func#6#const#ptr:
+ dq compile._#Function._build_func#6#const + 8
+compile._#Function._build_func#7#const:
+ dq 14
+ db 32, 32, 32, 32, 112, 117, 115, 104, 32, 114, 49, 52, 10, 0
+compile._#Function._build_func#7#const#ptr:
+ dq compile._#Function._build_func#7#const + 8
+compile._#Function._build_func#8#const:
+ dq 28
+ db 32, 32, 32, 32, 112, 117, 115, 104, 32, 114, 49, 53, 32, 59, 32, 115, 99, 111, 112, 101, 32, 105, 110, 105, 116, 10, 10, 0
+compile._#Function._build_func#8#const#ptr:
+ dq compile._#Function._build_func#8#const + 8
+compile._#Function._end_func#0#const:
+ dq 2
+ db 10, 0
+compile._#Function._end_func#0#const#ptr:
+ dq compile._#Function._end_func#0#const + 8
+compile._#Function._end_func#1#const:
+ dq 25
+ db 32, 32, 32, 32, 108, 101, 97, 32, 114, 115, 112, 44, 32, 91, 114, 98, 112, 32, 45, 32, 53, 54, 93, 10, 0
+compile._#Function._end_func#1#const#ptr:
+ dq compile._#Function._end_func#1#const + 8
+compile._#Function._end_func#2#const:
+ dq 13
+ db 32, 32, 32, 32, 112, 111, 112, 32, 114, 49, 53, 10, 0
+compile._#Function._end_func#2#const#ptr:
+ dq compile._#Function._end_func#2#const + 8
+compile._#Function._end_func#3#const:
+ dq 13
+ db 32, 32, 32, 32, 112, 111, 112, 32, 114, 49, 52, 10, 0
+compile._#Function._end_func#3#const#ptr:
+ dq compile._#Function._end_func#3#const + 8
+compile._#Function._end_func#4#const:
+ dq 13
+ db 32, 32, 32, 32, 112, 111, 112, 32, 114, 49, 51, 10, 0
+compile._#Function._end_func#4#const#ptr:
+ dq compile._#Function._end_func#4#const + 8
+compile._#Function._end_func#5#const:
+ dq 13
+ db 32, 32, 32, 32, 112, 111, 112, 32, 114, 49, 50, 10, 0
+compile._#Function._end_func#5#const#ptr:
+ dq compile._#Function._end_func#5#const + 8
+compile._#Function._end_func#6#const:
+ dq 13
+ db 32, 32, 32, 32, 112, 111, 112, 32, 114, 49, 49, 10, 0
+compile._#Function._end_func#6#const#ptr:
+ dq compile._#Function._end_func#6#const + 8
+compile._#Function._end_func#7#const:
+ dq 13
+ db 32, 32, 32, 32, 112, 111, 112, 32, 114, 49, 48, 10, 0
+compile._#Function._end_func#7#const#ptr:
+ dq compile._#Function._end_func#7#const + 8
+compile._#Function._end_func#8#const:
+ dq 13
+ db 32, 32, 32, 32, 112, 111, 112, 32, 114, 98, 112, 10, 0
+compile._#Function._end_func#8#const#ptr:
+ dq compile._#Function._end_func#8#const + 8
+compile._#Function._end_func#9#const:
+ dq 23
+ db 32, 32, 32, 32, 114, 101, 116, 32, 59, 32, 115, 99, 111, 112, 101, 32, 101, 110, 100, 10, 10, 10, 0
+compile._#Function._end_func#9#const#ptr:
+ dq compile._#Function._end_func#9#const + 8
+compile._#Function._compile_statements#0#loop#0#wrap#1#if#0#const:
+ dq 5
+ db 32, 32, 32, 32, 0
+compile._#Function._compile_statements#0#loop#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_statements#0#loop#0#wrap#1#if#0#const + 8
+compile._#Function._compile_statements#0#loop#0#wrap#1#if#1#const:
+ dq 21
+ db 32, 59, 32, 85, 115, 101, 114, 32, 100, 101, 102, 105, 110, 101, 100, 32, 97, 115, 109, 10, 0
+compile._#Function._compile_statements#0#loop#0#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_statements#0#loop#0#wrap#1#if#1#const + 8
+compile._#Function._compile_cf_pre#0#loop#0#wrap#1#if#0#const:
+ dq 5
+ db 32, 32, 32, 32, 0
+compile._#Function._compile_cf_pre#0#loop#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_cf_pre#0#loop#0#wrap#1#if#0#const + 8
+compile._#Function._compile_cf_pre#0#loop#0#wrap#1#if#1#const:
+ dq 21
+ db 32, 59, 32, 85, 115, 101, 114, 32, 100, 101, 102, 105, 110, 101, 100, 32, 97, 115, 109, 10, 0
+compile._#Function._compile_cf_pre#0#loop#0#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_cf_pre#0#loop#0#wrap#1#if#1#const + 8
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const:
+ dq 9
+ db 32, 32, 32, 32, 106, 109, 112, 32, 0
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const + 8
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const#ptr:
+ dq compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const + 8
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const:
+ dq 8
+ db 32, 32, 32, 32, 106, 101, 32, 0
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const + 8
+compile._#Function._compile_cf_post#0#loop#0#wrap#1#if#0#const:
+ dq 5
+ db 32, 32, 32, 32, 0
+compile._#Function._compile_cf_post#0#loop#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_cf_post#0#loop#0#wrap#1#if#0#const + 8
+compile._#Function._compile_cf_post#0#loop#0#wrap#1#if#1#const:
+ dq 21
+ db 32, 59, 32, 85, 115, 101, 114, 32, 100, 101, 102, 105, 110, 101, 100, 32, 97, 115, 109, 10, 0
+compile._#Function._compile_cf_post#0#loop#0#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_cf_post#0#loop#0#wrap#1#if#1#const + 8
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const:
+ dq 9
+ db 32, 32, 32, 32, 106, 109, 112, 32, 0
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const + 8
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const#ptr:
+ dq compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const + 8
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const:
+ dq 8
+ db 32, 32, 32, 32, 106, 101, 32, 0
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const + 8
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const:
+ dq 9
+ db 32, 32, 32, 32, 106, 109, 112, 32, 0
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const + 8
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const#ptr:
+ dq compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const + 8
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const:
+ dq 8
+ db 32, 32, 32, 32, 106, 101, 32, 0
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const + 8
+compile._#Function._compile_if_if#1#const:
+ dq 3
+ db 105, 102, 0
+compile._#Function._compile_if_if#1#const#ptr:
+ dq compile._#Function._compile_if_if#1#const + 8
+compile._#Function._compile_if_if#3#const:
+ dq 9
+ db 32, 32, 32, 32, 106, 109, 112, 32, 0
+compile._#Function._compile_if_if#3#const#ptr:
+ dq compile._#Function._compile_if_if#3#const + 8
+compile._#Function._compile_if_if#4#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_if_if#4#const#ptr:
+ dq compile._#Function._compile_if_if#4#const + 8
+compile._#Function._compile_if#0#const:
+ dq 5
+ db 119, 114, 97, 112, 0
+compile._#Function._compile_if#0#const#ptr:
+ dq compile._#Function._compile_if#0#const + 8
+compile._#Function._compile_loop#0#const:
+ dq 5
+ db 108, 111, 111, 112, 0
+compile._#Function._compile_loop#0#const#ptr:
+ dq compile._#Function._compile_loop#0#const + 8
+compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const:
+ dq 2
+ db 91, 0
+compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Function._compile_loop#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 91, 0
+compile._#Function._compile_loop#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_loop#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#1#const:
+ dq 9
+ db 32, 32, 32, 32, 106, 109, 112, 32, 0
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#1#const + 8
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#2#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#2#const#ptr:
+ dq compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#2#const + 8
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#1#if#0#const:
+ dq 8
+ db 32, 32, 32, 32, 106, 101, 32, 0
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_loop#6#wrap#1#if#0#wrap#1#if#0#const + 8
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#1#if#1#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_loop#6#wrap#1#if#0#wrap#1#if#1#const + 8
+compile._#Function._compile_loop#7#const:
+ dq 9
+ db 32, 32, 32, 32, 106, 109, 112, 32, 0
+compile._#Function._compile_loop#7#const#ptr:
+ dq compile._#Function._compile_loop#7#const + 8
+compile._#Function._compile_loop#8#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_loop#8#const#ptr:
+ dq compile._#Function._compile_loop#8#const + 8
+compile._#Function._check_return#2#const:
+ dq 62
+ db 69, 82, 82, 79, 82, 58, 32, 78, 117, 109, 98, 101, 114, 32, 111, 102, 32, 114, 101, 116, 117, 114, 110, 32, 118, 97, 108, 117, 101, 115, 32, 40, 37, 100, 41, 32, 100, 111, 101, 115, 32, 110, 111, 116, 32, 109, 97, 116, 99, 104, 32, 101, 120, 112, 101, 99, 116, 101, 100, 32, 40, 0
+compile._#Function._check_return#2#const#ptr:
+ dq compile._#Function._check_return#2#const + 8
+compile._#Function._check_return#3#const:
+ dq 5
+ db 37, 100, 41, 10, 0
+compile._#Function._check_return#3#const#ptr:
+ dq compile._#Function._check_return#3#const + 8
+compile._#Function._check_return#4#const:
+ dq 53
+ db 69, 82, 82, 79, 82, 58, 32, 84, 111, 32, 114, 101, 116, 117, 114, 110, 32, 109, 117, 108, 116, 105, 112, 108, 101, 32, 118, 97, 108, 117, 101, 115, 32, 101, 110, 99, 108, 111, 115, 101, 32, 116, 104, 101, 109, 32, 105, 110, 32, 123, 125, 10, 0
+compile._#Function._check_return#4#const#ptr:
+ dq compile._#Function._check_return#4#const + 8
+compile._#Function._check_return#5#const:
+ dq 111
+ db 69, 82, 82, 79, 82, 58, 32, 84, 111, 32, 97, 100, 100, 32, 109, 111, 114, 101, 32, 114, 101, 116, 117, 114, 110, 32, 118, 97, 108, 117, 101, 115, 44, 32, 97, 100, 100, 32, 116, 104, 101, 109, 32, 40, 99, 111, 109, 109, 97, 32, 115, 101, 112, 97, 114, 97, 116, 101, 100, 41, 32, 98, 101, 116, 119, 101, 101, 110, 32, 91, 93, 32, 97, 116, 32, 116, 104, 101, 32, 101, 110, 100, 32, 111, 102, 32, 116, 104, 101, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 100, 101, 102, 105, 110, 105, 116, 105, 111, 110, 10, 0
+compile._#Function._check_return#5#const#ptr:
+ dq compile._#Function._check_return#5#const + 8
+compile._#Function._check_return#6#const:
+ dq 28
+ db 69, 82, 82, 79, 82, 58, 32, 79, 70, 70, 69, 78, 68, 73, 78, 71, 32, 70, 85, 78, 67, 84, 73, 79, 78, 58, 10, 0
+compile._#Function._check_return#6#const#ptr:
+ dq compile._#Function._check_return#6#const + 8
+compile._#Function._compile_return_vals#2#const:
+ dq 24
+ db 10, 32, 32, 32, 32, 59, 32, 83, 84, 65, 82, 84, 73, 78, 71, 32, 82, 69, 84, 85, 82, 78, 10, 0
+compile._#Function._compile_return_vals#2#const#ptr:
+ dq compile._#Function._compile_return_vals#2#const + 8
+compile._#Function._return#2#const:
+ dq 9
+ db 32, 32, 32, 32, 106, 109, 112, 32, 0
+compile._#Function._return#2#const#ptr:
+ dq compile._#Function._return#2#const + 8
+compile._#Function._return#3#const:
+ dq 2
+ db 10, 0
+compile._#Function._return#3#const#ptr:
+ dq compile._#Function._return#3#const + 8
+compile._#Function._compile_flow_control#0#wrap#0#if#0#const:
+ dq 7
+ db 114, 101, 116, 117, 114, 110, 0
+compile._#Function._compile_flow_control#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#0#if#0#const + 8
+compile._#Function._compile_flow_control#0#wrap#1#if#0#const:
+ dq 9
+ db 99, 111, 110, 116, 105, 110, 117, 101, 0
+compile._#Function._compile_flow_control#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#1#if#0#const + 8
+compile._#Function._compile_flow_control#0#wrap#1#if#2#const:
+ dq 9
+ db 32, 32, 32, 32, 106, 109, 112, 32, 0
+compile._#Function._compile_flow_control#0#wrap#1#if#2#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#1#if#2#const + 8
+compile._#Function._compile_flow_control#0#wrap#1#if#3#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_flow_control#0#wrap#1#if#3#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#1#if#3#const + 8
+compile._#Function._compile_flow_control#0#wrap#2#if#0#const:
+ dq 6
+ db 98, 114, 101, 97, 107, 0
+compile._#Function._compile_flow_control#0#wrap#2#if#0#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#2#if#0#const + 8
+compile._#Function._compile_flow_control#0#wrap#2#if#2#const:
+ dq 9
+ db 32, 32, 32, 32, 106, 109, 112, 32, 0
+compile._#Function._compile_flow_control#0#wrap#2#if#2#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#2#if#2#const + 8
+compile._#Function._compile_flow_control#0#wrap#2#if#3#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_flow_control#0#wrap#2#if#3#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#2#if#3#const + 8
+compile._#Function._compile_flow_control#0#wrap#3#if#0#const:
+ dq 87
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 84, 104, 101, 32, 102, 111, 108, 108, 111, 119, 105, 110, 103, 32, 119, 97, 115, 32, 100, 101, 116, 101, 99, 116, 101, 100, 32, 97, 115, 32, 102, 108, 111, 119, 32, 99, 111, 110, 116, 114, 111, 108, 44, 32, 98, 117, 116, 32, 119, 101, 32, 100, 111, 32, 110, 111, 116, 32, 104, 97, 110, 100, 108, 101, 32, 105, 116, 58, 32, 39, 0
+compile._#Function._compile_flow_control#0#wrap#3#if#0#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#3#if#0#const + 8
+compile._#Function._compile_flow_control#0#wrap#3#if#1#const:
+ dq 3
+ db 39, 10, 0
+compile._#Function._compile_flow_control#0#wrap#3#if#1#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#3#if#1#const + 8
+compile._#Function._compile_flow_control#0#wrap#3#if#2#const:
+ dq 89
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 116, 104, 105, 115, 32, 105, 115, 32, 108, 105, 107, 101, 108, 121, 32, 97, 32, 98, 117, 103, 32, 119, 105, 116, 104, 32, 116, 104, 101, 32, 99, 111, 109, 112, 105, 108, 101, 114, 44, 32, 112, 108, 101, 97, 115, 101, 32, 114, 101, 112, 111, 114, 116, 32, 105, 116, 32, 97, 108, 111, 110, 103, 32, 119, 105, 116, 104, 32, 116, 104, 101, 10, 0
+compile._#Function._compile_flow_control#0#wrap#3#if#2#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#3#if#2#const + 8
+compile._#Function._compile_flow_control#0#wrap#3#if#3#const:
+ dq 52
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 99, 111, 100, 101, 32, 115, 110, 105, 112, 112, 105, 116, 32, 119, 104, 105, 99, 104, 32, 99, 97, 117, 115, 101, 100, 32, 116, 104, 101, 32, 98, 117, 103, 33, 10, 0
+compile._#Function._compile_flow_control#0#wrap#3#if#3#const#ptr:
+ dq compile._#Function._compile_flow_control#0#wrap#3#if#3#const + 8
+compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 26
+ db 70, 97, 105, 108, 101, 100, 32, 116, 111, 32, 102, 105, 110, 100, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 39, 0
+compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#0#if#1#const:
+ dq 3
+ db 39, 10, 0
+compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#0#if#1#const + 8
+compile._#Function._compile_call#0#wrap#1#if#0#const:
+ dq 5
+ db 118, 111, 105, 100, 0
+compile._#Function._compile_call#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_call#0#wrap#1#if#0#const + 8
+compile._#Function._compile_call#3#wrap#0#if#0#const:
+ dq 33
+ db 69, 82, 82, 79, 82, 58, 32, 70, 97, 105, 108, 101, 100, 32, 116, 111, 32, 99, 97, 108, 108, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 34, 0
+compile._#Function._compile_call#3#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_call#3#wrap#0#if#0#const + 8
+compile._#Function._compile_call#3#wrap#0#if#1#const:
+ dq 15
+ db 34, 32, 102, 114, 111, 109, 32, 115, 99, 111, 112, 101, 32, 34, 0
+compile._#Function._compile_call#3#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_call#3#wrap#0#if#1#const + 8
+compile._#Function._compile_call#3#wrap#0#if#2#const:
+ dq 3
+ db 34, 10, 0
+compile._#Function._compile_call#3#wrap#0#if#2#const#ptr:
+ dq compile._#Function._compile_call#3#wrap#0#if#2#const + 8
+compile._#Function._compile_call#3#wrap#0#if#3#const:
+ dq 77
+ db 32, 32, 32, 32, 32, 32, 32, 78, 117, 109, 98, 101, 114, 32, 111, 102, 32, 97, 114, 103, 117, 109, 101, 110, 116, 115, 32, 40, 37, 100, 41, 32, 100, 105, 100, 32, 110, 111, 116, 32, 109, 97, 116, 99, 104, 32, 110, 117, 109, 98, 101, 114, 32, 111, 102, 32, 112, 114, 111, 118, 105, 100, 101, 100, 32, 112, 97, 114, 97, 109, 101, 116, 101, 114, 115, 32, 0
+compile._#Function._compile_call#3#wrap#0#if#3#const#ptr:
+ dq compile._#Function._compile_call#3#wrap#0#if#3#const + 8
+compile._#Function._compile_call#3#wrap#0#if#4#const:
+ dq 6
+ db 40, 37, 100, 41, 10, 0
+compile._#Function._compile_call#3#wrap#0#if#4#const#ptr:
+ dq compile._#Function._compile_call#3#wrap#0#if#4#const + 8
+compile._#Function._compile_call#10#wrap#0#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 115, 117, 98, 32, 114, 115, 112, 44, 32, 0
+compile._#Function._compile_call#10#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_call#10#wrap#0#if#0#const + 8
+compile._#Function._compile_call#10#wrap#0#if#1#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_call#10#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_call#10#wrap#0#if#1#const + 8
+compile._#Function._compile_call#11#const:
+ dq 10
+ db 32, 32, 32, 32, 99, 97, 108, 108, 32, 0
+compile._#Function._compile_call#11#const#ptr:
+ dq compile._#Function._compile_call#11#const + 8
+compile._#Function._compile_call#12#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_call#12#const#ptr:
+ dq compile._#Function._compile_call#12#const + 8
+compile._#Function._compile_call#14#wrap#0#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 97, 100, 100, 32, 114, 115, 112, 44, 32, 0
+compile._#Function._compile_call#14#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_call#14#wrap#0#if#0#const + 8
+compile._#Function._compile_call#14#wrap#0#if#1#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_call#14#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_call#14#wrap#0#if#1#const + 8
+compile._#Function._compile_chain_r_post#0#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+compile._#Function._compile_chain_r_post#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_post#0#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r_post#0#wrap#0#if#1#const:
+ dq 52
+ db 84, 79, 68, 79, 58, 32, 116, 110, 115, 108, 99, 32, 100, 111, 101, 115, 32, 110, 111, 116, 32, 121, 101, 116, 32, 115, 117, 112, 112, 111, 114, 116, 32, 99, 97, 108, 108, 105, 110, 103, 32, 118, 97, 114, 105, 97, 98, 108, 101, 115, 10, 0
+compile._#Function._compile_chain_r_post#0#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_chain_r_post#0#wrap#0#if#1#const + 8
+compile._#Function._compile_chain_r_post#0#wrap#1#if#0#const:
+ dq 2
+ db 96, 0
+compile._#Function._compile_chain_r_post#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_post#0#wrap#1#if#0#const + 8
+compile._#Function._compile_chain_r_post#0#wrap#2#if#0#const:
+ dq 2
+ db 123, 0
+compile._#Function._compile_chain_r_post#0#wrap#2#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_post#0#wrap#2#if#0#const + 8
+compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#0#if#0#const:
+ dq 24
+ db 32, 32, 32, 32, 109, 111, 118, 32, 114, 100, 105, 44, 32, 114, 97, 120, 32, 59, 32, 105, 100, 120, 10, 0
+compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#1#if#0#const:
+ dq 24
+ db 32, 32, 32, 32, 109, 111, 118, 32, 114, 100, 105, 44, 32, 114, 115, 105, 32, 59, 32, 105, 100, 120, 10, 0
+compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#1#if#0#const + 8
+compile._#Function._compile_chain_r_post#0#wrap#3#if#0#const:
+ dq 3
+ db 43, 43, 0
+compile._#Function._compile_chain_r_post#0#wrap#3#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_post#0#wrap#3#if#0#const + 8
+compile._#Function._compile_chain_r_post#0#wrap#4#if#0#const:
+ dq 3
+ db 45, 45, 0
+compile._#Function._compile_chain_r_post#0#wrap#4#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_post#0#wrap#4#if#0#const + 8
+compile._#Function._compile_chain_r_base#0#wrap#0#if#0#const:
+ dq 95
+ db 84, 79, 68, 79, 58, 32, 116, 110, 115, 108, 99, 32, 100, 111, 101, 115, 32, 110, 111, 116, 32, 99, 117, 114, 114, 101, 110, 116, 108, 121, 32, 115, 117, 112, 112, 111, 114, 116, 32, 100, 111, 116, 45, 99, 104, 97, 105, 110, 115, 32, 119, 105, 116, 104, 32, 108, 105, 116, 101, 114, 97, 108, 115, 32, 111, 114, 32, 110, 111, 110, 45, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 115, 32, 97, 115, 32, 112, 114, 105, 109, 97, 114, 121, 10, 0
+compile._#Function._compile_chain_r_base#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_base#0#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r_base#0#wrap#0#if#1#const:
+ dq 95
+ db 32, 32, 32, 32, 32, 32, 119, 105, 108, 108, 32, 108, 111, 111, 107, 32, 105, 110, 116, 111, 32, 101, 105, 116, 104, 101, 114, 32, 105, 110, 116, 117, 105, 116, 105, 110, 103, 32, 116, 104, 101, 32, 116, 121, 112, 101, 32, 102, 114, 111, 109, 32, 99, 111, 110, 116, 101, 120, 116, 32, 111, 114, 32, 114, 101, 113, 117, 105, 114, 105, 110, 103, 32, 97, 32, 99, 97, 115, 116, 32, 105, 110, 32, 116, 104, 101, 32, 102, 117, 116, 117, 114, 101, 10, 0
+compile._#Function._compile_chain_r_base#0#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_chain_r_base#0#wrap#0#if#1#const + 8
+compile._#Function._compile_chain_r_base#0#wrap#0#if#2#const:
+ dq 29
+ db 32, 32, 32, 32, 32, 32, 79, 102, 102, 101, 110, 100, 105, 110, 103, 32, 116, 111, 107, 101, 110, 32, 119, 97, 115, 58, 32, 34, 0
+compile._#Function._compile_chain_r_base#0#wrap#0#if#2#const#ptr:
+ dq compile._#Function._compile_chain_r_base#0#wrap#0#if#2#const + 8
+compile._#Function._compile_chain_r_base#0#wrap#0#if#3#const:
+ dq 11
+ db 34, 32, 111, 102, 32, 116, 121, 112, 101, 32, 0
+compile._#Function._compile_chain_r_base#0#wrap#0#if#3#const#ptr:
+ dq compile._#Function._compile_chain_r_base#0#wrap#0#if#3#const + 8
+compile._#Function._compile_chain_r_base#0#wrap#0#if#4#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_chain_r_base#0#wrap#0#if#4#const#ptr:
+ dq compile._#Function._compile_chain_r_base#0#wrap#0#if#4#const + 8
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const:
+ dq 52
+ db 84, 79, 68, 79, 58, 32, 116, 110, 115, 108, 99, 32, 100, 111, 101, 115, 32, 110, 111, 116, 32, 121, 101, 116, 32, 115, 117, 112, 112, 111, 114, 116, 32, 99, 97, 108, 108, 105, 110, 103, 32, 118, 97, 114, 105, 97, 98, 108, 101, 115, 10, 0
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#0#const:
+ dq 55
+ db 69, 82, 82, 79, 82, 58, 32, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 102, 105, 110, 100, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 114, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 119, 105, 116, 104, 32, 110, 97, 109, 101, 32, 34, 0
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#1#const:
+ dq 13
+ db 34, 32, 105, 110, 32, 115, 99, 111, 112, 101, 32, 34, 0
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#1#const + 8
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#2#const:
+ dq 3
+ db 34, 10, 0
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#2#const#ptr:
+ dq compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#2#const + 8
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#0#const:
+ dq 33
+ db 69, 82, 82, 79, 82, 58, 32, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 102, 105, 110, 100, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 34, 0
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#1#const:
+ dq 13
+ db 34, 32, 105, 110, 32, 115, 99, 111, 112, 101, 32, 34, 0
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#1#const + 8
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#2#const:
+ dq 3
+ db 34, 10, 0
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#2#const#ptr:
+ dq compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#2#const + 8
+compile._#Function._compile_chain_r_base#3#loop#0#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+compile._#Function._compile_chain_r_base#3#loop#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r_base#3#loop#0#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r_base#3#loop#0#wrap#0#if#1#const:
+ dq 52
+ db 84, 79, 68, 79, 58, 32, 116, 110, 115, 108, 99, 32, 100, 111, 101, 115, 32, 110, 111, 116, 32, 121, 101, 116, 32, 115, 117, 112, 112, 111, 114, 116, 32, 99, 97, 108, 108, 105, 110, 103, 32, 118, 97, 114, 105, 97, 98, 108, 101, 115, 10, 0
+compile._#Function._compile_chain_r_base#3#loop#0#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_chain_r_base#3#loop#0#wrap#0#if#1#const + 8
+compile._#Function._compile_chain_r#1#loop#0#wrap#0#if#0#const:
+ dq 2
+ db 46, 0
+compile._#Function._compile_chain_r#1#loop#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#0#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r#1#loop#1#wrap#0#if#0#const:
+ dq 98
+ db 84, 79, 68, 79, 58, 32, 116, 110, 115, 108, 99, 32, 100, 111, 101, 115, 32, 110, 111, 116, 32, 99, 117, 114, 114, 101, 110, 116, 108, 121, 32, 115, 117, 112, 112, 111, 114, 116, 32, 100, 111, 116, 45, 99, 104, 97, 105, 110, 115, 32, 119, 105, 116, 104, 32, 108, 105, 116, 101, 114, 97, 108, 115, 32, 111, 114, 32, 110, 111, 110, 45, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 115, 32, 105, 110, 32, 116, 104, 101, 32, 109, 105, 100, 100, 108, 101, 10, 0
+compile._#Function._compile_chain_r#1#loop#1#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#1#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const:
+ dq 78
+ db 84, 79, 68, 79, 58, 32, 84, 78, 83, 76, 32, 100, 111, 101, 115, 110, 39, 116, 32, 99, 117, 114, 114, 101, 110, 116, 108, 121, 32, 104, 97, 118, 101, 32, 103, 111, 111, 100, 32, 115, 117, 112, 112, 111, 114, 116, 32, 102, 111, 114, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 99, 97, 108, 108, 105, 110, 103, 32, 98, 121, 32, 118, 97, 108, 117, 101, 10, 0
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#0#const:
+ dq 55
+ db 69, 82, 82, 79, 82, 58, 32, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 102, 105, 110, 100, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 114, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 119, 105, 116, 104, 32, 110, 97, 109, 101, 32, 34, 0
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#0#const + 8
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#1#const:
+ dq 13
+ db 34, 32, 105, 110, 32, 115, 99, 111, 112, 101, 32, 34, 0
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#1#const + 8
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#2#const:
+ dq 3
+ db 34, 10, 0
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#2#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#2#const + 8
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#0#const:
+ dq 52
+ db 69, 82, 82, 79, 82, 58, 32, 70, 97, 105, 108, 101, 100, 32, 116, 111, 32, 102, 105, 110, 100, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 40, 100, 111, 116, 32, 99, 104, 97, 105, 110, 32, 101, 110, 100, 115, 32, 105, 110, 32, 34, 0
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#1#const:
+ dq 13
+ db 34, 32, 105, 110, 32, 115, 99, 111, 112, 101, 32, 34, 0
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#1#const + 8
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#2#const:
+ dq 3
+ db 34, 10, 0
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#2#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#2#const + 8
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 40, 0
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Function._compile_bool_op#0#const:
+ dq 5
+ db 98, 111, 111, 108, 0
+compile._#Function._compile_bool_op#0#const#ptr:
+ dq compile._#Function._compile_bool_op#0#const + 8
+compile._#Function._compile_bool_op#1#const:
+ dq 5
+ db 98, 111, 111, 108, 0
+compile._#Function._compile_bool_op#1#const#ptr:
+ dq compile._#Function._compile_bool_op#1#const + 8
+compile._#Function._compile_bool_op#3#wrap#0#if#0#const:
+ dq 37
+ db 67, 97, 110, 32, 110, 111, 116, 32, 117, 115, 101, 32, 115, 116, 114, 117, 99, 116, 32, 97, 115, 32, 98, 111, 111, 108, 101, 97, 110, 32, 118, 97, 108, 117, 101, 10, 0
+compile._#Function._compile_bool_op#3#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_bool_op#3#wrap#0#if#0#const + 8
+compile._#Function._compile_bool_op#4#wrap#0#if#0#const:
+ dq 8
+ db 32, 32, 32, 32, 106, 101, 32, 0
+compile._#Function._compile_bool_op#4#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_bool_op#4#wrap#0#if#0#const + 8
+compile._#Function._compile_bool_op#4#wrap#0#if#1#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_bool_op#4#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_bool_op#4#wrap#0#if#1#const + 8
+compile._#Function._compile_bool_op#4#wrap#1#if#0#const:
+ dq 9
+ db 32, 32, 32, 32, 106, 110, 101, 32, 0
+compile._#Function._compile_bool_op#4#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_bool_op#4#wrap#1#if#0#const + 8
+compile._#Function._compile_bool_op#4#wrap#1#if#1#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_bool_op#4#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_bool_op#4#wrap#1#if#1#const + 8
+compile._#Function._compile_bool_op#5#wrap#0#if#0#const:
+ dq 37
+ db 67, 97, 110, 32, 110, 111, 116, 32, 117, 115, 101, 32, 115, 116, 114, 117, 99, 116, 32, 97, 115, 32, 98, 111, 111, 108, 101, 97, 110, 32, 118, 97, 108, 117, 101, 10, 0
+compile._#Function._compile_bool_op#5#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_bool_op#5#wrap#0#if#0#const + 8
+compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#0#if#0#const:
+ dq 2
+ db 101, 0
+compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#0#if#0#const + 8
+compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#1#if#0#const:
+ dq 2
+ db 101, 0
+compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#1#if#0#const + 8
+compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#0#if#0#const:
+ dq 2
+ db 101, 0
+compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#0#if#0#const + 8
+compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#1#if#0#const:
+ dq 3
+ db 110, 101, 0
+compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#1#if#0#const + 8
+compile._#Function._compile_cmp_op#0#const:
+ dq 5
+ db 98, 111, 111, 108, 0
+compile._#Function._compile_cmp_op#0#const#ptr:
+ dq compile._#Function._compile_cmp_op#0#const + 8
+compile._#Function._compile_cmp_op#3#wrap#0#if#1#const:
+ dq 49
+ db 67, 97, 110, 32, 110, 111, 116, 32, 99, 111, 109, 112, 97, 114, 101, 32, 115, 116, 114, 117, 99, 116, 115, 32, 105, 110, 32, 116, 104, 105, 115, 32, 118, 101, 114, 115, 105, 111, 110, 32, 111, 102, 32, 116, 110, 115, 108, 10, 0
+compile._#Function._compile_cmp_op#3#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_cmp_op#3#wrap#0#if#1#const + 8
+compile._#Function._compile_cmp_op#5#wrap#0#if#0#const:
+ dq 3
+ db 61, 61, 0
+compile._#Function._compile_cmp_op#5#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#0#if#0#const + 8
+compile._#Function._compile_cmp_op#5#wrap#0#if#1#const:
+ dq 2
+ db 101, 0
+compile._#Function._compile_cmp_op#5#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#0#if#1#const + 8
+compile._#Function._compile_cmp_op#5#wrap#1#if#0#const:
+ dq 2
+ db 60, 0
+compile._#Function._compile_cmp_op#5#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#1#if#0#const + 8
+compile._#Function._compile_cmp_op#5#wrap#1#if#1#const:
+ dq 2
+ db 108, 0
+compile._#Function._compile_cmp_op#5#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#1#if#1#const + 8
+compile._#Function._compile_cmp_op#5#wrap#2#if#0#const:
+ dq 2
+ db 62, 0
+compile._#Function._compile_cmp_op#5#wrap#2#if#0#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#2#if#0#const + 8
+compile._#Function._compile_cmp_op#5#wrap#2#if#1#const:
+ dq 2
+ db 103, 0
+compile._#Function._compile_cmp_op#5#wrap#2#if#1#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#2#if#1#const + 8
+compile._#Function._compile_cmp_op#5#wrap#3#if#0#const:
+ dq 4
+ db 33, 61, 61, 0
+compile._#Function._compile_cmp_op#5#wrap#3#if#0#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#3#if#0#const + 8
+compile._#Function._compile_cmp_op#5#wrap#3#if#1#const:
+ dq 3
+ db 110, 101, 0
+compile._#Function._compile_cmp_op#5#wrap#3#if#1#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#3#if#1#const + 8
+compile._#Function._compile_cmp_op#5#wrap#4#if#0#const:
+ dq 3
+ db 33, 60, 0
+compile._#Function._compile_cmp_op#5#wrap#4#if#0#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#4#if#0#const + 8
+compile._#Function._compile_cmp_op#5#wrap#4#if#1#const:
+ dq 3
+ db 110, 108, 0
+compile._#Function._compile_cmp_op#5#wrap#4#if#1#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#4#if#1#const + 8
+compile._#Function._compile_cmp_op#5#wrap#5#if#0#const:
+ dq 3
+ db 33, 62, 0
+compile._#Function._compile_cmp_op#5#wrap#5#if#0#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#5#if#0#const + 8
+compile._#Function._compile_cmp_op#5#wrap#5#if#1#const:
+ dq 3
+ db 110, 103, 0
+compile._#Function._compile_cmp_op#5#wrap#5#if#1#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#5#if#1#const + 8
+compile._#Function._compile_cmp_op#5#wrap#6#if#0#const:
+ dq 4
+ db 60, 61, 61, 0
+compile._#Function._compile_cmp_op#5#wrap#6#if#0#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#6#if#0#const + 8
+compile._#Function._compile_cmp_op#5#wrap#6#if#1#const:
+ dq 3
+ db 108, 101, 0
+compile._#Function._compile_cmp_op#5#wrap#6#if#1#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#6#if#1#const + 8
+compile._#Function._compile_cmp_op#5#wrap#7#if#0#const:
+ dq 4
+ db 62, 61, 61, 0
+compile._#Function._compile_cmp_op#5#wrap#7#if#0#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#7#if#0#const + 8
+compile._#Function._compile_cmp_op#5#wrap#7#if#1#const:
+ dq 3
+ db 103, 101, 0
+compile._#Function._compile_cmp_op#5#wrap#7#if#1#const#ptr:
+ dq compile._#Function._compile_cmp_op#5#wrap#7#if#1#const + 8
+compile._#Function._compile_bin#0#wrap#0#if#0#const:
+ dq 2
+ db 46, 0
+compile._#Function._compile_bin#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_bin#0#wrap#0#if#0#const + 8
+compile._#Function._compile_bin#1#wrap#0#if#0#const:
+ dq 2
+ db 61, 0
+compile._#Function._compile_bin#1#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_bin#1#wrap#0#if#0#const + 8
+compile._#Function._compile_bin#4#wrap#0#if#0#const:
+ dq 2
+ db 42, 0
+compile._#Function._compile_bin#4#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_bin#4#wrap#0#if#0#const + 8
+compile._#Function._compile_bin#4#wrap#1#if#0#const:
+ dq 2
+ db 47, 0
+compile._#Function._compile_bin#4#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_bin#4#wrap#1#if#0#const + 8
+compile._#Function._compile_bin#4#wrap#2#if#0#const:
+ dq 2
+ db 37, 0
+compile._#Function._compile_bin#4#wrap#2#if#0#const#ptr:
+ dq compile._#Function._compile_bin#4#wrap#2#if#0#const + 8
+compile._#Function._compile_bin#4#wrap#3#if#0#const:
+ dq 2
+ db 43, 0
+compile._#Function._compile_bin#4#wrap#3#if#0#const#ptr:
+ dq compile._#Function._compile_bin#4#wrap#3#if#0#const + 8
+compile._#Function._compile_bin#4#wrap#4#if#0#const:
+ dq 2
+ db 45, 0
+compile._#Function._compile_bin#4#wrap#4#if#0#const#ptr:
+ dq compile._#Function._compile_bin#4#wrap#4#if#0#const + 8
+compile._#Function._compile_bin#4#wrap#5#if#0#const:
+ dq 2
+ db 38, 0
+compile._#Function._compile_bin#4#wrap#5#if#0#const#ptr:
+ dq compile._#Function._compile_bin#4#wrap#5#if#0#const + 8
+compile._#Function._compile_bin#4#wrap#6#if#0#const:
+ dq 2
+ db 124, 0
+compile._#Function._compile_bin#4#wrap#6#if#0#const#ptr:
+ dq compile._#Function._compile_bin#4#wrap#6#if#0#const + 8
+compile._#Function._compile_bin#4#wrap#7#if#0#const:
+ dq 2
+ db 94, 0
+compile._#Function._compile_bin#4#wrap#7#if#0#const#ptr:
+ dq compile._#Function._compile_bin#4#wrap#7#if#0#const + 8
+compile._#Function._compile_pre#0#wrap#0#if#0#const:
+ dq 2
+ db 45, 0
+compile._#Function._compile_pre#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_pre#0#wrap#0#if#0#const + 8
+compile._#Function._compile_pre#0#wrap#1#if#0#const:
+ dq 2
+ db 33, 0
+compile._#Function._compile_pre#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_pre#0#wrap#1#if#0#const + 8
+compile._#Function._compile_pre#0#wrap#2#if#0#const:
+ dq 2
+ db 126, 0
+compile._#Function._compile_pre#0#wrap#2#if#0#const#ptr:
+ dq compile._#Function._compile_pre#0#wrap#2#if#0#const + 8
+compile._#Function._compile_pre#0#wrap#3#if#0#const:
+ dq 3
+ db 45, 45, 0
+compile._#Function._compile_pre#0#wrap#3#if#0#const#ptr:
+ dq compile._#Function._compile_pre#0#wrap#3#if#0#const + 8
+compile._#Function._compile_pre#0#wrap#4#if#0#const:
+ dq 3
+ db 43, 43, 0
+compile._#Function._compile_pre#0#wrap#4#if#0#const#ptr:
+ dq compile._#Function._compile_pre#0#wrap#4#if#0#const + 8
+compile._#Function._compile_pre#0#wrap#5#if#0#const:
+ dq 4
+ db 108, 101, 110, 0
+compile._#Function._compile_pre#0#wrap#5#if#0#const#ptr:
+ dq compile._#Function._compile_pre#0#wrap#5#if#0#const + 8
+compile._#Function._compile_pre#0#wrap#5#if#1#const:
+ dq 4
+ db 108, 101, 110, 0
+compile._#Function._compile_pre#0#wrap#5#if#1#const#ptr:
+ dq compile._#Function._compile_pre#0#wrap#5#if#1#const + 8
+compile._#Function._compile_pre#0#wrap#5#if#2#const:
+ dq 5
+ db 117, 105, 110, 116, 0
+compile._#Function._compile_pre#0#wrap#5#if#2#const#ptr:
+ dq compile._#Function._compile_pre#0#wrap#5#if#2#const + 8
+compile._#Function._compile_pre#0#wrap#6#if#0#const:
+ dq 18
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 34, 0
+compile._#Function._compile_pre#0#wrap#6#if#0#const#ptr:
+ dq compile._#Function._compile_pre#0#wrap#6#if#0#const + 8
+compile._#Function._compile_pre#0#wrap#6#if#1#const:
+ dq 35
+ db 34, 32, 78, 79, 84, 32, 82, 69, 67, 79, 71, 78, 73, 90, 69, 68, 32, 65, 83, 32, 65, 32, 86, 65, 76, 73, 68, 32, 80, 82, 69, 79, 80, 10, 0
+compile._#Function._compile_pre#0#wrap#6#if#1#const#ptr:
+ dq compile._#Function._compile_pre#0#wrap#6#if#1#const + 8
+compile._#Function._compile_literal#0#wrap#0#if#0#const:
+ dq 5
+ db 116, 114, 117, 101, 0
+compile._#Function._compile_literal#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#0#if#0#const + 8
+compile._#Function._compile_literal#0#wrap#0#if#1#const:
+ dq 5
+ db 98, 111, 111, 108, 0
+compile._#Function._compile_literal#0#wrap#0#if#1#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#0#if#1#const + 8
+compile._#Function._compile_literal#0#wrap#1#if#0#const:
+ dq 6
+ db 102, 97, 108, 115, 101, 0
+compile._#Function._compile_literal#0#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#1#if#0#const + 8
+compile._#Function._compile_literal#0#wrap#1#if#1#const:
+ dq 5
+ db 98, 111, 111, 108, 0
+compile._#Function._compile_literal#0#wrap#1#if#1#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#1#if#1#const + 8
+compile._#Function._compile_literal#0#wrap#2#if#0#const:
+ dq 5
+ db 110, 117, 108, 108, 0
+compile._#Function._compile_literal#0#wrap#2#if#0#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#2#if#0#const + 8
+compile._#Function._compile_literal#0#wrap#2#if#1#const:
+ dq 5
+ db 118, 111, 105, 100, 0
+compile._#Function._compile_literal#0#wrap#2#if#1#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#2#if#1#const + 8
+compile._#Function._compile_literal#0#wrap#3#if#0#const:
+ dq 6
+ db 117, 105, 110, 116, 56, 0
+compile._#Function._compile_literal#0#wrap#3#if#0#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#3#if#0#const + 8
+compile._#Function._compile_literal#0#wrap#4#if#0#const:
+ dq 10
+ db 58, 10, 32, 32, 32, 32, 100, 113, 32, 0
+compile._#Function._compile_literal#0#wrap#4#if#0#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#4#if#0#const + 8
+compile._#Function._compile_literal#0#wrap#4#if#1#const:
+ dq 9
+ db 10, 32, 32, 32, 32, 100, 98, 32, 0
+compile._#Function._compile_literal#0#wrap#4#if#1#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#4#if#1#const + 8
+compile._#Function._compile_literal#0#wrap#4#if#2#loop#0#const:
+ dq 3
+ db 44, 32, 0
+compile._#Function._compile_literal#0#wrap#4#if#2#loop#0#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#4#if#2#loop#0#const + 8
+compile._#Function._compile_literal#0#wrap#4#if#3#wrap#1#if#0#const:
+ dq 2
+ db 48, 0
+compile._#Function._compile_literal#0#wrap#4#if#3#wrap#1#if#0#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#4#if#3#wrap#1#if#0#const + 8
+compile._#Function._compile_literal#0#wrap#4#if#4#const:
+ dq 2
+ db 10, 0
+compile._#Function._compile_literal#0#wrap#4#if#4#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#4#if#4#const + 8
+compile._#Function._compile_literal#0#wrap#4#if#5#const:
+ dq 5
+ db 35, 112, 116, 114, 0
+compile._#Function._compile_literal#0#wrap#4#if#5#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#4#if#5#const + 8
+compile._#Function._compile_literal#0#wrap#4#if#6#const:
+ dq 10
+ db 58, 10, 32, 32, 32, 32, 100, 113, 32, 0
+compile._#Function._compile_literal#0#wrap#4#if#6#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#4#if#6#const + 8
+compile._#Function._compile_literal#0#wrap#4#if#7#const:
+ dq 6
+ db 32, 43, 32, 56, 10, 0
+compile._#Function._compile_literal#0#wrap#4#if#7#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#4#if#7#const + 8
+compile._#Function._compile_literal#0#wrap#4#if#8#const:
+ dq 6
+ db 117, 105, 110, 116, 56, 0
+compile._#Function._compile_literal#0#wrap#4#if#8#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#4#if#8#const + 8
+compile._#Function._compile_literal#0#wrap#5#if#0#const:
+ dq 4
+ db 105, 110, 116, 0
+compile._#Function._compile_literal#0#wrap#5#if#0#const#ptr:
+ dq compile._#Function._compile_literal#0#wrap#5#if#0#const + 8
+compile._#Function._print_artifact#0#loop#0#wrap#0#if#0#const:
+ dq 2
+ db 46, 0
+compile._#Function._print_artifact#0#loop#0#wrap#0#if#0#const#ptr:
+ dq compile._#Function._print_artifact#0#loop#0#wrap#0#if#0#const + 8
+compile._#Function._compile_value#1#const:
+ dq 37
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 78, 79, 84, 32, 73, 77, 80, 76, 32, 78, 79, 68, 69, 32, 84, 89, 80, 69, 32, 34, 0
+compile._#Function._compile_value#1#const#ptr:
+ dq compile._#Function._compile_value#1#const + 8
+compile._#Function._compile_value#2#const:
+ dq 27
+ db 34, 32, 73, 78, 32, 82, 79, 79, 84, 32, 86, 65, 76, 32, 67, 79, 77, 80, 85, 84, 65, 84, 73, 79, 78, 10, 0
+compile._#Function._compile_value#2#const#ptr:
+ dq compile._#Function._compile_value#2#const + 8
+compile._#Function._print#0#const:
+ dq 14
+ db 123, 32, 70, 117, 110, 99, 116, 105, 111, 110, 32, 58, 32, 0
+compile._#Function._print#0#const#ptr:
+ dq compile._#Function._print#0#const + 8
+compile._#Function._print#1#const:
+ dq 2
+ db 10, 0
+compile._#Function._print#1#const#ptr:
+ dq compile._#Function._print#1#const + 8
+compile._#Function._print#2#const:
+ dq 9
+ db 105, 110, 112, 117, 116, 115, 58, 10, 0
+compile._#Function._print#2#const#ptr:
+ dq compile._#Function._print#2#const + 8
+compile._#Function._print#4#const:
+ dq 10
+ db 111, 117, 116, 112, 117, 116, 115, 58, 10, 0
+compile._#Function._print#4#const#ptr:
+ dq compile._#Function._print#4#const + 8
+compile._#Function._print#6#const:
+ dq 3
+ db 125, 10, 0
+compile._#Function._print#6#const#ptr:
+ dq compile._#Function._print#6#const + 8
+compile._#Module.update_children#1#loop#0#const:
+ dq 3
+ db 95, 35, 0
+compile._#Module.update_children#1#loop#0#const#ptr:
+ dq compile._#Module.update_children#1#loop#0#const + 8
+compile._#Module._create_methods#0#const:
+ dq 3
+ db 95, 35, 0
+compile._#Module._create_methods#0#const#ptr:
+ dq compile._#Module._create_methods#0#const + 8
+compile._#Module.related_type#2#const:
+ dq 61
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 85, 78, 65, 66, 76, 69, 32, 116, 111, 32, 102, 105, 110, 100, 32, 97, 32, 115, 117, 116, 97, 98, 108, 101, 32, 115, 116, 114, 117, 99, 116, 32, 102, 111, 114, 32, 109, 111, 100, 117, 108, 101, 32, 34, 0
+compile._#Module.related_type#2#const#ptr:
+ dq compile._#Module.related_type#2#const + 8
+compile._#Module.related_type#3#const:
+ dq 3
+ db 34, 10, 0
+compile._#Module.related_type#3#const#ptr:
+ dq compile._#Module.related_type#3#const + 8
+compile._#Module._from_tree#0#loop#0#wrap#5#if#0#const:
+ dq 2
+ db 10, 0
+compile._#Module._from_tree#0#loop#0#wrap#5#if#0#const#ptr:
+ dq compile._#Module._from_tree#0#loop#0#wrap#5#if#0#const + 8
+compile._#Module._method_id#1#const:
+ dq 3
+ db 95, 35, 0
+compile._#Module._method_id#1#const#ptr:
+ dq compile._#Module._method_id#1#const + 8
+compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 25
+ db 70, 111, 117, 110, 100, 32, 109, 111, 100, 117, 108, 101, 32, 102, 111, 114, 32, 109, 101, 116, 104, 111, 100, 10, 0
+compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#1#if#0#const:
+ dq 34
+ db 70, 97, 105, 108, 101, 100, 32, 116, 111, 32, 102, 105, 110, 100, 32, 109, 111, 100, 117, 108, 101, 32, 102, 111, 114, 32, 109, 101, 116, 104, 111, 100, 10, 0
+compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#1#if#0#const + 8
+compile._#Module.collect_methods#0#loop#0#wrap#1#if#0#wrap#1#if#0#const:
+ dq 34
+ db 70, 97, 105, 108, 101, 100, 32, 116, 111, 32, 102, 105, 110, 100, 32, 109, 111, 100, 117, 108, 101, 32, 102, 111, 114, 32, 109, 101, 116, 104, 111, 100, 10, 0
+compile._#Module.collect_methods#0#loop#0#wrap#1#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Module.collect_methods#0#loop#0#wrap#1#if#0#wrap#1#if#0#const + 8
+compile._#Module.collect_methods#0#loop#0#wrap#2#if#0#wrap#1#if#0#const:
+ dq 34
+ db 70, 97, 105, 108, 101, 100, 32, 116, 111, 32, 102, 105, 110, 100, 32, 109, 111, 100, 117, 108, 101, 32, 102, 111, 114, 32, 109, 101, 116, 104, 111, 100, 10, 0
+compile._#Module.collect_methods#0#loop#0#wrap#2#if#0#wrap#1#if#0#const#ptr:
+ dq compile._#Module.collect_methods#0#loop#0#wrap#2#if#0#wrap#1#if#0#const + 8
+compile._#Module._print#0#const:
+ dq 12
+ db 123, 32, 77, 111, 100, 117, 108, 101, 32, 58, 32, 0
+compile._#Module._print#0#const#ptr:
+ dq compile._#Module._print#0#const + 8
+compile._#Module._print#1#const:
+ dq 2
+ db 10, 0
+compile._#Module._print#1#const#ptr:
+ dq compile._#Module._print#1#const + 8
+compile._#Module._print#6#const:
+ dq 3
+ db 125, 10, 0
+compile._#Module._print#6#const#ptr:
+ dq compile._#Module._print#6#const + 8
+compile._#Scope.print#0#const:
+ dq 22
+ db 61, 61, 61, 61, 32, 83, 67, 79, 80, 69, 32, 68, 65, 84, 65, 32, 61, 61, 61, 61, 10, 0
+compile._#Scope.print#0#const#ptr:
+ dq compile._#Scope.print#0#const + 8
+compile._#Scope.print#1#const:
+ dq 14
+ db 83, 99, 111, 112, 101, 32, 108, 97, 98, 101, 108, 58, 32, 0
+compile._#Scope.print#1#const#ptr:
+ dq compile._#Scope.print#1#const + 8
+compile._#Scope.print#2#const:
+ dq 3
+ db 10, 10, 0
+compile._#Scope.print#2#const#ptr:
+ dq compile._#Scope.print#2#const + 8
+compile._#Scope.print#3#const:
+ dq 19
+ db 80, 114, 101, 45, 116, 114, 97, 99, 107, 101, 100, 32, 118, 97, 114, 115, 58, 10, 0
+compile._#Scope.print#3#const#ptr:
+ dq compile._#Scope.print#3#const + 8
+compile._#Scope.print#5#const:
+ dq 22
+ db 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 10, 0
+compile._#Scope.print#5#const#ptr:
+ dq compile._#Scope.print#5#const + 8
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#0#wrap#0#if#0#const:
+ dq 74
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 83, 104, 111, 117, 108, 100, 32, 104, 97, 118, 101, 32, 116, 121, 112, 101, 32, 110, 111, 100, 101, 32, 98, 101, 102, 111, 114, 101, 32, 102, 105, 114, 115, 116, 32, 105, 100, 32, 105, 110, 32, 100, 101, 99, 108, 47, 100, 108, 105, 115, 116, 32, 110, 111, 100, 101, 10, 0
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#0#wrap#0#if#0#const + 8
+compile._#Scope.precheck_stmt#0#wrap#0#if#0#wrap#0#if#0#const:
+ dq 2
+ db 126, 0
+compile._#Scope.precheck_stmt#0#wrap#0#if#0#wrap#0#if#0#const#ptr:
+ dq compile._#Scope.precheck_stmt#0#wrap#0#if#0#wrap#0#if#0#const + 8
+compile._#Scope.find_var#2#const:
+ dq 24
+ db 69, 82, 82, 79, 82, 58, 32, 70, 111, 117, 110, 100, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 34, 0
+compile._#Scope.find_var#2#const#ptr:
+ dq compile._#Scope.find_var#2#const + 8
+compile._#Scope.find_var#3#const:
+ dq 55
+ db 34, 32, 98, 117, 116, 32, 105, 116, 32, 100, 111, 101, 115, 110, 39, 116, 32, 108, 111, 111, 107, 32, 108, 105, 107, 101, 32, 105, 116, 39, 115, 32, 98, 101, 101, 110, 32, 105, 110, 105, 116, 105, 97, 108, 105, 122, 101, 100, 32, 121, 101, 116, 33, 10, 0
+compile._#Scope.find_var#3#const#ptr:
+ dq compile._#Scope.find_var#3#const + 8
+compile._#Scope.find_var#4#const:
+ dq 13
+ db 32, 32, 32, 32, 76, 111, 99, 58, 32, 37, 100, 10, 0
+compile._#Scope.find_var#4#const#ptr:
+ dq compile._#Scope.find_var#4#const + 8
+compile._#Scope.find_var#5#const:
+ dq 16
+ db 32, 32, 32, 32, 79, 102, 102, 115, 101, 116, 58, 32, 37, 100, 10, 0
+compile._#Scope.find_var#5#const#ptr:
+ dq compile._#Scope.find_var#5#const + 8
+compile._#Scope.mk_var#2#wrap#0#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 115, 117, 98, 32, 114, 115, 112, 44, 32, 0
+compile._#Scope.mk_var#2#wrap#0#if#0#const#ptr:
+ dq compile._#Scope.mk_var#2#wrap#0#if#0#const + 8
+compile._#Scope.mk_var#2#wrap#0#if#1#const:
+ dq 42
+ db 32, 59, 32, 67, 114, 101, 97, 116, 101, 32, 115, 116, 97, 99, 107, 32, 115, 112, 97, 99, 101, 32, 102, 111, 114, 32, 108, 111, 99, 97, 108, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 0
+compile._#Scope.mk_var#2#wrap#0#if#1#const#ptr:
+ dq compile._#Scope.mk_var#2#wrap#0#if#1#const + 8
+compile._#Scope.mk_var#2#wrap#0#if#2#const:
+ dq 2
+ db 10, 0
+compile._#Scope.mk_var#2#wrap#0#if#2#const#ptr:
+ dq compile._#Scope.mk_var#2#wrap#0#if#2#const + 8
+compile._#Scope.mk_tmp#1#wrap#0#if#0#const:
+ dq 14
+ db 32, 32, 32, 32, 115, 117, 98, 32, 114, 115, 112, 44, 32, 0
+compile._#Scope.mk_tmp#1#wrap#0#if#0#const#ptr:
+ dq compile._#Scope.mk_tmp#1#wrap#0#if#0#const + 8
+compile._#Scope.mk_tmp#1#wrap#0#if#1#const:
+ dq 40
+ db 32, 59, 32, 67, 114, 101, 97, 116, 101, 32, 115, 116, 97, 99, 107, 32, 115, 112, 97, 99, 101, 32, 102, 111, 114, 32, 116, 109, 112, 32, 118, 97, 114, 105, 97, 98, 108, 101, 10, 0
+compile._#Scope.mk_tmp#1#wrap#0#if#1#const#ptr:
+ dq compile._#Scope.mk_tmp#1#wrap#0#if#1#const + 8
+compile._#Scope.mk_tmp_stack#0#const:
+ dq 14
+ db 32, 32, 32, 32, 115, 117, 98, 32, 114, 115, 112, 44, 32, 0
+compile._#Scope.mk_tmp_stack#0#const#ptr:
+ dq compile._#Scope.mk_tmp_stack#0#const + 8
+compile._#Scope.mk_tmp_stack#1#const:
+ dq 40
+ db 32, 59, 32, 67, 114, 101, 97, 116, 101, 32, 115, 116, 97, 99, 107, 32, 115, 112, 97, 99, 101, 32, 102, 111, 114, 32, 116, 109, 112, 32, 118, 97, 114, 105, 97, 98, 108, 101, 10, 0
+compile._#Scope.mk_tmp_stack#1#const#ptr:
+ dq compile._#Scope.mk_tmp_stack#1#const + 8
+compile._#Scope.free_tmp#2#wrap#0#if#0#const:
+ dq 21
+ db 32, 32, 32, 32, 108, 101, 97, 32, 114, 115, 112, 44, 32, 91, 114, 98, 112, 32, 45, 32, 0
+compile._#Scope.free_tmp#2#wrap#0#if#0#const#ptr:
+ dq compile._#Scope.free_tmp#2#wrap#0#if#0#const + 8
+compile._#Scope.free_tmp#2#wrap#0#if#1#const:
+ dq 46
+ db 93, 32, 59, 32, 70, 114, 101, 101, 32, 115, 116, 97, 99, 107, 32, 115, 112, 97, 99, 101, 32, 40, 102, 114, 101, 101, 105, 110, 103, 32, 116, 109, 112, 32, 118, 97, 114, 105, 97, 98, 108, 101, 115, 41, 10, 0
+compile._#Scope.free_tmp#2#wrap#0#if#1#const#ptr:
+ dq compile._#Scope.free_tmp#2#wrap#0#if#1#const + 8
+compile._#Scope.free_to#1#wrap#0#if#0#const:
+ dq 58
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 102, 105, 110, 100, 32, 116, 101, 109, 112, 32, 116, 111, 32, 102, 114, 101, 101, 32, 116, 111, 32, 105, 110, 32, 115, 99, 111, 112, 101, 32, 34, 0
+compile._#Scope.free_to#1#wrap#0#if#0#const#ptr:
+ dq compile._#Scope.free_to#1#wrap#0#if#0#const + 8
+compile._#Scope.free_to#1#wrap#0#if#1#const:
+ dq 3
+ db 34, 10, 0
+compile._#Scope.free_to#1#wrap#0#if#1#const#ptr:
+ dq compile._#Scope.free_to#1#wrap#0#if#1#const + 8
+compile._#Scope.free_to#1#wrap#0#if#2#const:
+ dq 76
+ db 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 87, 97, 115, 32, 108, 111, 111, 107, 105, 110, 103, 32, 102, 111, 114, 32, 116, 109, 112, 32, 119, 105, 116, 104, 32, 111, 102, 102, 115, 101, 116, 32, 37, 100, 32, 98, 117, 116, 32, 99, 111, 117, 108, 100, 32, 110, 111, 116, 32, 102, 105, 110, 100, 32, 111, 110, 101, 46, 10, 0
+compile._#Scope.free_to#1#wrap#0#if#2#const#ptr:
+ dq compile._#Scope.free_to#1#wrap#0#if#2#const + 8
+compile._#Scope.free_after#1#wrap#0#if#0#const:
+ dq 58
+ db 67, 79, 77, 80, 73, 76, 69, 82, 32, 69, 82, 82, 79, 82, 58, 32, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 102, 105, 110, 100, 32, 116, 101, 109, 112, 32, 116, 111, 32, 102, 114, 101, 101, 32, 116, 111, 32, 105, 110, 32, 115, 99, 111, 112, 101, 32, 34, 0
+compile._#Scope.free_after#1#wrap#0#if#0#const#ptr:
+ dq compile._#Scope.free_after#1#wrap#0#if#0#const + 8
+compile._#Scope.free_after#1#wrap#0#if#1#const:
+ dq 3
+ db 34, 10, 0
+compile._#Scope.free_after#1#wrap#0#if#1#const#ptr:
+ dq compile._#Scope.free_after#1#wrap#0#if#1#const + 8
+compile._#Scope.free_after#1#wrap#0#if#2#const:
+ dq 76
+ db 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 87, 97, 115, 32, 108, 111, 111, 107, 105, 110, 103, 32, 102, 111, 114, 32, 116, 109, 112, 32, 119, 105, 116, 104, 32, 111, 102, 102, 115, 101, 116, 32, 37, 100, 32, 98, 117, 116, 32, 99, 111, 117, 108, 100, 32, 110, 111, 116, 32, 102, 105, 110, 100, 32, 111, 110, 101, 46, 10, 0
+compile._#Scope.free_after#1#wrap#0#if#2#const#ptr:
+ dq compile._#Scope.free_after#1#wrap#0#if#2#const + 8
+compile._#Scope._closest_break#0#wrap#0#if#0#const:
+ dq 6
+ db 35, 119, 114, 97, 112, 0
+compile._#Scope._closest_break#0#wrap#0#if#0#const#ptr:
+ dq compile._#Scope._closest_break#0#wrap#0#if#0#const + 8
+compile._#Scope._closest_break#0#wrap#1#if#0#const:
+ dq 6
+ db 35, 108, 111, 111, 112, 0
+compile._#Scope._closest_break#0#wrap#1#if#0#const#ptr:
+ dq compile._#Scope._closest_break#0#wrap#1#if#0#const + 8
+compile._#Scope.closest_break#1#wrap#0#if#0#const:
+ dq 6
+ db 35, 119, 114, 97, 112, 0
+compile._#Scope.closest_break#1#wrap#0#if#0#const#ptr:
+ dq compile._#Scope.closest_break#1#wrap#0#if#0#const + 8
+compile._#Scope.closest_loop#0#wrap#0#if#0#const:
+ dq 6
+ db 35, 108, 111, 111, 112, 0
+compile._#Scope.closest_loop#0#wrap#0#if#0#const#ptr:
+ dq compile._#Scope.closest_loop#0#wrap#0#if#0#const + 8
+compile._#Scope.place_base_label#0#const:
+ dq 3
+ db 58, 10, 0
+compile._#Scope.place_base_label#0#const#ptr:
+ dq compile._#Scope.place_base_label#0#const + 8
+compile._#Scope.start_label#0#const:
+ dq 7
+ db 35, 115, 116, 97, 114, 116, 0
+compile._#Scope.start_label#0#const#ptr:
+ dq compile._#Scope.start_label#0#const + 8
+compile._#Scope.place_start_label#0#const:
+ dq 3
+ db 58, 10, 0
+compile._#Scope.place_start_label#0#const#ptr:
+ dq compile._#Scope.place_start_label#0#const + 8
+compile._#Scope.rep_label#0#const:
+ dq 5
+ db 35, 114, 101, 112, 0
+compile._#Scope.rep_label#0#const#ptr:
+ dq compile._#Scope.rep_label#0#const + 8
+compile._#Scope.place_rep_label#0#const:
+ dq 3
+ db 58, 10, 0
+compile._#Scope.place_rep_label#0#const#ptr:
+ dq compile._#Scope.place_rep_label#0#const + 8
+compile._#Scope.end_label#0#const:
+ dq 5
+ db 35, 101, 110, 100, 0
+compile._#Scope.end_label#0#const#ptr:
+ dq compile._#Scope.end_label#0#const + 8
+compile._#Scope.place_end_label#0#const:
+ dq 3
+ db 58, 10, 0
+compile._#Scope.place_end_label#0#const#ptr:
+ dq compile._#Scope.place_end_label#0#const + 8
+compile._#Scope.gen_const_name#0#const:
+ dq 7
+ db 35, 99, 111, 110, 115, 116, 0
+compile._#Scope.gen_const_name#0#const#ptr:
+ dq compile._#Scope.gen_const_name#0#const + 8
+
+section .text
+
+_alloc:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ mov rsi, 0 ; User defined asm
+ xor rax, rax ; User defined asm
+ call malloc wrt ..plt ; User defined asm
+ mov r11, rax ; User defined asm
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp _alloc#end
+
+_alloc#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_realloc:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ mov rsi, r11 ; User defined asm
+ xor rax, rax ; User defined asm
+ call realloc wrt ..plt ; User defined asm
+ mov r12, rax ; User defined asm
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp _realloc#end
+
+_realloc#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_delete:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ mov rsi, 0 ; User defined asm
+ xor rax, rax ; User defined asm
+ call free wrt ..plt ; User defined asm
+
+_delete#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_putchar:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10b, al ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ xor rsi, rsi ; User defined asm
+ xor rax, rax ; User defined asm
+ call putchar wrt ..plt ; User defined asm
+
+_putchar#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_printf:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je _printf#0#loop#end
+_printf#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [r10] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _putchar
+_printf#0#loop#rep:
+ mov rbx, r10 ; (SET)
+ add r10, 1 ; (STD_OP)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je _printf#0#loop#end
+ jmp _printf#0#loop#start
+_printf#0#loop#end:
+
+_printf#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_print_num:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ mov rsi, r11 ; User defined asm
+ xor rax, rax ; User defined asm
+ call printf wrt ..plt ; User defined asm
+
+_print_num#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_create_file:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ mov rsi, 0q1102 ; User defined asm
+ mov rdx, 0q700 ; User defined asm
+ call open wrt ..plt ; User defined asm
+ mov r11, rax ; User defined asm
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp _create_file#end
+
+_create_file#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_open_file:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ mov rsi, 2 ; User defined asm
+ mov rdx, 0q700 ; User defined asm
+ call open wrt ..plt ; User defined asm
+ mov r11, rax ; User defined asm
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp _open_file#end
+
+_open_file#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_close_file:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ call close wrt ..plt ; User defined asm
+
+_close_file#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_read_byte:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ mov rsi, r11 ; User defined asm
+ mov rdx, 1 ; User defined asm
+ call read wrt ..plt ; User defined asm
+ mov r12, rax ; User defined asm
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp _read_byte#end
+
+_read_byte#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_fseek:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ mov rsi, r11 ; User defined asm
+ mov rdx, 0 ; User defined asm
+ call lseek wrt ..plt ; User defined asm
+ mov r12, rax ; User defined asm
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp _fseek#end
+
+_fseek#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_write_byte:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ mov rsi, r11 ; User defined asm
+ mov rdx, 1 ; User defined asm
+ call write wrt ..plt ; User defined asm
+ mov r12, rax ; User defined asm
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp _write_byte#end
+
+_write_byte#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+_perror:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov rax, rsp ; User defined asm
+ xor rdx, rdx ; User defined asm
+ mov rcx, 16 ; User defined asm
+ div rcx ; User defined asm
+ sub rsp, rdx ; User defined asm
+ sub rsp, 128 ; User defined asm
+ mov rdi, r10 ; User defined asm
+ xor rsi, rsi ; User defined asm
+ xor rax, rax ; User defined asm
+ call perror wrt ..plt ; User defined asm
+
+_perror#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+print_alert:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel _alert] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+print_alert#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+main:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r10, rdi ; User defined asm
+ mov r11, rsi ; User defined asm
+ cmp r10, 2
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je main#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel USAGE] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ mov rax, 1 ; (SET)
+ jmp main#end
+ jmp main#0#wrap#end
+main#0#wrap#0#if#end:
+main#0#wrap#end:
+ sub rsp, 37 ; Create stack space for local variable fin
+ sub rsp, 37 ; Create stack space for local variable fout
+ mov r12, 1 ; (SET)
+ mov r13, 0 ; (SET)
+ mov rbx, r11 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 8 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r14, qword [rax] ; (SET)
+ mov r8, r14 ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 45
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je main#1#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 131], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov r8, r11 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 8 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov rsi, qword [rax] ; (SET_PRM_R)
+ mov qword [rbp - 139], rsi ; (SET)
+ mov rsi, qword [rel main#1#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 147], rsi ; (SET)
+ mov rax, qword [rbp - 139] ; (SET)
+ mov rbx, qword [rbp - 147] ; (SET)
+ lea rsp, [rbp - 131] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je main#1#wrap#0#if#0#wrap#0#if#end
+ mov r13, 1 ; (SET)
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ jmp main#1#wrap#0#if#0#wrap#end
+main#1#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 131], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov r8, r11 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 8 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov rsi, qword [rax] ; (SET_PRM_R)
+ mov qword [rbp - 139], rsi ; (SET)
+ mov rsi, qword [rel main#1#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 147], rsi ; (SET)
+ mov rax, qword [rbp - 139] ; (SET)
+ mov rbx, qword [rbp - 147] ; (SET)
+ lea rsp, [rbp - 131] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je main#1#wrap#0#if#0#wrap#1#if#end
+ mov r13, 2 ; (SET)
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ jmp main#1#wrap#0#if#0#wrap#end
+main#1#wrap#0#if#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 131], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov r8, r11 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 8 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov rsi, qword [rax] ; (SET_PRM_R)
+ mov qword [rbp - 139], rsi ; (SET)
+ mov rsi, qword [rel main#1#wrap#0#if#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 147], rsi ; (SET)
+ mov rax, qword [rbp - 139] ; (SET)
+ mov rbx, qword [rbp - 147] ; (SET)
+ lea rsp, [rbp - 131] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je main#1#wrap#0#if#0#wrap#2#if#end
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ cmp r12, r10
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je main#1#wrap#0#if#0#wrap#2#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel USAGE] ; (SET_PRM_R)
+ mov qword [rbp - 138], rsi ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ mov rax, 1 ; (SET)
+ jmp main#end
+ jmp main#1#wrap#0#if#0#wrap#2#if#1#wrap#end
+main#1#wrap#0#if#0#wrap#2#if#1#wrap#0#if#end:
+main#1#wrap#0#if#0#wrap#2#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 130] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 138], rax ; (SET)
+ mov rbx, r11 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 8 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov rsi, qword [rax] ; (SET_PRM_R)
+ mov qword [rbp - 146], rsi ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ mov rbx, qword [rbp - 146] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call utils._#File.init
+ jmp main#1#wrap#0#if#0#wrap#end
+main#1#wrap#0#if#0#wrap#2#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel USAGE] ; (SET_PRM_R)
+ mov qword [rbp - 138], rsi ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ mov rax, 1 ; (SET)
+ jmp main#end
+ jmp main#1#wrap#0#if#0#wrap#end
+main#1#wrap#0#if#0#wrap#3#if#end:
+main#1#wrap#0#if#0#wrap#end:
+ jmp main#1#wrap#end
+main#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 130] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 138], rax ; (SET)
+ mov rsi, qword [rel DEFAULT_FOUT] ; (SET_PRM_R)
+ mov qword [rbp - 146], rsi ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ mov rbx, qword [rbp - 146] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call utils._#File.init
+ jmp main#1#wrap#end
+main#1#wrap#1#if#end:
+main#1#wrap#end:
+ cmp r12, r10
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je main#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel USAGE] ; (SET_PRM_R)
+ mov qword [rbp - 138], rsi ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ mov rax, 1 ; (SET)
+ jmp main#end
+ jmp main#2#wrap#end
+main#2#wrap#0#if#end:
+main#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 93] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 138], rax ; (SET)
+ mov rbx, r11 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 8 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov rsi, qword [rax] ; (SET_PRM_R)
+ mov qword [rbp - 146], rsi ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ mov rbx, qword [rbp - 146] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call utils._#File.init
+ cmp r13, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je main#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 93] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 138], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 130] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 146], rsi ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ mov rbx, qword [rbp - 146] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call compile.generate
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 130] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 138], rax ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call utils._#File.end
+ jmp main#3#wrap#end
+main#3#wrap#0#if#end:
+ cmp r13, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je main#3#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 93] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 138], rsi ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call compile.parse_tree
+ jmp main#3#wrap#end
+main#3#wrap#1#if#end:
+ cmp r13, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je main#3#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 93] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 138], rsi ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call compile.mod_tree
+ jmp main#3#wrap#end
+main#3#wrap#2#if#end:
+main#3#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 93] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 138], rax ; (SET)
+ mov rax, qword [rbp - 138] ; (SET)
+ lea rsp, [rbp - 130] ; Free stack space (freeing tmp variables)
+ call utils._#File.end
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp main#end
+
+main#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.strcmp:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, byte [r11]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je utils.strcmp#0#loop#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ cmp byte byte [rbp - 57], 0
+utils.strcmp#0#loop#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je utils.strcmp#0#loop#0#bool#end
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.strcmp#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.strcmp#0#loop#end
+utils.strcmp#0#loop#start:
+utils.strcmp#0#loop#rep:
+ mov rbx, r10 ; (SET)
+ add r10, 1 ; (STD_OP)
+ mov rbx, r11 ; (SET)
+ add r11, 1 ; (STD_OP)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, byte [r11]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je utils.strcmp#0#loop#3#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ cmp byte byte [rbp - 57], 0
+utils.strcmp#0#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je utils.strcmp#0#loop#2#bool#end
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.strcmp#0#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.strcmp#0#loop#end
+ jmp utils.strcmp#0#loop#start
+utils.strcmp#0#loop#end:
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.strcmp#1#wrap#0#if#0#bool#end
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.strcmp#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.strcmp#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp utils.strcmp#end
+ jmp utils.strcmp#1#wrap#end
+utils.strcmp#1#wrap#0#if#end:
+utils.strcmp#1#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp utils.strcmp#end
+
+utils.strcmp#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.strlen:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 0 ; (SET)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.strlen#0#loop#end
+utils.strlen#0#loop#start:
+utils.strlen#0#loop#rep:
+ mov rbx, r10 ; (SET)
+ add r10, 1 ; (STD_OP)
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.strlen#0#loop#end
+ jmp utils.strlen#0#loop#start
+utils.strlen#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp utils.strlen#end
+
+utils.strlen#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.ends_with:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strlen
+ mov r12, rax ; (SET)
+ mov r13, 0 ; (SET)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.ends_with#0#loop#end
+utils.ends_with#0#loop#start:
+ mov r8, r11 ; (SET)
+ ; Gen index
+ mov rax, r13 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.ends_with#0#loop#0#wrap#0#if#end
+ mov r8, r11 ; (SET)
+ ; Gen index
+ mov rax, r13 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, byte [r10]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.ends_with#0#loop#0#wrap#0#if#0#wrap#0#if#end
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ jmp utils.ends_with#0#loop#0#wrap#0#if#0#wrap#end
+utils.ends_with#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+ mov r13, 0 ; (SET)
+ jmp utils.ends_with#0#loop#0#wrap#0#if#0#wrap#end
+utils.ends_with#0#loop#0#wrap#0#if#0#wrap#1#if#end:
+utils.ends_with#0#loop#0#wrap#0#if#0#wrap#end:
+ jmp utils.ends_with#0#loop#0#wrap#end
+utils.ends_with#0#loop#0#wrap#0#if#end:
+ mov r13, 0 ; (SET)
+ jmp utils.ends_with#0#loop#0#wrap#end
+utils.ends_with#0#loop#0#wrap#1#if#end:
+utils.ends_with#0#loop#0#wrap#end:
+utils.ends_with#0#loop#rep:
+ mov rbx, r10 ; (SET)
+ add r10, 1 ; (STD_OP)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.ends_with#0#loop#end
+ jmp utils.ends_with#0#loop#start
+utils.ends_with#0#loop#end:
+
+ ; STARTING RETURN
+ cmp r12, r13
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp utils.ends_with#end
+
+utils.ends_with#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.base_for_char:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10b, al ; (SET)
+ cmp r10b, 98
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne utils.base_for_char#0#wrap#0#if#0#bool#end
+ cmp r10b, 66
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.base_for_char#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.base_for_char#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 2 ; (SET)
+ jmp utils.base_for_char#end
+ jmp utils.base_for_char#0#wrap#end
+utils.base_for_char#0#wrap#0#if#end:
+ cmp r10b, 111
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne utils.base_for_char#0#wrap#1#if#0#bool#end
+ cmp r10b, 79
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.base_for_char#0#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.base_for_char#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov rax, 8 ; (SET)
+ jmp utils.base_for_char#end
+ jmp utils.base_for_char#0#wrap#end
+utils.base_for_char#0#wrap#1#if#end:
+ cmp r10b, 120
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne utils.base_for_char#0#wrap#2#if#0#bool#end
+ cmp r10b, 88
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.base_for_char#0#wrap#2#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.base_for_char#0#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov rax, 16 ; (SET)
+ jmp utils.base_for_char#end
+ jmp utils.base_for_char#0#wrap#end
+utils.base_for_char#0#wrap#2#if#end:
+utils.base_for_char#0#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, 10 ; (SET)
+ jmp utils.base_for_char#end
+
+utils.base_for_char#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.decode_bin:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10b, al ; (SET)
+ cmp r10b, 49
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.decode_bin#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 1 ; (SET)
+ jmp utils.decode_bin#end
+ jmp utils.decode_bin#0#wrap#end
+utils.decode_bin#0#wrap#0#if#end:
+utils.decode_bin#0#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp utils.decode_bin#end
+
+utils.decode_bin#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.decode_oct:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10b, al ; (SET)
+ cmp r10b, 48
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.decode_oct#0#wrap#0#if#0#bool#end
+ cmp r10b, 55
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.decode_oct#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.decode_oct#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov bl, r10b ; (SET)
+ sub bl, 48 ; (STD_OP)
+ movzx rsi, bl ; (SET_PRM_R)
+ mov rax, rsi ; (SET)
+ jmp utils.decode_oct#end
+ jmp utils.decode_oct#0#wrap#end
+utils.decode_oct#0#wrap#0#if#end:
+utils.decode_oct#0#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp utils.decode_oct#end
+
+utils.decode_oct#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.decode_hex:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10b, al ; (SET)
+ cmp r10b, 48
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.decode_hex#0#wrap#0#if#0#bool#end
+ cmp r10b, 57
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.decode_hex#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.decode_hex#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov bl, r10b ; (SET)
+ sub bl, 48 ; (STD_OP)
+ movzx rsi, bl ; (SET_PRM_R)
+ mov rax, rsi ; (SET)
+ jmp utils.decode_hex#end
+ jmp utils.decode_hex#0#wrap#end
+utils.decode_hex#0#wrap#0#if#end:
+ cmp r10b, 97
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.decode_hex#0#wrap#1#if#0#bool#end
+ cmp r10b, 102
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.decode_hex#0#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.decode_hex#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov bl, r10b ; (SET)
+ sub bl, 97 ; (STD_OP)
+ movzx rsi, bl ; (SET_PRM_R)
+ mov rax, rsi ; (SET)
+ jmp utils.decode_hex#end
+ jmp utils.decode_hex#0#wrap#end
+utils.decode_hex#0#wrap#1#if#end:
+ cmp r10b, 65
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.decode_hex#0#wrap#2#if#0#bool#end
+ cmp r10b, 70
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.decode_hex#0#wrap#2#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.decode_hex#0#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov bl, r10b ; (SET)
+ sub bl, 65 ; (STD_OP)
+ movzx rsi, bl ; (SET_PRM_R)
+ mov rax, rsi ; (SET)
+ jmp utils.decode_hex#end
+ jmp utils.decode_hex#0#wrap#end
+utils.decode_hex#0#wrap#2#if#end:
+utils.decode_hex#0#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp utils.decode_hex#end
+
+utils.decode_hex#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.decode_dec:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10b, al ; (SET)
+ cmp r10b, 48
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.decode_dec#0#wrap#0#if#0#bool#end
+ cmp r10b, 57
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.decode_dec#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.decode_dec#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov bl, r10b ; (SET)
+ sub bl, 48 ; (STD_OP)
+ movzx rsi, bl ; (SET_PRM_R)
+ mov rax, rsi ; (SET)
+ jmp utils.decode_dec#end
+ jmp utils.decode_dec#0#wrap#end
+utils.decode_dec#0#wrap#0#if#end:
+utils.decode_dec#0#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp utils.decode_dec#end
+
+utils.decode_dec#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.cstr_to_int:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 10 ; (SET)
+ mov r12, 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strlen
+ mov r13, rax ; (SET)
+ mov r9, r12 ; (SET)
+ add r9, 2 ; (STD_OP)
+ cmp r13, r9
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.cstr_to_int#0#wrap#0#if#0#bool#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [rbp - 64] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rax ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 48
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+utils.cstr_to_int#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_int#0#wrap#0#if#end
+ mov r9, r10 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ add qword [rbp - 64], 1 ; (STD_OP)
+ ; Gen index
+ mov rax, qword [rbp - 64] ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r9 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r9, rax ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 57
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne utils.cstr_to_int#0#wrap#0#if#1#wrap#0#if#0#bool#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r12 ; (SET)
+ add qword [rbp - 72], 1 ; (STD_OP)
+ ; Gen index
+ mov rax, qword [rbp - 72] ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [rbp - 64] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rax ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 48
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+utils.cstr_to_int#0#wrap#0#if#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_int#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ mov r8, r12 ; (SET)
+ add r8, 1 ; (STD_OP)
+ ; Gen index
+ mov rax, r8 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.base_for_char
+ mov r11, rax ; (SET)
+ mov r12, 2 ; (SET)
+ jmp utils.cstr_to_int#0#wrap#0#if#1#wrap#end
+utils.cstr_to_int#0#wrap#0#if#1#wrap#0#if#end:
+utils.cstr_to_int#0#wrap#0#if#1#wrap#end:
+ jmp utils.cstr_to_int#0#wrap#end
+utils.cstr_to_int#0#wrap#0#if#end:
+utils.cstr_to_int#0#wrap#end:
+ mov r14, 0 ; (SET)
+ cmp r12, r13
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_int#1#loop#end
+utils.cstr_to_int#1#loop#start:
+ mov rbx, r14 ; (SET)
+ imul rbx, r11 ; (MUL)
+ mov r14, rbx ; (SET)
+ mov r15, 0 ; (SET)
+ cmp r11, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_int#1#loop#0#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.decode_bin
+ mov r15, rax ; (SET)
+ jmp utils.cstr_to_int#1#loop#0#wrap#end
+utils.cstr_to_int#1#loop#0#wrap#0#if#end:
+ cmp r11, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_int#1#loop#0#wrap#1#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.decode_oct
+ mov r15, rax ; (SET)
+ jmp utils.cstr_to_int#1#loop#0#wrap#end
+utils.cstr_to_int#1#loop#0#wrap#1#if#end:
+ cmp r11, 10
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_int#1#loop#0#wrap#2#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.decode_dec
+ mov r15, rax ; (SET)
+ jmp utils.cstr_to_int#1#loop#0#wrap#end
+utils.cstr_to_int#1#loop#0#wrap#2#if#end:
+ cmp r11, 16
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_int#1#loop#0#wrap#3#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.decode_hex
+ mov r15, rax ; (SET)
+ jmp utils.cstr_to_int#1#loop#0#wrap#end
+utils.cstr_to_int#1#loop#0#wrap#3#if#end:
+utils.cstr_to_int#1#loop#0#wrap#end:
+ mov rbx, r14 ; (SET)
+ add rbx, r15 ; (STD_OP)
+ mov r14, rbx ; (SET)
+utils.cstr_to_int#1#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ cmp r12, r13
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_int#1#loop#end
+ jmp utils.cstr_to_int#1#loop#start
+utils.cstr_to_int#1#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp utils.cstr_to_int#end
+
+utils.cstr_to_int#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.cstr_to_uint:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 10 ; (SET)
+ mov r12, 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strlen
+ mov r13, rax ; (SET)
+ mov r9, r12 ; (SET)
+ add r9, 2 ; (STD_OP)
+ cmp r13, r9
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.cstr_to_uint#0#wrap#0#if#0#bool#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [rbp - 64] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rax ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 48
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+utils.cstr_to_uint#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_uint#0#wrap#0#if#end
+ mov r9, r10 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ add qword [rbp - 64], 1 ; (STD_OP)
+ ; Gen index
+ mov rax, qword [rbp - 64] ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r9 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r9, rax ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 57
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne utils.cstr_to_uint#0#wrap#0#if#1#wrap#0#if#0#bool#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r12 ; (SET)
+ add qword [rbp - 72], 1 ; (STD_OP)
+ ; Gen index
+ mov rax, qword [rbp - 72] ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [rbp - 64] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rax ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 48
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+utils.cstr_to_uint#0#wrap#0#if#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_uint#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ mov r8, r12 ; (SET)
+ add r8, 1 ; (STD_OP)
+ ; Gen index
+ mov rax, r8 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.base_for_char
+ mov r11, rax ; (SET)
+ mov r12, 2 ; (SET)
+ jmp utils.cstr_to_uint#0#wrap#0#if#1#wrap#end
+utils.cstr_to_uint#0#wrap#0#if#1#wrap#0#if#end:
+utils.cstr_to_uint#0#wrap#0#if#1#wrap#end:
+ jmp utils.cstr_to_uint#0#wrap#end
+utils.cstr_to_uint#0#wrap#0#if#end:
+utils.cstr_to_uint#0#wrap#end:
+ mov r14, 0 ; (SET)
+ cmp r12, r13
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_uint#1#loop#end
+utils.cstr_to_uint#1#loop#start:
+ mov rbx, r14 ; (SET)
+ imul rbx, r11 ; (MUL)
+ mov r14, rbx ; (SET)
+ mov r15, 0 ; (SET)
+ cmp r11, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_uint#1#loop#0#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.decode_bin
+ mov r15, rax ; (SET)
+ jmp utils.cstr_to_uint#1#loop#0#wrap#end
+utils.cstr_to_uint#1#loop#0#wrap#0#if#end:
+ cmp r11, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_uint#1#loop#0#wrap#1#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.decode_oct
+ mov r15, rax ; (SET)
+ jmp utils.cstr_to_uint#1#loop#0#wrap#end
+utils.cstr_to_uint#1#loop#0#wrap#1#if#end:
+ cmp r11, 10
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_uint#1#loop#0#wrap#2#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.decode_dec
+ mov r15, rax ; (SET)
+ jmp utils.cstr_to_uint#1#loop#0#wrap#end
+utils.cstr_to_uint#1#loop#0#wrap#2#if#end:
+ cmp r11, 16
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_uint#1#loop#0#wrap#3#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbp - 57], sil ; (SET)
+ mov al, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.decode_hex
+ mov r15, rax ; (SET)
+ jmp utils.cstr_to_uint#1#loop#0#wrap#end
+utils.cstr_to_uint#1#loop#0#wrap#3#if#end:
+utils.cstr_to_uint#1#loop#0#wrap#end:
+ mov rbx, r14 ; (SET)
+ add rbx, r15 ; (STD_OP)
+ mov r14, rbx ; (SET)
+utils.cstr_to_uint#1#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ cmp r12, r13
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.cstr_to_uint#1#loop#end
+ jmp utils.cstr_to_uint#1#loop#start
+utils.cstr_to_uint#1#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp utils.cstr_to_uint#end
+
+utils.cstr_to_uint#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.reverse_str:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strlen
+ mov r12, rax ; (SET)
+ mov r13, 0 ; (SET)
+ mov r8, r12 ; (SET)
+ mov rcx, 2 ; (DIV)
+ mov rax, r8 ; (DIV)
+ cqo
+ idiv rcx
+ mov r8, rax ; (DIV)
+ cmp r13, r8
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.reverse_str#0#loop#end
+utils.reverse_str#0#loop#start:
+ mov rbx, r10 ; (SET)
+ ; Gen index
+ mov rax, r13 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r11b, byte [rax] ; (SET)
+ mov rbx, r10 ; (SET)
+ ; Gen index
+ mov rax, r13 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov rbx, rax ; (SET)
+ mov r8, r10 ; (SET)
+ mov r9, r12 ; (SET)
+ sub r9, 1 ; (STD_OP)
+ sub r9, r13 ; (STD_OP)
+ ; Gen index
+ mov rax, r9 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov sil, byte [rax] ; (SET_PRM_R)
+ mov byte [rbx], sil ; (SET)
+ mov rbx, r10 ; (SET)
+ mov r8, r12 ; (SET)
+ sub r8, 1 ; (STD_OP)
+ sub r8, r13 ; (STD_OP)
+ ; Gen index
+ mov rax, r8 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, rbx ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov rbx, rax ; (SET)
+ mov byte [rbx], r11b ; (SET)
+utils.reverse_str#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ mov r8, r12 ; (SET)
+ mov rcx, 2 ; (DIV)
+ mov rax, r8 ; (DIV)
+ cqo
+ idiv rcx
+ mov r8, rax ; (DIV)
+ cmp r13, r8
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.reverse_str#0#loop#end
+ jmp utils.reverse_str#0#loop#start
+utils.reverse_str#0#loop#end:
+
+utils.reverse_str#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.uint_to_hex_str:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov byte [rbp - 97], 48 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov bl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov byte [rbp - 97], 120 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov bl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ cmp r10, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.uint_to_hex_str#0#loop#end
+utils.uint_to_hex_str#0#loop#start:
+ mov rbx, r10 ; (SET)
+ mov rcx, 16 ; (DIV)
+ mov rax, rbx ; (DIV)
+ xor rdx, rdx
+ div rcx
+ mov rbx, rdx ; (DIV)
+ mov r11, rbx ; (SET)
+ cmp r11, 9
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.uint_to_hex_str#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov r8b, 65 ; (SET)
+ add r8b, r11b ; (STD_OP)
+ sub r8b, 10 ; (STD_OP)
+ mov byte [rbp - 105], r8b ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov bl, byte [rbp - 105] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ mov rbx, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ jmp utils.uint_to_hex_str#0#loop#0#wrap#end
+utils.uint_to_hex_str#0#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov r8b, 48 ; (SET)
+ add r8b, r11b ; (STD_OP)
+ mov byte [rbp - 105], r8b ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov bl, byte [rbp - 105] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ mov rbx, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ jmp utils.uint_to_hex_str#0#loop#0#wrap#end
+utils.uint_to_hex_str#0#loop#0#wrap#1#if#end:
+utils.uint_to_hex_str#0#loop#0#wrap#end:
+utils.uint_to_hex_str#0#loop#rep:
+ mov r8, r10 ; (SET)
+ mov rcx, 16 ; (DIV)
+ mov rax, r8 ; (DIV)
+ xor rdx, rdx
+ div rcx
+ mov r8, rax ; (DIV)
+ mov r10, r8 ; (SET)
+ cmp r10, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.uint_to_hex_str#0#loop#end
+ jmp utils.uint_to_hex_str#0#loop#start
+utils.uint_to_hex_str#0#loop#end:
+ mov rcx, qword [rbp - 80] ; (SET)
+ cmp rcx, 3
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.uint_to_hex_str#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov byte [rbp - 97], 48 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov bl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ jmp utils.uint_to_hex_str#1#wrap#end
+utils.uint_to_hex_str#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r11 ; (SET)
+ mov rcx, 1 ; (SET)
+ imul rcx, 2 ; (MUL)
+ add rbx, rcx ; (STD_OP)
+ mov qword [rbp - 96], rbx ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils.reverse_str
+ jmp utils.uint_to_hex_str#1#wrap#end
+utils.uint_to_hex_str#1#wrap#1#if#end:
+utils.uint_to_hex_str#1#wrap#end:
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp utils.uint_to_hex_str#end
+
+utils.uint_to_hex_str#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.int_to_str:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ cmp r10, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.int_to_str#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov byte [rbp - 97], 45 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov bl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ mov rbx, 0 ; (SET)
+ sub rbx, r10 ; (STD_OP)
+ mov r10, rbx ; (SET)
+ jmp utils.int_to_str#0#wrap#end
+utils.int_to_str#0#wrap#0#if#end:
+utils.int_to_str#0#wrap#end:
+ cmp r10, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.int_to_str#1#loop#end
+utils.int_to_str#1#loop#start:
+ mov rbx, r10 ; (SET)
+ mov rcx, 10 ; (DIV)
+ mov rax, rbx ; (DIV)
+ cqo
+ idiv rcx
+ mov rbx, rdx ; (DIV)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov r8b, 48 ; (SET)
+ add r8b, r11b ; (STD_OP)
+ mov byte [rbp - 105], r8b ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov bl, byte [rbp - 105] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ mov rbx, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+utils.int_to_str#1#loop#rep:
+ mov r8, r10 ; (SET)
+ mov rcx, 10 ; (DIV)
+ mov rax, r8 ; (DIV)
+ cqo
+ idiv rcx
+ mov r8, rax ; (DIV)
+ mov r10, r8 ; (SET)
+ cmp r10, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.int_to_str#1#loop#end
+ jmp utils.int_to_str#1#loop#start
+utils.int_to_str#1#loop#end:
+ mov rcx, qword [rbp - 80] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.int_to_str#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov byte [rbp - 97], 48 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov bl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ jmp utils.int_to_str#2#wrap#end
+utils.int_to_str#2#wrap#0#if#end:
+utils.int_to_str#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r11, rax ; (SET)
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 45
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.int_to_str#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r11 ; (SET)
+ mov rcx, 1 ; (SET)
+ imul rcx, 1 ; (MUL)
+ add rbx, rcx ; (STD_OP)
+ mov qword [rbp - 96], rbx ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils.reverse_str
+ jmp utils.int_to_str#3#wrap#end
+utils.int_to_str#3#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r11 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils.reverse_str
+ jmp utils.int_to_str#3#wrap#end
+utils.int_to_str#3#wrap#1#if#end:
+utils.int_to_str#3#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp utils.int_to_str#end
+
+utils.int_to_str#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.strcpy:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp utils.strcpy#end
+
+utils.strcpy#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.stradd:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r11 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp utils.stradd#end
+
+utils.stradd#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.unquote_cha:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 92
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.unquote_cha#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, byte [r10] ; (SET)
+ jmp utils.unquote_cha#end
+ jmp utils.unquote_cha#0#wrap#end
+utils.unquote_cha#0#wrap#0#if#end:
+utils.unquote_cha#0#wrap#end:
+ mov rbx, r10 ; (SET)
+ add r10, 1 ; (STD_OP)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 34
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.unquote_cha#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 34 ; (SET)
+ jmp utils.unquote_cha#end
+ jmp utils.unquote_cha#1#wrap#end
+utils.unquote_cha#1#wrap#0#if#end:
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 39
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.unquote_cha#1#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov al, 39 ; (SET)
+ jmp utils.unquote_cha#end
+ jmp utils.unquote_cha#1#wrap#end
+utils.unquote_cha#1#wrap#1#if#end:
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 92
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.unquote_cha#1#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov al, 92 ; (SET)
+ jmp utils.unquote_cha#end
+ jmp utils.unquote_cha#1#wrap#end
+utils.unquote_cha#1#wrap#2#if#end:
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 110
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.unquote_cha#1#wrap#3#if#end
+
+ ; STARTING RETURN
+ mov al, 10 ; (SET)
+ jmp utils.unquote_cha#end
+ jmp utils.unquote_cha#1#wrap#end
+utils.unquote_cha#1#wrap#3#if#end:
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 116
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.unquote_cha#1#wrap#4#if#end
+
+ ; STARTING RETURN
+ mov al, 9 ; (SET)
+ jmp utils.unquote_cha#end
+ jmp utils.unquote_cha#1#wrap#end
+utils.unquote_cha#1#wrap#4#if#end:
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 48
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.unquote_cha#1#wrap#5#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp utils.unquote_cha#end
+ jmp utils.unquote_cha#1#wrap#end
+utils.unquote_cha#1#wrap#5#if#end:
+utils.unquote_cha#1#wrap#end:
+
+ ; STARTING RETURN
+ mov al, byte [r10] ; (SET)
+ jmp utils.unquote_cha#end
+
+utils.unquote_cha#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils.unquote_str:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ mov rbx, r10 ; (SET)
+ add r10, 1 ; (STD_OP)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.unquote_str#0#loop#0#bool#end
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 34
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.unquote_str#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.unquote_str#0#loop#end
+utils.unquote_str#0#loop#start:
+ sub rsp, 1 ; Create stack space for local variable buf
+ mov sil, byte [r10] ; (SET_PRM_R)
+ mov byte [rbp - 89], sil ; (SET)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 92
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.unquote_str#0#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 97], r10 ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils.unquote_cha
+ mov byte [rbp - 89], al ; (SET)
+ mov rbx, r10 ; (SET)
+ add r10, 1 ; (STD_OP)
+ jmp utils.unquote_str#0#loop#1#wrap#end
+utils.unquote_str#0#loop#1#wrap#0#if#end:
+utils.unquote_str#0#loop#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+utils.unquote_str#0#loop#rep:
+ mov rbx, r10 ; (SET)
+ add r10, 1 ; (STD_OP)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils.unquote_str#0#loop#2#bool#end
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 34
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils.unquote_str#0#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils.unquote_str#0#loop#end
+ jmp utils.unquote_str#0#loop#start
+utils.unquote_str#0#loop#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ jmp utils.unquote_str#end
+
+utils.unquote_str#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel utils.VECTOR_MIN_ELEMENTS] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ imul r8, qword [rsi] ; (MUL)
+ mov qword [rbp - 72], r8 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _alloc
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+
+utils._#Vector.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.from_cstr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+utils._#Vector.from_cstr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector._grow:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ add r8, r11 ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ imul r8, qword [rsi] ; (MUL)
+ mov qword [rbp - 80], r8 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _realloc
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+
+utils._#Vector._grow#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.get:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.get#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp utils._#Vector.get#end
+ jmp utils._#Vector.get#0#wrap#end
+utils._#Vector.get#0#wrap#0#if#end:
+utils._#Vector.get#0#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, qword [rsi] ; (SET)
+ mov r8, r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ imul r8, qword [rsi] ; (MUL)
+ mov rcx, 1 ; (SET)
+ imul rcx, r8 ; (MUL)
+ add rbx, rcx ; (STD_OP)
+ mov rax, rbx ; (SET)
+ jmp utils._#Vector.get#end
+
+utils._#Vector.get#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.push:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r9, qword [rsi] ; (SET)
+ add r9, 1 ; (STD_OP)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, r9
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.push#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel utils.VECTOR_MAX_GROW]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.push#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector._grow
+ jmp utils._#Vector.push#0#wrap#0#if#0#wrap#end
+utils._#Vector.push#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel utils.VECTOR_MAX_GROW] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector._grow
+ jmp utils._#Vector.push#0#wrap#0#if#0#wrap#end
+utils._#Vector.push#0#wrap#0#if#0#wrap#1#if#end:
+utils._#Vector.push#0#wrap#0#if#0#wrap#end:
+ jmp utils._#Vector.push#0#wrap#end
+utils._#Vector.push#0#wrap#0#if#end:
+utils._#Vector.push#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ imul r8, qword [rsi] ; (MUL)
+ mov rcx, 1 ; (SET)
+ imul rcx, r8 ; (MUL)
+ add rbx, rcx ; (STD_OP)
+ mov r12, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils._#Vector.push#1#loop#end
+utils._#Vector.push#1#loop#start:
+ mov r8, r12 ; (SET)
+ mov rcx, 1 ; (SET)
+ imul rcx, r13 ; (MUL)
+ add r8, rcx ; (STD_OP)
+ mov r14, r8 ; (SET)
+ mov r9, r11 ; (SET)
+ mov rcx, 1 ; (SET)
+ imul rcx, r13 ; (MUL)
+ add r9, rcx ; (STD_OP)
+ mov r15, r9 ; (SET)
+ mov sil, byte [r15] ; (SET_PRM_R)
+ mov byte [r14], sil ; (SET)
+utils._#Vector.push#1#loop#rep:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ inc r13 ; (UNARY)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ cmp byte byte [rbp - 57], 0
+ je utils._#Vector.push#1#loop#end
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ jmp utils._#Vector.push#1#loop#start
+utils._#Vector.push#1#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ inc qword qword [rsi] ; (UNARY)
+
+utils._#Vector.push#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.replace:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.replace#0#wrap#0#if#end
+ jmp utils._#Vector.replace#end
+ jmp utils._#Vector.replace#0#wrap#end
+utils._#Vector.replace#0#wrap#0#if#end:
+utils._#Vector.replace#0#wrap#end:
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.replace#1#loop#end
+utils._#Vector.replace#1#loop#start:
+ mov rbx, r13 ; (SET)
+ mov rcx, 1 ; (SET)
+ imul rcx, r14 ; (MUL)
+ add rbx, rcx ; (STD_OP)
+ mov r15, rbx ; (SET)
+ mov r8, r12 ; (SET)
+ mov rcx, 1 ; (SET)
+ imul rcx, r14 ; (MUL)
+ add r8, rcx ; (STD_OP)
+ sub rsp, 8 ; Create stack space for local variable from
+ mov qword [rbp - 64], r8 ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [r15], sil ; (SET)
+utils._#Vector.replace#1#loop#rep:
+ mov r9, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je utils._#Vector.replace#1#loop#end
+ jmp utils._#Vector.replace#1#loop#start
+utils._#Vector.replace#1#loop#end:
+
+utils._#Vector.replace#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector._shrink:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector._shrink#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 1 ; (SET)
+ jmp utils._#Vector._shrink#0#wrap#end
+utils._#Vector._shrink#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ sub r8, r11 ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp utils._#Vector._shrink#0#wrap#end
+utils._#Vector._shrink#0#wrap#1#if#end:
+utils._#Vector._shrink#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ imul r8, qword [rsi] ; (MUL)
+ mov qword [rbp - 80], r8 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _realloc
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+
+utils._#Vector._shrink#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.pop:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.remove
+
+utils._#Vector.pop#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.remove:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ cmp r11, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne utils._#Vector.remove#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils._#Vector.remove#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.remove#0#wrap#0#if#end
+ jmp utils._#Vector.remove#end
+ jmp utils._#Vector.remove#0#wrap#end
+utils._#Vector.remove#0#wrap#0#if#end:
+utils._#Vector.remove#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.remove#1#wrap#0#if#end
+ mov rbx, r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ imul rbx, qword [rsi] ; (MUL)
+ mov r12, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r9, qword [rsi] ; (SET)
+ sub r9, 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ imul r9, qword [rsi] ; (MUL)
+ cmp r12, r9
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils._#Vector.remove#1#wrap#0#if#0#loop#end
+utils._#Vector.remove#1#wrap#0#if#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, qword [rsi] ; (SET)
+ mov rcx, 1 ; (SET)
+ imul rcx, r12 ; (MUL)
+ add r8, rcx ; (STD_OP)
+ mov r13, r8 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r9, qword [rsi] ; (SET)
+ mov rcx, 1 ; (SET)
+ imul rcx, r12 ; (MUL)
+ add r9, rcx ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rcx, 1 ; (SET)
+ imul rcx, qword [rsi] ; (MUL)
+ add r9, rcx ; (STD_OP)
+ mov r14, r9 ; (SET)
+ mov sil, byte [r14] ; (SET_PRM_R)
+ mov byte [r13], sil ; (SET)
+utils._#Vector.remove#1#wrap#0#if#0#loop#rep:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ inc r12 ; (UNARY)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ sub qword [rbp - 65], 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov rax, qword [rbp - 65] ; (MUL)
+ imul rax, rsi ; (MUL)
+ mov qword [rbp - 65], rax ; (MUL)
+ cmp r12, qword [rbp - 65]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 57], 0
+ je utils._#Vector.remove#1#wrap#0#if#0#loop#end
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ jmp utils._#Vector.remove#1#wrap#0#if#0#loop#start
+utils._#Vector.remove#1#wrap#0#if#0#loop#end:
+ jmp utils._#Vector.remove#1#wrap#end
+utils._#Vector.remove#1#wrap#0#if#end:
+utils._#Vector.remove#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ dec qword qword [rsi] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r9, qword [rsi] ; (SET)
+ mov rcx, 2 ; (DIV)
+ mov rax, r9 ; (DIV)
+ xor rdx, rdx
+ div rcx
+ mov r9, rax ; (DIV)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, r9
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.remove#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ mov rcx, 3 ; (DIV)
+ mov rax, rbx ; (DIV)
+ xor rdx, rdx
+ div rcx
+ mov rbx, rax ; (DIV)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector._shrink
+ jmp utils._#Vector.remove#2#wrap#end
+utils._#Vector.remove#2#wrap#0#if#end:
+utils._#Vector.remove#2#wrap#end:
+
+utils._#Vector.remove#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.push_char:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable ch
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ lea rsi, byte [rbp - 57] ; (TAKE_PTR)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+
+utils._#Vector.push_char#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.push_cstr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.push_cstr#0#loop#end
+utils._#Vector.push_cstr#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+utils._#Vector.push_cstr#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ add r11, 1 ; (STD_OP)
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.push_cstr#0#loop#end
+ jmp utils._#Vector.push_cstr#0#loop#start
+utils._#Vector.push_cstr#0#loop#end:
+
+utils._#Vector.push_cstr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.as_cstr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, 1 ; (SET)
+ imul rcx, qword [rsi] ; (MUL)
+ add rbx, rcx ; (STD_OP)
+ mov r11, rbx ; (SET)
+ mov byte [r11], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rax, qword [rsi] ; (SET)
+ jmp utils._#Vector.as_cstr#end
+
+utils._#Vector.as_cstr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+utils._#Vector.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.copy:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.copy#0#loop#end
+utils._#Vector.copy#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r11 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+utils._#Vector.copy#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.copy#0#loop#end
+ jmp utils._#Vector.copy#0#loop#start
+utils._#Vector.copy#0#loop#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ jmp utils._#Vector.copy#end
+
+utils._#Vector.copy#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Vector.back:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Vector.back#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rax, rax ; (SET)
+ jmp utils._#Vector.back#end
+ jmp utils._#Vector.back#0#wrap#end
+utils._#Vector.back#0#wrap#0#if#end:
+utils._#Vector.back#0#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp utils._#Vector.back#end
+
+utils._#Vector.back#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Artifact.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel utils.VECTOR_MIN_ELEMENTS] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov r8, 8 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ imul r8, qword [rsi] ; (MUL)
+ mov qword [rbp - 72], r8 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _alloc
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+
+utils._#Artifact.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Artifact.split_cstr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12b, cl ; (SET)
+ sub rsp, 32 ; Create stack space for local variable track
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.split_cstr#0#loop#end
+utils._#Artifact.split_cstr#0#loop#start:
+ mov cl, byte [r11] ; (SET)
+ cmp cl, r12b
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.split_cstr#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 112], rax ; (SET)
+ mov rax, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 104] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 104], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.push
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ jmp utils._#Artifact.split_cstr#0#loop#0#wrap#end
+utils._#Artifact.split_cstr#0#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r11 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp utils._#Artifact.split_cstr#0#loop#0#wrap#end
+utils._#Artifact.split_cstr#0#loop#0#wrap#1#if#end:
+utils._#Artifact.split_cstr#0#loop#0#wrap#end:
+utils._#Artifact.split_cstr#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ add r11, 1 ; (STD_OP)
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.split_cstr#0#loop#end
+ jmp utils._#Artifact.split_cstr#0#loop#start
+utils._#Artifact.split_cstr#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 112], rax ; (SET)
+ mov rax, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 104] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 104], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.push
+
+utils._#Artifact.split_cstr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Artifact._grow:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ add r8, r11 ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ imul r8, 8 ; (MUL)
+ mov qword [rbp - 80], r8 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _realloc
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+
+utils._#Artifact._grow#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Artifact.push:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r9, qword [rsi] ; (SET)
+ add r9, 1 ; (STD_OP)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, r9
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.push#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel utils.VECTOR_MAX_GROW]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.push#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact._grow
+ jmp utils._#Artifact.push#0#wrap#0#if#0#wrap#end
+utils._#Artifact.push#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel utils.VECTOR_MAX_GROW] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact._grow
+ jmp utils._#Artifact.push#0#wrap#0#if#0#wrap#end
+utils._#Artifact.push#0#wrap#0#if#0#wrap#1#if#end:
+utils._#Artifact.push#0#wrap#0#if#0#wrap#end:
+ jmp utils._#Artifact.push#0#wrap#end
+utils._#Artifact.push#0#wrap#0#if#end:
+utils._#Artifact.push#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rdi, rsi ; idx
+ ; Gen index
+ mov rax, qword [rdi] ; (SET)
+ imul rax, 8 ; (MUL)
+ mov rsi, qword [rbx] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov rbx, rax ; (SET)
+ mov qword [rbx], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ inc qword qword [rsi] ; (UNARY)
+
+utils._#Artifact.push#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Artifact._shrink:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact._shrink#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 1 ; (SET)
+ jmp utils._#Artifact._shrink#0#wrap#end
+utils._#Artifact._shrink#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ sub r8, r11 ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp utils._#Artifact._shrink#0#wrap#end
+utils._#Artifact._shrink#0#wrap#1#if#end:
+utils._#Artifact._shrink#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ imul r8, 8 ; (MUL)
+ mov qword [rbp - 80], r8 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _realloc
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+
+utils._#Artifact._shrink#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Artifact.pop:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 80], rbx ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.get
+ mov qword [rbp - 64], rax ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ dec qword qword [rsi] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r9, qword [rsi] ; (SET)
+ mov rcx, 2 ; (DIV)
+ mov rax, r9 ; (DIV)
+ xor rdx, rdx
+ div rcx
+ mov r9, rax ; (DIV)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, r9
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.pop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ mov rcx, 3 ; (DIV)
+ mov rax, rbx ; (DIV)
+ xor rdx, rdx
+ div rcx
+ mov rbx, rax ; (DIV)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact._shrink
+ jmp utils._#Artifact.pop#0#wrap#end
+utils._#Artifact.pop#0#wrap#0#if#end:
+utils._#Artifact.pop#0#wrap#end:
+
+utils._#Artifact.pop#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Artifact.get:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.get#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp utils._#Artifact.get#end
+ jmp utils._#Artifact.get#0#wrap#end
+utils._#Artifact.get#0#wrap#0#if#end:
+utils._#Artifact.get#0#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ ; Gen index
+ mov rax, r11 ; (SET)
+ imul rax, 8 ; (MUL)
+ mov rsi, qword [rbx] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov rax, qword [rax] ; (SET)
+ jmp utils._#Artifact.get#end
+
+utils._#Artifact.get#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Artifact.to_cstr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable join
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 89] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ mov qword [rbp - 105], 1 ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.to_cstr#0#loop#end
+utils._#Artifact.to_cstr#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 89] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 113], r10 ; (SET)
+ mov qword [rbp - 121], r11 ; (SET)
+ mov rax, qword [rbp - 113] ; (SET)
+ mov rbx, qword [rbp - 121] ; (SET)
+ lea rsp, [rbp - 105] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.get
+ mov qword [rbp - 105], rax ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ sub r8, 1 ; (STD_OP)
+ cmp r11, r8
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.to_cstr#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 89] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 57] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp utils._#Artifact.to_cstr#0#loop#0#wrap#end
+utils._#Artifact.to_cstr#0#loop#0#wrap#0#if#end:
+utils._#Artifact.to_cstr#0#loop#0#wrap#end:
+utils._#Artifact.to_cstr#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.to_cstr#0#loop#end
+ jmp utils._#Artifact.to_cstr#0#loop#start
+utils._#Artifact.to_cstr#0#loop#end:
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 89] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp utils._#Artifact.to_cstr#end
+
+utils._#Artifact.to_cstr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Artifact.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.end#0#loop#end
+utils._#Artifact.end#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.get
+ mov qword [rbp - 64], rax ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+utils._#Artifact.end#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Artifact.end#0#loop#end
+ jmp utils._#Artifact.end#0#loop#start
+utils._#Artifact.end#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+utils._#Artifact.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#File.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov byte [rbp - 73], 47 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov cl, byte [rbp - 73] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.split_cstr
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov dword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov ebx, dword [rsi] ; (SET)
+ dec dword dword [rsi] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov byte [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 28 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+
+utils._#File.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#File.relative:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov byte [rbp - 65], 47 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.to_cstr
+ mov r12, rax ; (SET)
+ sub rsp, 37 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 93] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 101], rax ; (SET)
+ mov qword [rbp - 109], r12 ; (SET)
+ mov rax, qword [rbp - 101] ; (SET)
+ mov rbx, qword [rbp - 109] ; (SET)
+ lea rsp, [rbp - 93] ; Free stack space (freeing tmp variables)
+ call utils._#File.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 101], r12 ; (SET)
+ mov rax, qword [rbp - 101] ; (SET)
+ lea rsp, [rbp - 93] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 93] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 101], rax ; (SET)
+ mov rax, qword [rbp - 101] ; (SET)
+ lea rsp, [rbp - 93] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.pop
+ sub rsp, 24 ; Create stack space for local variable add
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 117] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 125], rax ; (SET)
+ mov rax, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 117] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 117] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 125], rax ; (SET)
+ mov qword [rbp - 133], r11 ; (SET)
+ mov byte [rbp - 134], 47 ; (SET)
+ mov rax, qword [rbp - 125] ; (SET)
+ mov rbx, qword [rbp - 133] ; (SET)
+ mov cl, byte [rbp - 134] ; (SET)
+ lea rsp, [rbp - 117] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.split_cstr
+ mov r13, 0 ; (SET)
+ cmp r13, qword [rbp - 101]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.relative#0#loop#end
+utils._#File.relative#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 117] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 125], rax ; (SET)
+ mov qword [rbp - 133], r13 ; (SET)
+ mov rax, qword [rbp - 125] ; (SET)
+ mov rbx, qword [rbp - 133] ; (SET)
+ lea rsp, [rbp - 117] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.get
+ mov r14, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 118], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 126], r14 ; (SET)
+ mov rsi, qword [rel utils.CURRENT_DIR] ; (SET_PRM_R)
+ mov qword [rbp - 134], rsi ; (SET)
+ mov rax, qword [rbp - 126] ; (SET)
+ mov rbx, qword [rbp - 134] ; (SET)
+ lea rsp, [rbp - 118] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 118] ; (SET)
+ lea rsp, [rbp - 117] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.relative#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 93] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 125], rax ; (SET)
+ mov qword [rbp - 133], r14 ; (SET)
+ mov byte [rbp - 134], 47 ; (SET)
+ mov rax, qword [rbp - 125] ; (SET)
+ mov rbx, qword [rbp - 133] ; (SET)
+ mov cl, byte [rbp - 134] ; (SET)
+ lea rsp, [rbp - 117] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.split_cstr
+ jmp utils._#File.relative#0#loop#0#wrap#end
+utils._#File.relative#0#loop#0#wrap#0#if#end:
+utils._#File.relative#0#loop#0#wrap#end:
+utils._#File.relative#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ cmp r13, qword [rbp - 101]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.relative#0#loop#end
+ jmp utils._#File.relative#0#loop#start
+utils._#File.relative#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 117] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 125], rax ; (SET)
+ mov rax, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 117] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 93] ; initial struct addr move (SET_STR_R)
+ mov rcx, 37 ; size of struct [File] in bytes
+ rep movsb ; move struct
+ jmp utils._#File.relative#end
+
+utils._#File.relative#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#File.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8d, dword [rsi] ; (SET)
+ add r8d, 1 ; (STD_OP)
+ cmp r8d, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.end#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ movsxd rsi, dword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _close_file
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov dword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov ebx, dword [rsi] ; (SET)
+ dec dword dword [rsi] ; (UNARY)
+ jmp utils._#File.end#0#wrap#end
+utils._#File.end#0#wrap#0#if#end:
+utils._#File.end#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.end
+
+utils._#File.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#File.open:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov byte [rbp - 65], 47 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.to_cstr
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _open_file
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov dword [rbx], eax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8d, dword [rsi] ; (SET)
+ add r8d, 1 ; (STD_OP)
+ cmp r8d, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.open#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov byte [rbx], 1 ; (SET)
+ jmp utils._#File.open#0#wrap#end
+utils._#File.open#0#wrap#0#if#end:
+utils._#File.open#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+utils._#File.open#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#File.create:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov byte [rbp - 65], 47 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.to_cstr
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _create_file
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov dword [rbx], eax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8d, dword [rsi] ; (SET)
+ add r8d, 1 ; (STD_OP)
+ cmp r8d, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.create#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov byte [rbx], 1 ; (SET)
+ jmp utils._#File.create#0#wrap#end
+utils._#File.create#0#wrap#0#if#end:
+utils._#File.create#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+utils._#File.create#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#File.close:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8d, dword [rsi] ; (SET)
+ add r8d, 1 ; (STD_OP)
+ cmp r8d, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.close#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ movsxd rsi, dword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _close_file
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov dword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov ebx, dword [rsi] ; (SET)
+ dec dword dword [rsi] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov byte [rbx], 0 ; (SET)
+ jmp utils._#File.close#0#wrap#end
+utils._#File.close#0#wrap#0#if#end:
+utils._#File.close#0#wrap#end:
+
+utils._#File.close#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#File.read:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.read#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp utils._#File.read#end
+ jmp utils._#File.read#0#wrap#end
+utils._#File.read#0#wrap#0#if#end:
+utils._#File.read#0#wrap#end:
+ sub rsp, 1 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ movsxd rsi, dword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ lea rsi, byte [rbp - 57] ; (TAKE_PTR)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call _read_byte
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 28 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 28 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ add r8, 1 ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ cmp r11, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.read#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov byte [rbx], 1 ; (SET)
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp utils._#File.read#end
+ jmp utils._#File.read#1#wrap#end
+utils._#File.read#1#wrap#0#if#end:
+ cmp r11, 1
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.read#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel utils._#File.read#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call _perror
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel utils._#File.read#1#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ movsxd rsi, dword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call _print_num
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov byte [rbx], 1 ; (SET)
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp utils._#File.read#end
+ jmp utils._#File.read#1#wrap#end
+utils._#File.read#1#wrap#1#if#end:
+utils._#File.read#1#wrap#end:
+
+ ; STARTING RETURN
+ mov al, byte [rbp - 57] ; (SET)
+ jmp utils._#File.read#end
+
+utils._#File.read#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#File.unread:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 28 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.unread#0#wrap#0#if#end
+ jmp utils._#File.unread#end
+ jmp utils._#File.unread#0#wrap#end
+utils._#File.unread#0#wrap#0#if#end:
+utils._#File.unread#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 28 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 28 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ sub r8, 1 ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ movsxd rsi, dword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 28 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _fseek
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.unread#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov byte [rbx], 0 ; (SET)
+ jmp utils._#File.unread#1#wrap#end
+utils._#File.unread#1#wrap#0#if#end:
+utils._#File.unread#1#wrap#end:
+
+utils._#File.unread#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#File.write:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable byte
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ movsxd rsi, dword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ lea rsi, byte [rbp - 57] ; (TAKE_PTR)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call _write_byte
+ mov r11, rax ; (SET)
+ cmp r11, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.write#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov byte [rbx], 1 ; (SET)
+ jmp utils._#File.write#0#wrap#end
+utils._#File.write#0#wrap#0#if#end:
+utils._#File.write#0#wrap#end:
+
+utils._#File.write#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#File.write_cstr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils._#File.write_cstr#0#loop#0#bool#end
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils._#File.write_cstr#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.write_cstr#0#loop#end
+utils._#File.write_cstr#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov sil, byte [r11] ; (SET_PRM_R)
+ mov byte [rbp - 65], sil ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.write
+utils._#File.write_cstr#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ add r11, 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je utils._#File.write_cstr#0#loop#1#bool#end
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+utils._#File.write_cstr#0#loop#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#File.write_cstr#0#loop#end
+ jmp utils._#File.write_cstr#0#loop#start
+utils._#File.write_cstr#0#loop#end:
+
+utils._#File.write_cstr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Iterator.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+
+utils._#Iterator.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Iterator.get:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rax, rax ; (SET)
+ jmp utils._#Iterator.get#end
+
+utils._#Iterator.get#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Iterator.next:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ add r8, 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r8, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Iterator.next#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ inc qword qword [rsi] ; (UNARY)
+ jmp utils._#Iterator.next#0#wrap#end
+utils._#Iterator.next#0#wrap#0#if#end:
+utils._#Iterator.next#0#wrap#end:
+
+utils._#Iterator.next#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Iterator.at_end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ add r8, 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r8, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp utils._#Iterator.at_end#end
+
+utils._#Iterator.at_end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Iterator.prev:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je utils._#Iterator.prev#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ dec qword qword [rsi] ; (UNARY)
+ jmp utils._#Iterator.prev#0#wrap#end
+utils._#Iterator.prev#0#wrap#0#if#end:
+utils._#Iterator.prev#0#wrap#end:
+
+utils._#Iterator.prev#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Iterator.get_pos:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp utils._#Iterator.get_pos#end
+
+utils._#Iterator.get_pos#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+utils._#Iterator.set_pos:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r11 ; (SET)
+
+utils._#Iterator.set_pos#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._in_csv:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, 0 ; (SET)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._in_csv#0#loop#end
+parse._in_csv#0#loop#start:
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 44
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._in_csv#0#loop#0#wrap#0#if#end
+ cmp r12, 0
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._in_csv#0#loop#0#wrap#0#if#0#wrap#0#if#0#bool#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [rbp - 64] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rax ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._in_csv#0#loop#0#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._in_csv#0#loop#0#wrap#0#if#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._in_csv#end
+ jmp parse._in_csv#0#loop#0#wrap#0#if#0#wrap#end
+parse._in_csv#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+parse._in_csv#0#loop#0#wrap#0#if#0#wrap#end:
+ mov r12, 0 ; (SET)
+ jmp parse._in_csv#0#loop#0#wrap#end
+parse._in_csv#0#loop#0#wrap#0#if#end:
+ cmp r12, 0
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._in_csv#0#loop#0#wrap#1#if#0#bool#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [rbp - 64] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rax ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, byte [r10]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._in_csv#0#loop#0#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._in_csv#0#loop#0#wrap#1#if#end
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ jmp parse._in_csv#0#loop#0#wrap#end
+parse._in_csv#0#loop#0#wrap#1#if#end:
+ mov r12, 0 ; (SET)
+ mov rbx, r12 ; (SET)
+ dec r12 ; (UNARY)
+ jmp parse._in_csv#0#loop#0#wrap#end
+parse._in_csv#0#loop#0#wrap#2#if#end:
+parse._in_csv#0#loop#0#wrap#end:
+parse._in_csv#0#loop#rep:
+ mov rbx, r10 ; (SET)
+ add r10, 1 ; (STD_OP)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._in_csv#0#loop#end
+ jmp parse._in_csv#0#loop#start
+parse._in_csv#0#loop#end:
+
+ ; STARTING RETURN
+ cmp r12, 0
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._in_csv#1#bool#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; Gen index
+ mov rax, r12 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [rbp - 64] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rax ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._in_csv#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp parse._in_csv#end
+
+parse._in_csv#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._str_contains:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11b, bl ; (SET)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._str_contains#0#loop#end
+parse._str_contains#0#loop#start:
+ mov cl, byte [r10] ; (SET)
+ cmp cl, r11b
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._str_contains#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._str_contains#end
+ jmp parse._str_contains#0#loop#0#wrap#end
+parse._str_contains#0#loop#0#wrap#0#if#end:
+parse._str_contains#0#loop#0#wrap#end:
+parse._str_contains#0#loop#rep:
+ mov rbx, r10 ; (SET)
+ add r10, 1 ; (STD_OP)
+ mov cl, byte [r10] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._str_contains#0#loop#end
+ jmp parse._str_contains#0#loop#start
+parse._str_contains#0#loop#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._str_contains#end
+
+parse._str_contains#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.produce_word_token:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable prev
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 32 ; Create stack space for local variable out
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rsi, qword [rel parse.TTYPE_USRWD] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rax ; (SET)
+ mov qword [rbp - 168], 1 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ sub rsp, 1 ; Create stack space for local variable ch
+ mov byte [rbp - 153], al ; (SET)
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse.produce_word_token#0#loop#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 156], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 157], r9b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 158], sil ; (SET)
+ mov al, byte [rbp - 158] ; (SET)
+ lea rsp, [rbp - 157] ; Free stack space (freeing tmp variables)
+ call parse.is_reserved
+ mov r9b, byte [rbp - 157] ; (SET)
+ mov r8b, byte [rbp - 156] ; (SET)
+ mov bl, byte [rbp - 155] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], al ; (SET)
+ mov cl, byte [rbp - 155] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 154], al ; Mov after compare
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 154], 0
+parse.produce_word_token#0#loop#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse.produce_word_token#0#loop#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 156], r9b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 157], sil ; (SET)
+ mov al, byte [rbp - 157] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse.is_whitespace
+ mov r9b, byte [rbp - 156] ; (SET)
+ mov r8b, byte [rbp - 155] ; (SET)
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], al ; (SET)
+ mov cl, byte [rbp - 154] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse.produce_word_token#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_word_token#0#loop#end
+parse.produce_word_token#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ lea rsi, byte [rbp - 153] ; (TAKE_PTR)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov byte [rbp - 153], al ; (SET)
+parse.produce_word_token#0#loop#rep:
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse.produce_word_token#0#loop#3#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 156], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 157], r9b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 158], sil ; (SET)
+ mov al, byte [rbp - 158] ; (SET)
+ lea rsp, [rbp - 157] ; Free stack space (freeing tmp variables)
+ call parse.is_reserved
+ mov r9b, byte [rbp - 157] ; (SET)
+ mov r8b, byte [rbp - 156] ; (SET)
+ mov bl, byte [rbp - 155] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], al ; (SET)
+ mov cl, byte [rbp - 155] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 154], al ; Mov after compare
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 154], 0
+parse.produce_word_token#0#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse.produce_word_token#0#loop#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 156], r9b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 157], sil ; (SET)
+ mov al, byte [rbp - 157] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse.is_whitespace
+ mov r9b, byte [rbp - 156] ; (SET)
+ mov r8b, byte [rbp - 155] ; (SET)
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], al ; (SET)
+ mov cl, byte [rbp - 154] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse.produce_word_token#0#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_word_token#0#loop#end
+ jmp parse.produce_word_token#0#loop#start
+parse.produce_word_token#0#loop#end:
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_word_token#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.unread
+ jmp parse.produce_word_token#1#wrap#end
+parse.produce_word_token#1#wrap#0#if#end:
+parse.produce_word_token#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 112], rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.KEYWORDS] ; (SET_PRM_R)
+ mov qword [rbp - 162], rsi ; (SET)
+ mov rsi, qword [rbp - 112] ; (SET_PRM_R)
+ mov qword [rbp - 170], rsi ; (SET)
+ mov rax, qword [rbp - 162] ; (SET)
+ mov rbx, qword [rbp - 170] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_word_token#2#wrap#0#if#end
+ mov rsi, qword [rel parse.TTYPE_KEYWD] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ jmp parse.produce_word_token#2#wrap#end
+parse.produce_word_token#2#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.KEYTYPES] ; (SET_PRM_R)
+ mov qword [rbp - 162], rsi ; (SET)
+ mov rsi, qword [rbp - 112] ; (SET_PRM_R)
+ mov qword [rbp - 170], rsi ; (SET)
+ mov rax, qword [rbp - 162] ; (SET)
+ mov rbx, qword [rbp - 170] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_word_token#2#wrap#1#if#end
+ mov rsi, qword [rel parse.TTYPE_KEYTP] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ jmp parse.produce_word_token#2#wrap#end
+parse.produce_word_token#2#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.LITERALS] ; (SET_PRM_R)
+ mov qword [rbp - 162], rsi ; (SET)
+ mov rsi, qword [rbp - 112] ; (SET_PRM_R)
+ mov qword [rbp - 170], rsi ; (SET)
+ mov rax, qword [rbp - 162] ; (SET)
+ mov rbx, qword [rbp - 170] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_word_token#2#wrap#2#if#end
+ mov rsi, qword [rel parse.TTYPE_LITRL] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ jmp parse.produce_word_token#2#wrap#end
+parse.produce_word_token#2#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.MULTI_OP_W] ; (SET_PRM_R)
+ mov qword [rbp - 162], rsi ; (SET)
+ mov rsi, qword [rbp - 112] ; (SET_PRM_R)
+ mov qword [rbp - 170], rsi ; (SET)
+ mov rax, qword [rbp - 162] ; (SET)
+ mov rbx, qword [rbp - 170] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_word_token#2#wrap#3#if#end
+ mov rsi, qword [rel parse.TTYPE_AUG] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ jmp parse.produce_word_token#2#wrap#end
+parse.produce_word_token#2#wrap#3#if#end:
+parse.produce_word_token#2#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_word_token#end
+
+parse.produce_word_token#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.produce_string_token:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable prev
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 32 ; Create stack space for local variable out
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rsi, qword [rel parse.TTYPE_LITRL] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rax ; (SET)
+ mov qword [rbp - 168], 1 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ sub rsp, 1 ; Create stack space for local variable delim
+ mov byte [rbp - 153], al ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ lea rsi, byte [rbp - 153] ; (TAKE_PTR)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.produce_string_token#0#loop#0#bool#end
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.produce_string_token#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_string_token#0#loop#end
+parse.produce_string_token#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ sub rsp, 1 ; Create stack space for local variable ch
+ mov byte [rbp - 154], al ; (SET)
+ mov cl, byte [rbp - 154] ; (SET)
+ cmp cl, 92
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_string_token#0#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 162], rax ; (SET)
+ lea rsi, byte [rbp - 154] ; (TAKE_PTR)
+ mov qword [rbp - 170], rsi ; (SET)
+ mov rax, qword [rbp - 162] ; (SET)
+ mov rbx, qword [rbp - 170] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 162], r10 ; (SET)
+ mov rax, qword [rbp - 162] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov byte [rbp - 154], al ; (SET)
+ jmp parse.produce_string_token#0#loop#1#wrap#end
+parse.produce_string_token#0#loop#1#wrap#0#if#end:
+ mov cl, byte [rbp - 154] ; (SET)
+ cmp cl, 10
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_string_token#0#loop#1#wrap#1#if#end
+ mov rbx, qword [rbp - 104] ; (SET)
+ inc qword qword [rbp - 104] ; (UNARY)
+ jmp parse.produce_string_token#0#loop#1#wrap#end
+parse.produce_string_token#0#loop#1#wrap#1#if#end:
+ mov cl, byte [rbp - 154] ; (SET)
+ cmp cl, byte [rbp - 153]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_string_token#0#loop#1#wrap#2#if#end
+ mov byte [rbp - 153], 0 ; (SET)
+ jmp parse.produce_string_token#0#loop#1#wrap#end
+parse.produce_string_token#0#loop#1#wrap#2#if#end:
+parse.produce_string_token#0#loop#1#wrap#end:
+ mov cl, byte [rbp - 154] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_string_token#0#loop#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 162], rax ; (SET)
+ lea rsi, byte [rbp - 154] ; (TAKE_PTR)
+ mov qword [rbp - 170], rsi ; (SET)
+ mov rax, qword [rbp - 162] ; (SET)
+ mov rbx, qword [rbp - 170] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp parse.produce_string_token#0#loop#2#wrap#end
+parse.produce_string_token#0#loop#2#wrap#0#if#end:
+parse.produce_string_token#0#loop#2#wrap#end:
+parse.produce_string_token#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.produce_string_token#0#loop#3#bool#end
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.produce_string_token#0#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_string_token#0#loop#end
+ jmp parse.produce_string_token#0#loop#start
+parse.produce_string_token#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 112], rax ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_string_token#end
+
+parse.produce_string_token#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.comment_line:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov r11b, al ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.comment_line#0#loop#0#bool#end
+ cmp r11b, 10
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.comment_line#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.comment_line#0#loop#end
+parse.comment_line#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov r11b, al ; (SET)
+parse.comment_line#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.comment_line#0#loop#1#bool#end
+ cmp r11b, 10
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.comment_line#0#loop#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.comment_line#0#loop#end
+ jmp parse.comment_line#0#loop#start
+parse.comment_line#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.comment_line#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.unread
+ jmp parse.comment_line#1#wrap#end
+parse.comment_line#1#wrap#0#if#end:
+parse.comment_line#1#wrap#end:
+
+parse.comment_line#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.comment_block:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12b, 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.comment_block#0#loop#0#bool#end
+ cmp r12b, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.comment_block#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.comment_block#0#loop#end
+parse.comment_block#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov r12b, al ; (SET)
+ cmp r12b, 35
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.comment_block#0#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov r12b, al ; (SET)
+ cmp r12b, 47
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.comment_block#0#loop#1#wrap#0#if#0#wrap#0#if#end
+ mov r12b, 0 ; (SET)
+ jmp parse.comment_block#0#loop#1#wrap#0#if#0#wrap#end
+parse.comment_block#0#loop#1#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse.comment_line
+ jmp parse.comment_block#0#loop#1#wrap#0#if#0#wrap#end
+parse.comment_block#0#loop#1#wrap#0#if#0#wrap#1#if#end:
+parse.comment_block#0#loop#1#wrap#0#if#0#wrap#end:
+ jmp parse.comment_block#0#loop#1#wrap#end
+parse.comment_block#0#loop#1#wrap#0#if#end:
+parse.comment_block#0#loop#1#wrap#end:
+ cmp r12b, 10
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.comment_block#0#loop#2#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ inc qword qword [rsi] ; (UNARY)
+ jmp parse.comment_block#0#loop#2#wrap#end
+parse.comment_block#0#loop#2#wrap#0#if#end:
+parse.comment_block#0#loop#2#wrap#end:
+parse.comment_block#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.comment_block#0#loop#3#bool#end
+ cmp r12b, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.comment_block#0#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.comment_block#0#loop#end
+ jmp parse.comment_block#0#loop#start
+parse.comment_block#0#loop#end:
+
+parse.comment_block#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.is_comment_block:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel parse.is_comment_block#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov al, al ; (SET)
+ jmp parse.is_comment_block#end
+
+parse.is_comment_block#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.is_multi_delim:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rsi, qword [rel parse.is_multi_delim#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.is_multi_delim#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse.is_multi_delim#end
+ jmp parse.is_multi_delim#0#wrap#end
+parse.is_multi_delim#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rsi, qword [rel parse.is_multi_delim#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.is_multi_delim#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse.is_multi_delim#end
+ jmp parse.is_multi_delim#0#wrap#end
+parse.is_multi_delim#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rsi, qword [rel parse.is_multi_delim#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.is_multi_delim#0#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse.is_multi_delim#end
+ jmp parse.is_multi_delim#0#wrap#end
+parse.is_multi_delim#0#wrap#2#if#end:
+parse.is_multi_delim#0#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse.is_multi_delim#end
+
+parse.is_multi_delim#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.produce_reserved_token:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable prev
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 32 ; Create stack space for local variable out
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rsi, qword [rel parse.TTYPE_USRWD] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rax ; (SET)
+ mov qword [rbp - 168], 1 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ sub rsp, 1 ; Create stack space for local variable ch
+ mov byte [rbp - 153], al ; (SET)
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 35
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ lea rsi, byte [rbp - 153] ; (TAKE_PTR)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ mov rsi, qword [rel parse.TTYPE_COMNT] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 112], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call parse.comment_line
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_reserved_token#end
+ jmp parse.produce_reserved_token#0#wrap#end
+parse.produce_reserved_token#0#wrap#0#if#end:
+parse.produce_reserved_token#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ lea rsi, byte [rbp - 153] ; (TAKE_PTR)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ mov r11, 1 ; (SET)
+ cmp r11, qword [rel parse.MAX_MULTI]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#1#loop#end
+parse.produce_reserved_token#1#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov byte [rbp - 153], al ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 155], sil ; (SET)
+ mov al, byte [rbp - 155] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call parse.is_reserved
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#1#loop#0#wrap#0#if#end
+ mov r11, qword [rel parse.MAX_MULTI] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.unread
+ jmp parse.produce_reserved_token#1#loop#0#wrap#end
+parse.produce_reserved_token#1#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ lea rsi, byte [rbp - 153] ; (TAKE_PTR)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp parse.produce_reserved_token#1#loop#0#wrap#end
+parse.produce_reserved_token#1#loop#0#wrap#1#if#end:
+parse.produce_reserved_token#1#loop#0#wrap#end:
+parse.produce_reserved_token#1#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ cmp r11, qword [rel parse.MAX_MULTI]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#1#loop#end
+ jmp parse.produce_reserved_token#1#loop#start
+parse.produce_reserved_token#1#loop#end:
+ mov r11b, 1 ; (SET)
+ cmp r11b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#2#loop#end
+parse.produce_reserved_token#2#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r12, rax ; (SET)
+ mov rcx, qword [rbp - 144] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#2#loop#0#wrap#0#if#end
+ mov cl, byte [r12] ; (SET)
+ cmp cl, 44
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#0#if#0#bool#end
+ mov cl, byte [r12] ; (SET)
+ cmp cl, 59
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#0#if#end
+ mov rsi, qword [rel parse.TTYPE_SEP] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ jmp parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#end
+parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.OP] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov sil, byte [r12] ; (SET_PRM_R)
+ mov byte [rbp - 162], sil ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov bl, byte [rbp - 162] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call parse._str_contains
+ cmp al, 0
+ je parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#1#if#end
+ mov rsi, qword [rel parse.TTYPE_AUG] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ jmp parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#end
+parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.DELIMS] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov sil, byte [r12] ; (SET_PRM_R)
+ mov byte [rbp - 162], sil ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov bl, byte [rbp - 162] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call parse._str_contains
+ cmp al, 0
+ je parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#2#if#end
+ mov rsi, qword [rel parse.TTYPE_DELIM] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ jmp parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#end
+parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#2#if#end:
+ mov rsi, qword [rel parse.TTYPE_UNKNOWN] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ jmp parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#end
+parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#3#if#end:
+parse.produce_reserved_token#2#loop#0#wrap#0#if#0#wrap#end:
+ mov r11b, 0 ; (SET)
+ jmp parse.produce_reserved_token#2#loop#0#wrap#end
+parse.produce_reserved_token#2#loop#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.MULTI_OP] ; (SET_PRM_R)
+ mov qword [rbp - 162], rsi ; (SET)
+ mov qword [rbp - 170], r12 ; (SET)
+ mov rax, qword [rbp - 162] ; (SET)
+ mov rbx, qword [rbp - 170] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#2#loop#0#wrap#1#if#end
+ mov rsi, qword [rel parse.TTYPE_AUG] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ mov r11b, 0 ; (SET)
+ jmp parse.produce_reserved_token#2#loop#0#wrap#end
+parse.produce_reserved_token#2#loop#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 162], r12 ; (SET)
+ mov rax, qword [rbp - 162] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call parse.is_comment_block
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#2#loop#0#wrap#2#if#end
+ mov rsi, qword [rel parse.TTYPE_COMNT] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call parse.comment_block
+ mov r11b, 0 ; (SET)
+ jmp parse.produce_reserved_token#2#loop#0#wrap#end
+parse.produce_reserved_token#2#loop#0#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 162], r12 ; (SET)
+ mov rax, qword [rbp - 162] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call parse.is_multi_delim
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#2#loop#0#wrap#3#if#end
+ mov rsi, qword [rel parse.TTYPE_DELIM] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ mov r11b, 0 ; (SET)
+ jmp parse.produce_reserved_token#2#loop#0#wrap#end
+parse.produce_reserved_token#2#loop#0#wrap#3#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.unread
+ jmp parse.produce_reserved_token#2#loop#0#wrap#end
+parse.produce_reserved_token#2#loop#0#wrap#4#if#end:
+parse.produce_reserved_token#2#loop#0#wrap#end:
+parse.produce_reserved_token#2#loop#rep:
+ cmp r11b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_reserved_token#2#loop#end
+ jmp parse.produce_reserved_token#2#loop#start
+parse.produce_reserved_token#2#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 112], rax ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_reserved_token#end
+
+parse.produce_reserved_token#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.produce_numeric_token:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable prev
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 32 ; Create stack space for local variable out
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rsi, qword [rel parse.TTYPE_LITRL] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rax ; (SET)
+ mov qword [rbp - 168], 1 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ sub rsp, 1 ; Create stack space for local variable ch
+ mov byte [rbp - 153], al ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ lea rsi, byte [rbp - 153] ; (TAKE_PTR)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ mov r11b, 0 ; (SET)
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 48
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov byte [rbp - 153], al ; (SET)
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 112], rax ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_numeric_token#end
+ jmp parse.produce_numeric_token#0#wrap#0#if#0#wrap#end
+parse.produce_numeric_token#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 156], sil ; (SET)
+ mov al, byte [rbp - 156] ; (SET)
+ lea rsp, [rbp - 155] ; Free stack space (freeing tmp variables)
+ call parse.is_reserved
+ mov r8b, byte [rbp - 155] ; (SET)
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse.produce_numeric_token#0#wrap#0#if#0#wrap#1#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 156], r9b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 157], sil ; (SET)
+ mov al, byte [rbp - 157] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse.is_whitespace
+ mov r9b, byte [rbp - 156] ; (SET)
+ mov r8b, byte [rbp - 155] ; (SET)
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], al ; (SET)
+ mov cl, byte [rbp - 154] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse.produce_numeric_token#0#wrap#0#if#0#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#0#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.unread
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 112], rax ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_numeric_token#end
+ jmp parse.produce_numeric_token#0#wrap#0#if#0#wrap#end
+parse.produce_numeric_token#0#wrap#0#if#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 155], sil ; (SET)
+ mov al, byte [rbp - 155] ; (SET)
+ lea rsp, [rbp - 154] ; Free stack space (freeing tmp variables)
+ call parse.is_numeric
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#0#wrap#0#if#0#wrap#2#if#end
+ mov r11b, 1 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ lea rsi, byte [rbp - 153] ; (TAKE_PTR)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp parse.produce_numeric_token#0#wrap#0#if#0#wrap#end
+parse.produce_numeric_token#0#wrap#0#if#0#wrap#2#if#end:
+parse.produce_numeric_token#0#wrap#0#if#0#wrap#end:
+ jmp parse.produce_numeric_token#0#wrap#end
+parse.produce_numeric_token#0#wrap#0#if#end:
+parse.produce_numeric_token#0#wrap#end:
+ mov r12b, 0 ; (SET)
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.produce_numeric_token#1#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rdi, [rbp - 161] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse.produce_numeric_token#1#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#1#loop#end
+parse.produce_numeric_token#1#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov byte [rbp - 153], al ; (SET)
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#1#loop#1#wrap#0#if#end
+ mov r13b, 0 ; (SET)
+ jmp parse.produce_numeric_token#1#loop#1#wrap#end
+parse.produce_numeric_token#1#loop#1#wrap#0#if#end:
+ cmp r12b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.produce_numeric_token#1#loop#1#wrap#1#if#0#bool#end
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 46
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.produce_numeric_token#1#loop#1#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#1#loop#1#wrap#1#if#end
+ mov r12b, 1 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ lea rsi, byte [rbp - 153] ; (TAKE_PTR)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp parse.produce_numeric_token#1#loop#1#wrap#end
+parse.produce_numeric_token#1#loop#1#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 156], sil ; (SET)
+ mov al, byte [rbp - 156] ; (SET)
+ lea rsp, [rbp - 155] ; Free stack space (freeing tmp variables)
+ call parse.is_reserved
+ mov r8b, byte [rbp - 155] ; (SET)
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse.produce_numeric_token#1#loop#1#wrap#2#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 156], r9b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 157], sil ; (SET)
+ mov al, byte [rbp - 157] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse.is_whitespace
+ mov r9b, byte [rbp - 156] ; (SET)
+ mov r8b, byte [rbp - 155] ; (SET)
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], al ; (SET)
+ mov cl, byte [rbp - 154] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse.produce_numeric_token#1#loop#1#wrap#2#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#1#loop#1#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.unread
+ mov r13b, 0 ; (SET)
+ jmp parse.produce_numeric_token#1#loop#1#wrap#end
+parse.produce_numeric_token#1#loop#1#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 154], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 155], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov sil, byte [rbp - 153] ; (SET_PRM_R)
+ mov byte [rbp - 156], sil ; (SET)
+ mov al, byte [rbp - 156] ; (SET)
+ lea rsp, [rbp - 155] ; Free stack space (freeing tmp variables)
+ call parse.is_numeric
+ mov r8b, byte [rbp - 155] ; (SET)
+ mov bl, byte [rbp - 154] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.produce_numeric_token#1#loop#1#wrap#3#if#0#bool#end
+ cmp r11b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.produce_numeric_token#1#loop#1#wrap#3#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#1#loop#1#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#File.unread
+ mov r13b, 0 ; (SET)
+ jmp parse.produce_numeric_token#1#loop#1#wrap#end
+parse.produce_numeric_token#1#loop#1#wrap#3#if#end:
+ mov cl, byte [rbp - 153] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#1#loop#1#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ lea rsi, byte [rbp - 153] ; (TAKE_PTR)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp parse.produce_numeric_token#1#loop#1#wrap#end
+parse.produce_numeric_token#1#loop#1#wrap#4#if#end:
+parse.produce_numeric_token#1#loop#1#wrap#end:
+parse.produce_numeric_token#1#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.produce_numeric_token#1#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 36 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rdi, [rbp - 161] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse.produce_numeric_token#1#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_numeric_token#1#loop#end
+ jmp parse.produce_numeric_token#1#loop#start
+parse.produce_numeric_token#1#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 112], rax ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_numeric_token#end
+
+parse.produce_numeric_token#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.is_whitespace:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10b, al ; (SET)
+ cmp r10b, 8
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.is_whitespace#0#wrap#0#if#0#bool#end
+ cmp r10b, 14
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.is_whitespace#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.is_whitespace#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse.is_whitespace#end
+ jmp parse.is_whitespace#0#wrap#end
+parse.is_whitespace#0#wrap#0#if#end:
+ cmp r10b, 32
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.is_whitespace#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse.is_whitespace#end
+ jmp parse.is_whitespace#0#wrap#end
+parse.is_whitespace#0#wrap#1#if#end:
+parse.is_whitespace#0#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse.is_whitespace#end
+
+parse.is_whitespace#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.is_reserved:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10b, al ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.RESERVED] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov byte [rbp - 66], r10b ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov bl, byte [rbp - 66] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._str_contains
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp parse.is_reserved#end
+
+parse.is_reserved#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.is_numeric:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10b, al ; (SET)
+ cmp r10b, 48
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse.is_numeric#0#wrap#0#if#0#bool#end
+ cmp r10b, 57
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.is_numeric#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.is_numeric#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse.is_numeric#end
+ jmp parse.is_numeric#0#wrap#end
+parse.is_numeric#0#wrap#0#if#end:
+parse.is_numeric#0#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse.is_numeric#end
+
+parse.is_numeric#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.produce_next_token:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable prev
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_next_token#0#wrap#0#if#end
+ mov rbx, qword [rbp - 64] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 80] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils.strlen
+ mov rbx, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ add rbx, rax ; (STD_OP)
+ mov qword [rbp - 64], rbx ; (SET)
+ jmp parse.produce_next_token#0#wrap#end
+parse.produce_next_token#0#wrap#0#if#end:
+parse.produce_next_token#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov r11b, al ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r11b ; (SET)
+ mov al, byte [rbp - 90] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call parse.is_whitespace
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_next_token#1#loop#end
+parse.produce_next_token#1#loop#start:
+ cmp r11b, 10
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_next_token#1#loop#0#wrap#0#if#end
+ mov rbx, qword [rbp - 72] ; (SET)
+ inc qword qword [rbp - 72] ; (UNARY)
+ mov qword [rbp - 64], 0 ; (SET)
+ jmp parse.produce_next_token#1#loop#0#wrap#end
+parse.produce_next_token#1#loop#0#wrap#0#if#end:
+parse.produce_next_token#1#loop#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#File.read
+ mov r11b, al ; (SET)
+ mov rbx, qword [rbp - 64] ; (SET)
+ inc qword qword [rbp - 64] ; (UNARY)
+parse.produce_next_token#1#loop#rep:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r11b ; (SET)
+ mov al, byte [rbp - 90] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call parse.is_whitespace
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_next_token#1#loop#end
+ jmp parse.produce_next_token#1#loop#start
+parse.produce_next_token#1#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#File.unread
+ cmp r11b, 39
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse.produce_next_token#2#wrap#0#if#0#bool#end
+ cmp r11b, 34
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse.produce_next_token#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_next_token#2#wrap#0#if#end
+
+ ; STARTING RETURN
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse.produce_string_token
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_next_token#end
+ jmp parse.produce_next_token#2#wrap#end
+parse.produce_next_token#2#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r11b ; (SET)
+ mov al, byte [rbp - 90] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call parse.is_reserved
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_next_token#2#wrap#1#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse.produce_reserved_token
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rcx, qword [rbp - 152] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_COMNT]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_next_token#2#wrap#1#if#0#loop#end
+parse.produce_next_token#2#wrap#1#if#0#loop#start:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 224], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 216] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 224], rax ; (SET)
+ mov rax, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 216] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+parse.produce_next_token#2#wrap#1#if#0#loop#rep:
+ mov rcx, qword [rbp - 152] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_COMNT]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_next_token#2#wrap#1#if#0#loop#end
+ jmp parse.produce_next_token#2#wrap#1#if#0#loop#start
+parse.produce_next_token#2#wrap#1#if#0#loop#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_next_token#end
+ jmp parse.produce_next_token#2#wrap#end
+parse.produce_next_token#2#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r11b ; (SET)
+ mov al, byte [rbp - 90] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call parse.is_numeric
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_next_token#2#wrap#2#if#end
+
+ ; STARTING RETURN
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse.produce_numeric_token
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_next_token#end
+ jmp parse.produce_next_token#2#wrap#end
+parse.produce_next_token#2#wrap#2#if#end:
+ cmp r11b, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.produce_next_token#2#wrap#3#if#end
+
+ ; STARTING RETURN
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse.produce_word_token
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_next_token#end
+ jmp parse.produce_next_token#2#wrap#end
+parse.produce_next_token#2#wrap#3#if#end:
+parse.produce_next_token#2#wrap#end:
+ sub rsp, 32 ; Create stack space for local variable out
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rsi, qword [rel parse.TTYPE_ERR] ; (SET_PRM_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.produce_next_token#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 128], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 112], rax ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_next_token#end
+
+parse.produce_next_token#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.produce_first_token:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ mov qword [rbp - 72], 1 ; (SET)
+ mov qword [rbp - 64], 1 ; (SET)
+ mov rsi, qword [rel parse.TTYPE_ERR] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse.produce_first_token#end
+
+parse.produce_first_token#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.gen_token_list:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 32 ; Create stack space for local variable tmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov qword [rbp - 136], 32 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#File.open
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call parse.produce_first_token
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ mov rcx, qword [rbp - 120] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.gen_token_list#1#loop#end
+parse.gen_token_list#1#loop#start:
+ mov rcx, qword [rbp - 120] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_COMNT]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.gen_token_list#1#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 192], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ jmp parse.gen_token_list#1#loop#0#wrap#end
+parse.gen_token_list#1#loop#0#wrap#0#if#end:
+ sub rsp, 32 ; Create stack space for local variable com
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 224], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 216] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rax ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ jmp parse.gen_token_list#1#loop#0#wrap#end
+parse.gen_token_list#1#loop#0#wrap#1#if#end:
+parse.gen_token_list#1#loop#0#wrap#end:
+parse.gen_token_list#1#loop#rep:
+ mov rcx, qword [rbp - 120] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.gen_token_list#1#loop#end
+ jmp parse.gen_token_list#1#loop#start
+parse.gen_token_list#1#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#File.close
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ jmp parse.gen_token_list#end
+
+parse.gen_token_list#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.print_token_type:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 32 ; Create stack space for local variable t
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_type#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token_type#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_token_type#0#wrap#end
+parse.print_token_type#0#wrap#0#if#end:
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_SEP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_type#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token_type#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_token_type#0#wrap#end
+parse.print_token_type#0#wrap#1#if#end:
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_type#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token_type#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_token_type#0#wrap#end
+parse.print_token_type#0#wrap#2#if#end:
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_type#0#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token_type#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_token_type#0#wrap#end
+parse.print_token_type#0#wrap#3#if#end:
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_LITRL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_type#0#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token_type#0#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_token_type#0#wrap#end
+parse.print_token_type#0#wrap#4#if#end:
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_type#0#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token_type#0#wrap#5#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_token_type#0#wrap#end
+parse.print_token_type#0#wrap#5#if#end:
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_type#0#wrap#6#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token_type#0#wrap#6#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_token_type#0#wrap#end
+parse.print_token_type#0#wrap#6#if#end:
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_COMNT]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_type#0#wrap#7#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token_type#0#wrap#7#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_token_type#0#wrap#end
+parse.print_token_type#0#wrap#7#if#end:
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_UNKNOWN]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_type#0#wrap#8#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token_type#0#wrap#8#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_token_type#0#wrap#end
+parse.print_token_type#0#wrap#8#if#end:
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_type#0#wrap#9#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token_type#0#wrap#9#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_token_type#0#wrap#end
+parse.print_token_type#0#wrap#9#if#end:
+parse.print_token_type#0#wrap#end:
+
+parse.print_token_type#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.print_token:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 32 ; Create stack space for local variable t
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 80] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 32 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ call parse.print_token_type
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_token#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _printf
+
+parse.print_token#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.print_token_list:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_list#0#loop#end
+parse.print_token_list#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ call parse.print_token
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+parse.print_token_list#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_token_list#0#loop#end
+ jmp parse.print_token_list#0#loop#start
+parse.print_token_list#0#loop#end:
+
+parse.print_token_list#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.end_token_list:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.end_token_list#0#loop#end
+parse.end_token_list#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+parse.end_token_list#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.end_token_list#0#loop#end
+ jmp parse.end_token_list#0#loop#start
+parse.end_token_list#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+parse.end_token_list#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._get_closing_delim:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10b, al ; (SET)
+ cmp r10b, 47
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._get_closing_delim#0#wrap#0#if#0#bool#end
+ cmp r10b, 59
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._get_closing_delim#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._get_closing_delim#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 59 ; (SET)
+ jmp parse._get_closing_delim#end
+ jmp parse._get_closing_delim#0#wrap#end
+parse._get_closing_delim#0#wrap#0#if#end:
+ cmp r10b, 40
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._get_closing_delim#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov al, 41 ; (SET)
+ jmp parse._get_closing_delim#end
+ jmp parse._get_closing_delim#0#wrap#end
+parse._get_closing_delim#0#wrap#1#if#end:
+ cmp r10b, 91
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._get_closing_delim#0#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov al, 93 ; (SET)
+ jmp parse._get_closing_delim#end
+ jmp parse._get_closing_delim#0#wrap#end
+parse._get_closing_delim#0#wrap#2#if#end:
+ cmp r10b, 123
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._get_closing_delim#0#wrap#3#if#end
+
+ ; STARTING RETURN
+ mov al, 125 ; (SET)
+ jmp parse._get_closing_delim#end
+ jmp parse._get_closing_delim#0#wrap#end
+parse._get_closing_delim#0#wrap#3#if#end:
+parse._get_closing_delim#0#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._get_closing_delim#end
+
+parse._get_closing_delim#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._is_closing:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._is_closing#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._is_closing#end
+ jmp parse._is_closing#0#wrap#end
+parse._is_closing#0#wrap#0#if#end:
+parse._is_closing#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rdi, [rsi] ; auto deref (SET_PRM_L)
+ mov r11b, byte [rdi] ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r11b, 59
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ cmp byte byte [rbp - 57], 0
+ jne parse._is_closing#1#wrap#0#if#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r11b, 125
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 58], al ; Mov after compare
+ cmp byte byte [rbp - 58], 0
+parse._is_closing#1#wrap#0#if#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._is_closing#1#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r11b, 93
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ cmp byte byte [rbp - 57], 0
+parse._is_closing#1#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._is_closing#1#wrap#0#if#0#bool#end
+ cmp r11b, 41
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._is_closing#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._is_closing#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._is_closing#end
+ jmp parse._is_closing#1#wrap#end
+parse._is_closing#1#wrap#0#if#end:
+parse._is_closing#1#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._is_closing#end
+
+parse._is_closing#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._advance_check:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._advance_check#0#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r11 ; (SET)
+ mov qword [rbp - 75], r12 ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._advance_check#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._advance_check#0#wrap#0#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r11 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r11] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._advance_check#end
+ jmp parse._advance_check#0#wrap#end
+parse._advance_check#0#wrap#0#if#end:
+parse._advance_check#0#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._advance_check#end
+
+parse._advance_check#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_print_err:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_print_err#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_print_err#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov byte [rbp - 65], 47 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.to_cstr
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_print_err#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 32 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ call parse.print_token
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_print_err#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ mov rcx, qword [rel parse.errors_shown] ; (SET)
+ cmp rcx, qword [rel parse.MAX_ERR_SHOW]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_print_err#4#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_print_err#4#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse._ast_print_err#4#wrap#end
+parse._ast_print_err#4#wrap#0#if#end:
+parse._ast_print_err#4#wrap#end:
+
+parse._ast_print_err#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_block_pass:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, 1 ; (SET)
+ cmp r12, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_block_pass#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_block_pass#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_block_pass#0#loop#end
+parse._ast_block_pass#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r11 ; (SET)
+ mov rsi, qword [rel parse._ast_block_pass#0#loop#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_block_pass#0#loop#1#wrap#0#if#end
+ mov rbx, r12 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r12, rbx ; (SET)
+ jmp parse._ast_block_pass#0#loop#1#wrap#end
+parse._ast_block_pass#0#loop#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r11 ; (SET)
+ mov rsi, qword [rel parse._ast_block_pass#0#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_block_pass#0#loop#1#wrap#1#if#end
+ mov rbx, r12 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov r12, rbx ; (SET)
+ jmp parse._ast_block_pass#0#loop#1#wrap#end
+parse._ast_block_pass#0#loop#1#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 66], r11 ; (SET)
+ mov rsi, qword [rel parse._ast_block_pass#0#loop#1#wrap#2#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 74], rsi ; (SET)
+ mov rax, qword [rbp - 66] ; (SET)
+ mov rbx, qword [rbp - 74] ; (SET)
+ lea rsp, [rbp - 58] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_block_pass#0#loop#1#wrap#2#if#0#bool#end
+ cmp r12, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._ast_block_pass#0#loop#1#wrap#2#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_block_pass#0#loop#1#wrap#2#if#end
+ mov rbx, r12 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r12, rbx ; (SET)
+ jmp parse._ast_block_pass#0#loop#1#wrap#end
+parse._ast_block_pass#0#loop#1#wrap#2#if#end:
+parse._ast_block_pass#0#loop#1#wrap#end:
+ cmp r12, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_block_pass#0#loop#2#wrap#0#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r11 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r11] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_block_pass#0#loop#2#wrap#end
+parse._ast_block_pass#0#loop#2#wrap#0#if#end:
+parse._ast_block_pass#0#loop#2#wrap#end:
+parse._ast_block_pass#0#loop#rep:
+ cmp r12, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_block_pass#0#loop#3#bool#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_block_pass#0#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_block_pass#0#loop#end
+ jmp parse._ast_block_pass#0#loop#start
+parse._ast_block_pass#0#loop#end:
+
+parse._ast_block_pass#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._op_prefix:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strlen
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_prefix#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._op_prefix#end
+ jmp parse._op_prefix#0#wrap#end
+parse._op_prefix#0#wrap#0#if#end:
+parse._op_prefix#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r10 ; (SET)
+ mov rsi, qword [rel parse._op_prefix#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._op_prefix#1#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 60], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 68], r10 ; (SET)
+ mov rsi, qword [rel parse._op_prefix#1#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 76], rsi ; (SET)
+ mov rax, qword [rbp - 68] ; (SET)
+ mov rbx, qword [rbp - 76] ; (SET)
+ lea rsp, [rbp - 60] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 60] ; (SET)
+ mov r8b, byte [rbp - 59] ; (SET)
+ mov bl, byte [rbp - 58] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], al ; (SET)
+ mov cl, byte [rbp - 58] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 57], 0
+parse._op_prefix#1#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._op_prefix#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r10 ; (SET)
+ mov rsi, qword [rel parse._op_prefix#1#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._op_prefix#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_prefix#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._op_prefix#end
+ jmp parse._op_prefix#1#wrap#end
+parse._op_prefix#1#wrap#0#if#end:
+parse._op_prefix#1#wrap#end:
+ cmp r11, 1
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_prefix#2#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._op_prefix#end
+ jmp parse._op_prefix#2#wrap#end
+parse._op_prefix#2#wrap#0#if#end:
+parse._op_prefix#2#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 45
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._op_prefix#3#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rdi, [rbp - 65] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 33
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 57], 0
+parse._op_prefix#3#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._op_prefix#3#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 126
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._op_prefix#3#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_prefix#3#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._op_prefix#end
+ jmp parse._op_prefix#3#wrap#end
+parse._op_prefix#3#wrap#0#if#end:
+parse._op_prefix#3#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._op_prefix#end
+
+parse._op_prefix#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._op_postfix:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r10 ; (SET)
+ mov rsi, qword [rel parse._op_postfix#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._op_postfix#0#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 60], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 68], r10 ; (SET)
+ mov rsi, qword [rel parse._op_postfix#0#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 76], rsi ; (SET)
+ mov rax, qword [rbp - 68] ; (SET)
+ mov rbx, qword [rbp - 76] ; (SET)
+ lea rsp, [rbp - 60] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 60] ; (SET)
+ mov r8b, byte [rbp - 59] ; (SET)
+ mov bl, byte [rbp - 58] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], al ; (SET)
+ mov cl, byte [rbp - 58] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 57], 0
+parse._op_postfix#0#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._op_postfix#0#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r10 ; (SET)
+ mov rsi, qword [rel parse._op_postfix#0#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._op_postfix#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_postfix#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._op_postfix#end
+ jmp parse._op_postfix#0#wrap#end
+parse._op_postfix#0#wrap#0#if#end:
+parse._op_postfix#0#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._op_postfix#end
+
+parse._op_postfix#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._op_bin:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rsi, qword [rel parse._op_bin#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_bin#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._op_bin#end
+ jmp parse._op_bin#0#wrap#end
+parse._op_bin#0#wrap#0#if#end:
+parse._op_bin#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 66], r10 ; (SET)
+ mov rax, qword [rbp - 66] ; (SET)
+ lea rsp, [rbp - 58] ; Free stack space (freeing tmp variables)
+ call parse._op_prefix
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._op_bin#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r10 ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._op_postfix
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._op_bin#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_bin#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._op_bin#end
+ jmp parse._op_bin#1#wrap#end
+parse._op_bin#1#wrap#0#if#end:
+parse._op_bin#1#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._op_bin#end
+
+parse._op_bin#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._op_order:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strlen
+ mov r11, rax ; (SET)
+ cmp r11, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#0#if#end
+ mov r12b, byte [r10] ; (SET)
+ cmp r12b, 96
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#0#if#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#0#if#0#wrap#0#if#end:
+ cmp r12b, 46
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#0#if#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov rax, 1 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#0#if#0#wrap#1#if#end:
+ cmp r12b, 126
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#0#if#0#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov rax, 2 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#0#if#0#wrap#2#if#end:
+ cmp r12b, 42
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ jne parse._op_order#0#wrap#0#if#0#wrap#3#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r12b, 47
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ cmp byte byte [rbp - 57], 0
+parse._op_order#0#wrap#0#if#0#wrap#3#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._op_order#0#wrap#0#if#0#wrap#3#if#0#bool#end
+ cmp r12b, 37
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._op_order#0#wrap#0#if#0#wrap#3#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#0#if#0#wrap#3#if#end
+
+ ; STARTING RETURN
+ mov rax, 6 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#0#if#0#wrap#3#if#end:
+ cmp r12b, 43
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._op_order#0#wrap#0#if#0#wrap#4#if#0#bool#end
+ cmp r12b, 45
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._op_order#0#wrap#0#if#0#wrap#4#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#0#if#0#wrap#4#if#end
+
+ ; STARTING RETURN
+ mov rax, 7 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#0#if#0#wrap#4#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r12b, 33
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ cmp byte byte [rbp - 57], 0
+ jne parse._op_order#0#wrap#0#if#0#wrap#5#if#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r12b, 38
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 58], al ; Mov after compare
+ cmp byte byte [rbp - 58], 0
+parse._op_order#0#wrap#0#if#0#wrap#5#if#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._op_order#0#wrap#0#if#0#wrap#5#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r12b, 124
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ cmp byte byte [rbp - 57], 0
+parse._op_order#0#wrap#0#if#0#wrap#5#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._op_order#0#wrap#0#if#0#wrap#5#if#0#bool#end
+ cmp r12b, 94
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._op_order#0#wrap#0#if#0#wrap#5#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#0#if#0#wrap#5#if#end
+
+ ; STARTING RETURN
+ mov rax, 8 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#0#if#0#wrap#5#if#end:
+ cmp r12b, 60
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._op_order#0#wrap#0#if#0#wrap#6#if#0#bool#end
+ cmp r12b, 62
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._op_order#0#wrap#0#if#0#wrap#6#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#0#if#0#wrap#6#if#end
+
+ ; STARTING RETURN
+ mov rax, 9 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#0#if#0#wrap#6#if#end:
+ cmp r12b, 61
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#0#if#0#wrap#7#if#end
+
+ ; STARTING RETURN
+ mov rax, 11 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#0#if#0#wrap#7#if#end:
+parse._op_order#0#wrap#0#if#0#wrap#end:
+ jmp parse._op_order#0#wrap#end
+parse._op_order#0#wrap#0#if#end:
+ cmp r11, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel parse._op_order#0#wrap#1#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ cmp al, 0
+ je parse._op_order#0#wrap#1#if#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 2 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#1#if#0#wrap#end
+parse._op_order#0#wrap#1#if#0#wrap#0#if#end:
+parse._op_order#0#wrap#1#if#0#wrap#end:
+ mov r8, r10 ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov r9, r10 ; (SET)
+ ; Gen index
+ mov rax, 1 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r9 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, byte [rax]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#1#if#1#wrap#0#if#end
+ mov r12b, byte [r10] ; (SET)
+ cmp r12b, 43
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#0#if#0#bool#end
+ cmp r12b, 45
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 3 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#0#if#end:
+ cmp r12b, 60
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#1#if#0#bool#end
+ cmp r12b, 62
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov rax, 4 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#1#if#end:
+ cmp r12b, 61
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov rax, 9 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#end
+parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#2#if#end:
+parse._op_order#0#wrap#1#if#1#wrap#0#if#0#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, 10 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#1#if#1#wrap#end
+parse._op_order#0#wrap#1#if#1#wrap#0#if#end:
+parse._op_order#0#wrap#1#if#1#wrap#end:
+ mov r9, r10 ; (SET)
+ ; Gen index
+ mov rax, 1 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r9 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r9, rax ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 60
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._op_order#0#wrap#1#if#2#wrap#0#if#0#bool#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; Gen index
+ mov rax, 1 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [rbp - 64] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rax ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 62
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._op_order#0#wrap#1#if#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#1#if#2#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 9 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#1#if#2#wrap#end
+parse._op_order#0#wrap#1#if#2#wrap#0#if#end:
+ mov r8, r10 ; (SET)
+ ; Gen index
+ mov rax, 1 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 61
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#1#if#2#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov rax, 11 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#1#if#2#wrap#end
+parse._op_order#0#wrap#1#if#2#wrap#1#if#end:
+ mov r8, r10 ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 33
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#1#if#2#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov rax, 8 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#1#if#2#wrap#end
+parse._op_order#0#wrap#1#if#2#wrap#2#if#end:
+parse._op_order#0#wrap#1#if#2#wrap#end:
+ jmp parse._op_order#0#wrap#end
+parse._op_order#0#wrap#1#if#end:
+ cmp r11, 3
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#2#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rsi, qword [rel parse._op_order#0#wrap#2#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#2#if#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 5 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#2#if#0#wrap#end
+parse._op_order#0#wrap#2#if#0#wrap#0#if#end:
+ mov r8, r10 ; (SET)
+ ; Gen index
+ mov rax, 1 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 61
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#2#if#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov rax, 9 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#2#if#0#wrap#end
+parse._op_order#0#wrap#2#if#0#wrap#1#if#end:
+ mov r8, r10 ; (SET)
+ ; Gen index
+ mov rax, 2 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 61
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._op_order#0#wrap#2#if#0#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov rax, 11 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#2#if#0#wrap#end
+parse._op_order#0#wrap#2#if#0#wrap#2#if#end:
+parse._op_order#0#wrap#2#if#0#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, 10 ; (SET)
+ jmp parse._op_order#end
+ jmp parse._op_order#0#wrap#end
+parse._op_order#0#wrap#2#if#end:
+parse._op_order#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._op_order#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._op_order#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+
+ ; STARTING RETURN
+ mov rax, 999 ; (SET)
+ jmp parse._op_order#end
+
+parse._op_order#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._astv_pre_id:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_pre_id#0#loop#end
+parse._astv_pre_id#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._op_prefix
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_pre_id#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._astv_pre_id#0#loop#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._astv_pre_id#end
+ jmp parse._astv_pre_id#0#loop#0#wrap#end
+parse._astv_pre_id#0#loop#0#wrap#0#if#end:
+parse._astv_pre_id#0#loop#0#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable pre
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_PRE_OP] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r11, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+parse._astv_pre_id#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_pre_id#0#loop#end
+ jmp parse._astv_pre_id#0#loop#start
+parse._astv_pre_id#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._astv_pre_id#end
+
+parse._astv_pre_id#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._astv_cast:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel parse._astv_cast#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ cmp al, 0
+ je parse._astv_cast#0#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable cast
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_CAST] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._astv_cast#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 124] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 124], rax ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_type
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 122], rbx ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov qword [rbp - 122], r14 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._astv_cast#0#wrap#end
+parse._astv_cast#0#wrap#0#if#end:
+parse._astv_cast#0#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r13 ; (SET)
+ jmp parse._astv_cast#end
+
+parse._astv_cast#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._astv_post_id:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13b, dl ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ mov r15b, 1 ; (SET)
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._astv_post_id#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._astv_post_id#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_post_id#0#loop#end
+parse._astv_post_id#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._astv_post_id#0#loop#1#wrap#0#if#0#bool#end
+ cmp r13b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._astv_post_id#0#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_post_id#0#loop#1#wrap#0#if#end
+ mov r15b, 0 ; (SET)
+ jmp parse._astv_post_id#0#loop#1#wrap#end
+parse._astv_post_id#0#loop#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._op_postfix
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_post_id#0#loop#1#wrap#1#if#end
+ sub rsp, 50 ; Create stack space for local variable post
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_POST_OP] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ jmp parse._astv_post_id#0#loop#1#wrap#end
+parse._astv_post_id#0#loop#1#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rsi, qword [rel parse._astv_post_id#0#loop#1#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_post_id#0#loop#1#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_value
+ mov r14, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 66], r12 ; (SET)
+ mov rsi, qword [rel parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 74], rsi ; (SET)
+ mov rax, qword [rbp - 66] ; (SET)
+ mov rbx, qword [rbp - 74] ; (SET)
+ lea rsp, [rbp - 58] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ cmp byte byte [rbp - 57], 0
+ jne parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#0#if#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 58], al ; Mov after compare
+ cmp byte byte [rbp - 58], 0
+parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#0#if#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_value
+ mov r14, rax ; (SET)
+ mov r15b, 0 ; (SET)
+ jmp parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#end
+parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#0#if#end:
+parse._astv_post_id#0#loop#1#wrap#2#if#1#wrap#end:
+ jmp parse._astv_post_id#0#loop#1#wrap#end
+parse._astv_post_id#0#loop#1#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rsi, qword [rel parse._astv_post_id#0#loop#1#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_post_id#0#loop#1#wrap#3#if#end
+ sub rsp, 50 ; Create stack space for local variable ind
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_POST_OP] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov qword [rbp - 131], r12 ; (SET)
+ mov byte [rbp - 132], 1 ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ mov dl, byte [rbp - 132] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_post_id#0#loop#1#wrap#3#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._astv_post_id#0#loop#1#wrap#3#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._astv_post_id#0#loop#1#wrap#3#if#1#wrap#end
+parse._astv_post_id#0#loop#1#wrap#3#if#1#wrap#0#if#end:
+parse._astv_post_id#0#loop#1#wrap#3#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ mov qword [rbp - 123], r12 ; (SET)
+ mov rsi, qword [rel parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ mov r15b, 0 ; (SET)
+ jmp parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#end
+parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#0#if#end:
+parse._astv_post_id#0#loop#1#wrap#3#if#2#wrap#end:
+ jmp parse._astv_post_id#0#loop#1#wrap#end
+parse._astv_post_id#0#loop#1#wrap#3#if#end:
+ mov r15b, 0 ; (SET)
+ jmp parse._astv_post_id#0#loop#1#wrap#end
+parse._astv_post_id#0#loop#1#wrap#4#if#end:
+parse._astv_post_id#0#loop#1#wrap#end:
+parse._astv_post_id#0#loop#rep:
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._astv_post_id#0#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._astv_post_id#0#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._astv_post_id#0#loop#end
+ jmp parse._astv_post_id#0#loop#start
+parse._astv_post_id#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp parse._astv_post_id#end
+
+parse._astv_post_id#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_value_bare:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13b, dl ; (SET)
+ mov r14, r11 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._astv_pre_id
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r15, qword [rsi] ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_value_bare#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value_bare#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_value
+ mov r15, rax ; (SET)
+ jmp parse._ast_value_bare#0#wrap#end
+parse._ast_value_bare#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_value_bare#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov rcx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value_bare#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov byte [rbp - 81], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov dl, byte [rbp - 81] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r15, qword [rsi] ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_value_bare#0#wrap#1#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov rcx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value_bare#0#wrap#1#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_value_bare#0#wrap#1#if#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._ast_value_bare#end
+ jmp parse._ast_value_bare#0#wrap#1#if#1#wrap#end
+parse._ast_value_bare#0#wrap#1#if#1#wrap#0#if#end:
+parse._ast_value_bare#0#wrap#1#if#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_value_bare#0#wrap#1#if#2#wrap#0#if#0#bool#end
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._ast_value_bare#0#wrap#1#if#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value_bare#0#wrap#1#if#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._astv_cast
+ mov r15, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable tmp
+ mov qword [rbp - 64], rax ; (SET)
+ jmp parse._ast_value_bare#0#wrap#1#if#2#wrap#end
+parse._ast_value_bare#0#wrap#1#if#2#wrap#0#if#end:
+parse._ast_value_bare#0#wrap#1#if#2#wrap#end:
+ jmp parse._ast_value_bare#0#wrap#end
+parse._ast_value_bare#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value_bare#0#wrap#2#if#end
+ sub rsp, 50 ; Create stack space for local variable val
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r14 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._ast_value_bare#0#wrap#end
+parse._ast_value_bare#0#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_LITRL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value_bare#0#wrap#3#if#end
+ sub rsp, 50 ; Create stack space for local variable val
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_LITERAL] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r14 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._ast_value_bare#0#wrap#end
+parse._ast_value_bare#0#wrap#3#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_value_bare#0#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._ast_value_bare#end
+ jmp parse._ast_value_bare#0#wrap#end
+parse._ast_value_bare#0#wrap#4#if#end:
+parse._ast_value_bare#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_value_bare#1#wrap#0#if#0#bool#end
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._ast_value_bare#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value_bare#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 89], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 97], rbx ; (SET)
+ mov rax, qword [rbp - 89] ; (SET)
+ mov rbx, qword [rbp - 97] ; (SET)
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 72], rax ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov byte [rbp - 81], r13b ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov dl, byte [rbp - 81] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._astv_post_id
+ mov r15, rax ; (SET)
+ jmp parse._ast_value_bare#1#wrap#end
+parse._ast_value_bare#1#wrap#0#if#end:
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._ast_value_bare#end
+ jmp parse._ast_value_bare#1#wrap#end
+parse._ast_value_bare#1#wrap#1#if#end:
+parse._ast_value_bare#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ sub rsp, 1 ; Create stack space for local variable run
+ mov byte [rbp - 57], bl ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._ast_value_bare#2#loop#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 60], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 61], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 69], r10 ; (SET)
+ mov qword [rbp - 77], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_value_bare#2#loop#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 85], rsi ; (SET)
+ mov rax, qword [rbp - 69] ; (SET)
+ mov rbx, qword [rbp - 77] ; (SET)
+ mov rcx, qword [rbp - 85] ; (SET)
+ lea rsp, [rbp - 61] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov r9b, byte [rbp - 61] ; (SET)
+ mov r8b, byte [rbp - 60] ; (SET)
+ mov bl, byte [rbp - 59] ; (SET)
+ lea rsp, [rbp - 58] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], al ; (SET)
+ mov cl, byte [rbp - 59] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 58], al ; Mov after compare
+ lea rsp, [rbp - 58] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 58], 0
+parse._ast_value_bare#2#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._ast_value_bare#2#loop#end
+parse._ast_value_bare#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_value_bare#2#loop#2#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 66], r10 ; (SET)
+ mov qword [rbp - 74], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_value_bare#2#loop#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 82], rsi ; (SET)
+ mov rax, qword [rbp - 66] ; (SET)
+ mov rbx, qword [rbp - 74] ; (SET)
+ mov rcx, qword [rbp - 82] ; (SET)
+ lea rsp, [rbp - 58] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ mov bl, byte [rbp - 58] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._ast_value_bare#end
+ jmp parse._ast_value_bare#2#loop#2#wrap#end
+parse._ast_value_bare#2#loop#2#wrap#0#if#end:
+parse._ast_value_bare#2#loop#2#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 66], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ sub r8, 1 ; (STD_OP)
+ mov qword [rbp - 74], r8 ; (SET)
+ mov rax, qword [rbp - 66] ; (SET)
+ mov rbx, qword [rbp - 74] ; (SET)
+ lea rsp, [rbp - 58] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov bl, byte [rbp - 58] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for local variable repl
+ mov qword [rbp - 65], rax ; (SET)
+ sub rsp, 50 ; Create stack space for local variable dot
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 116], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 115] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 124], rax ; (SET)
+ mov si, word [rel parse.NTYPE_BIN_OP] ; (SET_PRM_R)
+ mov word [rbp - 126], si ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 135], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_value_bare#2#loop#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 143], rsi ; (SET)
+ mov rax, qword [rbp - 143] ; (SET)
+ lea rsp, [rbp - 135] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov bl, byte [rbp - 135] ; (SET)
+ lea rsp, [rbp - 134] ; Free stack space (freeing tmp variables)
+ mov qword [rbp - 134], rax ; (SET)
+ mov rax, qword [rbp - 124] ; (SET)
+ mov bx, word [rbp - 126] ; (SET)
+ mov rcx, qword [rbp - 134] ; (SET)
+ lea rsp, [rbp - 116] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ mov bl, byte [rbp - 116] ; (SET)
+ lea rsp, [rbp - 115] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 116], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 115] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 124], rax ; (SET)
+ mov rsi, qword [rbp - 65] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 124] ; (SET)
+ mov rbx, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 116] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov bl, byte [rbp - 116] ; (SET)
+ lea rsp, [rbp - 115] ; Free stack space (freeing tmp variables)
+ sub rsp, 50 ; Create stack space for local variable val
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 166], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 165] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 174], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 176], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 184], rsi ; (SET)
+ mov rax, qword [rbp - 174] ; (SET)
+ mov bx, word [rbp - 176] ; (SET)
+ mov rcx, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 166] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ mov bl, byte [rbp - 166] ; (SET)
+ lea rsp, [rbp - 165] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable ln
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 173], rsi ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 206], bl ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 246], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 238] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 246] ; (SET)
+ lea rsp, [rbp - 238] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 205] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 206] ; Free stack space (freeing tmp variables)
+ mov bl, byte [rbp - 206] ; (SET)
+ lea rsp, [rbp - 205] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 205] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 173] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 181], rsi ; (SET)
+ mov rdi, [rbp - 181] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rbp - 173]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 173] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ je parse._ast_value_bare#2#loop#4#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r13b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 174], al ; Mov after compare
+ cmp byte byte [rbp - 174], 0
+parse._ast_value_bare#2#loop#4#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 173] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._ast_value_bare#2#loop#4#wrap#0#if#end
+ mov byte [rbp - 57], 0 ; (SET)
+ jmp parse._ast_value_bare#2#loop#4#wrap#end
+parse._ast_value_bare#2#loop#4#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 174], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 182], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 165] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 190], rsi ; (SET)
+ mov qword [rbp - 198], r12 ; (SET)
+ mov byte [rbp - 199], r13b ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ mov rbx, qword [rbp - 190] ; (SET)
+ mov rcx, qword [rbp - 198] ; (SET)
+ mov dl, byte [rbp - 199] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call parse._astv_post_id
+ mov bl, byte [rbp - 174] ; (SET)
+ lea rsp, [rbp - 173] ; Free stack space (freeing tmp variables)
+ mov qword [rbp - 173], rax ; (SET)
+ jmp parse._ast_value_bare#2#loop#4#wrap#end
+parse._ast_value_bare#2#loop#4#wrap#1#if#end:
+parse._ast_value_bare#2#loop#4#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 174], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 115] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 182], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 165] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 190], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ mov rbx, qword [rbp - 190] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov bl, byte [rbp - 174] ; (SET)
+ lea rsp, [rbp - 173] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 174], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+ mov bl, byte [rbp - 174] ; (SET)
+ lea rsp, [rbp - 173] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 174], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 182], r14 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 115] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 190], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ mov rbx, qword [rbp - 190] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov bl, byte [rbp - 174] ; (SET)
+ lea rsp, [rbp - 173] ; Free stack space (freeing tmp variables)
+ mov r14, rax ; (SET)
+parse._ast_value_bare#2#loop#rep:
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._ast_value_bare#2#loop#5#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 175], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 176], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 177], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 185], r10 ; (SET)
+ mov qword [rbp - 193], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_value_bare#2#loop#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 201], rsi ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ mov rbx, qword [rbp - 193] ; (SET)
+ mov rcx, qword [rbp - 201] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov r9b, byte [rbp - 177] ; (SET)
+ mov r8b, byte [rbp - 176] ; (SET)
+ mov bl, byte [rbp - 175] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 175], al ; (SET)
+ mov cl, byte [rbp - 175] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 174], al ; Mov after compare
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 174], 0
+parse._ast_value_bare#2#loop#5#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 173] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._ast_value_bare#2#loop#end
+ jmp parse._ast_value_bare#2#loop#start
+parse._ast_value_bare#2#loop#end:
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._ast_value_bare#end
+
+parse._ast_value_bare#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._assoc_right:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._op_order
+ mov r11, rax ; (SET)
+ cmp r11, 11
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._assoc_right#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._assoc_right#end
+ jmp parse._assoc_right#0#wrap#end
+parse._assoc_right#0#wrap#0#if#end:
+parse._assoc_right#0#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._assoc_right#end
+
+parse._assoc_right#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._assoc:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._op_order
+ mov r12, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._assoc_right
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp al, 0
+ je parse._assoc#0#wrap#0#if#0#bool#end
+ cmp r11, r12
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+parse._assoc#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._assoc#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._assoc#end
+ jmp parse._assoc#0#wrap#end
+parse._assoc#0#wrap#0#if#end:
+parse._assoc#0#wrap#end:
+
+ ; STARTING RETURN
+ cmp r11, r12
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp parse._assoc#end
+
+parse._assoc#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_value:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13b, dl ; (SET)
+ sub rsp, 50 ; Create stack space for local variable val
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_VALUE] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_value#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 124] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 124], rax ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov r14, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r14 ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], r13b ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_value_bare
+ mov r15b, al ; (SET)
+ sub rsp, 1 ; Create stack space for local variable valid
+ mov byte [rbp - 107], r15b ; (SET)
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_value#1#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], rsi ; (SET)
+ mov rdi, [rbp - 115] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_value#1#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value#1#loop#end
+parse._ast_value#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_SEP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_value#1#loop#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 110], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 118], r12 ; (SET)
+ mov rax, qword [rbp - 118] ; (SET)
+ lea rsp, [rbp - 110] ; Free stack space (freeing tmp variables)
+ call parse._is_closing
+ mov r9b, byte [rbp - 110] ; (SET)
+ mov r8b, byte [rbp - 109] ; (SET)
+ mov bl, byte [rbp - 108] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], al ; (SET)
+ mov cl, byte [rbp - 108] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_value#1#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value#1#loop#1#wrap#0#if#end
+ mov r15b, 0 ; (SET)
+ jmp parse._ast_value#1#loop#1#wrap#end
+parse._ast_value#1#loop#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_value#1#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 116] ; (SET)
+ mov rbx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 108] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value#1#loop#1#wrap#1#if#end
+ mov r15b, 0 ; (SET)
+ mov byte [rbp - 107], 0 ; (SET)
+ jmp parse._ast_value#1#loop#1#wrap#end
+parse._ast_value#1#loop#1#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_value#1#loop#1#wrap#2#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 110], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 118], r12 ; (SET)
+ mov rax, qword [rbp - 118] ; (SET)
+ lea rsp, [rbp - 110] ; Free stack space (freeing tmp variables)
+ call parse._op_bin
+ mov r9b, byte [rbp - 110] ; (SET)
+ mov r8b, byte [rbp - 109] ; (SET)
+ mov bl, byte [rbp - 108] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], al ; (SET)
+ mov cl, byte [rbp - 108] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_value#1#loop#1#wrap#2#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value#1#loop#1#wrap#2#if#end
+ sub rsp, 50 ; Create stack space for local variable bin
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 157] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 165], rax ; (SET)
+ mov si, word [rel parse.NTYPE_BIN_OP] ; (SET_PRM_R)
+ mov word [rbp - 167], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 175], rsi ; (SET)
+ mov rax, qword [rbp - 165] ; (SET)
+ mov bx, word [rbp - 167] ; (SET)
+ mov rcx, qword [rbp - 175] ; (SET)
+ lea rsp, [rbp - 157] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 165], rsi ; (SET)
+ mov rax, qword [rbp - 165] ; (SET)
+ lea rsp, [rbp - 157] ; Free stack space (freeing tmp variables)
+ call parse._op_order
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 165], rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable gt
+ mov byte [rbp - 166], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_BIN_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value#1#loop#1#wrap#2#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rsi, qword [rbp - 165] ; (SET_PRM_R)
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rax, qword [rbp - 174] ; (SET)
+ mov rbx, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 166] ; Free stack space (freeing tmp variables)
+ call parse._assoc
+ mov byte [rbp - 166], al ; (SET)
+ jmp parse._ast_value#1#loop#1#wrap#2#if#1#wrap#end
+parse._ast_value#1#loop#1#wrap#2#if#1#wrap#0#if#end:
+parse._ast_value#1#loop#1#wrap#2#if#1#wrap#end:
+ mov cl, byte [rbp - 166] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value#1#loop#1#wrap#2#if#2#loop#end
+parse._ast_value#1#loop#1#wrap#2#if#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_BIN_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value#1#loop#1#wrap#2#if#2#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rsi, qword [rbp - 165] ; (SET_PRM_R)
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rax, qword [rbp - 174] ; (SET)
+ mov rbx, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 166] ; Free stack space (freeing tmp variables)
+ call parse._assoc
+ mov byte [rbp - 166], al ; (SET)
+ jmp parse._ast_value#1#loop#1#wrap#2#if#2#loop#0#wrap#end
+parse._ast_value#1#loop#1#wrap#2#if#2#loop#0#wrap#0#if#end:
+ mov byte [rbp - 166], 0 ; (SET)
+ jmp parse._ast_value#1#loop#1#wrap#2#if#2#loop#0#wrap#end
+parse._ast_value#1#loop#1#wrap#2#if#2#loop#0#wrap#1#if#end:
+parse._ast_value#1#loop#1#wrap#2#if#2#loop#0#wrap#end:
+parse._ast_value#1#loop#1#wrap#2#if#2#loop#rep:
+ mov cl, byte [rbp - 166] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value#1#loop#1#wrap#2#if#2#loop#end
+ jmp parse._ast_value#1#loop#1#wrap#2#if#2#loop#start
+parse._ast_value#1#loop#1#wrap#2#if#2#loop#end:
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 174], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 182], rbx ; (SET)
+ mov rax, qword [rbp - 174] ; (SET)
+ mov rbx, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 166] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable rhs
+ mov qword [rbp - 174], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 157] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 182], rax ; (SET)
+ mov rsi, qword [rbp - 174] ; (SET_PRM_R)
+ mov qword [rbp - 190], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ mov rbx, qword [rbp - 190] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 182], r14 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 157] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 190], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ mov rbx, qword [rbp - 190] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r14, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 246], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 238] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 246] ; (SET)
+ lea rsp, [rbp - 238] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 206] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 206] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 206] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 155] ; (SET_PRM_R)
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rsi, qword [rel parse._ast_value#1#loop#1#wrap#2#if#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 190], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ mov rbx, qword [rbp - 190] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ cmp al, 0
+ je parse._ast_value#1#loop#1#wrap#2#if#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 182], r10 ; (SET)
+ mov qword [rbp - 190], r14 ; (SET)
+ mov qword [rbp - 198], r12 ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ mov rbx, qword [rbp - 190] ; (SET)
+ mov rcx, qword [rbp - 198] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call parse._ast_type
+ jmp parse._ast_value#1#loop#1#wrap#2#if#3#wrap#end
+parse._ast_value#1#loop#1#wrap#2#if#3#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 182], r10 ; (SET)
+ mov qword [rbp - 190], r14 ; (SET)
+ mov qword [rbp - 198], r12 ; (SET)
+ mov byte [rbp - 199], r13b ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ mov rbx, qword [rbp - 190] ; (SET)
+ mov rcx, qword [rbp - 198] ; (SET)
+ mov dl, byte [rbp - 199] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call parse._ast_value_bare
+ mov r15b, al ; (SET)
+ mov byte [rbp - 107], r15b ; (SET)
+ jmp parse._ast_value#1#loop#1#wrap#2#if#3#wrap#end
+parse._ast_value#1#loop#1#wrap#2#if#3#wrap#1#if#end:
+parse._ast_value#1#loop#1#wrap#2#if#3#wrap#end:
+ jmp parse._ast_value#1#loop#1#wrap#end
+parse._ast_value#1#loop#1#wrap#2#if#end:
+ mov r15b, 0 ; (SET)
+ jmp parse._ast_value#1#loop#1#wrap#end
+parse._ast_value#1#loop#1#wrap#3#if#end:
+parse._ast_value#1#loop#1#wrap#end:
+parse._ast_value#1#loop#rep:
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_value#1#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], rsi ; (SET)
+ mov rdi, [rbp - 115] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_value#1#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_value#1#loop#end
+ jmp parse._ast_value#1#loop#start
+parse._ast_value#1#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ mov al, byte [rbp - 107] ; (SET)
+ jmp parse._ast_value#end
+
+parse._ast_value#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_keyword_expr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_keyword_expr#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._ast_keyword_expr#0#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 60], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 68], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_keyword_expr#0#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 76], rsi ; (SET)
+ mov rax, qword [rbp - 68] ; (SET)
+ mov rbx, qword [rbp - 76] ; (SET)
+ lea rsp, [rbp - 60] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 60] ; (SET)
+ mov r8b, byte [rbp - 59] ; (SET)
+ mov bl, byte [rbp - 58] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], al ; (SET)
+ mov cl, byte [rbp - 58] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 57], al ; Mov after compare
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 57], 0
+parse._ast_keyword_expr#0#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._ast_keyword_expr#0#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_keyword_expr#0#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_keyword_expr#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_keyword_expr#0#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable ret
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_FLOW_CONTROL] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, r13
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ je parse._ast_keyword_expr#0#wrap#0#if#5#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 110], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 118], r12 ; (SET)
+ mov rax, qword [rbp - 118] ; (SET)
+ lea rsp, [rbp - 110] ; Free stack space (freeing tmp variables)
+ call parse._is_closing
+ mov r9b, byte [rbp - 110] ; (SET)
+ mov r8b, byte [rbp - 109] ; (SET)
+ mov bl, byte [rbp - 108] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], al ; (SET)
+ mov cl, byte [rbp - 108] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+parse._ast_keyword_expr#0#wrap#0#if#5#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._ast_keyword_expr#0#wrap#0#if#5#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_keyword_expr#0#wrap#0#if#5#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_keyword_expr#0#wrap#0#if#5#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], 0 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ jmp parse._ast_keyword_expr#0#wrap#0#if#5#wrap#end
+parse._ast_keyword_expr#0#wrap#0#if#5#wrap#0#if#end:
+parse._ast_keyword_expr#0#wrap#0#if#5#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._ast_keyword_expr#end
+ jmp parse._ast_keyword_expr#0#wrap#end
+parse._ast_keyword_expr#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_keyword_expr#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_keyword_expr#0#wrap#end
+parse._ast_keyword_expr#0#wrap#1#if#end:
+parse._ast_keyword_expr#0#wrap#end:
+
+parse._ast_keyword_expr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._type_helper_pre:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13b, 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._type_helper_pre#0#loop#0#bool#end
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._type_helper_pre#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_pre#0#loop#end
+parse._type_helper_pre#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._type_helper_pre#0#loop#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_pre#0#loop#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._type_helper_pre#0#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_pre#0#loop#1#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable ptr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_PRE_OP] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ jmp parse._type_helper_pre#0#loop#1#wrap#end
+parse._type_helper_pre#0#loop#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._type_helper_pre#0#loop#1#wrap#1#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_pre#0#loop#1#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._type_helper_pre#0#loop#1#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_pre#0#loop#1#wrap#1#if#end
+ sub rsp, 50 ; Create stack space for local variable arr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_PRE_OP] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_LITRL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rdi, [rsi] ; auto deref (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [rbp - 110], sil ; (SET)
+ mov al, byte [rbp - 110] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse.is_numeric
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable num
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_LITERAL] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 157], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 165], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 173], rsi ; (SET)
+ mov rax, qword [rbp - 165] ; (SET)
+ mov rbx, qword [rbp - 173] ; (SET)
+ lea rsp, [rbp - 157] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 157] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r12 ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#end
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r10 ; (SET)
+ mov qword [rbp - 172], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 180], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ mov rcx, qword [rbp - 180] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ mov r13b, 0 ; (SET)
+ jmp parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#end
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#1#if#end:
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#1#wrap#end:
+ jmp parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#end
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#1#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#end
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ mov r13b, 0 ; (SET)
+ jmp parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#end
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#2#if#end:
+parse._type_helper_pre#0#loop#1#wrap#1#if#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._type_helper_pre#0#loop#1#wrap#end
+parse._type_helper_pre#0#loop#1#wrap#1#if#end:
+ mov r13b, 0 ; (SET)
+ jmp parse._type_helper_pre#0#loop#1#wrap#end
+parse._type_helper_pre#0#loop#1#wrap#2#if#end:
+parse._type_helper_pre#0#loop#1#wrap#end:
+parse._type_helper_pre#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._type_helper_pre#0#loop#2#bool#end
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._type_helper_pre#0#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_pre#0#loop#end
+ jmp parse._type_helper_pre#0#loop#start
+parse._type_helper_pre#0#loop#end:
+
+parse._type_helper_pre#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._type_helper_func:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_func#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_func#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_type
+ jmp parse._type_helper_func#0#wrap#end
+parse._type_helper_func#0#wrap#0#if#end:
+parse._type_helper_func#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_func#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_func#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_type
+ jmp parse._type_helper_func#1#wrap#end
+parse._type_helper_func#1#wrap#0#if#end:
+parse._type_helper_func#1#wrap#end:
+
+parse._type_helper_func#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._type_helper_usertype:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._type_helper_usertype#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._type_helper_usertype#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_usertype#0#loop#end
+parse._type_helper_usertype#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_usertype#0#loop#1#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable utp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#0#if#end
+ mov r13b, 0 ; (SET)
+ jmp parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#end
+parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#end
+parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#1#if#end:
+parse._type_helper_usertype#0#loop#1#wrap#0#if#0#wrap#end:
+ jmp parse._type_helper_usertype#0#loop#1#wrap#end
+parse._type_helper_usertype#0#loop#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_usertype#0#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ mov r13b, 0 ; (SET)
+ jmp parse._type_helper_usertype#0#loop#1#wrap#end
+parse._type_helper_usertype#0#loop#1#wrap#1#if#end:
+parse._type_helper_usertype#0#loop#1#wrap#end:
+parse._type_helper_usertype#0#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._type_helper_usertype#0#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._type_helper_usertype#0#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_usertype#0#loop#end
+ jmp parse._type_helper_usertype#0#loop#start
+parse._type_helper_usertype#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._type_helper_usertype#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r12 ; (SET)
+ mov rsi, qword [rel parse._type_helper_usertype#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._type_helper_usertype#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._type_helper_usertype#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_type
+ jmp parse._type_helper_usertype#1#wrap#end
+parse._type_helper_usertype#1#wrap#0#if#end:
+parse._type_helper_usertype#1#wrap#end:
+
+parse._type_helper_usertype#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_type:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 50 ; Create stack space for local variable typ
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_TYPE] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_type#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 124] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 124], rax ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._type_helper_pre
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_type#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_type#1#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable ktp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov qword [rbp - 180], r12 ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ mov rcx, qword [rbp - 180] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._type_helper_func
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._ast_type#end
+ jmp parse._ast_type#1#wrap#end
+parse._ast_type#1#wrap#0#if#end:
+parse._ast_type#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_type#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._type_helper_usertype
+ jmp parse._ast_type#2#wrap#end
+parse._ast_type#2#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_type#2#wrap#1#if#end
+ sub rsp, 50 ; Create stack space for local variable ktp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ jmp parse._ast_type#2#wrap#end
+parse._ast_type#2#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_type#2#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._ast_type#end
+ jmp parse._ast_type#2#wrap#end
+parse._ast_type#2#wrap#2#if#end:
+parse._ast_type#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_type#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ cmp al, 0
+ je parse._ast_type#3#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable post
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_POST_OP] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ jmp parse._ast_type#3#wrap#end
+parse._ast_type#3#wrap#0#if#end:
+parse._ast_type#3#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+parse._ast_type#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_list_value:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 50 ; Create stack space for local variable list
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_VLIST] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rdi, [rsi] ; auto deref (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [rbp - 107], sil ; (SET)
+ mov al, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._get_closing_delim
+ mov r13b, al ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_value#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_value#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_value#0#loop#end
+parse._ast_list_value#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], 1 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], r10 ; (SET)
+ mov qword [rbp - 124], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_value#0#loop#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 116] ; (SET)
+ mov rbx, qword [rbp - 124] ; (SET)
+ mov rcx, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_value#0#loop#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], rsi ; (SET)
+ mov rdi, [rbp - 115] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+ jne parse._ast_list_value#0#loop#1#wrap#0#if#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], rsi ; (SET)
+ mov rdi, [rbp - 116] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 108], al ; Mov after compare
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 108], 0
+parse._ast_list_value#0#loop#1#wrap#0#if#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_value#0#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_value#0#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_value#0#loop#1#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp parse._ast_list_value#end
+ jmp parse._ast_list_value#0#loop#1#wrap#end
+parse._ast_list_value#0#loop#1#wrap#0#if#end:
+parse._ast_list_value#0#loop#1#wrap#end:
+parse._ast_list_value#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_value#0#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_value#0#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_value#0#loop#end
+ jmp parse._ast_list_value#0#loop#start
+parse._ast_list_value#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable next
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp parse._ast_list_value#end
+
+parse._ast_list_value#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._maybe_helper_decl:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable next
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rcx, qword [rbp - 120] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._maybe_helper_decl#0#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 121], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 122], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 123], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 131], rax ; (SET)
+ mov rsi, qword [rel parse._maybe_helper_decl#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 139], rsi ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ mov rbx, qword [rbp - 139] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 123] ; (SET)
+ mov r8b, byte [rbp - 122] ; (SET)
+ mov bl, byte [rbp - 121] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ cmp al, 0
+parse._maybe_helper_decl#0#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._maybe_helper_decl#0#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 121], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 122], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 123], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call parse._is_closing
+ mov r9b, byte [rbp - 123] ; (SET)
+ mov r8b, byte [rbp - 122] ; (SET)
+ mov bl, byte [rbp - 121] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 121], al ; (SET)
+ mov cl, byte [rbp - 121] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._maybe_helper_decl#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._maybe_helper_decl#0#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable id
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 178], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 180], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 188], rsi ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ mov bx, word [rbp - 180] ; (SET)
+ mov rcx, qword [rbp - 188] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 186], rsi ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ mov rbx, qword [rbp - 186] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._maybe_helper_decl#end
+ jmp parse._maybe_helper_decl#0#wrap#end
+parse._maybe_helper_decl#0#wrap#0#if#end:
+parse._maybe_helper_decl#0#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable tp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 178], rax ; (SET)
+ mov si, word [rel parse.NTYPE_TYPE] ; (SET_PRM_R)
+ mov word [rbp - 180], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._maybe_helper_decl#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 196], rsi ; (SET)
+ mov rax, qword [rbp - 196] ; (SET)
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 188], rax ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ mov bx, word [rbp - 180] ; (SET)
+ mov rcx, qword [rbp - 188] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 50 ; Create stack space for local variable utmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 228], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 230], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 238], rsi ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ mov bx, word [rbp - 230] ; (SET)
+ mov rcx, qword [rbp - 238] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 228], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 236], rsi ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ mov rbx, qword [rbp - 236] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov r13b, 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._maybe_helper_decl#2#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 221], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 222], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 223], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 231], r12 ; (SET)
+ mov rsi, qword [rel parse._maybe_helper_decl#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 239], rsi ; (SET)
+ mov rax, qword [rbp - 231] ; (SET)
+ mov rbx, qword [rbp - 239] ; (SET)
+ lea rsp, [rbp - 223] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 223] ; (SET)
+ mov r8b, byte [rbp - 222] ; (SET)
+ mov bl, byte [rbp - 221] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 221], al ; (SET)
+ mov cl, byte [rbp - 221] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._maybe_helper_decl#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._maybe_helper_decl#2#wrap#0#if#end
+ mov r13b, 0 ; (SET)
+ jmp parse._maybe_helper_decl#2#wrap#end
+parse._maybe_helper_decl#2#wrap#0#if#end:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 292], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 284] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 292] ; (SET)
+ lea rsp, [rbp - 284] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 252] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r12 ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._maybe_helper_decl#2#wrap#end
+parse._maybe_helper_decl#2#wrap#1#if#end:
+parse._maybe_helper_decl#2#wrap#end:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._maybe_helper_decl#3#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], rsi ; (SET)
+ mov rdi, [rbp - 228] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._maybe_helper_decl#3#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._maybe_helper_decl#3#loop#end
+parse._maybe_helper_decl#3#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._maybe_helper_decl#3#loop#1#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable utp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 270] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 278], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 280], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 278] ; (SET)
+ mov bx, word [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 270] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 342], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 334] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 342] ; (SET)
+ lea rsp, [rbp - 334] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 302] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 302] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 302] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 270] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 278], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 270] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 286], rsi ; (SET)
+ mov rax, qword [rbp - 278] ; (SET)
+ mov rbx, qword [rbp - 286] ; (SET)
+ lea rsp, [rbp - 270] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 271], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 272], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 273], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 281], r12 ; (SET)
+ mov rsi, qword [rel parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 289], rsi ; (SET)
+ mov rax, qword [rbp - 281] ; (SET)
+ mov rbx, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 273] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 273] ; (SET)
+ mov r8b, byte [rbp - 272] ; (SET)
+ mov bl, byte [rbp - 271] ; (SET)
+ lea rsp, [rbp - 270] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 271], al ; (SET)
+ mov cl, byte [rbp - 271] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 270] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#0#if#end
+ mov r13b, 0 ; (SET)
+ jmp parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#end
+parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 342], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 334] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 342] ; (SET)
+ lea rsp, [rbp - 334] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 302] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 302] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 302] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 270] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 278], r12 ; (SET)
+ mov rax, qword [rbp - 278] ; (SET)
+ lea rsp, [rbp - 270] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#end
+parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#1#if#end:
+parse._maybe_helper_decl#3#loop#1#wrap#0#if#0#wrap#end:
+ jmp parse._maybe_helper_decl#3#loop#1#wrap#end
+parse._maybe_helper_decl#3#loop#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ mov qword [rbp - 236], r12 ; (SET)
+ mov rsi, qword [rel parse._maybe_helper_decl#3#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 244], rsi ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ mov rbx, qword [rbp - 236] ; (SET)
+ mov rcx, qword [rbp - 244] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ mov r13b, 0 ; (SET)
+ jmp parse._maybe_helper_decl#3#loop#1#wrap#end
+parse._maybe_helper_decl#3#loop#1#wrap#1#if#end:
+parse._maybe_helper_decl#3#loop#1#wrap#end:
+parse._maybe_helper_decl#3#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._maybe_helper_decl#3#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], rsi ; (SET)
+ mov rdi, [rbp - 228] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._maybe_helper_decl#3#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._maybe_helper_decl#3#loop#end
+ jmp parse._maybe_helper_decl#3#loop#start
+parse._maybe_helper_decl#3#loop#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._maybe_helper_decl#4#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 221], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 222], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 223], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 231], r12 ; (SET)
+ mov rsi, qword [rel parse._maybe_helper_decl#4#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 239], rsi ; (SET)
+ mov rax, qword [rbp - 231] ; (SET)
+ mov rbx, qword [rbp - 239] ; (SET)
+ lea rsp, [rbp - 223] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 223] ; (SET)
+ mov r8b, byte [rbp - 222] ; (SET)
+ mov bl, byte [rbp - 221] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 221], al ; (SET)
+ mov cl, byte [rbp - 221] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._maybe_helper_decl#4#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._maybe_helper_decl#4#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 236], rsi ; (SET)
+ mov qword [rbp - 244], r12 ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ mov rbx, qword [rbp - 236] ; (SET)
+ mov rcx, qword [rbp - 244] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_type
+ jmp parse._maybe_helper_decl#4#wrap#end
+parse._maybe_helper_decl#4#wrap#0#if#end:
+parse._maybe_helper_decl#4#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 236], rsi ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ mov rbx, qword [rbp - 236] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._maybe_helper_decl#5#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ mov qword [rbp - 236], r12 ; (SET)
+ mov rsi, qword [rel parse._maybe_helper_decl#5#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 244], rsi ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ mov rbx, qword [rbp - 236] ; (SET)
+ mov rcx, qword [rbp - 244] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._maybe_helper_decl#end
+ jmp parse._maybe_helper_decl#5#wrap#end
+parse._maybe_helper_decl#5#wrap#0#if#end:
+parse._maybe_helper_decl#5#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable id
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 270] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 278], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 280], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 278] ; (SET)
+ mov bx, word [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 270] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 278], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 270] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 286], rsi ; (SET)
+ mov rax, qword [rbp - 278] ; (SET)
+ mov rbx, qword [rbp - 286] ; (SET)
+ lea rsp, [rbp - 270] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 342], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 334] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 342] ; (SET)
+ lea rsp, [rbp - 334] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 302] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 302] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 302] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 270] ; Free stack space (freeing tmp variables)
+
+parse._maybe_helper_decl#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_list_decl:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 50 ; Create stack space for local variable list
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_DLIST] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rdi, [rsi] ; auto deref (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [rbp - 107], sil ; (SET)
+ mov al, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._get_closing_delim
+ mov r13b, al ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r14b, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_decl#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_decl#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_decl#0#loop#end
+parse._ast_list_decl#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r14b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ cmp byte byte [rbp - 107], 0
+ jne parse._ast_list_decl#0#loop#1#wrap#0#if#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], rsi ; (SET)
+ mov rdi, [rbp - 116] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 108], al ; Mov after compare
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 108], 0
+parse._ast_list_decl#0#loop#1#wrap#0#if#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._ast_list_decl#0#loop#1#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 110], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 118], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_decl#0#loop#1#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 126], rsi ; (SET)
+ mov rax, qword [rbp - 118] ; (SET)
+ mov rbx, qword [rbp - 126] ; (SET)
+ lea rsp, [rbp - 110] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 110] ; (SET)
+ mov r8b, byte [rbp - 109] ; (SET)
+ mov bl, byte [rbp - 108] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], al ; (SET)
+ mov cl, byte [rbp - 108] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+parse._ast_list_decl#0#loop#1#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._ast_list_decl#0#loop#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_decl#0#loop#1#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_decl#0#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_decl#0#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_type
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#end
+ cmp r14b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#end
+parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#end
+parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#1#if#end:
+parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp parse._ast_list_decl#end
+ jmp parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#end
+parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#0#if#end:
+parse._ast_list_decl#0#loop#1#wrap#0#if#5#wrap#end:
+ mov r14b, 1 ; (SET)
+ sub rsp, 50 ; Create stack space for local variable id
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ jmp parse._ast_list_decl#0#loop#1#wrap#end
+parse._ast_list_decl#0#loop#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_decl#0#loop#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._maybe_helper_decl
+ jmp parse._ast_list_decl#0#loop#1#wrap#end
+parse._ast_list_decl#0#loop#1#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_decl#0#loop#1#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp parse._ast_list_decl#end
+ jmp parse._ast_list_decl#0#loop#1#wrap#end
+parse._ast_list_decl#0#loop#1#wrap#2#if#end:
+parse._ast_list_decl#0#loop#1#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], r10 ; (SET)
+ mov qword [rbp - 124], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_decl#0#loop#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 116] ; (SET)
+ mov rbx, qword [rbp - 124] ; (SET)
+ mov rcx, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_decl#0#loop#2#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._is_closing
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_decl#0#loop#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_decl#0#loop#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_decl#0#loop#2#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp parse._ast_list_decl#end
+ jmp parse._ast_list_decl#0#loop#2#wrap#end
+parse._ast_list_decl#0#loop#2#wrap#0#if#end:
+parse._ast_list_decl#0#loop#2#wrap#end:
+parse._ast_list_decl#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_decl#0#loop#3#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_decl#0#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_decl#0#loop#end
+ jmp parse._ast_list_decl#0#loop#start
+parse._ast_list_decl#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r15, qword [rsi] ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable next
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+
+ ; STARTING RETURN
+ mov rax, r15 ; (SET)
+ jmp parse._ast_list_decl#end
+
+parse._ast_list_decl#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_list_enum:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 50 ; Create stack space for local variable list
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ELIST] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rdi, [rsi] ; auto deref (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [rbp - 107], sil ; (SET)
+ mov al, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._get_closing_delim
+ mov r13b, al ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_enum#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_enum#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_enum#0#loop#end
+parse._ast_list_enum#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_enum#0#loop#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 50 ; Create stack space for local variable enum_id
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r10 ; (SET)
+ mov qword [rbp - 172], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_enum#0#loop#1#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 180], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ mov rcx, qword [rbp - 180] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ cmp al, 0
+ je parse._ast_list_enum#0#loop#1#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov qword [rbp - 180], r12 ; (SET)
+ mov byte [rbp - 181], 1 ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ mov rcx, qword [rbp - 180] ; (SET)
+ mov dl, byte [rbp - 181] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ jmp parse._ast_list_enum#0#loop#1#wrap#0#if#0#wrap#end
+parse._ast_list_enum#0#loop#1#wrap#0#if#0#wrap#0#if#end:
+parse._ast_list_enum#0#loop#1#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._ast_list_enum#0#loop#1#wrap#end
+parse._ast_list_enum#0#loop#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_enum#0#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp parse._ast_list_enum#end
+ jmp parse._ast_list_enum#0#loop#1#wrap#end
+parse._ast_list_enum#0#loop#1#wrap#1#if#end:
+parse._ast_list_enum#0#loop#1#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_enum#0#loop#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_enum#0#loop#2#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ jmp parse._ast_list_enum#0#loop#2#wrap#end
+parse._ast_list_enum#0#loop#2#wrap#0#if#end:
+parse._ast_list_enum#0#loop#2#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], r10 ; (SET)
+ mov qword [rbp - 124], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_enum#0#loop#3#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 116] ; (SET)
+ mov rbx, qword [rbp - 124] ; (SET)
+ mov rcx, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_enum#0#loop#3#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._is_closing
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_enum#0#loop#3#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_enum#0#loop#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_enum#0#loop#3#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp parse._ast_list_enum#end
+ jmp parse._ast_list_enum#0#loop#3#wrap#end
+parse._ast_list_enum#0#loop#3#wrap#0#if#end:
+parse._ast_list_enum#0#loop#3#wrap#end:
+parse._ast_list_enum#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_enum#0#loop#4#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_enum#0#loop#4#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_enum#0#loop#end
+ jmp parse._ast_list_enum#0#loop#start
+parse._ast_list_enum#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable next
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp parse._ast_list_enum#end
+
+parse._ast_list_enum#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_list_type:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 50 ; Create stack space for local variable list
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_TLIST] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rdi, [rsi] ; auto deref (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [rbp - 107], sil ; (SET)
+ mov al, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._get_closing_delim
+ mov r13b, al ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_type#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_type#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_type#0#loop#end
+parse._ast_list_type#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], rsi ; (SET)
+ mov rdi, [rbp - 115] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+ jne parse._ast_list_type#0#loop#1#wrap#0#if#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], rsi ; (SET)
+ mov rdi, [rbp - 116] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 108], al ; Mov after compare
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 108], 0
+parse._ast_list_type#0#loop#1#wrap#0#if#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._ast_list_type#0#loop#1#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 110], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 118], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_type#0#loop#1#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 126], rsi ; (SET)
+ mov rax, qword [rbp - 118] ; (SET)
+ mov rbx, qword [rbp - 126] ; (SET)
+ lea rsp, [rbp - 110] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 110] ; (SET)
+ mov r8b, byte [rbp - 109] ; (SET)
+ mov bl, byte [rbp - 108] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], al ; (SET)
+ mov cl, byte [rbp - 108] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+parse._ast_list_type#0#loop#1#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._ast_list_type#0#loop#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_type#0#loop#1#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_type#0#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_type#0#loop#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_type
+ jmp parse._ast_list_type#0#loop#1#wrap#end
+parse._ast_list_type#0#loop#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_type#0#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp parse._ast_list_type#end
+ jmp parse._ast_list_type#0#loop#1#wrap#end
+parse._ast_list_type#0#loop#1#wrap#1#if#end:
+parse._ast_list_type#0#loop#1#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], r10 ; (SET)
+ mov qword [rbp - 124], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_type#0#loop#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 116] ; (SET)
+ mov rbx, qword [rbp - 124] ; (SET)
+ mov rcx, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_type#0#loop#2#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._is_closing
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_type#0#loop#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_type#0#loop#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_type#0#loop#2#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp parse._ast_list_type#end
+ jmp parse._ast_list_type#0#loop#2#wrap#end
+parse._ast_list_type#0#loop#2#wrap#0#if#end:
+parse._ast_list_type#0#loop#2#wrap#end:
+parse._ast_list_type#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_list_type#0#loop#3#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_type#0#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_type#0#loop#end
+ jmp parse._ast_list_type#0#loop#start
+parse._ast_list_type#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable next
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp parse._ast_list_type#end
+
+parse._ast_list_type#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_list_stmt:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 50 ; Create stack space for local variable list
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_SLIST] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rdi, [rsi] ; auto deref (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [rbp - 107], sil ; (SET)
+ mov al, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._get_closing_delim
+ mov r13b, al ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r14b, 1 ; (SET)
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._ast_list_stmt#0#loop#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], rsi ; (SET)
+ mov rdi, [rbp - 115] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+parse._ast_list_stmt#0#loop#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._ast_list_stmt#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_stmt#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_stmt#0#loop#end
+parse._ast_list_stmt#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ mov qword [rbp - 123], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_stmt#0#loop#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_stmt#0#loop#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_asm
+ jmp parse._ast_list_stmt#0#loop#2#wrap#end
+parse._ast_list_stmt#0#loop#2#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_list_stmt#0#loop#2#wrap#1#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_stmt#0#loop#2#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_stmt#0#loop#2#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_stmt#0#loop#2#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_decl
+ jmp parse._ast_list_stmt#0#loop#2#wrap#end
+parse._ast_list_stmt#0#loop#2#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_list_stmt#0#loop#2#wrap#2#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_stmt#0#loop#2#wrap#2#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_stmt#0#loop#2#wrap#2#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_stmt#0#loop#2#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], 1 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._maybe_helper_fun
+ jmp parse._ast_list_stmt#0#loop#2#wrap#end
+parse._ast_list_stmt#0#loop#2#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_LITRL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._ast_list_stmt#0#loop#2#wrap#3#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 110], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 118], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_stmt#0#loop#2#wrap#3#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 126], rsi ; (SET)
+ mov rax, qword [rbp - 118] ; (SET)
+ mov rbx, qword [rbp - 126] ; (SET)
+ lea rsp, [rbp - 110] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 110] ; (SET)
+ mov r8b, byte [rbp - 109] ; (SET)
+ mov bl, byte [rbp - 108] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], al ; (SET)
+ mov cl, byte [rbp - 108] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+parse._ast_list_stmt#0#loop#2#wrap#3#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._ast_list_stmt#0#loop#2#wrap#3#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], r12 ; (SET)
+ mov rax, qword [rbp - 116] ; (SET)
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ call parse._op_prefix
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp al, 0
+parse._ast_list_stmt#0#loop#2#wrap#3#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_stmt#0#loop#2#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], 1 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ jmp parse._ast_list_stmt#0#loop#2#wrap#end
+parse._ast_list_stmt#0#loop#2#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_stmt#0#loop#2#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_keyword_expr
+ jmp parse._ast_list_stmt#0#loop#2#wrap#end
+parse._ast_list_stmt#0#loop#2#wrap#4#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_stmt#0#loop#2#wrap#5#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_stmt#0#loop#2#wrap#5#if#end
+ sub rsp, 50 ; Create stack space for local variable empty
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_EMPTY] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_list_stmt#0#loop#2#wrap#5#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 174], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._ast_list_stmt#0#loop#2#wrap#end
+parse._ast_list_stmt#0#loop#2#wrap#5#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_stmt#0#loop#2#wrap#6#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ mov r14b, 0 ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_list_stmt#0#loop#2#wrap#end
+parse._ast_list_stmt#0#loop#2#wrap#6#if#end:
+parse._ast_list_stmt#0#loop#2#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ mov qword [rbp - 123], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_stmt#0#loop#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_stmt#0#loop#3#wrap#0#if#end
+ mov r14b, 0 ; (SET)
+ jmp parse._ast_list_stmt#0#loop#3#wrap#end
+parse._ast_list_stmt#0#loop#3#wrap#0#if#end:
+parse._ast_list_stmt#0#loop#3#wrap#end:
+parse._ast_list_stmt#0#loop#rep:
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._ast_list_stmt#0#loop#5#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], rsi ; (SET)
+ mov rdi, [rbp - 115] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+parse._ast_list_stmt#0#loop#5#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._ast_list_stmt#0#loop#4#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_stmt#0#loop#4#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_stmt#0#loop#end
+ jmp parse._ast_list_stmt#0#loop#start
+parse._ast_list_stmt#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_list_stmt#1#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, r13b
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_list_stmt#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_list_stmt#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_list_stmt#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_list_stmt#1#wrap#end
+parse._ast_list_stmt#1#wrap#0#if#end:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_list_stmt#1#wrap#end
+parse._ast_list_stmt#1#wrap#1#if#end:
+parse._ast_list_stmt#1#wrap#end:
+
+parse._ast_list_stmt#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._block_helper_method:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable blf
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._block_helper_method#0#loop#end
+parse._block_helper_method#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._block_helper_method#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r11 ; (SET)
+ mov qword [rbp - 112], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_function
+ jmp parse._block_helper_method#0#loop#0#wrap#end
+parse._block_helper_method#0#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rsi, qword [rel parse._block_helper_method#0#loop#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._block_helper_method#0#loop#0#wrap#end
+parse._block_helper_method#0#loop#0#wrap#1#if#end:
+parse._block_helper_method#0#loop#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_block_pass
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 97], r10 ; (SET)
+ mov qword [rbp - 105], r12 ; (SET)
+ mov rsi, qword [rel parse._block_helper_method#0#loop#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 113], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ mov rcx, qword [rbp - 113] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._block_helper_method#0#loop#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rdi, [r8] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 59
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#0#if#end
+ mov r13b, 0 ; (SET)
+ jmp parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#end
+parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 97], r10 ; (SET)
+ mov qword [rbp - 105], r12 ; (SET)
+ mov rsi, qword [rel parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 113], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ mov rcx, qword [rbp - 113] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rsi, qword [rel parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#end
+parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#1#if#end:
+parse._block_helper_method#0#loop#1#wrap#0#if#1#wrap#end:
+ jmp parse._block_helper_method#0#loop#1#wrap#end
+parse._block_helper_method#0#loop#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 97], r10 ; (SET)
+ mov qword [rbp - 105], r12 ; (SET)
+ mov rsi, qword [rel parse._block_helper_method#0#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 113], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ mov rcx, qword [rbp - 113] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._block_helper_method#0#loop#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rel parse._block_helper_method#0#loop#1#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ mov r13b, 0 ; (SET)
+ jmp parse._block_helper_method#0#loop#1#wrap#end
+parse._block_helper_method#0#loop#1#wrap#1#if#end:
+parse._block_helper_method#0#loop#1#wrap#end:
+parse._block_helper_method#0#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._block_helper_method#0#loop#end
+ jmp parse._block_helper_method#0#loop#start
+parse._block_helper_method#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+
+parse._block_helper_method#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_method:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable blf
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_method#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_method#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_method#end
+ jmp parse._ast_method#0#wrap#end
+parse._ast_method#0#wrap#0#if#end:
+parse._ast_method#0#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable mth
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 146], rax ; (SET)
+ mov si, word [rel parse.NTYPE_METHOD] ; (SET_PRM_R)
+ mov word [rbp - 148], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 156], rsi ; (SET)
+ mov rax, qword [rbp - 146] ; (SET)
+ mov bx, word [rbp - 148] ; (SET)
+ mov rcx, qword [rbp - 156] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 210], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 202] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 210] ; (SET)
+ lea rsp, [rbp - 202] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_method#1#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 146], rsi ; (SET)
+ mov rdi, [rbp - 146] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_method#1#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_method#1#loop#end
+parse._ast_method#1#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 139], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 147], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_method#1#loop#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 155], rsi ; (SET)
+ mov rax, qword [rbp - 147] ; (SET)
+ mov rbx, qword [rbp - 155] ; (SET)
+ lea rsp, [rbp - 139] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 139] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_method#1#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 146], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 154], rsi ; (SET)
+ mov qword [rbp - 162], r12 ; (SET)
+ mov rax, qword [rbp - 146] ; (SET)
+ mov rbx, qword [rbp - 154] ; (SET)
+ mov rcx, qword [rbp - 162] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ call parse._block_helper_method
+ jmp parse._ast_method#1#loop#1#wrap#end
+parse._ast_method#1#loop#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rdi, [r8] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 59
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_method#1#loop#1#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 146], r10 ; (SET)
+ mov qword [rbp - 154], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_method#1#loop#1#wrap#1#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 162], rsi ; (SET)
+ mov rax, qword [rbp - 146] ; (SET)
+ mov rbx, qword [rbp - 154] ; (SET)
+ mov rcx, qword [rbp - 162] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_method#1#loop#1#wrap#1#if#0#wrap#end
+parse._ast_method#1#loop#1#wrap#1#if#0#wrap#0#if#end:
+parse._ast_method#1#loop#1#wrap#1#if#0#wrap#end:
+ mov r13b, 0 ; (SET)
+ jmp parse._ast_method#1#loop#1#wrap#end
+parse._ast_method#1#loop#1#wrap#1#if#end:
+parse._ast_method#1#loop#1#wrap#end:
+parse._ast_method#1#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_method#1#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 146], rsi ; (SET)
+ mov rdi, [rbp - 146] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_method#1#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_method#1#loop#end
+ jmp parse._ast_method#1#loop#start
+parse._ast_method#1#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 146], r10 ; (SET)
+ mov qword [rbp - 154], r12 ; (SET)
+ mov rax, qword [rbp - 146] ; (SET)
+ mov rbx, qword [rbp - 154] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ call parse._ast_block_pass
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 139], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 147], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_method#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 155], rsi ; (SET)
+ mov rax, qword [rbp - 147] ; (SET)
+ mov rbx, qword [rbp - 155] ; (SET)
+ lea rsp, [rbp - 139] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 139] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_method#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 146], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 154], rsi ; (SET)
+ mov rsi, qword [rel parse._ast_method#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 162], rsi ; (SET)
+ mov rax, qword [rbp - 146] ; (SET)
+ mov rbx, qword [rbp - 154] ; (SET)
+ mov rcx, qword [rbp - 162] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_method#2#wrap#end
+parse._ast_method#2#wrap#0#if#end:
+parse._ast_method#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 146], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 154], rsi ; (SET)
+ mov rax, qword [rbp - 146] ; (SET)
+ mov rbx, qword [rbp - 154] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+parse._ast_method#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_flow:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ movzx rsi, word [rel parse.NTYPE_IF_BLOCK] ; (SET_PRM_R)
+ mov r13, rsi ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov rcx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#0#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#0#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov rcx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#0#wrap#0#if#1#wrap#0#if#end
+ movzx rsi, word [rel parse.NTYPE_ELIF_BLOCK] ; (SET_PRM_R)
+ mov r13, rsi ; (SET)
+ jmp parse._ast_flow#0#wrap#0#if#1#wrap#end
+parse._ast_flow#0#wrap#0#if#1#wrap#0#if#end:
+ movzx rsi, word [rel parse.NTYPE_ELSE_BLOCK] ; (SET_PRM_R)
+ mov r13, rsi ; (SET)
+ jmp parse._ast_flow#0#wrap#0#if#1#wrap#end
+parse._ast_flow#0#wrap#0#if#1#wrap#1#if#end:
+parse._ast_flow#0#wrap#0#if#1#wrap#end:
+ jmp parse._ast_flow#0#wrap#end
+parse._ast_flow#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov rcx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#0#wrap#1#if#end
+ movzx rsi, word [rel parse.NTYPE_LOOP_BLOCK] ; (SET_PRM_R)
+ mov r13, rsi ; (SET)
+ jmp parse._ast_flow#0#wrap#end
+parse._ast_flow#0#wrap#1#if#end:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tok
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_flow#0#wrap#end
+parse._ast_flow#0#wrap#2#if#end:
+parse._ast_flow#0#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov word [rbp - 116], r13w ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_flow#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 124] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 124], rax ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ movzx rsi, word [rel parse.NTYPE_ELSE_BLOCK] ; (SET_PRM_R)
+ cmp r13, rsi
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_flow#2#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_flow#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_stmt
+ jmp parse._ast_flow#2#wrap#end
+parse._ast_flow#2#wrap#0#if#end:
+parse._ast_flow#2#wrap#end:
+ movzx rsi, word [rel parse.NTYPE_LOOP_BLOCK] ; (SET_PRM_R)
+ cmp r13, rsi
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_flow#3#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#3#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_flow#3#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_stmt
+ jmp parse._ast_flow#3#wrap#end
+parse._ast_flow#3#wrap#0#if#end:
+parse._ast_flow#3#wrap#end:
+ mov r14b, 1 ; (SET)
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_flow#4#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_flow#4#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#4#loop#end
+parse._ast_flow#4#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_flow#4#loop#1#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 59
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_flow#4#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#4#loop#1#wrap#0#if#end
+ mov r14b, 0 ; (SET)
+ jmp parse._ast_flow#4#loop#1#wrap#end
+parse._ast_flow#4#loop#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ mov qword [rbp - 123], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#4#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#4#loop#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_asm
+ jmp parse._ast_flow#4#loop#1#wrap#end
+parse._ast_flow#4#loop#1#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#4#loop#1#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#4#loop#1#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_fun_block
+ jmp parse._ast_flow#4#loop#1#wrap#end
+parse._ast_flow#4#loop#1#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_flow#4#loop#1#wrap#3#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#4#loop#1#wrap#3#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_flow#4#loop#1#wrap#3#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#4#loop#1#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_decl
+ jmp parse._ast_flow#4#loop#1#wrap#end
+parse._ast_flow#4#loop#1#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_flow#4#loop#1#wrap#4#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#4#loop#1#wrap#4#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_flow#4#loop#1#wrap#4#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#4#loop#1#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], 0 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._maybe_helper_fun
+ jmp parse._ast_flow#4#loop#1#wrap#end
+parse._ast_flow#4#loop#1#wrap#4#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_LITRL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._ast_flow#4#loop#1#wrap#5#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 110], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 118], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#4#loop#1#wrap#5#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 126], rsi ; (SET)
+ mov rax, qword [rbp - 118] ; (SET)
+ mov rbx, qword [rbp - 126] ; (SET)
+ lea rsp, [rbp - 110] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 110] ; (SET)
+ mov r8b, byte [rbp - 109] ; (SET)
+ mov bl, byte [rbp - 108] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], al ; (SET)
+ mov cl, byte [rbp - 108] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+parse._ast_flow#4#loop#1#wrap#5#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._ast_flow#4#loop#1#wrap#5#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], r12 ; (SET)
+ mov rax, qword [rbp - 116] ; (SET)
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ call parse._op_prefix
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp al, 0
+parse._ast_flow#4#loop#1#wrap#5#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#4#loop#1#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], 0 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ jmp parse._ast_flow#4#loop#1#wrap#end
+parse._ast_flow#4#loop#1#wrap#5#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#4#loop#1#wrap#6#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_keyword_expr
+ jmp parse._ast_flow#4#loop#1#wrap#end
+parse._ast_flow#4#loop#1#wrap#6#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_flow#4#loop#1#wrap#7#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_flow#4#loop#1#wrap#end
+parse._ast_flow#4#loop#1#wrap#7#if#end:
+parse._ast_flow#4#loop#1#wrap#end:
+parse._ast_flow#4#loop#rep:
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_flow#4#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_flow#4#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_flow#4#loop#end
+ jmp parse._ast_flow#4#loop#start
+parse._ast_flow#4#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+parse._ast_flow#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_fun_block:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable blf
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_fun_block#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rdi, [rbp - 96] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_fun_block#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_fun_block#0#loop#end
+parse._ast_fun_block#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 91], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 99], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_fun_block#0#loop#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 107], rsi ; (SET)
+ mov rax, qword [rbp - 99] ; (SET)
+ mov rbx, qword [rbp - 107] ; (SET)
+ lea rsp, [rbp - 91] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 91] ; (SET)
+ mov r8b, byte [rbp - 90] ; (SET)
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], al ; (SET)
+ mov cl, byte [rbp - 89] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._ast_fun_block#0#loop#1#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 91], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 92], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 100], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_fun_block#0#loop#1#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 108], rsi ; (SET)
+ mov rax, qword [rbp - 100] ; (SET)
+ mov rbx, qword [rbp - 108] ; (SET)
+ lea rsp, [rbp - 92] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 92] ; (SET)
+ mov r8b, byte [rbp - 91] ; (SET)
+ mov bl, byte [rbp - 90] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], al ; (SET)
+ mov cl, byte [rbp - 90] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 89], al ; Mov after compare
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 89], 0
+parse._ast_fun_block#0#loop#1#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._ast_fun_block#0#loop#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 91], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 99], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_fun_block#0#loop#1#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 107], rsi ; (SET)
+ mov rax, qword [rbp - 99] ; (SET)
+ mov rbx, qword [rbp - 107] ; (SET)
+ lea rsp, [rbp - 91] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 91] ; (SET)
+ mov r8b, byte [rbp - 90] ; (SET)
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], al ; (SET)
+ mov cl, byte [rbp - 89] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_fun_block#0#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_fun_block#0#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r11 ; (SET)
+ mov qword [rbp - 112], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_flow
+ jmp parse._ast_fun_block#0#loop#1#wrap#end
+parse._ast_fun_block#0#loop#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_fun_block#0#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_fun_block#0#loop#1#wrap#end
+parse._ast_fun_block#0#loop#1#wrap#1#if#end:
+parse._ast_fun_block#0#loop#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_fun_block#0#loop#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov r13b, al ; (SET)
+ cmp r13b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_fun_block#0#loop#3#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 91], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 99], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_fun_block#0#loop#3#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 107], rsi ; (SET)
+ mov rax, qword [rbp - 99] ; (SET)
+ mov rbx, qword [rbp - 107] ; (SET)
+ lea rsp, [rbp - 91] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 91] ; (SET)
+ mov r8b, byte [rbp - 90] ; (SET)
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], al ; (SET)
+ mov cl, byte [rbp - 89] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_fun_block#0#loop#3#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_fun_block#0#loop#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_fun_block#0#loop#3#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_fun_block#0#loop#3#wrap#end
+parse._ast_fun_block#0#loop#3#wrap#0#if#end:
+parse._ast_fun_block#0#loop#3#wrap#end:
+parse._ast_fun_block#0#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_fun_block#0#loop#4#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rdi, [rbp - 96] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_fun_block#0#loop#4#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_fun_block#0#loop#end
+ jmp parse._ast_fun_block#0#loop#start
+parse._ast_fun_block#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_block_pass
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 97], r10 ; (SET)
+ mov qword [rbp - 105], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_fun_block#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 113], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ mov rcx, qword [rbp - 113] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_fun_block#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rel parse._ast_fun_block#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_fun_block#1#wrap#end
+parse._ast_fun_block#1#wrap#0#if#end:
+parse._ast_fun_block#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+
+parse._ast_fun_block#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_post_list:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 50 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_TLIST] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post_list#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post_list#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_list#0#loop#end
+parse._mhf_post_list#0#loop#start:
+ sub rsp, 50 ; Create stack space for local variable _typ
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_TYPE] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._mhf_post_list#0#loop#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 174], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov qword [rbp - 180], r12 ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ mov rcx, qword [rbp - 180] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._type_helper_pre
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._mhf_post_list#0#loop#2#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], rsi ; (SET)
+ mov rdi, [rbp - 164] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post_list#0#loop#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_list#0#loop#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov qword [rbp - 180], r12 ; (SET)
+ mov byte [rbp - 181], 1 ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ mov rcx, qword [rbp - 180] ; (SET)
+ mov dl, byte [rbp - 181] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._mhf_post
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ cmp r14, rsi
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 157], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 158], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 159], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 167], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 175], rsi ; (SET)
+ mov rax, qword [rbp - 167] ; (SET)
+ mov rbx, qword [rbp - 175] ; (SET)
+ lea rsp, [rbp - 159] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 159] ; (SET)
+ mov r8b, byte [rbp - 158] ; (SET)
+ mov bl, byte [rbp - 157] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 157], al ; (SET)
+ mov cl, byte [rbp - 157] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r12 ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#end
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ cmp r14, rsi
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#1#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 157], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 158], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 159], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 167], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 175], rsi ; (SET)
+ mov rax, qword [rbp - 167] ; (SET)
+ mov rbx, qword [rbp - 175] ; (SET)
+ lea rsp, [rbp - 159] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 159] ; (SET)
+ mov r8b, byte [rbp - 158] ; (SET)
+ mov bl, byte [rbp - 157] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 157], al ; (SET)
+ mov cl, byte [rbp - 157] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#1#if#end
+ mov r13b, 0 ; (SET)
+ jmp parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#end
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#1#if#end:
+ cmp r14, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#2#if#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ cmp r14, rsi
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#2#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#2#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r14, rax ; (SET)
+ jmp parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#2#if#0#wrap#end
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#2#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#2#if#0#wrap#end
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#2#if#0#wrap#1#if#end:
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#2#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp parse._mhf_post_list#end
+ jmp parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#end
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#2#if#end:
+parse._mhf_post_list#0#loop#2#wrap#0#if#1#wrap#end:
+ jmp parse._mhf_post_list#0#loop#2#wrap#end
+parse._mhf_post_list#0#loop#2#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov rax, rax ; (SET)
+ jmp parse._mhf_post_list#end
+ jmp parse._mhf_post_list#0#loop#2#wrap#end
+parse._mhf_post_list#0#loop#2#wrap#1#if#end:
+parse._mhf_post_list#0#loop#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+parse._mhf_post_list#0#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post_list#0#loop#3#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], rsi ; (SET)
+ mov rdi, [rbp - 164] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post_list#0#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_list#0#loop#end
+ jmp parse._mhf_post_list#0#loop#start
+parse._mhf_post_list#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_post_list#end
+
+parse._mhf_post_list#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_post:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13b, dl ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#0#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable id
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 115], rax ; (SET)
+ mov rsi, qword [rel parse._mhf_post#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Node.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r11 ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._type_helper_func
+ jmp parse._mhf_post#0#wrap#0#if#0#wrap#end
+parse._mhf_post#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post#0#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#0#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 50 ; Create stack space for local variable post
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_POST_OP] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ jmp parse._mhf_post#0#wrap#0#if#0#wrap#end
+parse._mhf_post#0#wrap#0#if#0#wrap#1#if#end:
+parse._mhf_post#0#wrap#0#if#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#0#wrap#0#if#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_post#end
+ jmp parse._mhf_post#0#wrap#0#if#1#wrap#end
+parse._mhf_post#0#wrap#0#if#1#wrap#0#if#end:
+parse._mhf_post#0#wrap#0#if#1#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_post#end
+ jmp parse._mhf_post#0#wrap#end
+parse._mhf_post#0#wrap#0#if#end:
+parse._mhf_post#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ mov r15b, 1 ; (SET)
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post#1#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post#1#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#1#loop#end
+parse._mhf_post#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#1#loop#1#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable id
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ jmp parse._mhf_post#1#loop#1#wrap#end
+parse._mhf_post#1#loop#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._mhf_post#1#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._mhf_post#1#loop#1#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_post#end
+ jmp parse._mhf_post#1#loop#1#wrap#end
+parse._mhf_post#1#loop#1#wrap#1#if#end:
+parse._mhf_post#1#loop#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, r14
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post#1#loop#2#wrap#0#if#0#bool#end
+ cmp r13b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._mhf_post#1#loop#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#1#loop#2#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_post#end
+ jmp parse._mhf_post#1#loop#2#wrap#end
+parse._mhf_post#1#loop#2#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post#1#loop#2#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#1#loop#2#wrap#1#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ jmp parse._mhf_post#1#loop#2#wrap#end
+parse._mhf_post#1#loop#2#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 66], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post#1#loop#2#wrap#2#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 74], rsi ; (SET)
+ mov rax, qword [rbp - 66] ; (SET)
+ mov rbx, qword [rbp - 74] ; (SET)
+ lea rsp, [rbp - 58] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._mhf_post#1#loop#2#wrap#2#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post#1#loop#2#wrap#2#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#1#loop#2#wrap#2#if#end
+ mov r15b, 0 ; (SET)
+ jmp parse._mhf_post#1#loop#2#wrap#end
+parse._mhf_post#1#loop#2#wrap#2#if#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_post#end
+ jmp parse._mhf_post#1#loop#2#wrap#end
+parse._mhf_post#1#loop#2#wrap#3#if#end:
+parse._mhf_post#1#loop#2#wrap#end:
+parse._mhf_post#1#loop#rep:
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post#1#loop#3#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post#1#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#1#loop#end
+ jmp parse._mhf_post#1#loop#start
+parse._mhf_post#1#loop#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._mhf_post_list
+ mov r15, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable ln
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ cmp r15, r11
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post#2#wrap#0#if#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 65], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 67], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 75], r10 ; (SET)
+ mov qword [rbp - 83], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post#2#wrap#0#if#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 91], rsi ; (SET)
+ mov rax, qword [rbp - 75] ; (SET)
+ mov rbx, qword [rbp - 83] ; (SET)
+ mov rcx, qword [rbp - 91] ; (SET)
+ lea rsp, [rbp - 67] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov r9b, byte [rbp - 67] ; (SET)
+ mov r8b, byte [rbp - 66] ; (SET)
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 65], al ; (SET)
+ mov cl, byte [rbp - 65] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post#2#wrap#0#if#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#2#wrap#0#if#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post#2#wrap#0#if#1#wrap#0#if#2#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rdi, [rbp - 73] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rbp - 64]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 65], al ; Mov after compare
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 65], 0
+ jne parse._mhf_post#2#wrap#0#if#1#wrap#0#if#2#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 66], al ; Mov after compare
+ cmp byte byte [rbp - 66], 0
+parse._mhf_post#2#wrap#0#if#1#wrap#0#if#2#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post#2#wrap#0#if#1#wrap#0#if#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#2#wrap#0#if#1#wrap#0#if#2#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_post#end
+ jmp parse._mhf_post#2#wrap#0#if#1#wrap#0#if#2#wrap#end
+parse._mhf_post#2#wrap#0#if#1#wrap#0#if#2#wrap#0#if#end:
+parse._mhf_post#2#wrap#0#if#1#wrap#0#if#2#wrap#end:
+ jmp parse._mhf_post#2#wrap#0#if#1#wrap#end
+parse._mhf_post#2#wrap#0#if#1#wrap#0#if#end:
+parse._mhf_post#2#wrap#0#if#1#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r15 ; (SET)
+ jmp parse._mhf_post#end
+ jmp parse._mhf_post#2#wrap#end
+parse._mhf_post#2#wrap#0#if#end:
+parse._mhf_post#2#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post#3#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_post#end
+ jmp parse._mhf_post#3#wrap#end
+parse._mhf_post#3#wrap#0#if#end:
+parse._mhf_post#3#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_post#end
+
+parse._mhf_post#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_transform:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 50 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_VALUE] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._mhf_transform#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 124] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 124], rax ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov r13, rsi ; (SET)
+ mov r14, 0 ; (SET)
+ mov r15b, 1 ; (SET)
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_transform#1#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._mhf_transform#1#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#1#loop#end
+parse._mhf_transform#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov qword [rbp - 122], r14 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_PRE_OP]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#1#loop#1#wrap#0#if#end
+ mov r15b, 0 ; (SET)
+ jmp parse._mhf_transform#1#loop#1#wrap#end
+parse._mhf_transform#1#loop#1#wrap#0#if#end:
+ sub rsp, 50 ; Create stack space for local variable new
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_PRE_OP] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 174], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r13, rax ; (SET)
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ jmp parse._mhf_transform#1#loop#1#wrap#end
+parse._mhf_transform#1#loop#1#wrap#1#if#end:
+parse._mhf_transform#1#loop#1#wrap#end:
+parse._mhf_transform#1#loop#rep:
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_transform#1#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._mhf_transform#1#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#1#loop#end
+ jmp parse._mhf_transform#1#loop#start
+parse._mhf_transform#1#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#end
+parse._mhf_transform#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#0#wrap#0#if#end
+ mov r15, 0 ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r13 ; (SET)
+ mov rsi, qword [rel parse._mhf_transform#2#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Node.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#0#wrap#0#if#0#wrap#0#if#end
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ jmp parse._mhf_transform#2#loop#0#wrap#0#if#0#wrap#end
+parse._mhf_transform#2#loop#0#wrap#0#if#0#wrap#0#if#end:
+parse._mhf_transform#2#loop#0#wrap#0#if#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, r15
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for local variable mid
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 122], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 130], rbx ; (SET)
+ mov rax, qword [rbp - 122] ; (SET)
+ mov rbx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 114] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 114], rax ; (SET)
+ sub rsp, 50 ; Create stack space for local variable op
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 164] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rax ; (SET)
+ mov si, word [rel parse.NTYPE_BIN_OP] ; (SET_PRM_R)
+ mov word [rbp - 174], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._mhf_transform#2#loop#0#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 190], rsi ; (SET)
+ mov rax, qword [rbp - 190] ; (SET)
+ lea rsp, [rbp - 182] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 182], rax ; (SET)
+ mov rax, qword [rbp - 172] ; (SET)
+ mov bx, word [rbp - 174] ; (SET)
+ mov rcx, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 164] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 164] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rax ; (SET)
+ mov rsi, qword [rbp - 114] ; (SET_PRM_R)
+ mov qword [rbp - 180], rsi ; (SET)
+ mov rax, qword [rbp - 172] ; (SET)
+ mov rbx, qword [rbp - 180] ; (SET)
+ lea rsp, [rbp - 164] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 164] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 172], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 164] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 180], rsi ; (SET)
+ mov rax, qword [rbp - 172] ; (SET)
+ mov rbx, qword [rbp - 180] ; (SET)
+ lea rsp, [rbp - 164] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r13, rax ; (SET)
+ jmp parse._mhf_transform#2#loop#0#wrap#0#if#1#wrap#end
+parse._mhf_transform#2#loop#0#wrap#0#if#1#wrap#0#if#end:
+parse._mhf_transform#2#loop#0#wrap#0#if#1#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable n
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 174], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._mhf_transform#2#loop#0#wrap#end
+parse._mhf_transform#2#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov cx, word [r9] ; (SET)
+ cmp cx, word [rel parse.NTYPE_TLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_transform#2#loop#0#wrap#1#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_transform#2#loop#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Node.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_transform#2#loop#0#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#0#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 122], rbx ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r15, rax ; (SET)
+ sub rsp, 50 ; Create stack space for local variable lst
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_VLIST] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._mhf_transform#2#loop#0#wrap#1#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 174], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 164], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 164] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#end
+parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rsi, qword [rbp - 164] ; (SET_PRM_R)
+ mov qword [rbp - 180], rsi ; (SET)
+ mov rax, qword [rbp - 172] ; (SET)
+ mov rbx, qword [rbp - 180] ; (SET)
+ lea rsp, [rbp - 164] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable lsub
+ mov qword [rbp - 172], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 172] ; (SET_PRM_R)
+ mov qword [rbp - 180], rsi ; (SET)
+ mov qword [rbp - 188], r11 ; (SET)
+ mov rax, qword [rbp - 180] ; (SET)
+ mov rbx, qword [rbp - 188] ; (SET)
+ lea rsp, [rbp - 172] ; Free stack space (freeing tmp variables)
+ call parse._mhf_transform
+ mov r11, rax ; (SET)
+ cmp r11, qword [rbp - 172]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 180], rax ; (SET)
+ mov rsi, qword [rbp - 172] ; (SET_PRM_R)
+ mov qword [rbp - 188], rsi ; (SET)
+ mov rax, qword [rbp - 180] ; (SET)
+ mov rbx, qword [rbp - 188] ; (SET)
+ lea rsp, [rbp - 172] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r11, rax ; (SET)
+ jmp parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#0#wrap#end
+parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 180], rax ; (SET)
+ mov rsi, qword [rbp - 172] ; (SET_PRM_R)
+ mov qword [rbp - 188], rsi ; (SET)
+ mov rax, qword [rbp - 180] ; (SET)
+ mov rbx, qword [rbp - 188] ; (SET)
+ lea rsp, [rbp - 172] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#0#wrap#end
+parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#0#wrap#1#if#end:
+parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#0#wrap#end:
+parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#rep:
+ mov rbx, qword [rbp - 164] ; (SET)
+ inc qword qword [rbp - 164] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 164] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#end
+ jmp parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#start
+parse._mhf_transform#2#loop#0#wrap#1#if#3#loop#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#0#wrap#1#if#4#loop#end
+parse._mhf_transform#2#loop#0#wrap#1#if#4#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+parse._mhf_transform#2#loop#0#wrap#1#if#4#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#0#wrap#1#if#4#loop#end
+ jmp parse._mhf_transform#2#loop#0#wrap#1#if#4#loop#start
+parse._mhf_transform#2#loop#0#wrap#1#if#4#loop#end:
+ cmp r11, r12
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#0#wrap#1#if#5#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r15 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r11, rax ; (SET)
+ jmp parse._mhf_transform#2#loop#0#wrap#1#if#5#wrap#end
+parse._mhf_transform#2#loop#0#wrap#1#if#5#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r15 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._mhf_transform#2#loop#0#wrap#1#if#5#wrap#end
+parse._mhf_transform#2#loop#0#wrap#1#if#5#wrap#1#if#end:
+parse._mhf_transform#2#loop#0#wrap#1#if#5#wrap#end:
+ jmp parse._mhf_transform#2#loop#0#wrap#end
+parse._mhf_transform#2#loop#0#wrap#1#if#end:
+parse._mhf_transform#2#loop#0#wrap#end:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov qword [rbp - 122], r14 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ jmp parse._mhf_transform#2#loop#1#wrap#end
+parse._mhf_transform#2#loop#1#wrap#0#if#end:
+parse._mhf_transform#2#loop#1#wrap#end:
+parse._mhf_transform#2#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_transform#2#loop#end
+ jmp parse._mhf_transform#2#loop#start
+parse._mhf_transform#2#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.end
+ ; putting struct address into register
+ lea rdi, [r10] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov rcx, 50 ; size of struct [Node] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.update_children
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_transform#end
+
+parse._mhf_transform#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_escape:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ mov r14, 0 ; (SET)
+ mov r15, r13 ; (SET)
+ sub rsp, 8 ; Create stack space for local variable p2
+ mov qword [rbp - 64], r11 ; (SET)
+ sub rsp, 1 ; Create stack space for local variable run
+ mov byte [rbp - 65], 1 ; (SET)
+ mov cl, byte [rbp - 65] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._mhf_escape#0#loop#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r15, qword [rbp - 64]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 66], al ; Mov after compare
+ cmp byte byte [rbp - 66], 0
+parse._mhf_escape#0#loop#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._mhf_escape#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rdi, [rbp - 73] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_escape#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_escape#0#loop#end
+parse._mhf_escape#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 74], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_escape#0#loop#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 82], rsi ; (SET)
+ mov rax, qword [rbp - 74] ; (SET)
+ mov rbx, qword [rbp - 82] ; (SET)
+ lea rsp, [rbp - 66] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 66] ; (SET)
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_escape#0#loop#2#wrap#0#if#end
+ cmp r14, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#0#if#end
+ mov rbx, r14 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ jmp parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#end
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 74], r13 ; (SET)
+ mov rsi, qword [rel parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 82], rsi ; (SET)
+ mov rax, qword [rbp - 74] ; (SET)
+ mov rbx, qword [rbp - 82] ; (SET)
+ lea rsp, [rbp - 66] ; Free stack space (freeing tmp variables)
+ call parse._#Node.eq
+ mov bl, byte [rbp - 66] ; (SET)
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ mov r15, r13 ; (SET)
+ jmp parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#end
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 67], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 68], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 76], r13 ; (SET)
+ mov rsi, qword [rel parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 84], rsi ; (SET)
+ mov rax, qword [rbp - 76] ; (SET)
+ mov rbx, qword [rbp - 84] ; (SET)
+ lea rsp, [rbp - 68] ; Free stack space (freeing tmp variables)
+ call parse._#Node.eq
+ mov r9b, byte [rbp - 68] ; (SET)
+ mov r8b, byte [rbp - 67] ; (SET)
+ mov bl, byte [rbp - 66] ; (SET)
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], al ; (SET)
+ mov cl, byte [rbp - 66] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#end
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 67], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 68], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 76], r13 ; (SET)
+ mov rsi, qword [rel parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 84], rsi ; (SET)
+ mov rax, qword [rbp - 76] ; (SET)
+ mov rbx, qword [rbp - 84] ; (SET)
+ lea rsp, [rbp - 68] ; Free stack space (freeing tmp variables)
+ call parse._#Node.eq
+ mov r9b, byte [rbp - 68] ; (SET)
+ mov r8b, byte [rbp - 67] ; (SET)
+ mov bl, byte [rbp - 66] ; (SET)
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], al ; (SET)
+ mov cl, byte [rbp - 66] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#end
+ jmp parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#start
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#1#wrap#0#if#end
+ jmp parse._mhf_escape#end
+ jmp parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#1#wrap#end
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#1#wrap#0#if#end:
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ mov r15, r13 ; (SET)
+ jmp parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#end
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#2#if#end:
+parse._mhf_escape#0#loop#2#wrap#0#if#1#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 74], r13 ; (SET)
+ mov rsi, qword [rel parse._mhf_escape#0#loop#2#wrap#0#if#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 82], rsi ; (SET)
+ mov rax, qword [rbp - 74] ; (SET)
+ mov rbx, qword [rbp - 82] ; (SET)
+ lea rsp, [rbp - 66] ; Free stack space (freeing tmp variables)
+ call parse._#Node.eq
+ mov bl, byte [rbp - 66] ; (SET)
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_escape#0#loop#2#wrap#0#if#2#wrap#0#if#end
+ mov byte [rbp - 65], 0 ; (SET)
+ jmp parse._mhf_escape#0#loop#2#wrap#0#if#2#wrap#end
+parse._mhf_escape#0#loop#2#wrap#0#if#2#wrap#0#if#end:
+parse._mhf_escape#0#loop#2#wrap#0#if#2#wrap#end:
+ jmp parse._mhf_escape#0#loop#2#wrap#end
+parse._mhf_escape#0#loop#2#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 74], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_escape#0#loop#2#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 82], rsi ; (SET)
+ mov rax, qword [rbp - 74] ; (SET)
+ mov rbx, qword [rbp - 82] ; (SET)
+ lea rsp, [rbp - 66] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 66] ; (SET)
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_escape#0#loop#2#wrap#1#if#end
+ mov rbx, r14 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ jmp parse._mhf_escape#0#loop#2#wrap#end
+parse._mhf_escape#0#loop#2#wrap#1#if#end:
+parse._mhf_escape#0#loop#2#wrap#end:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 137], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 129] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 137] ; (SET)
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 97] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 97] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 129] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 97] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 137], r12 ; (SET)
+ mov rax, qword [rbp - 137] ; (SET)
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 129] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+parse._mhf_escape#0#loop#rep:
+ mov cl, byte [rbp - 65] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._mhf_escape#0#loop#4#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r15, qword [rbp - 64]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 130], al ; Mov after compare
+ cmp byte byte [rbp - 130], 0
+parse._mhf_escape#0#loop#4#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._mhf_escape#0#loop#3#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 137], rsi ; (SET)
+ mov rdi, [rbp - 137] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_escape#0#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_escape#0#loop#end
+ jmp parse._mhf_escape#0#loop#start
+parse._mhf_escape#0#loop#end:
+
+parse._mhf_escape#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_up_to_value:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, r10 ; (SET)
+ cmp r11, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_up_to_value#0#loop#end
+parse._mhf_up_to_value#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_up_to_value#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r10 ; (SET)
+ jmp parse._mhf_up_to_value#end
+ jmp parse._mhf_up_to_value#0#loop#0#wrap#end
+parse._mhf_up_to_value#0#loop#0#wrap#0#if#end:
+parse._mhf_up_to_value#0#loop#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r10, qword [rsi] ; (SET)
+ mov r11, r10 ; (SET)
+parse._mhf_up_to_value#0#loop#rep:
+ cmp r11, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_up_to_value#0#loop#end
+ jmp parse._mhf_up_to_value#0#loop#start
+parse._mhf_up_to_value#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_up_to_value#end
+
+parse._mhf_up_to_value#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_lower:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11b, 1 ; (SET)
+ cmp r11b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_lower#0#loop#end
+parse._mhf_lower#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_lower#0#loop#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ mov rbx, r12 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r12, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r10, rax ; (SET)
+ jmp parse._mhf_lower#0#loop#0#wrap#end
+parse._mhf_lower#0#loop#0#wrap#0#if#end:
+
+ ; STARTING RETURN
+ mov rax, r10 ; (SET)
+ jmp parse._mhf_lower#end
+ jmp parse._mhf_lower#0#loop#0#wrap#end
+parse._mhf_lower#0#loop#0#wrap#1#if#end:
+parse._mhf_lower#0#loop#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_lower#0#loop#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp parse._mhf_lower#end
+ jmp parse._mhf_lower#0#loop#1#wrap#end
+parse._mhf_lower#0#loop#1#wrap#0#if#end:
+parse._mhf_lower#0#loop#1#wrap#end:
+parse._mhf_lower#0#loop#rep:
+ cmp r11b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_lower#0#loop#end
+ jmp parse._mhf_lower#0#loop#start
+parse._mhf_lower#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_lower#end
+
+parse._mhf_lower#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_post_value:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13b, dl ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ mov r15b, 1 ; (SET)
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post_value#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post_value#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#end
+parse._mhf_post_value#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post_value#0#loop#1#wrap#0#if#0#bool#end
+ cmp r13b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._mhf_post_value#0#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#0#if#end
+ mov r15b, 0 ; (SET)
+ jmp parse._mhf_post_value#0#loop#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov rcx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable op
+ sub rsp, 50 ; Create stack space for local variable id
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_BIN_OP] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 182], rsi ; (SET)
+ mov rax, qword [rbp - 182] ; (SET)
+ lea rsp, [rbp - 174] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 174], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 172], rbx ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable sub
+ mov qword [rbp - 164], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rax ; (SET)
+ mov rsi, qword [rbp - 164] ; (SET_PRM_R)
+ mov qword [rbp - 180], rsi ; (SET)
+ mov rax, qword [rbp - 172] ; (SET)
+ mov rbx, qword [rbp - 180] ; (SET)
+ lea rsp, [rbp - 164] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 180], rsi ; (SET)
+ mov rax, qword [rbp - 172] ; (SET)
+ mov rbx, qword [rbp - 180] ; (SET)
+ lea rsp, [rbp - 164] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 164] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 172], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 180], rsi ; (SET)
+ mov rax, qword [rbp - 172] ; (SET)
+ mov rbx, qword [rbp - 180] ; (SET)
+ lea rsp, [rbp - 164] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r11, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 236], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 228] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 236] ; (SET)
+ lea rsp, [rbp - 228] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 196] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 196] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 196] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 164] ; Free stack space (freeing tmp variables)
+ jmp parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_post_value#end
+ jmp parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#1#if#end:
+parse._mhf_post_value#0#loop#1#wrap#1#if#1#wrap#end:
+ jmp parse._mhf_post_value#0#loop#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._op_postfix
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#2#if#end
+ sub rsp, 50 ; Create stack space for local variable op
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_POST_OP] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 122], rbx ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r11, qword [rsi] ; (SET)
+ jmp parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_post_value#end
+ jmp parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#2#if#end:
+parse._mhf_post_value#0#loop#1#wrap#2#if#0#wrap#end:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ jmp parse._mhf_post_value#0#loop#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#3#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_value
+ mov r14, rax ; (SET)
+ jmp parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_value
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r11, qword [rsi] ; (SET)
+ jmp parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_post_value#end
+ jmp parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#2#if#end:
+parse._mhf_post_value#0#loop#1#wrap#3#if#1#wrap#end:
+ jmp parse._mhf_post_value#0#loop#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#3#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#4#if#end
+ sub rsp, 50 ; Create stack space for local variable ind
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_POST_OP] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov qword [rbp - 131], r12 ; (SET)
+ mov byte [rbp - 132], 1 ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ mov dl, byte [rbp - 132] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#4#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#4#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._mhf_post_value#0#loop#1#wrap#4#if#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#4#if#1#wrap#0#if#end:
+parse._mhf_post_value#0#loop#1#wrap#4#if#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 122], rbx ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r11, qword [rsi] ; (SET)
+ jmp parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_post_value#end
+ jmp parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#2#if#end:
+parse._mhf_post_value#0#loop#1#wrap#4#if#2#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ mov qword [rbp - 123], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_post_value#end
+ jmp parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#0#if#end:
+parse._mhf_post_value#0#loop#1#wrap#4#if#3#wrap#end:
+ jmp parse._mhf_post_value#0#loop#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#4#if#end:
+ mov r15b, 0 ; (SET)
+ jmp parse._mhf_post_value#0#loop#1#wrap#end
+parse._mhf_post_value#0#loop#1#wrap#5#if#end:
+parse._mhf_post_value#0#loop#1#wrap#end:
+parse._mhf_post_value#0#loop#rep:
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_post_value#0#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_post_value#0#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_post_value#0#loop#end
+ jmp parse._mhf_post_value#0#loop#start
+parse._mhf_post_value#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_post_value#end
+
+parse._mhf_post_value#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_inner_value:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._mhf_lower
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov byte [rbp - 81], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov dl, byte [rbp - 81] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._mhf_post_value
+ mov r11, rax ; (SET)
+ cmp r11, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_inner_value#end
+ jmp parse._mhf_inner_value#0#wrap#end
+parse._mhf_inner_value#0#wrap#0#if#end:
+parse._mhf_inner_value#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._mhf_up_to_value
+ mov r11, rax ; (SET)
+ mov r14b, 0 ; (SET)
+ mov r15b, 1 ; (SET)
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_inner_value#1#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_inner_value#1#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#1#loop#end
+parse._mhf_inner_value#1#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 66], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_inner_value#1#loop#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 74], rsi ; (SET)
+ mov rax, qword [rbp - 66] ; (SET)
+ mov rbx, qword [rbp - 74] ; (SET)
+ lea rsp, [rbp - 58] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._mhf_inner_value#1#loop#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_inner_value#1#loop#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_inner_value#1#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#1#loop#1#wrap#0#if#end
+ mov r15b, 0 ; (SET)
+ jmp parse._mhf_inner_value#1#loop#1#wrap#end
+parse._mhf_inner_value#1#loop#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_inner_value#1#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#1#loop#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_inner_value#1#loop#1#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_inner_value#end
+ jmp parse._mhf_inner_value#1#loop#1#wrap#end
+parse._mhf_inner_value#1#loop#1#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_inner_value#1#loop#1#wrap#2#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r12 ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._op_bin
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_inner_value#1#loop#1#wrap#2#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#1#loop#1#wrap#2#if#end
+ mov r14b, 1 ; (SET)
+ sub rsp, 50 ; Create stack space for local variable bin
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_BIN_OP] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._op_order
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 114], rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable gt
+ mov byte [rbp - 115], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_BIN_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#1#loop#1#wrap#2#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rsi, qword [rbp - 114] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 123] ; (SET)
+ mov rbx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 115] ; Free stack space (freeing tmp variables)
+ call parse._assoc
+ mov byte [rbp - 115], al ; (SET)
+ jmp parse._mhf_inner_value#1#loop#1#wrap#2#if#1#wrap#end
+parse._mhf_inner_value#1#loop#1#wrap#2#if#1#wrap#0#if#end:
+parse._mhf_inner_value#1#loop#1#wrap#2#if#1#wrap#end:
+ mov cl, byte [rbp - 115] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#end
+parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r11, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_BIN_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rsi, qword [rbp - 114] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 123] ; (SET)
+ mov rbx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 115] ; Free stack space (freeing tmp variables)
+ call parse._assoc
+ mov byte [rbp - 115], al ; (SET)
+ jmp parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#0#wrap#end
+parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#0#wrap#0#if#end:
+ mov byte [rbp - 115], 0 ; (SET)
+ jmp parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#0#wrap#end
+parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#0#wrap#1#if#end:
+parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#0#wrap#end:
+parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#rep:
+ mov cl, byte [rbp - 115] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#end
+ jmp parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#start
+parse._mhf_inner_value#1#loop#1#wrap#2#if#2#loop#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 123], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 131], rbx ; (SET)
+ mov rax, qword [rbp - 123] ; (SET)
+ mov rbx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 115] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable lhs
+ mov qword [rbp - 123], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 131], rax ; (SET)
+ mov rsi, qword [rbp - 123] ; (SET_PRM_R)
+ mov qword [rbp - 139], rsi ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ mov rbx, qword [rbp - 139] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 131], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 139], rsi ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ mov rbx, qword [rbp - 139] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r11, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 195], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 187] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 195] ; (SET)
+ lea rsp, [rbp - 187] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 155] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 155] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 155] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 104] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rsi, qword [rel parse._mhf_inner_value#1#loop#1#wrap#2#if#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 139], rsi ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ mov rbx, qword [rbp - 139] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ cmp al, 0
+ je parse._mhf_inner_value#1#loop#1#wrap#2#if#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 131], r10 ; (SET)
+ mov qword [rbp - 139], r11 ; (SET)
+ mov qword [rbp - 147], r12 ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ mov rbx, qword [rbp - 139] ; (SET)
+ mov rcx, qword [rbp - 147] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call parse._ast_type
+ jmp parse._mhf_inner_value#1#loop#1#wrap#2#if#3#wrap#end
+parse._mhf_inner_value#1#loop#1#wrap#2#if#3#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 131], r10 ; (SET)
+ mov qword [rbp - 139], r11 ; (SET)
+ mov qword [rbp - 147], r12 ; (SET)
+ mov byte [rbp - 148], 1 ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ mov rbx, qword [rbp - 139] ; (SET)
+ mov rcx, qword [rbp - 147] ; (SET)
+ mov dl, byte [rbp - 148] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call parse._ast_value_bare
+ mov r15b, al ; (SET)
+ jmp parse._mhf_inner_value#1#loop#1#wrap#2#if#3#wrap#end
+parse._mhf_inner_value#1#loop#1#wrap#2#if#3#wrap#1#if#end:
+parse._mhf_inner_value#1#loop#1#wrap#2#if#3#wrap#end:
+ jmp parse._mhf_inner_value#1#loop#1#wrap#end
+parse._mhf_inner_value#1#loop#1#wrap#2#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_inner_value#1#loop#1#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_inner_value#end
+ jmp parse._mhf_inner_value#1#loop#1#wrap#end
+parse._mhf_inner_value#1#loop#1#wrap#3#if#end:
+parse._mhf_inner_value#1#loop#1#wrap#end:
+parse._mhf_inner_value#1#loop#rep:
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_inner_value#1#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_inner_value#1#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#1#loop#end
+ jmp parse._mhf_inner_value#1#loop#start
+parse._mhf_inner_value#1#loop#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r11, qword [rsi] ; (SET)
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#2#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r11, qword [rsi] ; (SET)
+ jmp parse._mhf_inner_value#2#wrap#end
+parse._mhf_inner_value#2#wrap#0#if#end:
+parse._mhf_inner_value#2#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [r13], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_inner_value#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ cmp al, 0
+ je parse._mhf_inner_value#3#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r11 ; (SET)
+ mov rsi, qword [rel parse._mhf_inner_value#3#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._#Node.eq
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#3#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._mhf_up_to_value
+ mov r11, rax ; (SET)
+ jmp parse._mhf_inner_value#3#wrap#0#if#1#wrap#end
+parse._mhf_inner_value#3#wrap#0#if#1#wrap#0#if#end:
+parse._mhf_inner_value#3#wrap#0#if#1#wrap#end:
+ jmp parse._mhf_inner_value#3#wrap#end
+parse._mhf_inner_value#3#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_inner_value#3#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov rcx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_inner_value#3#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_inner_value#3#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_inner_value#end
+ jmp parse._mhf_inner_value#3#wrap#end
+parse._mhf_inner_value#3#wrap#1#if#end:
+parse._mhf_inner_value#3#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_inner_value#end
+
+parse._mhf_inner_value#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_outer_list:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_outer_list#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r15, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov cx, word [r9] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_outer_list#0#wrap#0#if#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_outer_list#0#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call parse._#Node.end
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ jmp parse._mhf_outer_list#0#wrap#0#if#0#wrap#0#if#0#wrap#end
+parse._mhf_outer_list#0#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+parse._mhf_outer_list#0#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ jmp parse._mhf_outer_list#0#wrap#0#if#0#wrap#end
+parse._mhf_outer_list#0#wrap#0#if#0#wrap#0#if#end:
+parse._mhf_outer_list#0#wrap#0#if#0#wrap#end:
+ jmp parse._mhf_outer_list#0#wrap#end
+parse._mhf_outer_list#0#wrap#0#if#end:
+parse._mhf_outer_list#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_outer_list#1#loop#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_outer_list#1#loop#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_outer_list#1#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_outer_list#1#loop#end
+parse._mhf_outer_list#1#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov byte [rbp - 81], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov dl, byte [rbp - 81] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 66], r10 ; (SET)
+ mov qword [rbp - 74], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_outer_list#1#loop#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 82], rsi ; (SET)
+ mov rax, qword [rbp - 66] ; (SET)
+ mov rbx, qword [rbp - 74] ; (SET)
+ mov rcx, qword [rbp - 82] ; (SET)
+ lea rsp, [rbp - 58] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_outer_list#1#loop#2#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_outer_list#1#loop#2#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_outer_list#1#loop#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_outer_list#1#loop#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_outer_list#1#loop#2#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp parse._mhf_outer_list#end
+ jmp parse._mhf_outer_list#1#loop#2#wrap#end
+parse._mhf_outer_list#1#loop#2#wrap#0#if#end:
+parse._mhf_outer_list#1#loop#2#wrap#end:
+parse._mhf_outer_list#1#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_outer_list#1#loop#3#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 58], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 59], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 67], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_outer_list#1#loop#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 75], rsi ; (SET)
+ mov rax, qword [rbp - 67] ; (SET)
+ mov rbx, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 59] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 59] ; (SET)
+ mov r8b, byte [rbp - 58] ; (SET)
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], al ; (SET)
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_outer_list#1#loop#3#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_outer_list#1#loop#end
+ jmp parse._mhf_outer_list#1#loop#start
+parse._mhf_outer_list#1#loop#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [r13], rsi ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable next
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r11 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._mhf_up_to_value
+ mov r11, rax ; (SET)
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp parse._mhf_outer_list#end
+
+parse._mhf_outer_list#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_finish_value:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ mov r14b, sil ; (SET)
+ mov r15, r13 ; (SET)
+ sub rsp, 8 ; Create stack space for local variable p2
+ mov qword [rbp - 64], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable ln
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ sub rsp, 1 ; Create stack space for local variable run
+ mov byte [rbp - 73], 1 ; (SET)
+ mov cl, byte [rbp - 73] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._mhf_finish_value#0#loop#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r15, qword [rbp - 64]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 74], al ; Mov after compare
+ cmp byte byte [rbp - 74], 0
+parse._mhf_finish_value#0#loop#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 73] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._mhf_finish_value#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rdi, [rbp - 81] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 73] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_finish_value#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#0#loop#end
+parse._mhf_finish_value#0#loop#start:
+ sub rsp, 8 ; Create stack space for local variable tmp
+ mov qword [rbp - 81], r13 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 81] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#0#loop#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 89], r10 ; (SET)
+ mov rsi, qword [rbp - 81] ; (SET_PRM_R)
+ mov qword [rbp - 97], rsi ; (SET)
+ mov qword [rbp - 105], r12 ; (SET)
+ lea rsi, qword [rbp - 72] ; (TAKE_PTR)
+ mov qword [rbp - 113], rsi ; (SET)
+ mov rax, qword [rbp - 89] ; (SET)
+ mov rbx, qword [rbp - 97] ; (SET)
+ mov rcx, qword [rbp - 105] ; (SET)
+ mov rdx, qword [rbp - 113] ; (SET)
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ call parse._mhf_inner_value
+ mov qword [rbp - 81], rax ; (SET)
+ jmp parse._mhf_finish_value#0#loop#2#wrap#end
+parse._mhf_finish_value#0#loop#2#wrap#0#if#end:
+parse._mhf_finish_value#0#loop#2#wrap#end:
+ mov rcx, qword [rbp - 81] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_finish_value#0#loop#3#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ mov rsi, [rbp - 81] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 89], rsi ; (SET)
+ mov rdi, [rbp - 89] ; (SET_PRM_L)
+ mov cx, word [rdi] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_finish_value#0#loop#3#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#0#loop#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 89], r10 ; (SET)
+ mov rsi, qword [rbp - 81] ; (SET_PRM_R)
+ mov qword [rbp - 97], rsi ; (SET)
+ mov qword [rbp - 105], r12 ; (SET)
+ lea rsi, qword [rbp - 72] ; (TAKE_PTR)
+ mov qword [rbp - 113], rsi ; (SET)
+ mov rax, qword [rbp - 89] ; (SET)
+ mov rbx, qword [rbp - 97] ; (SET)
+ mov rcx, qword [rbp - 105] ; (SET)
+ mov rdx, qword [rbp - 113] ; (SET)
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ call parse._mhf_outer_list
+ mov qword [rbp - 81], rax ; (SET)
+ jmp parse._mhf_finish_value#0#loop#3#wrap#end
+parse._mhf_finish_value#0#loop#3#wrap#0#if#end:
+parse._mhf_finish_value#0#loop#3#wrap#end:
+ mov rcx, qword [rbp - 81] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._mhf_finish_value#0#loop#4#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 81] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 90], rsi ; (SET)
+ mov rdi, [rbp - 90] ; (SET_PRM_L)
+ mov cx, word [rdi] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 82], al ; Mov after compare
+ lea rsp, [rbp - 82] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 82], 0
+parse._mhf_finish_value#0#loop#4#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._mhf_finish_value#0#loop#4#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ mov rsi, [rbp - 81] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 89], rsi ; (SET)
+ mov rdi, [rbp - 89] ; (SET_PRM_L)
+ mov cx, word [rdi] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VLIST]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_finish_value#0#loop#4#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#0#loop#4#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 89], r10 ; (SET)
+ mov qword [rbp - 97], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_finish_value#0#loop#4#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 89] ; (SET)
+ mov rbx, qword [rbp - 97] ; (SET)
+ mov rcx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 81] ; (SET_PRM_R)
+ mov qword [rbp - 89], rsi ; (SET)
+ mov rax, qword [rbp - 89] ; (SET)
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ call parse.print_ast
+ jmp parse._mhf_finish_value#end
+ jmp parse._mhf_finish_value#0#loop#4#wrap#end
+parse._mhf_finish_value#0#loop#4#wrap#0#if#end:
+parse._mhf_finish_value#0#loop#4#wrap#end:
+ mov rcx, qword [rbp - 81] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#0#loop#5#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 89], r10 ; (SET)
+ mov qword [rbp - 97], r11 ; (SET)
+ mov qword [rbp - 105], r12 ; (SET)
+ mov qword [rbp - 113], r13 ; (SET)
+ mov rax, qword [rbp - 89] ; (SET)
+ mov rbx, qword [rbp - 97] ; (SET)
+ mov rcx, qword [rbp - 105] ; (SET)
+ mov rdx, qword [rbp - 113] ; (SET)
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ call parse._mhf_escape
+ jmp parse._mhf_finish_value#end
+ jmp parse._mhf_finish_value#0#loop#5#wrap#end
+parse._mhf_finish_value#0#loop#5#wrap#0#if#end:
+parse._mhf_finish_value#0#loop#5#wrap#end:
+ mov r13, qword [rbp - 81] ; (SET)
+ mov r15, r13 ; (SET)
+parse._mhf_finish_value#0#loop#rep:
+ mov cl, byte [rbp - 73] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._mhf_finish_value#0#loop#7#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r15, qword [rbp - 64]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov byte [rbp - 82], al ; Mov after compare
+ cmp byte byte [rbp - 82], 0
+parse._mhf_finish_value#0#loop#7#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._mhf_finish_value#0#loop#6#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 89], rsi ; (SET)
+ mov rdi, [rbp - 89] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 81] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_finish_value#0#loop#6#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#0#loop#end
+ jmp parse._mhf_finish_value#0#loop#start
+parse._mhf_finish_value#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call parse._mhf_lower
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 72] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._mhf_finish_value#1#wrap#0#if#0#bool#end
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._mhf_finish_value#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov qword [rbp - 88], r13 ; (SET)
+ mov qword [rbp - 96], r12 ; (SET)
+ mov byte [rbp - 97], r14b ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ mov rcx, qword [rbp - 96] ; (SET)
+ mov dl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call parse._mhf_post_value
+ sub rsp, 8 ; Create stack space for local variable tmp
+ mov qword [rbp - 80], rax ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#1#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 88], r10 ; (SET)
+ mov qword [rbp - 96], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_finish_value#1#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 88] ; (SET)
+ mov rbx, qword [rbp - 96] ; (SET)
+ mov rcx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 80] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 88], r10 ; (SET)
+ mov qword [rbp - 96], r11 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov qword [rbp - 112], r13 ; (SET)
+ mov rax, qword [rbp - 88] ; (SET)
+ mov rbx, qword [rbp - 96] ; (SET)
+ mov rcx, qword [rbp - 104] ; (SET)
+ mov rdx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 80] ; Free stack space (freeing tmp variables)
+ call parse._mhf_escape
+ jmp parse._mhf_finish_value#end
+ jmp parse._mhf_finish_value#1#wrap#0#if#1#wrap#end
+parse._mhf_finish_value#1#wrap#0#if#1#wrap#0#if#end:
+parse._mhf_finish_value#1#wrap#0#if#1#wrap#end:
+ mov r13, qword [rbp - 80] ; (SET)
+ jmp parse._mhf_finish_value#1#wrap#end
+parse._mhf_finish_value#1#wrap#0#if#end:
+parse._mhf_finish_value#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call parse._mhf_up_to_value
+ mov r13, rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable run
+ mov byte [rbp - 73], 1 ; (SET)
+ mov cl, byte [rbp - 73] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_finish_value#2#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rdi, [rbp - 81] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 73] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_finish_value#2#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#2#loop#end
+parse._mhf_finish_value#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rbp - 72]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#0#if#0#bool#end
+ cmp r14b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._mhf_finish_value#2#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#0#if#end
+ mov byte [rbp - 73], 0 ; (SET)
+ jmp parse._mhf_finish_value#2#loop#1#wrap#end
+parse._mhf_finish_value#2#loop#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_SEP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._mhf_finish_value#2#loop#1#wrap#1#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 74], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 75], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 76], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 84], r12 ; (SET)
+ mov rax, qword [rbp - 84] ; (SET)
+ lea rsp, [rbp - 76] ; Free stack space (freeing tmp variables)
+ call parse._is_closing
+ mov r9b, byte [rbp - 76] ; (SET)
+ mov r8b, byte [rbp - 75] ; (SET)
+ mov bl, byte [rbp - 74] ; (SET)
+ lea rsp, [rbp - 73] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 74], al ; (SET)
+ mov cl, byte [rbp - 74] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 73] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_finish_value#2#loop#1#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#1#if#end
+ mov byte [rbp - 73], 0 ; (SET)
+ jmp parse._mhf_finish_value#2#loop#1#wrap#end
+parse._mhf_finish_value#2#loop#1#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 74], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 82], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_finish_value#2#loop#1#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 90], rsi ; (SET)
+ mov rax, qword [rbp - 82] ; (SET)
+ mov rbx, qword [rbp - 90] ; (SET)
+ lea rsp, [rbp - 74] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 74] ; (SET)
+ lea rsp, [rbp - 73] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#2#if#end
+ mov byte [rbp - 73], 0 ; (SET)
+ jmp parse._mhf_finish_value#2#loop#1#wrap#end
+parse._mhf_finish_value#2#loop#1#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_AUG]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#3#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 74], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 75], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 76], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 84], r12 ; (SET)
+ mov rax, qword [rbp - 84] ; (SET)
+ lea rsp, [rbp - 76] ; Free stack space (freeing tmp variables)
+ call parse._op_bin
+ mov r9b, byte [rbp - 76] ; (SET)
+ mov r8b, byte [rbp - 75] ; (SET)
+ mov bl, byte [rbp - 74] ; (SET)
+ lea rsp, [rbp - 73] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 74], al ; (SET)
+ mov cl, byte [rbp - 74] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 73] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_finish_value#2#loop#1#wrap#3#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#3#if#end
+ sub rsp, 50 ; Create stack space for local variable bin
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 123] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 131], rax ; (SET)
+ mov si, word [rel parse.NTYPE_BIN_OP] ; (SET_PRM_R)
+ mov word [rbp - 133], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 141], rsi ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ mov bx, word [rbp - 133] ; (SET)
+ mov rcx, qword [rbp - 141] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call parse._op_order
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 131], rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable gt
+ mov byte [rbp - 132], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_BIN_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#3#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 140], rsi ; (SET)
+ mov rsi, qword [rbp - 131] ; (SET_PRM_R)
+ mov qword [rbp - 148], rsi ; (SET)
+ mov rax, qword [rbp - 140] ; (SET)
+ mov rbx, qword [rbp - 148] ; (SET)
+ lea rsp, [rbp - 132] ; Free stack space (freeing tmp variables)
+ call parse._assoc
+ mov byte [rbp - 132], al ; (SET)
+ jmp parse._mhf_finish_value#2#loop#1#wrap#3#if#1#wrap#end
+parse._mhf_finish_value#2#loop#1#wrap#3#if#1#wrap#0#if#end:
+parse._mhf_finish_value#2#loop#1#wrap#3#if#1#wrap#end:
+ mov cl, byte [rbp - 132] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#end
+parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_BIN_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 140], rsi ; (SET)
+ mov rsi, qword [rbp - 131] ; (SET_PRM_R)
+ mov qword [rbp - 148], rsi ; (SET)
+ mov rax, qword [rbp - 140] ; (SET)
+ mov rbx, qword [rbp - 148] ; (SET)
+ lea rsp, [rbp - 132] ; Free stack space (freeing tmp variables)
+ call parse._assoc
+ mov byte [rbp - 132], al ; (SET)
+ jmp parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#0#wrap#end
+parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#0#wrap#0#if#end:
+ mov byte [rbp - 132], 0 ; (SET)
+ jmp parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#0#wrap#end
+parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#0#wrap#1#if#end:
+parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#0#wrap#end:
+parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#rep:
+ mov cl, byte [rbp - 132] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#end
+ jmp parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#start
+parse._mhf_finish_value#2#loop#1#wrap#3#if#2#loop#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 140], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 148], rbx ; (SET)
+ mov rax, qword [rbp - 140] ; (SET)
+ mov rbx, qword [rbp - 148] ; (SET)
+ lea rsp, [rbp - 132] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable lhs
+ mov qword [rbp - 140], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 123] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 148], rax ; (SET)
+ mov rsi, qword [rbp - 140] ; (SET_PRM_R)
+ mov qword [rbp - 156], rsi ; (SET)
+ mov rax, qword [rbp - 148] ; (SET)
+ mov rbx, qword [rbp - 156] ; (SET)
+ lea rsp, [rbp - 140] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 148], rsi ; (SET)
+ mov rax, qword [rbp - 148] ; (SET)
+ lea rsp, [rbp - 140] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 148], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 123] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 156], rsi ; (SET)
+ mov rax, qword [rbp - 148] ; (SET)
+ mov rbx, qword [rbp - 156] ; (SET)
+ lea rsp, [rbp - 140] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r13, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 212], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 204] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 212] ; (SET)
+ lea rsp, [rbp - 204] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 172] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 172] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 172] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 140] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 121] ; (SET_PRM_R)
+ mov qword [rbp - 148], rsi ; (SET)
+ mov rsi, qword [rel parse._mhf_finish_value#2#loop#1#wrap#3#if#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 156], rsi ; (SET)
+ mov rax, qword [rbp - 148] ; (SET)
+ mov rbx, qword [rbp - 156] ; (SET)
+ lea rsp, [rbp - 140] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ cmp al, 0
+ je parse._mhf_finish_value#2#loop#1#wrap#3#if#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 148], r10 ; (SET)
+ mov qword [rbp - 156], r13 ; (SET)
+ mov qword [rbp - 164], r12 ; (SET)
+ mov rax, qword [rbp - 148] ; (SET)
+ mov rbx, qword [rbp - 156] ; (SET)
+ mov rcx, qword [rbp - 164] ; (SET)
+ lea rsp, [rbp - 140] ; Free stack space (freeing tmp variables)
+ call parse._ast_type
+ jmp parse._mhf_finish_value#2#loop#1#wrap#3#if#3#wrap#end
+parse._mhf_finish_value#2#loop#1#wrap#3#if#3#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 148], r10 ; (SET)
+ mov qword [rbp - 156], r13 ; (SET)
+ mov qword [rbp - 164], r12 ; (SET)
+ mov byte [rbp - 165], r14b ; (SET)
+ mov rax, qword [rbp - 148] ; (SET)
+ mov rbx, qword [rbp - 156] ; (SET)
+ mov rcx, qword [rbp - 164] ; (SET)
+ mov dl, byte [rbp - 165] ; (SET)
+ lea rsp, [rbp - 140] ; Free stack space (freeing tmp variables)
+ call parse._ast_value_bare
+ mov byte [rbp - 73], al ; (SET)
+ jmp parse._mhf_finish_value#2#loop#1#wrap#3#if#3#wrap#end
+parse._mhf_finish_value#2#loop#1#wrap#3#if#3#wrap#1#if#end:
+parse._mhf_finish_value#2#loop#1#wrap#3#if#3#wrap#end:
+ jmp parse._mhf_finish_value#2#loop#1#wrap#end
+parse._mhf_finish_value#2#loop#1#wrap#3#if#end:
+ mov byte [rbp - 73], 0 ; (SET)
+ jmp parse._mhf_finish_value#2#loop#1#wrap#end
+parse._mhf_finish_value#2#loop#1#wrap#4#if#end:
+parse._mhf_finish_value#2#loop#1#wrap#end:
+parse._mhf_finish_value#2#loop#rep:
+ mov cl, byte [rbp - 73] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_finish_value#2#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rdi, [rbp - 81] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 73] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._mhf_finish_value#2#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_value#2#loop#end
+ jmp parse._mhf_finish_value#2#loop#start
+parse._mhf_finish_value#2#loop#end:
+
+parse._mhf_finish_value#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._mhf_finish_decl:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13b, dl ; (SET)
+ sub rsp, 50 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_DECL] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._mhf_finish_decl#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 124] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 124], rax ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov qword [rbp - 122], r11 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ mov r14b, 1 ; (SET)
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_decl#1#loop#end
+parse._mhf_finish_decl#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_decl#1#loop#0#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable var
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r15, qword [rsi] ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 157], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 165], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 173], rsi ; (SET)
+ mov rax, qword [rbp - 165] ; (SET)
+ mov rbx, qword [rbp - 173] ; (SET)
+ lea rsp, [rbp - 157] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 157] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ cmp al, 0
+ je parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], rsi ; (SET)
+ mov rdi, [rbp - 164] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, r15
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#0#if#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 157], al ; Mov after compare
+ cmp byte byte [rbp - 157], 0
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#0#if#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r12 ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 236], rsi ; (SET)
+ mov qword [rbp - 244], r12 ; (SET)
+ mov byte [rbp - 245], 0 ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ mov rbx, qword [rbp - 236] ; (SET)
+ mov rcx, qword [rbp - 244] ; (SET)
+ mov dl, byte [rbp - 245] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ jmp parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#end
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, r15
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#1#if#0#bool#end
+ cmp r13b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#1#if#end
+ mov r14b, 0 ; (SET)
+ jmp parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#end
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#1#if#end:
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 157], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 165], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 173], rsi ; (SET)
+ mov rax, qword [rbp - 165] ; (SET)
+ mov rbx, qword [rbp - 173] ; (SET)
+ lea rsp, [rbp - 157] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 157] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#0#if#end
+ mov r14b, 0 ; (SET)
+ jmp parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#end
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#0#if#end:
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#1#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r12 ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#end
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#1#if#end:
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#1#wrap#end:
+ jmp parse._mhf_finish_decl#1#loop#0#wrap#end
+parse._mhf_finish_decl#1#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._mhf_finish_decl#1#loop#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ mov r14b, 0 ; (SET)
+ jmp parse._mhf_finish_decl#1#loop#0#wrap#end
+parse._mhf_finish_decl#1#loop#0#wrap#1#if#end:
+parse._mhf_finish_decl#1#loop#0#wrap#end:
+parse._mhf_finish_decl#1#loop#rep:
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._mhf_finish_decl#1#loop#end
+ jmp parse._mhf_finish_decl#1#loop#start
+parse._mhf_finish_decl#1#loop#end:
+ ; putting struct address into register
+ lea rdi, [r11] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov rcx, 50 ; size of struct [Node] in bytes
+ rep movsb ; move struct
+
+parse._mhf_finish_decl#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._maybe_helper_fun:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13b, dl ; (SET)
+ sub rsp, 50 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_TYPE] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._maybe_helper_fun#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 124] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 124], rax ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._type_helper_pre
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r12 ; (SET)
+ mov rsi, qword [rel parse._maybe_helper_fun#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ cmp al, 0
+ je parse._maybe_helper_fun#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._mhf_transform
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov qword [rbp - 138], r14 ; (SET)
+ mov byte [rbp - 139], r13b ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov rdx, qword [rbp - 138] ; (SET)
+ mov sil, byte [rbp - 139] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._mhf_finish_value
+ jmp parse._maybe_helper_fun#1#wrap#end
+parse._maybe_helper_fun#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._maybe_helper_fun#1#wrap#1#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._maybe_helper_fun#1#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._maybe_helper_fun#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._maybe_helper_fun#1#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._maybe_helper_fun#1#wrap#end
+parse._maybe_helper_fun#1#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], r13b ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._mhf_post
+ mov r14, rax ; (SET)
+ cmp r14, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._maybe_helper_fun#1#wrap#2#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], r13b ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._mhf_finish_decl
+ jmp parse._maybe_helper_fun#1#wrap#2#if#0#wrap#end
+parse._maybe_helper_fun#1#wrap#2#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rsi ; (SET)
+ mov qword [rbp - 122], r14 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._mhf_transform
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov qword [rbp - 138], r14 ; (SET)
+ mov byte [rbp - 139], r13b ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov rdx, qword [rbp - 138] ; (SET)
+ mov sil, byte [rbp - 139] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._mhf_finish_value
+ jmp parse._maybe_helper_fun#1#wrap#2#if#0#wrap#end
+parse._maybe_helper_fun#1#wrap#2#if#0#wrap#1#if#end:
+parse._maybe_helper_fun#1#wrap#2#if#0#wrap#end:
+ jmp parse._maybe_helper_fun#1#wrap#end
+parse._maybe_helper_fun#1#wrap#2#if#end:
+parse._maybe_helper_fun#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+parse._maybe_helper_fun#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_function:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_function#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_function#end
+ jmp parse._ast_function#0#wrap#end
+parse._ast_function#0#wrap#0#if#end:
+parse._ast_function#0#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable fn
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_FUNCTION] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_function#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_decl
+ jmp parse._ast_function#1#wrap#end
+parse._ast_function#1#wrap#0#if#end:
+parse._ast_function#1#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_function#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_type
+ jmp parse._ast_function#2#wrap#end
+parse._ast_function#2#wrap#0#if#end:
+parse._ast_function#2#wrap#end:
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_function#3#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_function#3#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#3#loop#end
+parse._ast_function#3#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ mov qword [rbp - 123], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_function#3#loop#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#3#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_asm
+ jmp parse._ast_function#3#loop#1#wrap#end
+parse._ast_function#3#loop#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_function#3#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#3#loop#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_fun_block
+ jmp parse._ast_function#3#loop#1#wrap#end
+parse._ast_function#3#loop#1#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_function#3#loop#1#wrap#2#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_function#3#loop#1#wrap#2#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_function#3#loop#1#wrap#2#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#3#loop#1#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_decl
+ jmp parse._ast_function#3#loop#1#wrap#end
+parse._ast_function#3#loop#1#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_function#3#loop#1#wrap#3#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_function#3#loop#1#wrap#3#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_function#3#loop#1#wrap#3#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#3#loop#1#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], 0 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._maybe_helper_fun
+ jmp parse._ast_function#3#loop#1#wrap#end
+parse._ast_function#3#loop#1#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_LITRL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._ast_function#3#loop#1#wrap#4#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 110], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 118], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_function#3#loop#1#wrap#4#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 126], rsi ; (SET)
+ mov rax, qword [rbp - 118] ; (SET)
+ mov rbx, qword [rbp - 126] ; (SET)
+ lea rsp, [rbp - 110] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 110] ; (SET)
+ mov r8b, byte [rbp - 109] ; (SET)
+ mov bl, byte [rbp - 108] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], al ; (SET)
+ mov cl, byte [rbp - 108] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+parse._ast_function#3#loop#1#wrap#4#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._ast_function#3#loop#1#wrap#4#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], r12 ; (SET)
+ mov rax, qword [rbp - 116] ; (SET)
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ call parse._op_prefix
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp al, 0
+parse._ast_function#3#loop#1#wrap#4#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#3#loop#1#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov byte [rbp - 131], 0 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ mov dl, byte [rbp - 131] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ jmp parse._ast_function#3#loop#1#wrap#end
+parse._ast_function#3#loop#1#wrap#4#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#3#loop#1#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_keyword_expr
+ jmp parse._ast_function#3#loop#1#wrap#end
+parse._ast_function#3#loop#1#wrap#5#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_function#3#loop#1#wrap#6#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 59
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_function#3#loop#1#wrap#6#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#3#loop#1#wrap#6#if#end
+ mov r13b, 0 ; (SET)
+ jmp parse._ast_function#3#loop#1#wrap#end
+parse._ast_function#3#loop#1#wrap#6#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_function#3#loop#1#wrap#7#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_function#3#loop#1#wrap#end
+parse._ast_function#3#loop#1#wrap#7#if#end:
+parse._ast_function#3#loop#1#wrap#end:
+parse._ast_function#3#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_function#3#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_function#3#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_function#3#loop#end
+ jmp parse._ast_function#3#loop#start
+parse._ast_function#3#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+parse._ast_function#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_import:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_LITRL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_import#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 34
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_import#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_import#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_import#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_import#end
+ jmp parse._ast_import#0#wrap#end
+parse._ast_import#0#wrap#0#if#end:
+parse._ast_import#0#wrap#end:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call utils.unquote_str
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable relv
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r13, rax ; (SET)
+ sub rsp, 37 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 165], r10 ; (SET)
+ mov qword [rbp - 173], r13 ; (SET)
+ mov rax, qword [rbp - 165] ; (SET)
+ mov rbx, qword [rbp - 173] ; (SET)
+ lea rsp, [rbp - 157] ; Free stack space (freeing tmp variables)
+ sub rsp, 37
+ call utils._#File.relative
+ ; putting struct address into register
+ lea rdi, [rbp - 157] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 37 ; size of struct [File] in bytes
+ rep movsb ; move struct
+ add rsp, 37
+ sub rsp, 37 ; Create stack space for local variable imp
+ ; putting struct address into register
+ lea rdi, [rbp - 194] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 157] ; initial struct addr move (SET_STR_R)
+ mov rcx, 37 ; size of struct [File] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 202], r13 ; (SET)
+ mov rax, qword [rbp - 202] ; (SET)
+ lea rsp, [rbp - 194] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 194] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 202], rax ; (SET)
+ mov byte [rbp - 203], 47 ; (SET)
+ mov rax, qword [rbp - 202] ; (SET)
+ mov bl, byte [rbp - 203] ; (SET)
+ lea rsp, [rbp - 194] ; Free stack space (freeing tmp variables)
+ call utils._#Artifact.to_cstr
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_import#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 202], rsi ; (SET)
+ mov rax, qword [rbp - 202] ; (SET)
+ lea rsp, [rbp - 194] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 202], r13 ; (SET)
+ mov rax, qword [rbp - 202] ; (SET)
+ lea rsp, [rbp - 194] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_import#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 202], rsi ; (SET)
+ mov rax, qword [rbp - 202] ; (SET)
+ lea rsp, [rbp - 194] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 202], r13 ; (SET)
+ mov rax, qword [rbp - 202] ; (SET)
+ lea rsp, [rbp - 194] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 194] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 202], rsi ; (SET)
+ mov qword [rbp - 210], r11 ; (SET)
+ mov rax, qword [rbp - 202] ; (SET)
+ mov rbx, qword [rbp - 210] ; (SET)
+ lea rsp, [rbp - 194] ; Free stack space (freeing tmp variables)
+ call parse._ast_file
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 194] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 202], rax ; (SET)
+ mov rax, qword [rbp - 202] ; (SET)
+ lea rsp, [rbp - 194] ; Free stack space (freeing tmp variables)
+ call utils._#File.end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 266], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 258] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 266] ; (SET)
+ lea rsp, [rbp - 258] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 226] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 226] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 258] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 226] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 266], r12 ; (SET)
+ mov rax, qword [rbp - 266] ; (SET)
+ lea rsp, [rbp - 258] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 258] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+
+parse._ast_import#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_asm:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_LITRL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_asm#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 34
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_asm#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_asm#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_asm#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_asm#end
+ jmp parse._ast_asm#0#wrap#end
+parse._ast_asm#0#wrap#0#if#end:
+parse._ast_asm#0#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable an
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 146], rsi ; (SET)
+ mov rax, qword [rbp - 146] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call utils.unquote_str
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable asmv
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 178], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ASM] ; (SET_PRM_R)
+ mov word [rbp - 180], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 196], rax ; (SET)
+ mov rax, qword [rbp - 196] ; (SET)
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 188], rax ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ mov bx, word [rbp - 180] ; (SET)
+ mov rcx, qword [rbp - 188] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 186], rsi ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ mov rbx, qword [rbp - 186] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 242], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 234] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 242] ; (SET)
+ lea rsp, [rbp - 234] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 202] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 202] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 234] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 202] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 242], r12 ; (SET)
+ mov rax, qword [rbp - 242] ; (SET)
+ lea rsp, [rbp - 234] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 234] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+
+parse._ast_asm#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_struct:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_struct#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_struct#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_struct#end
+ jmp parse._ast_struct#0#wrap#end
+parse._ast_struct#0#wrap#0#if#end:
+parse._ast_struct#0#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable sct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_STRUCT] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_struct#1#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 123
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_struct#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_struct#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_struct#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_struct#end
+ jmp parse._ast_struct#1#wrap#end
+parse._ast_struct#1#wrap#0#if#end:
+parse._ast_struct#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_decl
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+parse._ast_struct#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_enum:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_enum#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_enum#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_enum#end
+ jmp parse._ast_enum#0#wrap#end
+parse._ast_enum#0#wrap#0#if#end:
+parse._ast_enum#0#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable sct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ENUM] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rdi, [r8] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 91
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_enum#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_type
+ jmp parse._ast_enum#1#wrap#end
+parse._ast_enum#1#wrap#0#if#end:
+parse._ast_enum#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_enum#2#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 123
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_enum#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_enum#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_enum#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ jmp parse._ast_enum#end
+ jmp parse._ast_enum#2#wrap#end
+parse._ast_enum#2#wrap#0#if#end:
+parse._ast_enum#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_list_enum
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+parse._ast_enum#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_decl:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 50 ; Create stack space for local variable decl
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov si, word [rel parse.NTYPE_DECL] ; (SET_PRM_R)
+ mov word [rbp - 116], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_decl#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 132], rsi ; (SET)
+ mov rax, qword [rbp - 132] ; (SET)
+ lea rsp, [rbp - 124] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 124], rax ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_type
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_decl#1#loop#end
+parse._ast_decl#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_decl#1#loop#0#wrap#0#if#end
+ sub rsp, 50 ; Create stack space for local variable var
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov si, word [rel parse.NTYPE_ID] ; (SET_PRM_R)
+ mov word [rbp - 166], si ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 174], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov bx, word [rbp - 166] ; (SET)
+ mov rcx, qword [rbp - 174] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 164], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_decl#1#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ cmp al, 0
+ je parse._ast_decl#1#loop#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r12 ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 236], rsi ; (SET)
+ mov qword [rbp - 244], r12 ; (SET)
+ mov byte [rbp - 245], 0 ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ mov rbx, qword [rbp - 236] ; (SET)
+ mov rcx, qword [rbp - 244] ; (SET)
+ mov dl, byte [rbp - 245] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._ast_value
+ jmp parse._ast_decl#1#loop#0#wrap#0#if#0#wrap#end
+parse._ast_decl#1#loop#0#wrap#0#if#0#wrap#0#if#end:
+parse._ast_decl#1#loop#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 172], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ mov rbx, qword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 157], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 165], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_decl#1#loop#0#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 173], rsi ; (SET)
+ mov rax, qword [rbp - 165] ; (SET)
+ mov rbx, qword [rbp - 173] ; (SET)
+ lea rsp, [rbp - 157] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 157] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_decl#1#loop#0#wrap#0#if#1#wrap#0#if#end
+ mov r13b, 0 ; (SET)
+ jmp parse._ast_decl#1#loop#0#wrap#0#if#1#wrap#end
+parse._ast_decl#1#loop#0#wrap#0#if#1#wrap#0#if#end:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 188] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 188] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 228], r12 ; (SET)
+ mov rax, qword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 220] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 220] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_decl#1#loop#0#wrap#0#if#1#wrap#end
+parse._ast_decl#1#loop#0#wrap#0#if#1#wrap#1#if#end:
+parse._ast_decl#1#loop#0#wrap#0#if#1#wrap#end:
+ jmp parse._ast_decl#1#loop#0#wrap#end
+parse._ast_decl#1#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_decl#1#loop#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ mov r13b, 0 ; (SET)
+ jmp parse._ast_decl#1#loop#0#wrap#end
+parse._ast_decl#1#loop#0#wrap#1#if#end:
+parse._ast_decl#1#loop#0#wrap#end:
+parse._ast_decl#1#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_decl#1#loop#end
+ jmp parse._ast_decl#1#loop#start
+parse._ast_decl#1#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+parse._ast_decl#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_top_block:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable blf
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_top_block#0#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rdi, [rbp - 96] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_top_block#0#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_top_block#0#loop#end
+parse._ast_top_block#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 98], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#0#loop#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 106], rsi ; (SET)
+ mov rax, qword [rbp - 98] ; (SET)
+ mov rbx, qword [rbp - 106] ; (SET)
+ lea rsp, [rbp - 90] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r8b, byte [rbp - 90] ; (SET)
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne parse._ast_top_block#0#loop#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 91], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 99], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#0#loop#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 107], rsi ; (SET)
+ mov rax, qword [rbp - 99] ; (SET)
+ mov rbx, qword [rbp - 107] ; (SET)
+ lea rsp, [rbp - 91] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 91] ; (SET)
+ mov r8b, byte [rbp - 90] ; (SET)
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], al ; (SET)
+ mov cl, byte [rbp - 89] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_top_block#0#loop#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_top_block#0#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r11 ; (SET)
+ mov qword [rbp - 112], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_module
+ jmp parse._ast_top_block#0#loop#1#wrap#end
+parse._ast_top_block#0#loop#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 97], r10 ; (SET)
+ mov qword [rbp - 105], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#0#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 113], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ mov rcx, qword [rbp - 113] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_top_block#0#loop#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r11 ; (SET)
+ mov qword [rbp - 112], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_method
+ jmp parse._ast_top_block#0#loop#1#wrap#end
+parse._ast_top_block#0#loop#1#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_top_block#0#loop#1#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r11 ; (SET)
+ mov qword [rbp - 112], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_function
+ jmp parse._ast_top_block#0#loop#1#wrap#end
+parse._ast_top_block#0#loop#1#wrap#2#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#0#loop#1#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_top_block#0#loop#1#wrap#end
+parse._ast_top_block#0#loop#1#wrap#3#if#end:
+parse._ast_top_block#0#loop#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#0#loop#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov r13b, al ; (SET)
+ cmp r13b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je parse._ast_top_block#0#loop#3#wrap#0#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 91], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 92], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 100], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#0#loop#3#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 108], rsi ; (SET)
+ mov rax, qword [rbp - 100] ; (SET)
+ mov rbx, qword [rbp - 108] ; (SET)
+ lea rsp, [rbp - 92] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 92] ; (SET)
+ mov r8b, byte [rbp - 91] ; (SET)
+ mov bl, byte [rbp - 90] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], al ; (SET)
+ mov cl, byte [rbp - 90] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 89], al ; Mov after compare
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 89], 0
+parse._ast_top_block#0#loop#3#wrap#0#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je parse._ast_top_block#0#loop#3#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 91], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 99], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#0#loop#3#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 107], rsi ; (SET)
+ mov rax, qword [rbp - 99] ; (SET)
+ mov rbx, qword [rbp - 107] ; (SET)
+ lea rsp, [rbp - 91] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 91] ; (SET)
+ mov r8b, byte [rbp - 90] ; (SET)
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], al ; (SET)
+ mov cl, byte [rbp - 89] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_top_block#0#loop#3#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_top_block#0#loop#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#0#loop#3#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_top_block#0#loop#3#wrap#end
+parse._ast_top_block#0#loop#3#wrap#0#if#end:
+parse._ast_top_block#0#loop#3#wrap#end:
+parse._ast_top_block#0#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_top_block#0#loop#4#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rdi, [rbp - 96] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_top_block#0#loop#4#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_top_block#0#loop#end
+ jmp parse._ast_top_block#0#loop#start
+parse._ast_top_block#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_block_pass
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 98], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 106], rsi ; (SET)
+ mov rax, qword [rbp - 98] ; (SET)
+ mov rbx, qword [rbp - 106] ; (SET)
+ lea rsp, [rbp - 90] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r8b, byte [rbp - 90] ; (SET)
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_top_block#1#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 90], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 91], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 99], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 107], rsi ; (SET)
+ mov rax, qword [rbp - 99] ; (SET)
+ mov rbx, qword [rbp - 107] ; (SET)
+ lea rsp, [rbp - 91] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 91] ; (SET)
+ mov r8b, byte [rbp - 90] ; (SET)
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], al ; (SET)
+ mov cl, byte [rbp - 89] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_top_block#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_top_block#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rel parse._ast_top_block#1#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_top_block#1#wrap#end
+parse._ast_top_block#1#wrap#0#if#end:
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r12 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_top_block#1#wrap#end
+parse._ast_top_block#1#wrap#1#if#end:
+parse._ast_top_block#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+
+parse._ast_top_block#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_module:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13w, word [rel parse.NTYPE_MODULE] ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov rcx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#0#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#0#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov rcx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#0#wrap#0#if#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_module#end
+ jmp parse._ast_module#0#wrap#0#if#1#wrap#end
+parse._ast_module#0#wrap#0#if#1#wrap#0#if#end:
+parse._ast_module#0#wrap#0#if#1#wrap#end:
+ mov r13w, word [rel parse.NTYPE_EXPORT] ; (SET)
+ jmp parse._ast_module#0#wrap#end
+parse._ast_module#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov rcx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_module#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse._ast_module#0#wrap#1#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#0#wrap#1#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_module#0#wrap#end
+parse._ast_module#0#wrap#1#if#end:
+parse._ast_module#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ jmp parse._ast_module#1#wrap#end
+parse._ast_module#1#wrap#0#if#end:
+parse._ast_module#1#wrap#end:
+ sub rsp, 50 ; Create stack space for local variable nmod
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 114], rax ; (SET)
+ mov word [rbp - 116], r13w ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 124], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov bx, word [rbp - 116] ; (SET)
+ mov rcx, qword [rbp - 124] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r14b, 1 ; (SET)
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_module#2#loop#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_module#2#loop#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#2#loop#end
+parse._ast_module#2#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ mov qword [rbp - 123], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#2#loop#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#2#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_import
+ jmp parse._ast_module#2#loop#1#wrap#end
+parse._ast_module#2#loop#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ mov qword [rbp - 123], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#2#loop#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#2#loop#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_struct
+ jmp parse._ast_module#2#loop#1#wrap#end
+parse._ast_module#2#loop#1#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ mov qword [rbp - 123], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#2#loop#1#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#2#loop#1#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_enum
+ jmp parse._ast_module#2#loop#1#wrap#end
+parse._ast_module#2#loop#1#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r10 ; (SET)
+ mov qword [rbp - 123], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#2#loop#1#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 131], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ mov rcx, qword [rbp - 131] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#2#loop#1#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_asm
+ jmp parse._ast_module#2#loop#1#wrap#end
+parse._ast_module#2#loop#1#wrap#3#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#2#loop#1#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 123], rsi ; (SET)
+ mov rax, qword [rbp - 115] ; (SET)
+ mov rbx, qword [rbp - 123] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#2#loop#1#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_top_block
+ jmp parse._ast_module#2#loop#1#wrap#end
+parse._ast_module#2#loop#1#wrap#4#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 115], rsi ; (SET)
+ mov rdi, [rbp - 115] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+ jne parse._ast_module#2#loop#1#wrap#5#if#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 116], rsi ; (SET)
+ mov rdi, [rbp - 116] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 108], al ; Mov after compare
+ lea rsp, [rbp - 108] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 108], 0
+parse._ast_module#2#loop#1#wrap#5#if#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._ast_module#2#loop#1#wrap#5#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 110], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 118], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#2#loop#1#wrap#5#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 126], rsi ; (SET)
+ mov rax, qword [rbp - 118] ; (SET)
+ mov rbx, qword [rbp - 126] ; (SET)
+ lea rsp, [rbp - 110] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 110] ; (SET)
+ mov r8b, byte [rbp - 109] ; (SET)
+ mov bl, byte [rbp - 108] ; (SET)
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], al ; (SET)
+ mov cl, byte [rbp - 108] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 107], al ; Mov after compare
+ lea rsp, [rbp - 107] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 107], 0
+parse._ast_module#2#loop#1#wrap#5#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._ast_module#2#loop#1#wrap#5#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 108], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 109], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 117], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#2#loop#1#wrap#5#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 125], rsi ; (SET)
+ mov rax, qword [rbp - 117] ; (SET)
+ mov rbx, qword [rbp - 125] ; (SET)
+ lea rsp, [rbp - 109] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 109] ; (SET)
+ mov r8b, byte [rbp - 108] ; (SET)
+ mov bl, byte [rbp - 107] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 107], al ; (SET)
+ mov cl, byte [rbp - 107] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_module#2#loop#1#wrap#5#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#2#loop#1#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov qword [rbp - 130], r12 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_decl
+ jmp parse._ast_module#2#loop#1#wrap#end
+parse._ast_module#2#loop#1#wrap#5#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_DELIM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_module#2#loop#1#wrap#6#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rdi, [rdi] ; auto deref (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 59
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_module#2#loop#1#wrap#6#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#2#loop#1#wrap#6#if#end
+ mov r14b, 0 ; (SET)
+ jmp parse._ast_module#2#loop#1#wrap#end
+parse._ast_module#2#loop#1#wrap#6#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov qword [rbp - 122], r12 ; (SET)
+ mov rsi, qword [rel parse._ast_module#2#loop#1#wrap#7#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ mov rcx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 178], r12 ; (SET)
+ mov rax, qword [rbp - 178] ; (SET)
+ lea rsp, [rbp - 170] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [r12] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 170] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_module#2#loop#1#wrap#end
+parse._ast_module#2#loop#1#wrap#7#if#end:
+parse._ast_module#2#loop#1#wrap#end:
+parse._ast_module#2#loop#rep:
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je parse._ast_module#2#loop#2#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov rdi, [rbp - 114] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_module#2#loop#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_module#2#loop#end
+ jmp parse._ast_module#2#loop#start
+parse._ast_module#2#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call parse._#Node.add_child
+
+parse._ast_module#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._ast_file:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.open
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call parse.produce_first_token
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable first
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rcx, qword [rbp - 120] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_file#0#loop#end
+parse._ast_file#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 121], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 129], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 137], rsi ; (SET)
+ mov rsi, qword [rel parse._ast_file#0#loop#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 145], rsi ; (SET)
+ mov rax, qword [rbp - 129] ; (SET)
+ mov rbx, qword [rbp - 137] ; (SET)
+ mov rcx, qword [rbp - 145] ; (SET)
+ lea rsp, [rbp - 121] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 121] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_file#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov qword [rbp - 136], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ mov rcx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._ast_import
+ jmp parse._ast_file#0#loop#0#wrap#end
+parse._ast_file#0#loop#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 121], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 129], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 137], rsi ; (SET)
+ mov rsi, qword [rel parse._ast_file#0#loop#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 145], rsi ; (SET)
+ mov rax, qword [rbp - 129] ; (SET)
+ mov rbx, qword [rbp - 137] ; (SET)
+ mov rcx, qword [rbp - 145] ; (SET)
+ lea rsp, [rbp - 121] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 121] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_file#0#loop#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov qword [rbp - 136], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ mov rcx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._ast_struct
+ jmp parse._ast_file#0#loop#0#wrap#end
+parse._ast_file#0#loop#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 121], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 129], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 137], rsi ; (SET)
+ mov rsi, qword [rel parse._ast_file#0#loop#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 145], rsi ; (SET)
+ mov rax, qword [rbp - 129] ; (SET)
+ mov rbx, qword [rbp - 137] ; (SET)
+ mov rcx, qword [rbp - 145] ; (SET)
+ lea rsp, [rbp - 121] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 121] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_file#0#loop#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov qword [rbp - 136], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ mov rcx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._ast_enum
+ jmp parse._ast_file#0#loop#0#wrap#end
+parse._ast_file#0#loop#0#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 121], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 129], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 137], rsi ; (SET)
+ mov rsi, qword [rel parse._ast_file#0#loop#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 145], rsi ; (SET)
+ mov rax, qword [rbp - 129] ; (SET)
+ mov rbx, qword [rbp - 137] ; (SET)
+ mov rcx, qword [rbp - 145] ; (SET)
+ lea rsp, [rbp - 121] ; Free stack space (freeing tmp variables)
+ call parse._advance_check
+ mov bl, byte [rbp - 121] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_file#0#loop#0#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov qword [rbp - 136], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ mov rcx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._ast_asm
+ jmp parse._ast_file#0#loop#0#wrap#end
+parse._ast_file#0#loop#0#wrap#3#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 121], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 129], rax ; (SET)
+ mov rsi, qword [rel parse._ast_file#0#loop#0#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 137], rsi ; (SET)
+ mov rax, qword [rbp - 129] ; (SET)
+ mov rbx, qword [rbp - 137] ; (SET)
+ lea rsp, [rbp - 121] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov bl, byte [rbp - 121] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_file#0#loop#0#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov qword [rbp - 136], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ mov rcx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._ast_top_block
+ jmp parse._ast_file#0#loop#0#wrap#end
+parse._ast_file#0#loop#0#wrap#4#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rcx, qword [rbp - 120] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_KEYTP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 121], al ; Mov after compare
+ cmp byte byte [rbp - 121], 0
+ jne parse._ast_file#0#loop#0#wrap#5#if#2#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rcx, qword [rbp - 120] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_USRWD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 122], al ; Mov after compare
+ cmp byte byte [rbp - 122], 0
+parse._ast_file#0#loop#0#wrap#5#if#2#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+ jne parse._ast_file#0#loop#0#wrap#5#if#1#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 122], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 123], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 124], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 132], rax ; (SET)
+ mov rsi, qword [rel parse._ast_file#0#loop#0#wrap#5#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 140], rsi ; (SET)
+ mov rax, qword [rbp - 132] ; (SET)
+ mov rbx, qword [rbp - 140] ; (SET)
+ lea rsp, [rbp - 124] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 124] ; (SET)
+ mov r8b, byte [rbp - 123] ; (SET)
+ mov bl, byte [rbp - 122] ; (SET)
+ lea rsp, [rbp - 121] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 122], al ; (SET)
+ mov cl, byte [rbp - 122] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 121], al ; Mov after compare
+ lea rsp, [rbp - 121] ; Free stack space (freeing tmp variables)
+ cmp byte byte [rbp - 121], 0
+parse._ast_file#0#loop#0#wrap#5#if#1#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ jne parse._ast_file#0#loop#0#wrap#5#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 121], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 122], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 123], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 131], rax ; (SET)
+ mov rsi, qword [rel parse._ast_file#0#loop#0#wrap#5#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 139], rsi ; (SET)
+ mov rax, qword [rbp - 131] ; (SET)
+ mov rbx, qword [rbp - 139] ; (SET)
+ lea rsp, [rbp - 123] ; Free stack space (freeing tmp variables)
+ call parse._#Token.eq
+ mov r9b, byte [rbp - 123] ; (SET)
+ mov r8b, byte [rbp - 122] ; (SET)
+ mov bl, byte [rbp - 121] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 121], al ; (SET)
+ mov cl, byte [rbp - 121] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+parse._ast_file#0#loop#0#wrap#5#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_file#0#loop#0#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov qword [rbp - 136], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ mov rcx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._ast_decl
+ jmp parse._ast_file#0#loop#0#wrap#end
+parse._ast_file#0#loop#0#wrap#5#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rsi, qword [rel parse._ast_file#0#loop#0#wrap#6#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ mov rcx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._ast_print_err
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 192], r10 ; (SET)
+ ; putting struct address into register
+ lea rdi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ mov rax, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call parse.produce_next_token
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 192], rax ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Token] in bytes
+ rep movsb ; move struct
+ jmp parse._ast_file#0#loop#0#wrap#end
+parse._ast_file#0#loop#0#wrap#6#if#end:
+parse._ast_file#0#loop#0#wrap#end:
+parse._ast_file#0#loop#rep:
+ mov rcx, qword [rbp - 120] ; (SET)
+ cmp rcx, qword [rel parse.TTYPE_ERR]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._ast_file#0#loop#end
+ jmp parse._ast_file#0#loop#start
+parse._ast_file#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call parse._#Token.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#File.close
+
+parse._ast_file#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.generate_ast:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 50 ; Create stack space for local variable out
+ sub rsp, 32 ; Create stack space for local variable v
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 146], rax ; (SET)
+ mov qword [rbp - 154], 1 ; (SET)
+ mov rax, qword [rbp - 146] ; (SET)
+ mov rbx, qword [rbp - 154] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 2 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 146], rax ; (SET)
+ mov si, word [rel parse.NTYPE_EXPORT] ; (SET_PRM_R)
+ mov word [rbp - 148], si ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 138] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 156], rax ; (SET)
+ mov rax, qword [rbp - 146] ; (SET)
+ mov bx, word [rbp - 148] ; (SET)
+ mov rcx, qword [rbp - 156] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ call parse._#Node.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 146], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 154], rsi ; (SET)
+ mov rax, qword [rbp - 146] ; (SET)
+ mov rbx, qword [rbp - 154] ; (SET)
+ lea rsp, [rbp - 138] ; Free stack space (freeing tmp variables)
+ call parse._ast_file
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov rcx, 50 ; size of struct [Node] in bytes
+ rep movsb ; move struct
+ jmp parse.generate_ast#end
+
+parse.generate_ast#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.print_node_type:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_MODULE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_EXPORT]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_STRUCT]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_TYPE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#4#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_BIN_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#5#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#5#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_PRE_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#6#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#6#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#6#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_POST_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#7#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#7#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#7#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_FUNCTION]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#8#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#8#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#8#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_METHOD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#9#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#9#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#9#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_TLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#10#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#10#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#10#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_DLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#11#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#11#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#11#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ELIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#12#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#12#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#12#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_SLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#13#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#13#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#13#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_LITERAL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#14#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#14#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#14#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ENUM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#15#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#15#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#15#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_DECL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#16#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#16#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#16#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#17#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#17#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#17#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#18#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#18#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#18#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_CAST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#19#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#19#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#19#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_FLOW_CONTROL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#20#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#20#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#20#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_IF_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#21#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#21#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#21#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ELIF_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#22#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#22#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#22#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ELSE_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#23#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#23#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#23#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_LOOP_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#24#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#24#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#24#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ASM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#25#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#25#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#25#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_EMPTY]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_node_type#0#wrap#26#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_type#0#wrap#26#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_node_type#0#wrap#end
+parse.print_node_type#0#wrap#26#if#end:
+parse.print_node_type#0#wrap#end:
+
+parse.print_node_type#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.print_node_head:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_head#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse.print_node_type
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_head#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_node_head#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+parse.print_node_head#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.print_ast_rec:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, 0 ; (SET)
+ cmp r12, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_ast_rec#0#loop#end
+parse.print_ast_rec#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_ast_rec#0#loop#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+parse.print_ast_rec#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ cmp r12, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_ast_rec#0#loop#end
+ jmp parse.print_ast_rec#0#loop#start
+parse.print_ast_rec#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse.print_node_head
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_ast_rec#1#loop#end
+parse.print_ast_rec#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse.print_ast_rec
+parse.print_ast_rec#1#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_ast_rec#1#loop#end
+ jmp parse.print_ast_rec#1#loop#start
+parse.print_ast_rec#1#loop#end:
+ mov r12, 0 ; (SET)
+ cmp r12, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_ast_rec#2#loop#end
+parse.print_ast_rec#2#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_ast_rec#2#loop#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+parse.print_ast_rec#2#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ cmp r12, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_ast_rec#2#loop#end
+ jmp parse.print_ast_rec#2#loop#start
+parse.print_ast_rec#2#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_ast_rec#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+parse.print_ast_rec#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.print_ast:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse.print_ast_rec
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse.verify_ast_integrity
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.print_ast#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_ast#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_ast#0#wrap#end
+parse.print_ast#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.print_ast#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp parse.print_ast#0#wrap#end
+parse.print_ast#0#wrap#1#if#end:
+parse.print_ast#0#wrap#end:
+
+parse.print_ast#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse.verify_ast_integrity:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.verify_ast_integrity#0#loop#end
+parse.verify_ast_integrity#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, r10
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.verify_ast_integrity#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.verify_ast_integrity#0#loop#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse.print_node_head
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.verify_ast_integrity#0#loop#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.verify_ast_integrity#0#loop#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse.print_node_head
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.verify_ast_integrity#0#loop#0#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ mov r13, r10 ; (SET)
+ mov r14, r13 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.verify_ast_integrity#0#loop#0#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ mov r14, r13 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel parse.verify_ast_integrity#0#loop#0#wrap#0#if#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse.verify_ast_integrity#end
+ jmp parse.verify_ast_integrity#0#loop#0#wrap#end
+parse.verify_ast_integrity#0#loop#0#wrap#0#if#end:
+parse.verify_ast_integrity#0#loop#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r12 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse.verify_ast_integrity
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.verify_ast_integrity#0#loop#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse.verify_ast_integrity#end
+ jmp parse.verify_ast_integrity#0#loop#1#wrap#end
+parse.verify_ast_integrity#0#loop#1#wrap#0#if#end:
+parse.verify_ast_integrity#0#loop#1#wrap#end:
+parse.verify_ast_integrity#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse.verify_ast_integrity#0#loop#end
+ jmp parse.verify_ast_integrity#0#loop#start
+parse.verify_ast_integrity#0#loop#end:
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse.verify_ast_integrity#end
+
+parse.verify_ast_integrity#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._#Token.eq:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov al, al ; (SET)
+ jmp parse._#Token.eq#end
+
+parse._#Token.eq#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._#Token.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+parse._#Token.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._#Node.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11w, bx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ mov word [rbx], r11w ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ sub rsp, 50 ; Create stack space for local variable n
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], rsi ; (SET)
+ mov qword [rbp - 122], 50 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ mov rbx, qword [rbp - 122] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+
+parse._#Node.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._#Node.eq:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov qword [rbp - 73], r11 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._#Node.eq#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp parse._#Node.eq#end
+ jmp parse._#Node.eq#0#wrap#end
+parse._#Node.eq#0#wrap#0#if#end:
+parse._#Node.eq#0#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp parse._#Node.eq#end
+
+parse._#Node.eq#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._#Node.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._#Node.end#0#loop#end
+parse._#Node.end#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse._#Node.end
+parse._#Node.end#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._#Node.end#0#loop#end
+ jmp parse._#Node.end#0#loop#start
+parse._#Node.end#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+parse._#Node.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._#Node.update_children:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r10, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._#Node.update_children#0#loop#end
+parse._#Node.update_children#0#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+parse._#Node.update_children#0#loop#rep:
+ mov rbx, r10 ; (SET)
+ inc r10 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r10, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._#Node.update_children#0#loop#end
+ jmp parse._#Node.update_children#0#loop#start
+parse._#Node.update_children#0#loop#end:
+
+parse._#Node.update_children#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+parse._#Node.add_child:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 42 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov r11, qword [rsi] ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov r12, qword [rsi] ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._#Node.add_child#0#loop#end
+parse._#Node.add_child#0#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call parse._#Node.update_children
+parse._#Node.add_child#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je parse._#Node.add_child#0#loop#end
+ jmp parse._#Node.add_child#0#loop#start
+parse._#Node.add_child#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r10 ; (SET)
+ jmp parse._#Node.add_child#end
+
+parse._#Node.add_child#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._is_primitive:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile.PRIMITIVE_1] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov qword [rbp - 73], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._is_primitive#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 1 ; (SET)
+ jmp compile._is_primitive#end
+ jmp compile._is_primitive#0#wrap#end
+compile._is_primitive#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile.PRIMITIVE_2] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov qword [rbp - 73], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._is_primitive#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov rax, 2 ; (SET)
+ jmp compile._is_primitive#end
+ jmp compile._is_primitive#0#wrap#end
+compile._is_primitive#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile.PRIMITIVE_4] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov qword [rbp - 73], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._is_primitive#0#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov rax, 4 ; (SET)
+ jmp compile._is_primitive#end
+ jmp compile._is_primitive#0#wrap#end
+compile._is_primitive#0#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile.PRIMITIVE_8] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov qword [rbp - 73], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._is_primitive#0#wrap#3#if#end
+
+ ; STARTING RETURN
+ mov rax, 8 ; (SET)
+ jmp compile._is_primitive#end
+ jmp compile._is_primitive#0#wrap#end
+compile._is_primitive#0#wrap#3#if#end:
+compile._is_primitive#0#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp compile._is_primitive#end
+
+compile._is_primitive#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile.is_primitive:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.is_primitive#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp compile.is_primitive#end
+ jmp compile.is_primitive#0#wrap#end
+compile.is_primitive#0#wrap#0#if#end:
+compile.is_primitive#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_PRE_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.is_primitive#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 8 ; (SET)
+ jmp compile.is_primitive#end
+ jmp compile.is_primitive#1#wrap#end
+compile.is_primitive#1#wrap#0#if#end:
+compile.is_primitive#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_POST_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.is_primitive#2#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 8 ; (SET)
+ jmp compile.is_primitive#end
+ jmp compile.is_primitive#2#wrap#end
+compile.is_primitive#2#wrap#0#if#end:
+compile.is_primitive#2#wrap#end:
+ mov rbx, 0 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r12, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile.is_primitive#3#loop#end
+compile.is_primitive#3#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov cx, word [r9] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile.is_primitive#3#loop#0#wrap#0#if#end
+ cmp r12, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile.is_primitive#3#loop#0#wrap#0#if#0#wrap#0#if#end
+ mov r12, r13 ; (SET)
+ jmp compile.is_primitive#3#loop#0#wrap#0#if#0#wrap#end
+compile.is_primitive#3#loop#0#wrap#0#if#0#wrap#0#if#end:
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp compile.is_primitive#end
+ jmp compile.is_primitive#3#loop#0#wrap#0#if#0#wrap#end
+compile.is_primitive#3#loop#0#wrap#0#if#0#wrap#1#if#end:
+compile.is_primitive#3#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile.is_primitive#3#loop#0#wrap#end
+compile.is_primitive#3#loop#0#wrap#0#if#end:
+compile.is_primitive#3#loop#0#wrap#end:
+compile.is_primitive#3#loop#rep:
+ mov r8, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile.is_primitive#3#loop#end
+ jmp compile.is_primitive#3#loop#start
+compile.is_primitive#3#loop#end:
+ cmp r12, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile.is_primitive#4#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp compile.is_primitive#end
+ jmp compile.is_primitive#4#wrap#end
+compile.is_primitive#4#wrap#0#if#end:
+compile.is_primitive#4#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r11, rax ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._is_primitive
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov rax, rax ; (SET)
+ jmp compile.is_primitive#end
+
+compile.is_primitive#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._print_type:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r12b, 0 ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._print_type#0#loop#end
+compile._print_type#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._print_type#0#loop#0#wrap#0#if#end
+ cmp r12b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._print_type#0#loop#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._print_type#0#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._print_type#0#loop#0#wrap#0#if#0#wrap#end
+compile._print_type#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._print_type#0#loop#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ mov r12b, 1 ; (SET)
+ jmp compile._print_type#0#loop#0#wrap#end
+compile._print_type#0#loop#0#wrap#0#if#end:
+ jmp compile._print_type#end
+ jmp compile._print_type#0#loop#0#wrap#end
+compile._print_type#0#loop#0#wrap#1#if#end:
+compile._print_type#0#loop#0#wrap#end:
+compile._print_type#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._print_type#0#loop#end
+ jmp compile._print_type#0#loop#start
+compile._print_type#0#loop#end:
+
+compile._print_type#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._type_is_ptr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._type_is_ptr#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._type_is_ptr#end
+ jmp compile._type_is_ptr#0#wrap#end
+compile._type_is_ptr#0#wrap#0#if#end:
+compile._type_is_ptr#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_PRE_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._type_is_ptr#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._type_is_ptr#end
+ jmp compile._type_is_ptr#1#wrap#end
+compile._type_is_ptr#1#wrap#0#if#end:
+compile._type_is_ptr#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_POST_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._type_is_ptr#2#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._type_is_ptr#end
+ jmp compile._type_is_ptr#2#wrap#end
+compile._type_is_ptr#2#wrap#0#if#end:
+compile._type_is_ptr#2#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._type_is_ptr#end
+
+compile._type_is_ptr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile.reg_string:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 1 ; Create stack space for local variable add
+ cmp r10, 9
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#end
+ cmp r11, 4
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#0#wrap#0#if#end
+ mov byte [rbp - 89], 101 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile.reg_string#0#wrap#0#if#0#wrap#end
+compile.reg_string#0#wrap#0#if#0#wrap#0#if#end:
+ cmp r11, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#0#wrap#1#if#end
+ mov byte [rbp - 89], 114 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile.reg_string#0#wrap#0#if#0#wrap#end
+compile.reg_string#0#wrap#0#if#0#wrap#1#if#end:
+compile.reg_string#0#wrap#0#if#0#wrap#end:
+ mov byte [rbp - 89], 97 ; (SET)
+ cmp r10, 5
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#1#wrap#0#if#end
+ mov bl, byte [rbp - 89] ; (SET)
+ add bl, r10b ; (STD_OP)
+ sub bl, 1 ; (STD_OP)
+ mov byte [rbp - 89], bl ; (SET)
+ jmp compile.reg_string#0#wrap#0#if#1#wrap#end
+compile.reg_string#0#wrap#0#if#1#wrap#0#if#end:
+ cmp r10, 5
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne compile.reg_string#0#wrap#0#if#1#wrap#1#if#0#bool#end
+ cmp r10, 7
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile.reg_string#0#wrap#0#if#1#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#1#wrap#1#if#end
+ mov byte [rbp - 89], 115 ; (SET)
+ jmp compile.reg_string#0#wrap#0#if#1#wrap#end
+compile.reg_string#0#wrap#0#if#1#wrap#1#if#end:
+ cmp r10, 6
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#1#wrap#2#if#end
+ mov byte [rbp - 89], 100 ; (SET)
+ jmp compile.reg_string#0#wrap#0#if#1#wrap#end
+compile.reg_string#0#wrap#0#if#1#wrap#2#if#end:
+ cmp r10, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#1#wrap#3#if#end
+ mov byte [rbp - 89], 98 ; (SET)
+ jmp compile.reg_string#0#wrap#0#if#1#wrap#end
+compile.reg_string#0#wrap#0#if#1#wrap#3#if#end:
+compile.reg_string#0#wrap#0#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ cmp r10, 5
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne compile.reg_string#0#wrap#0#if#2#wrap#0#if#0#bool#end
+ cmp r10, 6
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile.reg_string#0#wrap#0#if#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#2#wrap#0#if#end
+ mov byte [rbp - 89], 105 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile.reg_string#0#wrap#0#if#2#wrap#end
+compile.reg_string#0#wrap#0#if#2#wrap#0#if#end:
+ cmp r10, 7
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne compile.reg_string#0#wrap#0#if#2#wrap#1#if#0#bool#end
+ cmp r10, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile.reg_string#0#wrap#0#if#2#wrap#1#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#2#wrap#1#if#end
+ mov byte [rbp - 89], 112 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile.reg_string#0#wrap#0#if#2#wrap#end
+compile.reg_string#0#wrap#0#if#2#wrap#1#if#end:
+ cmp r11, 1
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#2#wrap#2#if#end
+ mov byte [rbp - 89], 120 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile.reg_string#0#wrap#0#if#2#wrap#end
+compile.reg_string#0#wrap#0#if#2#wrap#2#if#end:
+compile.reg_string#0#wrap#0#if#2#wrap#end:
+ cmp r11, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#0#if#3#wrap#0#if#end
+ mov byte [rbp - 89], 108 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile.reg_string#0#wrap#0#if#3#wrap#end
+compile.reg_string#0#wrap#0#if#3#wrap#0#if#end:
+compile.reg_string#0#wrap#0#if#3#wrap#end:
+ jmp compile.reg_string#0#wrap#end
+compile.reg_string#0#wrap#0#if#end:
+ cmp r10, 17
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#1#if#end
+ mov byte [rbp - 89], 114 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 97], rbx ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ mov qword [rbp - 105], r12 ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 97], r12 ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call _delete
+ cmp r11, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#1#if#0#wrap#0#if#end
+ mov byte [rbp - 89], 98 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile.reg_string#0#wrap#1#if#0#wrap#end
+compile.reg_string#0#wrap#1#if#0#wrap#0#if#end:
+ cmp r11, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#1#if#0#wrap#1#if#end
+ mov byte [rbp - 89], 119 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile.reg_string#0#wrap#1#if#0#wrap#end
+compile.reg_string#0#wrap#1#if#0#wrap#1#if#end:
+ cmp r11, 4
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#1#if#0#wrap#2#if#end
+ mov byte [rbp - 89], 100 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ lea rsi, byte [rbp - 89] ; (TAKE_PTR)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile.reg_string#0#wrap#1#if#0#wrap#end
+compile.reg_string#0#wrap#1#if#0#wrap#2#if#end:
+compile.reg_string#0#wrap#1#if#0#wrap#end:
+ jmp compile.reg_string#0#wrap#end
+compile.reg_string#0#wrap#1#if#end:
+ cmp r10, 33
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile.reg_string#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ mov rsi, qword [rel compile.reg_string#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 105], rsi ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r10 ; (SET)
+ sub rbx, 17 ; (STD_OP)
+ mov qword [rbp - 97], rbx ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ mov qword [rbp - 105], r12 ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ mov rbx, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 97], r12 ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile.reg_string#0#wrap#end
+compile.reg_string#0#wrap#2#if#end:
+compile.reg_string#0#wrap#end:
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 97], rax ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile.reg_string#end
+
+compile.reg_string#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile.var_test_mov:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel compile.var_test_mov#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_struct
+ mov r12, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable a
+ sub rsp, 88 ; Create stack space for local variable b
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov qword [rbp - 248], r12 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov qword [rbp - 248], r12 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_mov#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov qword [rbp - 96], 1 ; (SET)
+ mov qword [rbp - 184], 2 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_mov#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 184] ; (SET)
+ sub rbx, 3 ; (STD_OP)
+ mov qword [rbp - 184], rbx ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ sub rbx, 56 ; (STD_OP)
+ mov qword [rbp - 176], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_mov#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_mov#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 96] ; (SET)
+ sub rbx, 2 ; (STD_OP)
+ mov qword [rbp - 96], rbx ; (SET)
+ mov qword [rbp - 88], 56 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_mov#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+
+compile.var_test_mov#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile.var_test_movsx:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_struct
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_struct
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_struct
+ mov r14, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable a
+ sub rsp, 88 ; Create stack space for local variable b
+ sub rsp, 88 ; Create stack space for local variable c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r12 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r13 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r14 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ mov qword [rbp - 96], 1 ; (SET)
+ mov qword [rbp - 184], 2 ; (SET)
+ mov qword [rbp - 272], 3 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 272] ; (SET)
+ sub rbx, 4 ; (STD_OP)
+ mov qword [rbp - 272], rbx ; (SET)
+ mov qword [rbp - 264], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov qword [rbp - 272], 3 ; (SET)
+ mov qword [rbp - 264], 0 ; (SET)
+ mov rbx, qword [rbp - 184] ; (SET)
+ sub rbx, 3 ; (STD_OP)
+ mov qword [rbp - 184], rbx ; (SET)
+ mov qword [rbp - 176], 5 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 272] ; (SET)
+ sub rbx, 4 ; (STD_OP)
+ mov qword [rbp - 272], rbx ; (SET)
+ mov qword [rbp - 264], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ mov qword [rbp - 184], 2 ; (SET)
+ mov qword [rbp - 176], 0 ; (SET)
+ mov qword [rbp - 272], 3 ; (SET)
+ mov qword [rbp - 264], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#9#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 272] ; (SET)
+ sub rbx, 4 ; (STD_OP)
+ mov qword [rbp - 272], rbx ; (SET)
+ mov qword [rbp - 264], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#10#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov qword [rbp - 272], 3 ; (SET)
+ mov qword [rbp - 264], 0 ; (SET)
+ mov rbx, qword [rbp - 96] ; (SET)
+ sub rbx, 2 ; (STD_OP)
+ mov qword [rbp - 96], rbx ; (SET)
+ mov qword [rbp - 88], 5 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#11#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 272] ; (SET)
+ sub rbx, 4 ; (STD_OP)
+ mov qword [rbp - 272], rbx ; (SET)
+ mov qword [rbp - 264], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ mov qword [rbp - 96], 1 ; (SET)
+ mov qword [rbp - 88], 0 ; (SET)
+ mov qword [rbp - 272], 3 ; (SET)
+ mov qword [rbp - 264], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#12#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 184] ; (SET)
+ sub rbx, 3 ; (STD_OP)
+ mov qword [rbp - 184], rbx ; (SET)
+ mov qword [rbp - 176], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#13#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov qword [rbp - 184], 2 ; (SET)
+ mov qword [rbp - 176], 0 ; (SET)
+ mov rbx, qword [rbp - 96] ; (SET)
+ sub rbx, 2 ; (STD_OP)
+ mov qword [rbp - 96], rbx ; (SET)
+ mov qword [rbp - 88], 5 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#14#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 184] ; (SET)
+ sub rbx, 3 ; (STD_OP)
+ mov qword [rbp - 184], rbx ; (SET)
+ mov qword [rbp - 176], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movsx#15#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+
+compile.var_test_movsx#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile.var_test_movzx:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_struct
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_struct
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_struct
+ mov r14, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable a
+ sub rsp, 88 ; Create stack space for local variable b
+ sub rsp, 88 ; Create stack space for local variable c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r12 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r13 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r14 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ mov qword [rbp - 96], 1 ; (SET)
+ mov qword [rbp - 184], 2 ; (SET)
+ mov qword [rbp - 272], 3 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 272] ; (SET)
+ sub rbx, 4 ; (STD_OP)
+ mov qword [rbp - 272], rbx ; (SET)
+ mov qword [rbp - 264], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov qword [rbp - 272], 3 ; (SET)
+ mov qword [rbp - 264], 0 ; (SET)
+ mov rbx, qword [rbp - 184] ; (SET)
+ sub rbx, 3 ; (STD_OP)
+ mov qword [rbp - 184], rbx ; (SET)
+ mov qword [rbp - 176], 5 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 272] ; (SET)
+ sub rbx, 4 ; (STD_OP)
+ mov qword [rbp - 272], rbx ; (SET)
+ mov qword [rbp - 264], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ mov qword [rbp - 184], 2 ; (SET)
+ mov qword [rbp - 176], 0 ; (SET)
+ mov qword [rbp - 272], 3 ; (SET)
+ mov qword [rbp - 264], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#9#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 272] ; (SET)
+ sub rbx, 4 ; (STD_OP)
+ mov qword [rbp - 272], rbx ; (SET)
+ mov qword [rbp - 264], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#10#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov qword [rbp - 272], 3 ; (SET)
+ mov qword [rbp - 264], 0 ; (SET)
+ mov rbx, qword [rbp - 96] ; (SET)
+ sub rbx, 2 ; (STD_OP)
+ mov qword [rbp - 96], rbx ; (SET)
+ mov qword [rbp - 88], 5 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#11#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 272] ; (SET)
+ sub rbx, 4 ; (STD_OP)
+ mov qword [rbp - 272], rbx ; (SET)
+ mov qword [rbp - 264], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ mov qword [rbp - 96], 1 ; (SET)
+ mov qword [rbp - 88], 0 ; (SET)
+ mov qword [rbp - 272], 3 ; (SET)
+ mov qword [rbp - 264], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#12#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 184] ; (SET)
+ sub rbx, 3 ; (STD_OP)
+ mov qword [rbp - 184], rbx ; (SET)
+ mov qword [rbp - 176], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#13#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov qword [rbp - 184], 2 ; (SET)
+ mov qword [rbp - 176], 0 ; (SET)
+ mov rbx, qword [rbp - 96] ; (SET)
+ sub rbx, 2 ; (STD_OP)
+ mov qword [rbp - 96], rbx ; (SET)
+ mov qword [rbp - 88], 5 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#14#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 184] ; (SET)
+ sub rbx, 3 ; (STD_OP)
+ mov qword [rbp - 184], rbx ; (SET)
+ mov qword [rbp - 176], 4 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov rsi, qword [rel compile.var_test_movzx#15#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+
+compile.var_test_movzx#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile.var_test_movref:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel compile.var_test_movref#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_struct
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel compile.var_test_movref#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_struct
+ mov r13, rax ; (SET)
+
+compile.var_test_movref#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._gen_test_struct:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [rel compile._gen_test_struct#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._create_methods
+ mov r11, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable t
+ sub rsp, 64 ; Create stack space for local variable s
+ mov qword [rbp - 160], 9 ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 200], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 192] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 216], rax ; (SET)
+ mov qword [rbp - 224], 88 ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._gen_test_struct#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 216], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 208], rax ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+
+compile._gen_test_struct#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile.var_tests:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 145 ; Create stack space for local variable mod
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 209], rax ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call compile._#Module._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile.var_tests#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 209], rsi ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 201], rax ; (SET)
+ mov byte [rbp - 65], 1 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 209], rsi ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call compile._gen_prims
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 209], rsi ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call compile._gen_test_struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 209], rsi ; (SET)
+ mov qword [rbp - 217], r10 ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ mov rbx, qword [rbp - 217] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call compile.var_test_mov
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 209], rsi ; (SET)
+ mov qword [rbp - 217], r10 ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ mov rbx, qword [rbp - 217] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call compile.var_test_movsx
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 209], rsi ; (SET)
+ mov qword [rbp - 217], r10 ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ mov rbx, qword [rbp - 217] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call compile.var_test_movzx
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 209], rsi ; (SET)
+ mov qword [rbp - 217], r10 ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ mov rbx, qword [rbp - 217] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call compile.var_test_movref
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 209], rax ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call compile._#Module.end
+
+compile.var_tests#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._indent:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 0 ; (SET)
+ cmp r11, r10
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._indent#0#loop#end
+compile._indent#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._indent#0#loop#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+compile._indent#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ cmp r11, r10
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._indent#0#loop#end
+ jmp compile._indent#0#loop#start
+compile._indent#0#loop#end:
+
+compile._indent#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile.parse_tree:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 50 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 50
+ call parse.generate_ast
+ ; putting struct address into register
+ lea rdi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 50 ; size of struct [Node] in bytes
+ rep movsb ; move struct
+ add rsp, 50
+ sub rsp, 50 ; Create stack space for local variable ast
+ ; putting struct address into register
+ lea rdi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov rcx, 50 ; size of struct [Node] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.update_children
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rsi ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse.print_ast
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.end
+
+compile.parse_tree#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile.mod_tree:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 50 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 50
+ call parse.generate_ast
+ ; putting struct address into register
+ lea rdi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 50 ; size of struct [Node] in bytes
+ rep movsb ; move struct
+ add rsp, 50
+ sub rsp, 50 ; Create stack space for local variable ast
+ ; putting struct address into register
+ lea rdi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov rcx, 50 ; size of struct [Node] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.update_children
+ sub rsp, 96 ; Create stack space for local variable buffer
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 260], rax ; (SET)
+ mov rax, qword [rbp - 260] ; (SET)
+ lea rsp, [rbp - 252] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.init
+ sub rsp, 145 ; Create stack space for local variable mod
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 413], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 421], rsi ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ mov rbx, qword [rbp - 413] ; (SET)
+ mov rcx, qword [rbp - 421] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rsi ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._gen_prims
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.update_children
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 413], rsi ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ mov rbx, qword [rbp - 413] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.collect_methods
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 413], rsi ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ mov rbx, qword [rbp - 413] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.compile
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.print
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call parse._#Node.end
+
+compile.mod_tree#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile.generate:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 50 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 114], r10 ; (SET)
+ mov rax, qword [rbp - 114] ; (SET)
+ lea rsp, [rbp - 106] ; Free stack space (freeing tmp variables)
+ sub rsp, 50
+ call parse.generate_ast
+ ; putting struct address into register
+ lea rdi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 50 ; size of struct [Node] in bytes
+ rep movsb ; move struct
+ add rsp, 50
+ sub rsp, 50 ; Create stack space for local variable ast
+ ; putting struct address into register
+ lea rdi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov rcx, 50 ; size of struct [Node] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 164], rax ; (SET)
+ mov rax, qword [rbp - 164] ; (SET)
+ lea rsp, [rbp - 156] ; Free stack space (freeing tmp variables)
+ call parse._#Node.update_children
+ sub rsp, 96 ; Create stack space for local variable buffer
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 260], rax ; (SET)
+ mov rax, qword [rbp - 260] ; (SET)
+ lea rsp, [rbp - 252] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.init
+ sub rsp, 145 ; Create stack space for local variable mod
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 413], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 421], rsi ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ mov rbx, qword [rbp - 413] ; (SET)
+ mov rcx, qword [rbp - 421] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rsi ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._gen_prims
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.update_children
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 413], rsi ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ mov rbx, qword [rbp - 413] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.collect_methods
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 413], rsi ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ mov rbx, qword [rbp - 413] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.compile
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 405], r11 ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call utils._#File.create
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ mov qword [rbp - 413], r11 ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ mov rbx, qword [rbp - 413] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.write_to
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 405], r11 ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call utils._#File.close
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 397] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#Module.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 252] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 156] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 405], rax ; (SET)
+ mov rax, qword [rbp - 405] ; (SET)
+ lea rsp, [rbp - 397] ; Free stack space (freeing tmp variables)
+ call parse._#Node.end
+
+compile.generate#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._gen_prim:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._create_methods
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable t
+ sub rsp, 64 ; Create stack space for local variable s
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 200], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 192] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 216], rax ; (SET)
+ mov qword [rbp - 224], 88 ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r12 ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 208], rax ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+
+compile._gen_prim#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._gen_prims:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 2 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 2 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 4 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 4 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 4 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 8 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 8 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#9#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 8 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#10#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 8 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#11#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 8 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#12#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 8 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#13#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rsi, qword [rel compile._gen_prims#14#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._gen_prim
+
+compile._gen_prims#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._recursive_mod_name:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 137 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._recursive_mod_name#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._recursive_mod_name
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._recursive_mod_name#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov byte [rbp - 65], 46 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ jmp compile._recursive_mod_name#0#wrap#0#if#0#wrap#end
+compile._recursive_mod_name#0#wrap#0#if#0#wrap#0#if#end:
+compile._recursive_mod_name#0#wrap#0#if#0#wrap#end:
+ jmp compile._recursive_mod_name#0#wrap#end
+compile._recursive_mod_name#0#wrap#0#if#end:
+compile._recursive_mod_name#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+compile._recursive_mod_name#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._recursive_scope_name:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._recursive_scope_name#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._recursive_scope_name#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._recursive_mod_name
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._recursive_scope_name#0#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov byte [rbp - 65], 46 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ jmp compile._recursive_scope_name#0#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._recursive_scope_name#0#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+compile._recursive_scope_name#0#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ jmp compile._recursive_scope_name#0#wrap#0#if#0#wrap#end
+compile._recursive_scope_name#0#wrap#0#if#0#wrap#0#if#end:
+compile._recursive_scope_name#0#wrap#0#if#0#wrap#end:
+ jmp compile._recursive_scope_name#0#wrap#end
+compile._recursive_scope_name#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._recursive_scope_name
+ jmp compile._recursive_scope_name#0#wrap#end
+compile._recursive_scope_name#0#wrap#1#if#end:
+compile._recursive_scope_name#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+compile._recursive_scope_name#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#CompBuf.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+
+compile._#CompBuf.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#CompBuf.add_h:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+compile._#CompBuf.add_h#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#CompBuf.add_d:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+compile._#CompBuf.add_d#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#CompBuf.add_c:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+compile._#CompBuf.add_c#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#CompBuf.write_to:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#CompBuf.write_to#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.write_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 72], rax ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.write_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#CompBuf.write_to#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.write_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 72], rax ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.write_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#CompBuf.write_to#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.write_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 72], rax ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#File.write_cstr
+
+compile._#CompBuf.write_to#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#CompBuf.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+compile._#CompBuf.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#CompBuf.append:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_h
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+
+compile._#CompBuf.append#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Struct.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 88 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+
+compile._#Struct.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Struct._print:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._print#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._print#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 64], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._print#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 64], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._print#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._print#4#loop#end
+compile._#Struct._print#4#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rbx, r11 ; (SET)
+ add rbx, 2 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._print
+compile._#Struct._print#4#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._print#4#loop#end
+ jmp compile._#Struct._print#4#loop#start
+compile._#Struct._print#4#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._print#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+compile._#Struct._print#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Struct.add_member:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ sub rsp, 88 ; Create stack space for local variable v
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._resolve_type
+ mov qword [rbp - 88], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+
+compile._#Struct.add_member#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Struct.get_member:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, qword [rel NULL] ; (SET)
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct.get_member#0#loop#end
+compile._#Struct.get_member#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov qword [rbp - 73], r11 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct.get_member#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r13 ; (SET)
+ jmp compile._#Struct.get_member#end
+ jmp compile._#Struct.get_member#0#loop#0#wrap#end
+compile._#Struct.get_member#0#loop#0#wrap#0#if#end:
+compile._#Struct.get_member#0#loop#0#wrap#end:
+compile._#Struct.get_member#0#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct.get_member#0#loop#end
+ jmp compile._#Struct.get_member#0#loop#start
+compile._#Struct.get_member#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Struct.get_member#end
+
+compile._#Struct.get_member#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Struct._dlist:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r11, qword [rsi] ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._dlist#0#loop#end
+compile._#Struct._dlist#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_DLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._dlist#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Struct._dlist#end
+ jmp compile._#Struct._dlist#0#loop#0#wrap#end
+compile._#Struct._dlist#0#loop#0#wrap#0#if#end:
+compile._#Struct._dlist#0#loop#0#wrap#end:
+compile._#Struct._dlist#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._dlist#0#loop#end
+ jmp compile._#Struct._dlist#0#loop#start
+compile._#Struct._dlist#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Struct._dlist#end
+
+compile._#Struct._dlist#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Struct._compute_size:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_size#0#wrap#0#if#end
+ jmp compile._#Struct._compute_size#end
+ jmp compile._#Struct._compute_size#0#wrap#end
+compile._#Struct._compute_size#0#wrap#0#if#end:
+compile._#Struct._compute_size#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ sub r8, 1 ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ mov r11, 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Struct._dlist
+ mov r12, rax ; (SET)
+ mov r13, qword [rel NULL] ; (SET)
+ mov r14, qword [rel NULL] ; (SET)
+ mov r15, 0 ; (SET)
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 64], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 64] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_size#1#loop#end
+compile._#Struct._compute_size#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_TYPE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_size#1#loop#0#wrap#0#if#end
+ mov r13, r14 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Struct._compute_type_size
+ mov r15, rax ; (SET)
+ cmp r15, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_size#1#loop#0#wrap#0#if#0#wrap#0#if#end
+ jmp compile._#Struct._compute_size#end
+ jmp compile._#Struct._compute_size#1#loop#0#wrap#0#if#0#wrap#end
+compile._#Struct._compute_size#1#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Struct._compute_size#1#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Struct._compute_size#1#loop#0#wrap#end
+compile._#Struct._compute_size#1#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_size#1#loop#0#wrap#1#if#end
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Struct._compute_size#end
+ jmp compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#end
+compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#0#if#end:
+compile._#Struct._compute_size#1#loop#0#wrap#1#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov qword [rbp - 88], r14 ; (SET)
+ mov qword [rbp - 96], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ mov rcx, qword [rbp - 88] ; (SET)
+ mov rdx, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Struct.add_member
+ mov rbx, r11 ; (SET)
+ add rbx, r15 ; (STD_OP)
+ mov r11, rbx ; (SET)
+ jmp compile._#Struct._compute_size#1#loop#0#wrap#end
+compile._#Struct._compute_size#1#loop#0#wrap#1#if#end:
+compile._#Struct._compute_size#1#loop#0#wrap#end:
+compile._#Struct._compute_size#1#loop#rep:
+ mov rbx, qword [rbp - 64] ; (SET)
+ inc qword qword [rbp - 64] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 64] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_size#1#loop#end
+ jmp compile._#Struct._compute_size#1#loop#start
+compile._#Struct._compute_size#1#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r11 ; (SET)
+
+compile._#Struct._compute_size#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Struct._compute_type_size:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Struct._find_type
+ mov r12, rax ; (SET)
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_type_size#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._compute_type_size#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._print_type
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._compute_type_size#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._compute_type_size#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp compile._#Struct._compute_type_size#end
+ jmp compile._#Struct._compute_type_size#0#wrap#end
+compile._#Struct._compute_type_size#0#wrap#0#if#end:
+compile._#Struct._compute_type_size#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r11 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._type_is_ptr
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_type_size#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 8 ; (SET)
+ jmp compile._#Struct._compute_type_size#end
+ jmp compile._#Struct._compute_type_size#1#wrap#end
+compile._#Struct._compute_type_size#1#wrap#0#if#end:
+compile._#Struct._compute_type_size#1#wrap#end:
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Struct._compute_type_size#2#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Struct._compute_type_size#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_type_size#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Struct._compute_size
+ jmp compile._#Struct._compute_type_size#2#wrap#end
+compile._#Struct._compute_type_size#2#wrap#0#if#end:
+compile._#Struct._compute_type_size#2#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._compute_type_size#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._compute_type_size#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._compute_type_size#3#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Struct._compute_type_size#3#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp compile._#Struct._compute_type_size#end
+ jmp compile._#Struct._compute_type_size#3#wrap#end
+compile._#Struct._compute_type_size#3#wrap#0#if#end:
+compile._#Struct._compute_type_size#3#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp compile._#Struct._compute_type_size#end
+
+compile._#Struct._compute_type_size#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Struct._find_type:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable sv
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 8 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for local variable str
+ mov r13b, 0 ; (SET)
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._find_type#0#loop#end
+compile._#Struct._find_type#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 104], rsi ; (SET)
+ mov qword [rbp - 112], r14 ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._find_type#0#loop#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ lea rsi, qword [rbp - 96] ; (TAKE_PTR)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ mov r13b, 1 ; (SET)
+ jmp compile._#Struct._find_type#0#loop#0#wrap#end
+compile._#Struct._find_type#0#loop#0#wrap#0#if#end:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._find_type#0#loop#0#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ jmp compile._#Struct._find_type#0#loop#0#wrap#end
+compile._#Struct._find_type#0#loop#0#wrap#1#if#end:
+compile._#Struct._find_type#0#loop#0#wrap#end:
+compile._#Struct._find_type#0#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct._find_type#0#loop#end
+ jmp compile._#Struct._find_type#0#loop#start
+compile._#Struct._find_type#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rel compile.SEARCH_STRUCT] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ mov rcx, qword [rbp - 120] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call compile._#Module.find
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp compile._#Struct._find_type#end
+
+compile._#Struct._find_type#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Struct.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct.end#0#loop#end
+compile._#Struct.end#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+compile._#Struct.end#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Struct.end#0#loop#end
+ jmp compile._#Struct.end#0#loop#start
+compile._#Struct.end#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+compile._#Struct.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._init#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 4 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+
+compile._#Var._init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 4 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r12 ; (SET)
+
+compile._#Var.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.copy:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.shallow_copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.copy#0#loop#end
+compile._#Var.copy#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], rsi ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov qword [rbp - 248], r12 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+compile._#Var.copy#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.copy#0#loop#end
+ jmp compile._#Var.copy#0#loop#start
+compile._#Var.copy#0#loop#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.copy#end
+
+compile._#Var.copy#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.shallow_copy:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.shallow_copy#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ jmp compile._#Var.shallow_copy#0#wrap#end
+compile._#Var.shallow_copy#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 144] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 144], rax ; (SET)
+ jmp compile._#Var.shallow_copy#0#wrap#end
+compile._#Var.shallow_copy#0#wrap#1#if#end:
+compile._#Var.shallow_copy#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.shallow_copy#end
+
+compile._#Var.shallow_copy#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.top_ptrc:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.top_ptrc#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Var.top_ptrc#end
+ jmp compile._#Var.top_ptrc#0#wrap#end
+compile._#Var.top_ptrc#0#wrap#0#if#end:
+compile._#Var.top_ptrc#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Var.top_ptrc#end
+
+compile._#Var.top_ptrc#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.is_ptrc:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12d, ecx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.is_ptrc#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Var.is_ptrc#end
+ jmp compile._#Var.is_ptrc#0#wrap#end
+compile._#Var.is_ptrc#0#wrap#0#if#end:
+compile._#Var.is_ptrc#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, r11 ; (STD_OP)
+ mov r11, rbx ; (SET)
+ mov rbx, r11 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+
+ ; STARTING RETURN
+ mov ecx, dword [r13] ; (SET)
+ cmp ecx, r12d
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp compile._#Var.is_ptrc#end
+
+compile._#Var.is_ptrc#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.strip_refs:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], 0 ; (SET)
+ mov dword [rbp - 77], 0 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov ecx, dword [rbp - 77] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptrc
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.strip_refs#0#loop#end
+compile._#Var.strip_refs#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+compile._#Var.strip_refs#0#loop#rep:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], 0 ; (SET)
+ mov dword [rbp - 77], 0 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov ecx, dword [rbp - 77] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptrc
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.strip_refs#0#loop#end
+ jmp compile._#Var.strip_refs#0#loop#start
+compile._#Var.strip_refs#0#loop#end:
+
+compile._#Var.strip_refs#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.is_ref:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov dword [rbp - 76], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov ecx, dword [rbp - 76] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptrc
+ mov al, al ; (SET)
+ jmp compile._#Var.is_ref#end
+
+compile._#Var.is_ref#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.double_ref:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.double_ref#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Var.double_ref#end
+ jmp compile._#Var.double_ref#0#wrap#end
+compile._#Var.double_ref#0#wrap#0#if#end:
+compile._#Var.double_ref#0#wrap#end:
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov dword [rbp - 76], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov ecx, dword [rbp - 76] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptrc
+ mov al, al ; (SET)
+ jmp compile._#Var.double_ref#end
+
+compile._#Var.double_ref#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.max_ref:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 0 ; (SET)
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.max_ref#0#loop#end
+compile._#Var.max_ref#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov dword [rbp - 77], 0 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov ecx, dword [rbp - 77] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptrc
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.max_ref#0#loop#0#wrap#0#if#end
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ jmp compile._#Var.max_ref#0#loop#0#wrap#end
+compile._#Var.max_ref#0#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ jmp compile._#Var.max_ref#0#loop#0#wrap#end
+compile._#Var.max_ref#0#loop#0#wrap#1#if#end:
+compile._#Var.max_ref#0#loop#0#wrap#end:
+compile._#Var.max_ref#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.max_ref#0#loop#end
+ jmp compile._#Var.max_ref#0#loop#start
+compile._#Var.max_ref#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Var.max_ref#end
+
+compile._#Var.max_ref#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.is_signed:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._is_primitive
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8, rax ; (SET)
+ cmp r8, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.is_signed#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [r8] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 105
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp compile._#Var.is_signed#end
+ jmp compile._#Var.is_signed#0#wrap#end
+compile._#Var.is_signed#0#wrap#0#if#end:
+compile._#Var.is_signed#0#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Var.is_signed#end
+
+compile._#Var.is_signed#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.is_ptr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.top_ptrc
+ mov r11, rax ; (SET)
+ cmp r11, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.is_ptr#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Var.is_ptr#end
+ jmp compile._#Var.is_ptr#0#wrap#end
+compile._#Var.is_ptr#0#wrap#0#if#end:
+compile._#Var.is_ptr#0#wrap#end:
+
+ ; STARTING RETURN
+ mov ecx, dword [r11] ; (SET)
+ cmp ecx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp compile._#Var.is_ptr#end
+
+compile._#Var.is_ptr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.first_non_ref_idx:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 0 ; (SET)
+ mov rbx, r11 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r11, rbx ; (SET)
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.first_non_ref_idx#0#loop#end
+compile._#Var.first_non_ref_idx#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov dword [rbp - 77], 0 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov ecx, dword [rbp - 77] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptrc
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.first_non_ref_idx#0#loop#0#wrap#0#if#end
+ mov r11, r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ jmp compile._#Var.first_non_ref_idx#0#loop#0#wrap#end
+compile._#Var.first_non_ref_idx#0#loop#0#wrap#0#if#end:
+compile._#Var.first_non_ref_idx#0#loop#0#wrap#end:
+compile._#Var.first_non_ref_idx#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.first_non_ref_idx#0#loop#end
+ jmp compile._#Var.first_non_ref_idx#0#loop#start
+compile._#Var.first_non_ref_idx#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Var.first_non_ref_idx#end
+
+compile._#Var.first_non_ref_idx#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.first_non_ref:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.first_non_ref_idx
+ mov r11, rax ; (SET)
+ cmp r11, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.first_non_ref#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov eax, 0 ; (SET)
+ jmp compile._#Var.first_non_ref#end
+ jmp compile._#Var.first_non_ref#0#wrap#end
+compile._#Var.first_non_ref#0#wrap#0#if#end:
+compile._#Var.first_non_ref#0#wrap#end:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, r11 ; (STD_OP)
+ mov r12, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r13, rax ; (SET)
+
+ ; STARTING RETURN
+ mov eax, dword [r13] ; (SET)
+ jmp compile._#Var.first_non_ref#end
+
+compile._#Var.first_non_ref#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.is_arr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.top_ptrc
+ mov r11, rax ; (SET)
+ cmp r11, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.is_arr#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Var.is_arr#end
+ jmp compile._#Var.is_arr#0#wrap#end
+compile._#Var.is_arr#0#wrap#0#if#end:
+compile._#Var.is_arr#0#wrap#end:
+
+ ; STARTING RETURN
+ mov ecx, dword [r11] ; (SET)
+ cmp ecx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp compile._#Var.is_arr#end
+
+compile._#Var.is_arr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.regable:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.regable#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._#Var.regable#end
+ jmp compile._#Var.regable#0#wrap#end
+compile._#Var.regable#0#wrap#0#if#end:
+compile._#Var.regable#0#wrap#end:
+
+ ; STARTING RETURN
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._is_primitive
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8, rax ; (SET)
+ cmp r8, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp compile._#Var.regable#end
+
+compile._#Var.regable#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.is_struct:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.is_struct#0#loop#end
+compile._#Var.is_struct#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ mov ecx, dword [r11] ; (SET)
+ cmp ecx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.is_struct#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Var.is_struct#end
+ jmp compile._#Var.is_struct#0#loop#0#wrap#end
+compile._#Var.is_struct#0#loop#0#wrap#0#if#end:
+compile._#Var.is_struct#0#loop#0#wrap#end:
+compile._#Var.is_struct#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.is_struct#0#loop#end
+ jmp compile._#Var.is_struct#0#loop#start
+compile._#Var.is_struct#0#loop#end:
+
+ ; STARTING RETURN
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._is_primitive
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8, rax ; (SET)
+ cmp r8, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp compile._#Var.is_struct#end
+
+compile._#Var.is_struct#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.is_bool:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.is_bool#0#loop#end
+compile._#Var.is_bool#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ mov ecx, dword [r11] ; (SET)
+ cmp ecx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.is_bool#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Var.is_bool#end
+ jmp compile._#Var.is_bool#0#loop#0#wrap#end
+compile._#Var.is_bool#0#loop#0#wrap#0#if#end:
+compile._#Var.is_bool#0#loop#0#wrap#end:
+compile._#Var.is_bool#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.is_bool#0#loop#end
+ jmp compile._#Var.is_bool#0#loop#start
+compile._#Var.is_bool#0#loop#end:
+
+ ; STARTING RETURN
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var.is_bool#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp compile._#Var.is_bool#end
+
+compile._#Var.is_bool#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._arr_ptr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 4 ; Create stack space for local variable ptr
+ mov dword [rbp - 60], 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._arr_ptr#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 68], rsi ; (SET)
+ mov qword [rbp - 76], 0 ; (SET)
+ mov rax, qword [rbp - 68] ; (SET)
+ mov rbx, qword [rbp - 76] ; (SET)
+ lea rsp, [rbp - 60] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 68], rsi ; (SET)
+ mov rax, qword [rbp - 68] ; (SET)
+ lea rsp, [rbp - 60] ; Free stack space (freeing tmp variables)
+ call utils.cstr_to_int
+ mov dword [rbp - 60], eax ; (SET)
+ mov ecx, dword [rbp - 60] ; (SET)
+ cmp ecx, 2
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._arr_ptr#0#wrap#0#if#0#wrap#0#if#end
+ jmp compile._#Var._arr_ptr#end
+ jmp compile._#Var._arr_ptr#0#wrap#0#if#0#wrap#end
+compile._#Var._arr_ptr#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Var._arr_ptr#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Var._arr_ptr#0#wrap#end
+compile._#Var._arr_ptr#0#wrap#0#if#end:
+compile._#Var._arr_ptr#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 68], rsi ; (SET)
+ lea rsi, dword [rbp - 60] ; (TAKE_PTR)
+ mov qword [rbp - 76], rsi ; (SET)
+ mov rax, qword [rbp - 68] ; (SET)
+ mov rbx, qword [rbp - 76] ; (SET)
+ lea rsp, [rbp - 60] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+
+compile._#Var._arr_ptr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.actual_size:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.actual_size#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 8 ; (SET)
+ jmp compile._#Var.actual_size#end
+ jmp compile._#Var.actual_size#0#wrap#end
+compile._#Var.actual_size#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.actual_size#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp compile._#Var.actual_size#end
+ jmp compile._#Var.actual_size#0#wrap#end
+compile._#Var.actual_size#0#wrap#1#if#end:
+compile._#Var.actual_size#0#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp compile._#Var.actual_size#end
+
+compile._#Var.actual_size#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.type_size:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.type_size#0#loop#end
+compile._#Var.type_size#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ mov ecx, dword [r12] ; (SET)
+ cmp ecx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.type_size#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 8 ; (SET)
+ jmp compile._#Var.type_size#end
+ jmp compile._#Var.type_size#0#loop#0#wrap#end
+compile._#Var.type_size#0#loop#0#wrap#0#if#end:
+compile._#Var.type_size#0#loop#0#wrap#end:
+compile._#Var.type_size#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.type_size#0#loop#end
+ jmp compile._#Var.type_size#0#loop#start
+compile._#Var.type_size#0#loop#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp compile._#Var.type_size#end
+
+compile._#Var.type_size#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.find_method:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.find_method#0#loop#end
+compile._#Var.find_method#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ mov ecx, dword [r12] ; (SET)
+ cmp ecx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.find_method#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.find_method#0#loop#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.find_method#0#loop#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.find_method#0#loop#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._print
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp compile._#Var.find_method#end
+ jmp compile._#Var.find_method#0#loop#0#wrap#end
+compile._#Var.find_method#0#loop#0#wrap#0#if#end:
+compile._#Var.find_method#0#loop#0#wrap#end:
+compile._#Var.find_method#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.find_method#0#loop#end
+ jmp compile._#Var.find_method#0#loop#start
+compile._#Var.find_method#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_func
+ mov r14, rax ; (SET)
+
+ ; STARTING RETURN
+ mov rax, r14 ; (SET)
+ jmp compile._#Var.find_method#end
+
+compile._#Var.find_method#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._reverse_ptrc:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ mov rcx, 2 ; (DIV)
+ mov rax, rbx ; (DIV)
+ xor rdx, rdx
+ div rcx
+ mov rbx, rax ; (DIV)
+ mov r11, rbx ; (SET)
+ mov r14, 0 ; (SET)
+ cmp r14, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var._reverse_ptrc#0#loop#end
+compile._#Var._reverse_ptrc#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ mov r9, r14 ; (SET)
+ add r9, 1 ; (STD_OP)
+ sub r8, r9 ; (STD_OP)
+ mov qword [rbp - 80], r8 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r13, rax ; (SET)
+ mov r15d, dword [r12] ; (SET)
+ mov esi, dword [r13] ; (SET_PRM_R)
+ mov dword [r12], esi ; (SET)
+ mov dword [r13], r15d ; (SET)
+compile._#Var._reverse_ptrc#0#loop#rep:
+ mov r8, r14 ; (SET)
+ inc r14 ; (UNARY)
+ cmp r14, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var._reverse_ptrc#0#loop#end
+ jmp compile._#Var._reverse_ptrc#0#loop#start
+compile._#Var._reverse_ptrc#0#loop#end:
+
+compile._#Var._reverse_ptrc#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._resolve_type:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, 0 ; (SET)
+ mov r13b, 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ mov r15, qword [rsi] ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#0#loop#end
+compile._#Var._resolve_type#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#0#loop#0#wrap#0#if#end
+ mov r13b, 0 ; (SET)
+ jmp compile._#Var._resolve_type#0#loop#0#wrap#end
+compile._#Var._resolve_type#0#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_PRE_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 4 ; Create stack space for local variable ptr
+ mov dword [rbp - 60], 0 ; (SET)
+ mov ebx, dword [rbp - 60] ; (SET)
+ sub ebx, dword [rel compile.PTYPE_PTR] ; (STD_OP)
+ mov dword [rbp - 60], ebx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 68], rsi ; (SET)
+ lea rsi, dword [rbp - 60] ; (TAKE_PTR)
+ mov qword [rbp - 76], rsi ; (SET)
+ mov rax, qword [rbp - 68] ; (SET)
+ mov rbx, qword [rbp - 76] ; (SET)
+ lea rsp, [rbp - 60] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#0#wrap#end
+compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._arr_ptr
+ jmp compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#0#wrap#end
+compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#end
+compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#0#if#end:
+ mov r13b, 0 ; (SET)
+ jmp compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#end
+compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#1#if#end:
+compile._#Var._resolve_type#0#loop#0#wrap#1#if#0#wrap#end:
+ jmp compile._#Var._resolve_type#0#loop#0#wrap#end
+compile._#Var._resolve_type#0#loop#0#wrap#1#if#end:
+compile._#Var._resolve_type#0#loop#0#wrap#end:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#0#loop#1#wrap#0#if#end
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ jmp compile._#Var._resolve_type#0#loop#1#wrap#end
+compile._#Var._resolve_type#0#loop#1#wrap#0#if#end:
+compile._#Var._resolve_type#0#loop#1#wrap#end:
+compile._#Var._resolve_type#0#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#0#loop#end
+ jmp compile._#Var._resolve_type#0#loop#start
+compile._#Var._resolve_type#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._reverse_ptrc
+ sub rsp, 32 ; Create stack space for local variable strv
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 8 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#1#loop#end
+compile._#Var._resolve_type#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#1#loop#0#wrap#0#if#end
+ mov r13b, 0 ; (SET)
+ jmp compile._#Var._resolve_type#1#loop#0#wrap#end
+compile._#Var._resolve_type#1#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rsi ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#1#loop#0#wrap#1#if#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable str
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ lea rsi, qword [rbp - 96] ; (TAKE_PTR)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Var._resolve_type#1#loop#0#wrap#1#if#0#wrap#end
+compile._#Var._resolve_type#1#loop#0#wrap#1#if#0#wrap#0#if#end:
+ mov r13b, 0 ; (SET)
+ jmp compile._#Var._resolve_type#1#loop#0#wrap#1#if#0#wrap#end
+compile._#Var._resolve_type#1#loop#0#wrap#1#if#0#wrap#1#if#end:
+compile._#Var._resolve_type#1#loop#0#wrap#1#if#0#wrap#end:
+ jmp compile._#Var._resolve_type#1#loop#0#wrap#end
+compile._#Var._resolve_type#1#loop#0#wrap#1#if#end:
+compile._#Var._resolve_type#1#loop#0#wrap#end:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#1#loop#1#wrap#0#if#end
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ jmp compile._#Var._resolve_type#1#loop#1#wrap#end
+compile._#Var._resolve_type#1#loop#1#wrap#0#if#end:
+compile._#Var._resolve_type#1#loop#1#wrap#end:
+compile._#Var._resolve_type#1#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#1#loop#end
+ jmp compile._#Var._resolve_type#1#loop#start
+compile._#Var._resolve_type#1#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 104], r11 ; (SET)
+ mov rsi, qword [rel compile.SEARCH_STRUCT] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ mov rcx, qword [rbp - 120] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call compile._#Module.find
+ mov rbx, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ mov r13b, 1 ; (SET)
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#2#loop#end
+compile._#Var._resolve_type#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#2#loop#0#wrap#0#if#end
+ mov r13b, 0 ; (SET)
+ jmp compile._#Var._resolve_type#2#loop#0#wrap#end
+compile._#Var._resolve_type#2#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rsi ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_POST_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#2#loop#0#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 4 ; Create stack space for local variable ptr
+ mov dword [rbp - 92], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 100], rsi ; (SET)
+ lea rsi, dword [rbp - 92] ; (TAKE_PTR)
+ mov qword [rbp - 108], rsi ; (SET)
+ mov rax, qword [rbp - 100] ; (SET)
+ mov rbx, qword [rbp - 108] ; (SET)
+ lea rsp, [rbp - 92] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Var._resolve_type#2#loop#0#wrap#1#if#0#wrap#end
+compile._#Var._resolve_type#2#loop#0#wrap#1#if#0#wrap#0#if#end:
+compile._#Var._resolve_type#2#loop#0#wrap#1#if#0#wrap#end:
+ jmp compile._#Var._resolve_type#2#loop#0#wrap#end
+compile._#Var._resolve_type#2#loop#0#wrap#1#if#end:
+compile._#Var._resolve_type#2#loop#0#wrap#end:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#2#loop#1#wrap#0#if#end
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ jmp compile._#Var._resolve_type#2#loop#1#wrap#end
+compile._#Var._resolve_type#2#loop#1#wrap#0#if#end:
+compile._#Var._resolve_type#2#loop#1#wrap#end:
+compile._#Var._resolve_type#2#loop#rep:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._resolve_type#2#loop#end
+ jmp compile._#Var._resolve_type#2#loop#start
+compile._#Var._resolve_type#2#loop#end:
+
+compile._#Var._resolve_type#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_compile_arr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_compile_arr#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov rax, rax ; (SET)
+ jmp compile._#Var._static_compile_arr#end
+
+compile._#Var._static_compile_arr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_compile_ptr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_ptr#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov qword [rbp - 88], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._static_compile_ptr
+ mov rax, rax ; (SET)
+ jmp compile._#Var._static_compile_ptr#end
+ jmp compile._#Var._static_compile_ptr#0#wrap#end
+compile._#Var._static_compile_ptr#0#wrap#0#if#end:
+compile._#Var._static_compile_ptr#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_LITERAL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_ptr#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [r8] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 34
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._global_ptr
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call utils.unquote_str
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable vout
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 112] ; (SET_PRM_R)
+ mov qword [rbp - 128], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov qword [rbp - 136], r14 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r14 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov rcx, qword [rbp - 112] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ jmp compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#3#wrap#end
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#3#wrap#0#if#end:
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#3#wrap#end:
+ mov r15, 1 ; (SET)
+ cmp r15, qword [rbp - 112]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#4#loop#end
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#4#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rbx, r15 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 136], rbx ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable uptr
+ mov qword [rbp - 128], rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable utmp
+ mov rdi, [rbp - 128] ; (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [rbp - 129], sil ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ movzx rsi, byte [rbp - 129] ; (SET_PRM_R)
+ mov qword [rbp - 137], rsi ; (SET)
+ mov rax, qword [rbp - 137] ; (SET)
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 137], r12 ; (SET)
+ mov qword [rbp - 145], r14 ; (SET)
+ mov rax, qword [rbp - 137] ; (SET)
+ mov rbx, qword [rbp - 145] ; (SET)
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 137], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#4#loop#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 145], rsi ; (SET)
+ mov rax, qword [rbp - 137] ; (SET)
+ mov rbx, qword [rbp - 145] ; (SET)
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 137], r14 ; (SET)
+ mov rax, qword [rbp - 137] ; (SET)
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ call _delete
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#4#loop#rep:
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ cmp r15, qword [rbp - 112]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#4#loop#end
+ jmp compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#4#loop#start
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#4#loop#end:
+ mov rcx, qword [rbp - 112] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#5#wrap#0#if#end
+ mov r15, qword [rbp - 112] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rbx, r15 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 136], rbx ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable uptr
+ mov qword [rbp - 128], rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable utmp
+ mov rdi, [rbp - 128] ; (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [rbp - 129], sil ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ movzx rsi, byte [rbp - 129] ; (SET_PRM_R)
+ mov qword [rbp - 137], rsi ; (SET)
+ mov rax, qword [rbp - 137] ; (SET)
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 137], r12 ; (SET)
+ mov qword [rbp - 145], r14 ; (SET)
+ mov rax, qword [rbp - 137] ; (SET)
+ mov rbx, qword [rbp - 145] ; (SET)
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 137], r14 ; (SET)
+ mov rax, qword [rbp - 137] ; (SET)
+ lea rsp, [rbp - 129] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#5#wrap#end
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#5#wrap#0#if#end:
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#5#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call compile._#Var._global_ptr
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov qword [rbp - 136], r14 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r14 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call _delete
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r15, rbx ; (SET)
+ mov r8, r15 ; (SET)
+ sub r8, r13 ; (STD_OP)
+ mov r15, r8 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 136], rsi ; (SET)
+ mov qword [rbp - 144], r15 ; (SET)
+ mov rax, qword [rbp - 136] ; (SET)
+ mov rbx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 128] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for local variable pc
+ mov qword [rbp - 128], rax ; (SET)
+ mov rdi, [rbp - 128] ; (SET_PRM_L)
+ mov ecx, dword [rdi] ; (SET)
+ cmp ecx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#8#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 136], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#8#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 144] ; (SET)
+ mov rbx, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 136] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 128] ; Free stack space (freeing tmp variables)
+ jmp compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#8#wrap#end
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#8#wrap#0#if#end:
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#8#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 136], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#9#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 144] ; (SET)
+ mov rbx, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 136] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 128] ; Free stack space (freeing tmp variables)
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 136], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rax ; (SET)
+ mov rax, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 136] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 128] ; Free stack space (freeing tmp variables)
+ mov rax, rax ; (SET)
+ jmp compile._#Var._static_compile_ptr#end
+ jmp compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#end
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Var._static_compile_ptr#1#wrap#0#if#0#wrap#end:
+ sub rsp, 32 ; Create stack space for local variable vout
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile._#Var._static_compile_ptr#end
+ jmp compile._#Var._static_compile_ptr#1#wrap#end
+compile._#Var._static_compile_ptr#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_ptr#1#wrap#1#if#end
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov qword [rbp - 88], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._static_compile_arr
+ mov rax, rax ; (SET)
+ jmp compile._#Var._static_compile_ptr#end
+ jmp compile._#Var._static_compile_ptr#1#wrap#end
+compile._#Var._static_compile_ptr#1#wrap#1#if#end:
+compile._#Var._static_compile_ptr#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._print
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_compile_ptr#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov rax, rax ; (SET)
+ jmp compile._#Var._static_compile_ptr#end
+
+compile._#Var._static_compile_ptr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_compile_struct:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_compile_struct#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov rax, rax ; (SET)
+ jmp compile._#Var._static_compile_struct#end
+
+compile._#Var._static_compile_struct#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_comp_prim_r_dot:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_dot#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_dot#end
+
+compile._#Var._static_comp_prim_r_dot#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_comp_prim_r_bin:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [r8] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 46
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_bin#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._static_comp_prim_r_dot
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_bin#end
+ jmp compile._#Var._static_comp_prim_r_bin#0#wrap#end
+compile._#Var._static_comp_prim_r_bin#0#wrap#0#if#end:
+compile._#Var._static_comp_prim_r_bin#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._static_comp_prim_r
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable a
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r10 ; (SET)
+ mov qword [rbp - 336], r13 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._static_comp_prim_r
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable b
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_bin#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_bin#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 416], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_bin#end
+ jmp compile._#Var._static_comp_prim_r_bin#1#wrap#end
+compile._#Var._static_comp_prim_r_bin#1#wrap#0#if#end:
+ mov rcx, qword [rbp - 360] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_bin#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_bin#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 416], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_bin#end
+ jmp compile._#Var._static_comp_prim_r_bin#1#wrap#end
+compile._#Var._static_comp_prim_r_bin#1#wrap#1#if#end:
+compile._#Var._static_comp_prim_r_bin#1#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_bin#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_bin#2#wrap#0#if#end
+ mov rbx, qword [rbp - 176] ; (SET)
+ imul rbx, qword [rbp - 352] ; (MUL)
+ mov qword [rbp - 176], rbx ; (SET)
+ jmp compile._#Var._static_comp_prim_r_bin#2#wrap#end
+compile._#Var._static_comp_prim_r_bin#2#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_bin#2#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_bin#2#wrap#1#if#end
+ mov rbx, qword [rbp - 176] ; (SET)
+ mov rax, rbx ; (DIV)
+ cqo
+ idiv qword [rbp - 352]
+ mov rbx, rax ; (DIV)
+ mov qword [rbp - 176], rbx ; (SET)
+ jmp compile._#Var._static_comp_prim_r_bin#2#wrap#end
+compile._#Var._static_comp_prim_r_bin#2#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_bin#2#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_bin#2#wrap#2#if#end
+ mov rbx, qword [rbp - 176] ; (SET)
+ mov rax, rbx ; (DIV)
+ cqo
+ idiv qword [rbp - 352]
+ mov rbx, rdx ; (DIV)
+ mov qword [rbp - 176], rbx ; (SET)
+ jmp compile._#Var._static_comp_prim_r_bin#2#wrap#end
+compile._#Var._static_comp_prim_r_bin#2#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_bin#2#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_bin#2#wrap#3#if#end
+ mov rbx, qword [rbp - 176] ; (SET)
+ add rbx, qword [rbp - 352] ; (STD_OP)
+ mov qword [rbp - 176], rbx ; (SET)
+ jmp compile._#Var._static_comp_prim_r_bin#2#wrap#end
+compile._#Var._static_comp_prim_r_bin#2#wrap#3#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_bin#2#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_bin#2#wrap#4#if#end
+ mov rbx, qword [rbp - 176] ; (SET)
+ sub rbx, qword [rbp - 352] ; (STD_OP)
+ mov qword [rbp - 176], rbx ; (SET)
+ jmp compile._#Var._static_comp_prim_r_bin#2#wrap#end
+compile._#Var._static_comp_prim_r_bin#2#wrap#4#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_bin#2#wrap#5#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 416], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 416], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_bin#2#wrap#5#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 416], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var._static_comp_prim_r_bin#2#wrap#end
+compile._#Var._static_comp_prim_r_bin#2#wrap#5#if#end:
+compile._#Var._static_comp_prim_r_bin#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_bin#end
+
+compile._#Var._static_comp_prim_r_bin#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_comp_prim_r_pre:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_pre#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_pre#end
+
+compile._#Var._static_comp_prim_r_pre#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_comp_prim_r_post:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_post#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_post#end
+
+compile._#Var._static_comp_prim_r_post#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_comp_prim_r_id:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable name
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ sub rsp, 32 ; Create stack space for local variable v
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov qword [rbp - 112], 8 ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ lea rsi, qword [rbp - 64] ; (TAKE_PTR)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rel compile.SEARCH_VAR] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ mov rcx, qword [rbp - 120] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call compile._#Module.find
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_id#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 192], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 200], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ mov rbx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_id#end
+ jmp compile._#Var._static_comp_prim_r_id#0#wrap#end
+compile._#Var._static_comp_prim_r_id#0#wrap#0#if#end:
+compile._#Var._static_comp_prim_r_id#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_id#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#1#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 192], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 200], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ mov rbx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_id#end
+ jmp compile._#Var._static_comp_prim_r_id#1#wrap#end
+compile._#Var._static_comp_prim_r_id#1#wrap#0#if#end:
+compile._#Var._static_comp_prim_r_id#1#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 97], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 105], r12 ; (SET)
+ mov rax, qword [rbp - 105] ; (SET)
+ lea rsp, [rbp - 97] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_struct
+ mov bl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_id#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#2#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 192], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 200], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ mov rbx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_id#end
+ jmp compile._#Var._static_comp_prim_r_id#2#wrap#end
+compile._#Var._static_comp_prim_r_id#2#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_id#2#wrap#1#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 192], r12 ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.as_global
+ ; putting struct address into register
+ lea rdi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_id#end
+ jmp compile._#Var._static_comp_prim_r_id#2#wrap#end
+compile._#Var._static_comp_prim_r_id#2#wrap#1#if#end:
+compile._#Var._static_comp_prim_r_id#2#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_id#3#wrap#0#if#end
+ mov r13, qword [rel NULL] ; (SET)
+ jmp compile._#Var._static_comp_prim_r_id#3#wrap#end
+compile._#Var._static_comp_prim_r_id#3#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 104], rsi ; (SET)
+ mov qword [rbp - 112], 0 ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 192], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 200], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ mov rbx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_id#end
+ jmp compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#end
+compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#1#if#end
+ mov r13, qword [rel NULL] ; (SET)
+ jmp compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#end
+compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 104], rsi ; (SET)
+ mov qword [rbp - 112], 0 ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ jmp compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#end
+compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#2#if#end:
+compile._#Var._static_comp_prim_r_id#3#wrap#1#if#0#wrap#end:
+ jmp compile._#Var._static_comp_prim_r_id#3#wrap#end
+compile._#Var._static_comp_prim_r_id#3#wrap#1#if#end:
+compile._#Var._static_comp_prim_r_id#3#wrap#end:
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r_id#4#wrap#0#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 192], r12 ; (SET)
+ mov qword [rbp - 200], r13 ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ mov rbx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._static_comp_prim_r
+ ; putting struct address into register
+ lea rdi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_id#end
+ jmp compile._#Var._static_comp_prim_r_id#4#wrap#end
+compile._#Var._static_comp_prim_r_id#4#wrap#0#if#end:
+compile._#Var._static_comp_prim_r_id#4#wrap#end:
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 192], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 200], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ mov rbx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r_id#end
+
+compile._#Var._static_comp_prim_r_id#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_comp_prim_r:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._static_comp_prim_r
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r#end
+ jmp compile._#Var._static_comp_prim_r#0#wrap#end
+compile._#Var._static_comp_prim_r#0#wrap#0#if#end:
+compile._#Var._static_comp_prim_r#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_LITERAL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#0#if#end
+ mov r12, 0 ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#0#if#end
+ mov r12, 1 ; (SET)
+ jmp compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#end
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#end
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [r9] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r9, rax ; (SET)
+ mov cl, byte [r9] ; (SET)
+ cmp cl, 48
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#2#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rsi, qword [rdi] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rax ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov cl, byte [rdi] ; (SET)
+ cmp cl, 57
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#2#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.cstr_to_int
+ mov r12, rax ; (SET)
+ jmp compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#end
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [r8] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 39
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#3#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ mov rbx, r13 ; (SET)
+ add r13, 1 ; (STD_OP)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.unquote_cha
+ mov r14b, al ; (SET)
+ movzx rsi, r14b ; (SET_PRM_R)
+ mov r12, rsi ; (SET)
+ jmp compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#end
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [r8] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 34
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#end
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#4#if#end:
+compile._#Var._static_comp_prim_r#1#wrap#0#if#0#wrap#end:
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ mov qword [rbp - 88], r12 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r#end
+ jmp compile._#Var._static_comp_prim_r#1#wrap#end
+compile._#Var._static_comp_prim_r#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_BIN_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#1#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._static_comp_prim_r_bin
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r#end
+ jmp compile._#Var._static_comp_prim_r#1#wrap#end
+compile._#Var._static_comp_prim_r#1#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_PRE_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#2#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._static_comp_prim_r_pre
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r#end
+ jmp compile._#Var._static_comp_prim_r#1#wrap#end
+compile._#Var._static_comp_prim_r#1#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_POST_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#3#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._static_comp_prim_r_post
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r#end
+ jmp compile._#Var._static_comp_prim_r#1#wrap#end
+compile._#Var._static_comp_prim_r#1#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_comp_prim_r#1#wrap#4#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._static_comp_prim_r_id
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r#end
+ jmp compile._#Var._static_comp_prim_r#1#wrap#end
+compile._#Var._static_comp_prim_r#1#wrap#4#if#end:
+compile._#Var._static_comp_prim_r#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_comp_prim_r#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._static_comp_prim_r#end
+
+compile._#Var._static_comp_prim_r#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_compile_prim:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._static_comp_prim_r
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable vout
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov qword [rbp - 280], 1 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Var.type_size
+ mov r12, rax ; (SET)
+ cmp r12, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_prim#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_prim#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ jmp compile._#Var._static_compile_prim#0#wrap#end
+compile._#Var._static_compile_prim#0#wrap#0#if#end:
+ cmp r12, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_prim#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_prim#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ jmp compile._#Var._static_compile_prim#0#wrap#end
+compile._#Var._static_compile_prim#0#wrap#1#if#end:
+ cmp r12, 4
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_prim#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_prim#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ jmp compile._#Var._static_compile_prim#0#wrap#end
+compile._#Var._static_compile_prim#0#wrap#2#if#end:
+ cmp r12, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_prim#0#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_prim#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ jmp compile._#Var._static_compile_prim#0#wrap#end
+compile._#Var._static_compile_prim#0#wrap#3#if#end:
+compile._#Var._static_compile_prim#0#wrap#end:
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_prim#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 176] ; (SET_PRM_R)
+ mov qword [rbp - 272], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov qword [rbp - 280], r13 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_prim#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r13 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Var._static_compile_prim#1#wrap#end
+compile._#Var._static_compile_prim#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_compile_prim#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 272], rsi ; (SET)
+ mov rsi, qword [rbp - 184] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call _print_num
+ jmp compile._#Var._static_compile_prim#1#wrap#end
+compile._#Var._static_compile_prim#1#wrap#1#if#end:
+compile._#Var._static_compile_prim#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile._#Var._static_compile_prim#end
+
+compile._#Var._static_compile_prim#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_compile_zero:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable zero
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_zero#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#Var.type_size
+ mov r11, rax ; (SET)
+ mov r12, 1 ; (SET)
+ cmp r12, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_zero#1#loop#end
+compile._#Var._static_compile_zero#1#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_zero#1#loop#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+compile._#Var._static_compile_zero#1#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ cmp r12, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile_zero#1#loop#end
+ jmp compile._#Var._static_compile_zero#1#loop#start
+compile._#Var._static_compile_zero#1#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile_zero#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile._#Var._static_compile_zero#end
+
+compile._#Var._static_compile_zero#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._static_compile:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile#0#wrap#0#if#end
+ mov r12, qword [rel NULL] ; (SET)
+ jmp compile._#Var._static_compile#0#wrap#end
+compile._#Var._static_compile#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile#0#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_compile#0#wrap#1#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._static_compile#0#wrap#1#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var._static_compile#end
+ jmp compile._#Var._static_compile#0#wrap#1#if#0#wrap#end
+compile._#Var._static_compile#0#wrap#1#if#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile#0#wrap#1#if#0#wrap#1#if#end
+ mov r12, qword [rel NULL] ; (SET)
+ jmp compile._#Var._static_compile#0#wrap#1#if#0#wrap#end
+compile._#Var._static_compile#0#wrap#1#if#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ jmp compile._#Var._static_compile#0#wrap#1#if#0#wrap#end
+compile._#Var._static_compile#0#wrap#1#if#0#wrap#2#if#end:
+compile._#Var._static_compile#0#wrap#1#if#0#wrap#end:
+ jmp compile._#Var._static_compile#0#wrap#end
+compile._#Var._static_compile#0#wrap#1#if#end:
+compile._#Var._static_compile#0#wrap#end:
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#Var._static_compile_zero
+ mov r13, rax ; (SET)
+ jmp compile._#Var._static_compile#1#wrap#end
+compile._#Var._static_compile#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov qword [rbp - 120], 0 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ mov rdx, qword [rbp - 120] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#Var._static_compile_ptr
+ mov r13, rax ; (SET)
+ jmp compile._#Var._static_compile#1#wrap#end
+compile._#Var._static_compile#1#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 97], r10 ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_struct
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._static_compile#1#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ mov rcx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#Var._static_compile_struct
+ mov r13, rax ; (SET)
+ jmp compile._#Var._static_compile#1#wrap#end
+compile._#Var._static_compile#1#wrap#2#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#Var._static_compile_prim
+ mov r13, rax ; (SET)
+ jmp compile._#Var._static_compile#1#wrap#end
+compile._#Var._static_compile#1#wrap#3#if#end:
+compile._#Var._static_compile#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#Var._global_base
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r14 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r14 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r11 ; (SET)
+ mov qword [rbp - 104], r15 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._static_compile#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+
+compile._#Var._static_compile#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._global_base:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable name
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._recursive_mod_name
+ mov rcx, qword [rbp - 80] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._global_base#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov byte [rbp - 97], 46 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov bl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ jmp compile._#Var._global_base#0#wrap#end
+compile._#Var._global_base#0#wrap#0#if#end:
+compile._#Var._global_base#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile._#Var._global_base#end
+
+compile._#Var._global_base#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._global_ptr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable name
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._recursive_mod_name
+ mov rcx, qword [rbp - 80] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._global_ptr#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov byte [rbp - 97], 46 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov bl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ jmp compile._#Var._global_ptr#0#wrap#end
+compile._#Var._global_ptr#0#wrap#0#if#end:
+compile._#Var._global_ptr#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._global_ptr#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile._#Var._global_ptr#end
+
+compile._#Var._global_ptr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.as_global:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var._global_base
+ mov qword [rbp - 232], rax ; (SET)
+ mov r11, 0 ; (SET)
+ mov rbx, r11 ; (SET)
+ sub rbx, 2 ; (STD_OP)
+ mov r11, rbx ; (SET)
+ mov qword [rbp - 184], r11 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.as_global#end
+
+compile._#Var.as_global#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.ptr_push:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 4 ; Create stack space for local variable p
+ mov dword [rbp - 60], ebx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 68], rsi ; (SET)
+ lea rsi, dword [rbp - 60] ; (TAKE_PTR)
+ mov qword [rbp - 76], rsi ; (SET)
+ mov rax, qword [rbp - 68] ; (SET)
+ mov rbx, qword [rbp - 76] ; (SET)
+ lea rsp, [rbp - 60] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+
+compile._#Var.ptr_push#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.ptr_pop:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+
+compile._#Var.ptr_pop#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+compile._#Var.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.in_mem:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.in_mem#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._#Var.in_mem#end
+ jmp compile._#Var.in_mem#0#wrap#end
+compile._#Var.in_mem#0#wrap#0#if#end:
+compile._#Var.in_mem#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.top_ptrc
+ mov r11, rax ; (SET)
+ cmp r11, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.in_mem#1#wrap#0#if#end
+ mov ecx, dword [r11] ; (SET)
+ cmp ecx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.in_mem#1#wrap#0#if#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._#Var.in_mem#end
+ jmp compile._#Var.in_mem#1#wrap#0#if#0#wrap#end
+compile._#Var.in_mem#1#wrap#0#if#0#wrap#0#if#end:
+ mov ecx, dword [r11] ; (SET)
+ cmp ecx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.in_mem#1#wrap#0#if#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._#Var.in_mem#end
+ jmp compile._#Var.in_mem#1#wrap#0#if#0#wrap#end
+compile._#Var.in_mem#1#wrap#0#if#0#wrap#1#if#end:
+compile._#Var.in_mem#1#wrap#0#if#0#wrap#end:
+ jmp compile._#Var.in_mem#1#wrap#end
+compile._#Var.in_mem#1#wrap#0#if#end:
+compile._#Var.in_mem#1#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Var.in_mem#end
+
+compile._#Var.in_mem#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._tc_struct:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r11 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_struct
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._tc_struct#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Var._tc_struct#end
+ jmp compile._#Var._tc_struct#0#wrap#end
+compile._#Var._tc_struct#0#wrap#0#if#end:
+compile._#Var._tc_struct#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+
+ ; STARTING RETURN
+ cmp r12, r13
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ mov al, bl ; (SET)
+ jmp compile._#Var._tc_struct#end
+
+compile._#Var._tc_struct#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._tc_prim:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptr
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._tc_prim#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptr
+ mov al, al ; (SET)
+ jmp compile._#Var._tc_prim#end
+ jmp compile._#Var._tc_prim#0#wrap#end
+compile._#Var._tc_prim#0#wrap#0#if#end:
+compile._#Var._tc_prim#0#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Var._tc_prim#end
+
+compile._#Var._tc_prim#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._set_struct_r:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov qword [rbp - 72], 8 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_struct_r#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_struct_r#1#wrap#end
+compile._#Var._set_struct_r#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_struct_r#1#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#end
+compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#end
+compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#1#if#end:
+compile._#Var._set_struct_r#1#wrap#1#if#0#wrap#end:
+ jmp compile._#Var._set_struct_r#1#wrap#end
+compile._#Var._set_struct_r#1#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#1#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_struct_r#1#wrap#end
+compile._#Var._set_struct_r#1#wrap#2#if#end:
+compile._#Var._set_struct_r#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ add r8, qword [rel compile.VLOC_DATA] ; (STD_OP)
+ cmp r8, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_struct_r#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_struct_r#3#wrap#end
+compile._#Var._set_struct_r#3#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ add r8, qword [rel compile.VLOC_STCK] ; (STD_OP)
+ cmp r8, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_struct_r#3#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], 8 ; (SET)
+ mov qword [rbp - 72], 8 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Var._set_struct_r#3#wrap#end
+compile._#Var._set_struct_r#3#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 8 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Var._set_struct_r#3#wrap#end
+compile._#Var._set_struct_r#3#wrap#2#if#end:
+compile._#Var._set_struct_r#3#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_struct_r#4#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ cmp r14, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#0#if#end
+ mov rbx, 0 ; (SET)
+ sub rbx, r14 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#end
+compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#end
+compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#1#if#end:
+compile._#Var._set_struct_r#4#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r15 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Var._set_struct_r#4#wrap#end
+compile._#Var._set_struct_r#4#wrap#0#if#end:
+compile._#Var._set_struct_r#4#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov r14, 2 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_struct_r#6#loop#end
+compile._#Var._set_struct_r#6#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#6#loop#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#6#loop#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct_r#6#loop#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+compile._#Var._set_struct_r#6#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_struct_r#6#loop#end
+ jmp compile._#Var._set_struct_r#6#loop#start
+compile._#Var._set_struct_r#6#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Var._set_struct_r#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._set_struct:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var._tc_struct
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_struct#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._set_struct#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._set_struct#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._set_struct#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var._set_struct#end
+ jmp compile._#Var._set_struct#0#wrap#end
+compile._#Var._set_struct#0#wrap#0#if#end:
+compile._#Var._set_struct#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], 6 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_struct_r
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], 5 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_struct_r
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_struct#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+
+compile._#Var._set_struct#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._set_prim_l_base:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov rax, rax ; (SET)
+ jmp compile._#Var._set_prim_l_base#end
+ jmp compile._#Var._set_prim_l_base#0#wrap#end
+compile._#Var._set_prim_l_base#0#wrap#0#if#end:
+compile._#Var._set_prim_l_base#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#1#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.in_mem
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 8 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 32 ; Create stack space for local variable vout
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ cmp r14, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ mov rbx, 0 ; (SET)
+ sub rbx, r14 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ jmp compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ jmp compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r14 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r13, rax ; (SET)
+ jmp compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ mov r13, rax ; (SET)
+ jmp compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#1#if#end:
+compile._#Var._set_prim_l_base#1#wrap#0#if#0#wrap#end:
+ jmp compile._#Var._set_prim_l_base#1#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#0#if#end:
+ sub rsp, 32 ; Create stack space for local variable vout
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ add r8, 1 ; (STD_OP)
+ cmp r8, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ jmp compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ jmp compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#1#if#end:
+compile._#Var._set_prim_l_base#1#wrap#1#if#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ cmp r14, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#0#if#end
+ mov rbx, 0 ; (SET)
+ sub rbx, r14 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ jmp compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#0#if#end:
+ cmp r14, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ jmp compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#1#if#end:
+compile._#Var._set_prim_l_base#1#wrap#1#if#1#wrap#end:
+ cmp r14, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#1#wrap#1#if#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r14 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Var._set_prim_l_base#1#wrap#1#if#2#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#1#if#2#wrap#0#if#end:
+compile._#Var._set_prim_l_base#1#wrap#1#if#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r13, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 89], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 97], r10 ; (SET)
+ mov rax, qword [rbp - 97] ; (SET)
+ lea rsp, [rbp - 89] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 89] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r11 ; (SET)
+ mov qword [rbp - 104], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov r13, rax ; (SET)
+ jmp compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#0#if#end:
+compile._#Var._set_prim_l_base#1#wrap#1#if#3#wrap#end:
+ jmp compile._#Var._set_prim_l_base#1#wrap#end
+compile._#Var._set_prim_l_base#1#wrap#1#if#end:
+compile._#Var._set_prim_l_base#1#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.in_mem
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#2#wrap#0#if#end
+ sub rsp, 32 ; Create stack space for local variable vout
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r13, rax ; (SET)
+ jmp compile._#Var._set_prim_l_base#2#wrap#end
+compile._#Var._set_prim_l_base#2#wrap#0#if#end:
+compile._#Var._set_prim_l_base#2#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.double_ref
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#3#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#3#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov r13, rax ; (SET)
+ mov r14, 2 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#end
+compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r14 ; (SET)
+ mov dword [rbp - 77], 0 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov ecx, dword [rbp - 77] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptrc
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._print
+ jmp compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#end
+compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ jmp compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#end
+compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#1#if#end:
+compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#0#wrap#end:
+compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#end
+ jmp compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#start
+compile._#Var._set_prim_l_base#3#wrap#0#if#3#loop#end:
+ jmp compile._#Var._set_prim_l_base#3#wrap#end
+compile._#Var._set_prim_l_base#3#wrap#0#if#end:
+compile._#Var._set_prim_l_base#3#wrap#end:
+ mov r8, r13 ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 91
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#4#wrap#0#if#end
+ sub rsp, 32 ; Create stack space for local variable vout
+ cmp r12, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ jmp compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#0#if#end:
+ cmp r12, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ jmp compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#1#if#end:
+ cmp r12, 4
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ jmp compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#2#if#end:
+ cmp r12, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ jmp compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#3#if#end:
+compile._#Var._set_prim_l_base#4#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r13 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r13, rax ; (SET)
+ jmp compile._#Var._set_prim_l_base#4#wrap#end
+compile._#Var._set_prim_l_base#4#wrap#0#if#end:
+compile._#Var._set_prim_l_base#4#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r13 ; (SET)
+ jmp compile._#Var._set_prim_l_base#end
+
+compile._#Var._set_prim_l_base#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._set_prim_l:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.type_size
+ mov r12, rax ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l_base
+ mov rax, rax ; (SET)
+ jmp compile._#Var._set_prim_l#end
+
+compile._#Var._set_prim_l#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._set_prim_r:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_r#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r13, rax ; (SET)
+
+ ; STARTING RETURN
+ mov rax, r13 ; (SET)
+ jmp compile._#Var._set_prim_r#end
+ jmp compile._#Var._set_prim_r#0#wrap#end
+compile._#Var._set_prim_r#0#wrap#0#if#end:
+compile._#Var._set_prim_r#0#wrap#end:
+ mov r14b, 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.type_size
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.type_size
+ sub rsp, 8 ; Create stack space for local variable L
+ mov qword [rbp - 64], rax ; (SET)
+ cmp r15, qword [rbp - 64]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_r#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r13, rax ; (SET)
+ mov r14b, 1 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], 5 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ sub rsp, 8 ; Create stack space for local variable vout
+ mov qword [rbp - 72], rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 73], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 74], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 82], r12 ; (SET)
+ mov rax, qword [rbp - 82] ; (SET)
+ lea rsp, [rbp - 74] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_signed
+ mov r8b, byte [rbp - 74] ; (SET)
+ mov bl, byte [rbp - 73] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 73], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 74], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 75], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 83], r10 ; (SET)
+ mov rax, qword [rbp - 83] ; (SET)
+ lea rsp, [rbp - 75] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_signed
+ mov r9b, byte [rbp - 75] ; (SET)
+ mov r8b, byte [rbp - 74] ; (SET)
+ mov bl, byte [rbp - 73] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 73], al ; (SET)
+ mov cl, byte [rbp - 73] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#end
+ cmp r15, 4
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#end
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#end
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#1#if#end:
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#0#if#end:
+ cmp r15, 4
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#2#if#end:
+compile._#Var._set_prim_r#1#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov qword [rbp - 88], r13 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_r#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov r13, qword [rbp - 72] ; (SET)
+ jmp compile._#Var._set_prim_r#1#wrap#end
+compile._#Var._set_prim_r#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ mov rcx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l_base
+ mov r13, rax ; (SET)
+ jmp compile._#Var._set_prim_r#1#wrap#end
+compile._#Var._set_prim_r#1#wrap#1#if#end:
+compile._#Var._set_prim_r#1#wrap#end:
+ cmp r14b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_r#2#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 65], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 74], r10 ; (SET)
+ mov rax, qword [rbp - 74] ; (SET)
+ lea rsp, [rbp - 66] ; Free stack space (freeing tmp variables)
+ call compile._#Var.in_mem
+ mov r8b, byte [rbp - 66] ; (SET)
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 65], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 66], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 67], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 75], r12 ; (SET)
+ mov rax, qword [rbp - 75] ; (SET)
+ lea rsp, [rbp - 67] ; Free stack space (freeing tmp variables)
+ call compile._#Var.in_mem
+ mov r9b, byte [rbp - 67] ; (SET)
+ mov r8b, byte [rbp - 66] ; (SET)
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 65], al ; (SET)
+ mov cl, byte [rbp - 65] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], 5 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ sub rsp, 8 ; Create stack space for local variable vout
+ mov qword [rbp - 72], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov qword [rbp - 88], r13 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov r13, qword [rbp - 72] ; (SET)
+ jmp compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#end
+compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#0#if#end:
+compile._#Var._set_prim_r#2#wrap#0#if#0#wrap#end:
+ jmp compile._#Var._set_prim_r#2#wrap#end
+compile._#Var._set_prim_r#2#wrap#0#if#end:
+compile._#Var._set_prim_r#2#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r13 ; (SET)
+ jmp compile._#Var._set_prim_r#end
+
+compile._#Var._set_prim_r#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.set:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, rbx ; (SET)
+ mov r11, rcx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 65], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_struct
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.set#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov qword [rbp - 88], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ mov rcx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_struct
+ jmp compile._#Var.set#end
+ jmp compile._#Var.set#0#wrap#end
+compile._#Var.set#0#wrap#0#if#end:
+compile._#Var.set#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ mov rcx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_r
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.set#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.set#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.set#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Var.set#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.set_ref:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.max_ref
+ mov r14, rax ; (SET)
+ cmp r13, r14
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.set_ref#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.set_ref#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.set_ref#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.set_ref#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.set_ref#0#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.set_ref#0#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var.set_ref#end
+ jmp compile._#Var.set_ref#0#wrap#end
+compile._#Var.set_ref#0#wrap#0#if#end:
+compile._#Var.set_ref#0#wrap#end:
+ mov r15d, 0 ; (SET)
+ mov ebx, r15d ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov r15d, ebx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, r14 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ mov rbx, r14 ; (SET)
+ add rbx, r13 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable copy
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov qword [rbp - 248], r14 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable ptr
+ mov qword [rbp - 240], rax ; (SET)
+ mov rdi, [rbp - 240] ; (SET_PRM_L)
+ mov dword [rdi], r15d ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rax ; (SET)
+ mov qword [rbp - 256], r11 ; (SET)
+ mov qword [rbp - 264], r12 ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ mov rcx, qword [rbp - 264] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rax ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+
+compile._#Var.set_ref#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.take_ptr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable vcpy
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 241], r10 ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Var.in_mem
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.take_ptr#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.take_ptr#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 240], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 240], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.take_ptr#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 240], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.take_ptr#end
+ jmp compile._#Var.take_ptr#0#wrap#end
+compile._#Var.take_ptr#0#wrap#0#if#end:
+compile._#Var.take_ptr#0#wrap#end:
+ mov r13d, 0 ; (SET)
+ mov ebx, r13d ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov r13d, ebx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 241], rax ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.take_ptr#1#wrap#0#if#end
+ mov r14, 0 ; (SET)
+ mov r15, 0 ; (SET)
+ cmp r15, qword [rbp - 208]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.take_ptr#1#wrap#0#if#0#loop#end
+compile._#Var.take_ptr#1#wrap#0#if#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 241], rax ; (SET)
+ mov qword [rbp - 249], r15 ; (SET)
+ mov dword [rbp - 253], 0 ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ mov rbx, qword [rbp - 249] ; (SET)
+ mov ecx, dword [rbp - 253] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptrc
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.take_ptr#1#wrap#0#if#0#loop#0#wrap#0#if#end
+ mov r15, qword [rbp - 208] ; (SET)
+ jmp compile._#Var.take_ptr#1#wrap#0#if#0#loop#0#wrap#end
+compile._#Var.take_ptr#1#wrap#0#if#0#loop#0#wrap#0#if#end:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ jmp compile._#Var.take_ptr#1#wrap#0#if#0#loop#0#wrap#end
+compile._#Var.take_ptr#1#wrap#0#if#0#loop#0#wrap#1#if#end:
+compile._#Var.take_ptr#1#wrap#0#if#0#loop#0#wrap#end:
+compile._#Var.take_ptr#1#wrap#0#if#0#loop#rep:
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ cmp r15, qword [rbp - 208]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.take_ptr#1#wrap#0#if#0#loop#end
+ jmp compile._#Var.take_ptr#1#wrap#0#if#0#loop#start
+compile._#Var.take_ptr#1#wrap#0#if#0#loop#end:
+ mov rbx, qword [rbp - 208] ; (SET)
+ sub rbx, r14 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov qword [rbp - 248], r14 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r15, rax ; (SET)
+ mov dword [r15], r13d ; (SET)
+ jmp compile._#Var.take_ptr#1#wrap#end
+compile._#Var.take_ptr#1#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 241], r10 ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_struct
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.take_ptr#1#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ mov qword [rbp - 256], r12 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_struct_r
+ jmp compile._#Var.take_ptr#1#wrap#1#if#0#wrap#end
+compile._#Var.take_ptr#1#wrap#1#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r12 ; (SET)
+ mov qword [rbp - 248], 8 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov qword [rbp - 248], r15 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov qword [rbp - 248], r14 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r14 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r15 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Var.take_ptr#1#wrap#1#if#0#wrap#end
+compile._#Var.take_ptr#1#wrap#1#if#0#wrap#1#if#end:
+compile._#Var.take_ptr#1#wrap#1#if#0#wrap#end:
+ mov qword [rbp - 184], r12 ; (SET)
+ mov qword [rbp - 176], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov qword [rbp - 248], 4 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov dword [rbp - 244], r13d ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov ebx, dword [rbp - 244] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Var.take_ptr#1#wrap#end
+compile._#Var.take_ptr#1#wrap#1#if#end:
+compile._#Var.take_ptr#1#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.take_ptr#end
+
+compile._#Var.take_ptr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._de_ref:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r11, qword [rsi] ; (SET)
+ cmp r11, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._de_ref#0#loop#end
+compile._#Var._de_ref#0#loop#start:
+ mov rbx, r11 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ mov ecx, dword [r12] ; (SET)
+ cmp ecx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._de_ref#0#loop#0#wrap#0#if#end
+ mov ecx, dword [r12] ; (SET)
+ cmp ecx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#end
+compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+ mov dword [r12], 0 ; (SET)
+ jmp compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#end
+compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Var._de_ref#0#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Var._de_ref#end
+ jmp compile._#Var._de_ref#0#loop#0#wrap#end
+compile._#Var._de_ref#0#loop#0#wrap#0#if#end:
+compile._#Var._de_ref#0#loop#0#wrap#end:
+compile._#Var._de_ref#0#loop#rep:
+ cmp r11, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._de_ref#0#loop#end
+ jmp compile._#Var._de_ref#0#loop#start
+compile._#Var._de_ref#0#loop#end:
+
+compile._#Var._de_ref#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.de_ref:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var._de_ref
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.de_ref#end
+
+compile._#Var.de_ref#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.index_size:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.index_size#0#loop#end
+compile._#Var.index_size#0#loop#start:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r11 ; (SET)
+ mov dword [rbp - 77], 0 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ mov ecx, dword [rbp - 77] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ptrc
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.index_size#0#loop#0#wrap#0#if#end
+ mov r8, r11 ; (SET)
+ add r8, 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r8, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.index_size#0#loop#0#wrap#0#if#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, 8 ; (SET)
+ jmp compile._#Var.index_size#end
+ jmp compile._#Var.index_size#0#loop#0#wrap#0#if#0#wrap#end
+compile._#Var.index_size#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Var.index_size#0#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Var.index_size#0#loop#0#wrap#end
+compile._#Var.index_size#0#loop#0#wrap#0#if#end:
+compile._#Var.index_size#0#loop#0#wrap#end:
+compile._#Var.index_size#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.index_size#0#loop#end
+ jmp compile._#Var.index_size#0#loop#start
+compile._#Var.index_size#0#loop#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp compile._#Var.index_size#end
+
+compile._#Var.index_size#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.index:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.index#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.index_size
+ mov r14, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable oo
+ mov qword [rbp - 88], r14 ; (SET)
+ mov qword [rbp - 96], 0 ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov qword [rbp - 264], 0 ; (SET)
+ mov qword [rbp - 272], r13 ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 321], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 329], rax ; (SET)
+ mov rax, qword [rbp - 329] ; (SET)
+ lea rsp, [rbp - 321] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 321] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.index#1#loop#end
+compile._#Var.index#1#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+compile._#Var.index#1#loop#rep:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 321], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 329], rax ; (SET)
+ mov rax, qword [rbp - 329] ; (SET)
+ lea rsp, [rbp - 321] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 321] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.index#1#loop#end
+ jmp compile._#Var.index#1#loop#start
+compile._#Var.index#1#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ mov qword [rbp - 344], r12 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.mul
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 321], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 329], rax ; (SET)
+ mov rax, qword [rbp - 329] ; (SET)
+ lea rsp, [rbp - 321] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_arr
+ mov bl, byte [rbp - 321] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.index#2#wrap#0#if#end
+ mov qword [rbp - 88], 8 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.add
+ jmp compile._#Var.index#2#wrap#end
+compile._#Var.index#2#wrap#0#if#end:
+compile._#Var.index#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r10 ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.top_ptrc
+ sub rsp, 8 ; Create stack space for local variable optrc
+ mov qword [rbp - 328], rax ; (SET)
+ mov rcx, qword [rbp - 328] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.index#3#wrap#0#if#end
+ mov rdi, [rbp - 328] ; (SET_PRM_L)
+ mov ecx, dword [rdi] ; (SET)
+ cmp ecx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.index#3#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 336], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.index#3#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ mov rbx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var.index#3#wrap#0#if#0#wrap#end
+compile._#Var.index#3#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 336], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.index#3#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ mov rbx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var.index#3#wrap#0#if#0#wrap#end
+compile._#Var.index#3#wrap#0#if#0#wrap#1#if#end:
+compile._#Var.index#3#wrap#0#if#0#wrap#end:
+ jmp compile._#Var.index#3#wrap#end
+compile._#Var.index#3#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.index#3#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.index#3#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 336], r15 ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call _delete
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.index#end
+ jmp compile._#Var.index#3#wrap#end
+compile._#Var.index#3#wrap#1#if#end:
+compile._#Var.index#3#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 336], r11 ; (SET)
+ mov qword [rbp - 344], r15 ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ mov rbx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 336], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.index#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ mov rbx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 336], r15 ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 336], rax ; (SET)
+ mov qword [rbp - 344], r11 ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ mov rbx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 336], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.index#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ mov rbx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 336], r11 ; (SET)
+ mov qword [rbp - 344], r15 ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ mov rbx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 336], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.index#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ mov rbx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 4 ; Create stack space for local variable ptr_ref
+ mov dword [rbp - 332], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 340], rax ; (SET)
+ mov rax, qword [rbp - 340] ; (SET)
+ lea rsp, [rbp - 332] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 340], rax ; (SET)
+ mov esi, dword [rbp - 332] ; (SET_PRM_R)
+ mov dword [rbp - 344], esi ; (SET)
+ mov rax, qword [rbp - 340] ; (SET)
+ mov ebx, dword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 332] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.index#end
+
+compile._#Var.index#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.standard_op:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, rbx ; (SET)
+ mov r11, rcx ; (SET)
+ mov r12, rdx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ mov rcx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_r
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.standard_op#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.standard_op#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.standard_op#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.standard_op#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Var.standard_op#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.add:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var.add#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var.add#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.add#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ add r8, qword [rsi] ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Var.add#end
+ jmp compile._#Var.add#0#wrap#end
+compile._#Var.add#0#wrap#0#if#end:
+compile._#Var.add#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.first_non_ref
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8d, eax ; (SET)
+ cmp r8d, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.add#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.first_non_ref_idx
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable vl
+ mov qword [rbp - 96], 0 ; (SET)
+ mov r8, r13 ; (SET)
+ add r8, 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r8, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.add#1#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.add#1#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], 0 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._print
+ mov qword [rbp - 88], 8 ; (SET)
+ jmp compile._#Var.add#1#wrap#0#if#0#wrap#end
+compile._#Var.add#1#wrap#0#if#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ jmp compile._#Var.add#1#wrap#0#if#0#wrap#end
+compile._#Var.add#1#wrap#0#if#0#wrap#1#if#end:
+compile._#Var.add#1#wrap#0#if#0#wrap#end:
+ mov r14d, 0 ; (SET)
+ mov ebx, r14d ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov r14d, ebx ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r12 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable vo
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.strip_refs
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov dword [rbp - 332], r14d ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov ebx, dword [rbp - 332] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ mov qword [rbp - 272], 3 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ mov qword [rbp - 344], r12 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.mul
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r10 ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var.add#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 352], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ mov rdx, qword [rbp - 352] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.standard_op
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Var.add#1#wrap#end
+compile._#Var.add#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var.add#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.standard_op
+ jmp compile._#Var.add#1#wrap#end
+compile._#Var.add#1#wrap#1#if#end:
+compile._#Var.add#1#wrap#end:
+
+compile._#Var.add#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.sub:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var.sub#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var.sub#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.sub#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ sub r8, qword [rsi] ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Var.sub#end
+ jmp compile._#Var.sub#0#wrap#end
+compile._#Var.sub#0#wrap#0#if#end:
+compile._#Var.sub#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.first_non_ref
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8d, eax ; (SET)
+ cmp r8d, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.sub#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.first_non_ref_idx
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable vl
+ mov qword [rbp - 96], 0 ; (SET)
+ mov r8, r13 ; (SET)
+ add r8, 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r8, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.sub#1#wrap#0#if#0#wrap#0#if#end
+ mov qword [rbp - 88], 8 ; (SET)
+ jmp compile._#Var.sub#1#wrap#0#if#0#wrap#end
+compile._#Var.sub#1#wrap#0#if#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ jmp compile._#Var.sub#1#wrap#0#if#0#wrap#end
+compile._#Var.sub#1#wrap#0#if#0#wrap#1#if#end:
+compile._#Var.sub#1#wrap#0#if#0#wrap#end:
+ mov r14d, 0 ; (SET)
+ mov ebx, r14d ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov r14d, ebx ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r12 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable vo
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.strip_refs
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov dword [rbp - 332], r14d ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov ebx, dword [rbp - 332] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ mov qword [rbp - 272], 3 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ mov qword [rbp - 344], r12 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.mul
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r10 ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var.sub#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 352], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ mov rdx, qword [rbp - 352] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.standard_op
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Var.sub#1#wrap#end
+compile._#Var.sub#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var.sub#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.standard_op
+ jmp compile._#Var.sub#1#wrap#end
+compile._#Var.sub#1#wrap#1#if#end:
+compile._#Var.sub#1#wrap#end:
+
+compile._#Var.sub#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.and:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var.and#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var.and#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.and#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ and r8, qword [rsi] ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Var.and#end
+ jmp compile._#Var.and#0#wrap#end
+compile._#Var.and#0#wrap#0#if#end:
+compile._#Var.and#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var.and#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.standard_op
+
+compile._#Var.and#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.or:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var.or#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var.or#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.or#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ or r8, qword [rsi] ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Var.or#end
+ jmp compile._#Var.or#0#wrap#end
+compile._#Var.or#0#wrap#0#if#end:
+compile._#Var.or#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var.or#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.standard_op
+
+compile._#Var.or#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.xor:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var.xor#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var.xor#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.xor#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ xor r8, qword [rsi] ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Var.xor#end
+ jmp compile._#Var.xor#0#wrap#end
+compile._#Var.xor#0#wrap#0#if#end:
+compile._#Var.xor#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rsi, qword [rel compile._#Var.xor#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.standard_op
+
+compile._#Var.xor#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.mul:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, rbx ; (SET)
+ mov r11, rcx ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var.mul#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rdi, [rbp - 72] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var.mul#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.mul#0#wrap#0#if#end
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ imul r8, qword [rsi] ; (MUL)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Var.mul#end
+ jmp compile._#Var.mul#0#wrap#end
+compile._#Var.mul#0#wrap#0#if#end:
+compile._#Var.mul#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ mov rcx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_r
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r13, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 65], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ call compile._#Var.in_mem
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.mul#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var.type_size
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], 1 ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r15 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r15 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#0#if#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#0#if#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#0#if#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r15 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#0#if#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Var.mul#1#wrap#end
+compile._#Var.mul#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.mul#1#wrap#1#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var.mul#1#wrap#end
+compile._#Var.mul#1#wrap#1#if#end:
+compile._#Var.mul#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Var.mul#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._div:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, rbx ; (SET)
+ mov r11, rcx ; (SET)
+ mov r12, rdx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ mov rcx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_r
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var.type_size
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], 1 ; (SET)
+ mov qword [rbp - 80], r15 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ sub rsp, 8 ; Create stack space for local variable rstr
+ mov qword [rbp - 72], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov qword [rbp - 88], r13 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], 3 ; (SET)
+ mov qword [rbp - 88], r15 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ mov r13, rax ; (SET)
+ jmp compile._#Var._div#0#wrap#end
+compile._#Var._div#0#wrap#0#if#end:
+compile._#Var._div#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov qword [rbp - 88], r14 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 73], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 73] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_signed
+ mov bl, byte [rbp - 73] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#4#wrap#0#if#end
+ cmp r15, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#4#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._div#4#wrap#0#if#0#wrap#end
+compile._#Var._div#4#wrap#0#if#0#wrap#0#if#end:
+ cmp r15, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#4#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._div#4#wrap#0#if#0#wrap#end
+compile._#Var._div#4#wrap#0#if#0#wrap#1#if#end:
+ cmp r15, 4
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#4#wrap#0#if#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#0#if#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._div#4#wrap#0#if#0#wrap#end
+compile._#Var._div#4#wrap#0#if#0#wrap#2#if#end:
+ cmp r15, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#4#wrap#0#if#0#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#0#if#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._div#4#wrap#0#if#0#wrap#end
+compile._#Var._div#4#wrap#0#if#0#wrap#3#if#end:
+compile._#Var._div#4#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._div#4#wrap#end
+compile._#Var._div#4#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ cmp r15, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#4#wrap#1#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#1#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._div#4#wrap#1#if#1#wrap#end
+compile._#Var._div#4#wrap#1#if#1#wrap#0#if#end:
+ cmp r15, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#4#wrap#1#if#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#1#if#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._div#4#wrap#1#if#1#wrap#end
+compile._#Var._div#4#wrap#1#if#1#wrap#1#if#end:
+ cmp r15, 4
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#4#wrap#1#if#1#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#1#if#1#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._div#4#wrap#1#if#1#wrap#end
+compile._#Var._div#4#wrap#1#if#1#wrap#2#if#end:
+ cmp r15, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#4#wrap#1#if#1#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#1#if#1#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._div#4#wrap#1#if#1#wrap#end
+compile._#Var._div#4#wrap#1#if#1#wrap#3#if#end:
+compile._#Var._div#4#wrap#1#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#4#wrap#1#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._div#4#wrap#end
+compile._#Var._div#4#wrap#1#if#end:
+compile._#Var._div#4#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov qword [rbp - 88], r13 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call _delete
+ cmp r15, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var._div#6#wrap#0#if#0#bool#end
+ cmp r12, 4
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile._#Var._div#6#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._div#6#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._div#6#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 72], rax ; (SET)
+ jmp compile._#Var._div#6#wrap#end
+compile._#Var._div#6#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r12 ; (SET)
+ mov qword [rbp - 88], r15 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile.reg_string
+ mov qword [rbp - 72], rax ; (SET)
+ jmp compile._#Var._div#6#wrap#end
+compile._#Var._div#6#wrap#1#if#end:
+compile._#Var._div#6#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov qword [rbp - 88], r14 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var._div#9#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Var._div#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.div:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var.div#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var.div#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.div#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rax, r8 ; (DIV)
+ cqo
+ idiv qword [rsi]
+ mov r8, rax ; (DIV)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Var.div#end
+ jmp compile._#Var.div#0#wrap#end
+compile._#Var.div#0#wrap#0#if#end:
+compile._#Var.div#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov qword [rbp - 88], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._div
+
+compile._#Var.div#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.mod:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Var.mod#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Var.mod#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.mod#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rax, r8 ; (DIV)
+ cqo
+ idiv qword [rsi]
+ mov r8, rdx ; (DIV)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Var.mod#end
+ jmp compile._#Var.mod#0#wrap#end
+compile._#Var.mod#0#wrap#0#if#end:
+compile._#Var.mod#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov qword [rbp - 88], 4 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._div
+
+compile._#Var.mod#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._unary:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._unary#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._unary#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.in_mem
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._unary#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.type_size
+ mov r14, rax ; (SET)
+ cmp r14, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._unary#2#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._unary#2#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._unary#2#wrap#0#if#0#wrap#end
+compile._#Var._unary#2#wrap#0#if#0#wrap#0#if#end:
+ cmp r14, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._unary#2#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._unary#2#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._unary#2#wrap#0#if#0#wrap#end
+compile._#Var._unary#2#wrap#0#if#0#wrap#1#if#end:
+ cmp r14, 4
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._unary#2#wrap#0#if#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._unary#2#wrap#0#if#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._unary#2#wrap#0#if#0#wrap#end
+compile._#Var._unary#2#wrap#0#if#0#wrap#2#if#end:
+ cmp r14, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._unary#2#wrap#0#if#0#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._unary#2#wrap#0#if#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var._unary#2#wrap#0#if#0#wrap#end
+compile._#Var._unary#2#wrap#0#if#0#wrap#3#if#end:
+compile._#Var._unary#2#wrap#0#if#0#wrap#end:
+ jmp compile._#Var._unary#2#wrap#end
+compile._#Var._unary#2#wrap#0#if#end:
+compile._#Var._unary#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var._unary#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Var._unary#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.not:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.not#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ not qword qword [rsi] ; (UNARY)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ jmp compile._#Var.not#end
+ jmp compile._#Var.not#0#wrap#end
+compile._#Var.not#0#wrap#0#if#end:
+compile._#Var.not#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.not#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._unary
+
+compile._#Var.not#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.neg:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.neg#0#wrap#0#if#end
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov r8, r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ sub r8, qword [rsi] ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Var.neg#end
+ jmp compile._#Var.neg#0#wrap#end
+compile._#Var.neg#0#wrap#0#if#end:
+compile._#Var.neg#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.neg#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._unary
+
+compile._#Var.neg#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.inc:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.inc#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ inc qword qword [rsi] ; (UNARY)
+ jmp compile._#Var.inc#end
+ jmp compile._#Var.inc#0#wrap#end
+compile._#Var.inc#0#wrap#0#if#end:
+compile._#Var.inc#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.first_non_ref
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8d, eax ; (SET)
+ cmp r8d, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.inc#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.first_non_ref_idx
+ mov r12, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable vv
+ mov qword [rbp - 96], 0 ; (SET)
+ mov r8, r12 ; (SET)
+ add r8, 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r8, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.inc#1#wrap#0#if#0#wrap#0#if#end
+ mov qword [rbp - 88], 8 ; (SET)
+ jmp compile._#Var.inc#1#wrap#0#if#0#wrap#end
+compile._#Var.inc#1#wrap#0#if#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ jmp compile._#Var.inc#1#wrap#0#if#0#wrap#end
+compile._#Var.inc#1#wrap#0#if#0#wrap#1#if#end:
+compile._#Var.inc#1#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var.inc#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ mov rdx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.standard_op
+ jmp compile._#Var.inc#1#wrap#end
+compile._#Var.inc#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.inc#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._unary
+ jmp compile._#Var.inc#1#wrap#end
+compile._#Var.inc#1#wrap#1#if#end:
+compile._#Var.inc#1#wrap#end:
+
+compile._#Var.inc#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.dec:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.dec#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ inc qword qword [rsi] ; (UNARY)
+ jmp compile._#Var.dec#end
+ jmp compile._#Var.dec#0#wrap#end
+compile._#Var.dec#0#wrap#0#if#end:
+compile._#Var.dec#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.first_non_ref
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8d, eax ; (SET)
+ cmp r8d, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.dec#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.first_non_ref_idx
+ mov r12, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable vv
+ mov qword [rbp - 96], 0 ; (SET)
+ mov r8, r12 ; (SET)
+ add r8, 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r8, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.dec#1#wrap#0#if#0#wrap#0#if#end
+ mov qword [rbp - 88], 8 ; (SET)
+ jmp compile._#Var.dec#1#wrap#0#if#0#wrap#end
+compile._#Var.dec#1#wrap#0#if#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ jmp compile._#Var.dec#1#wrap#0#if#0#wrap#end
+compile._#Var.dec#1#wrap#0#if#0#wrap#1#if#end:
+compile._#Var.dec#1#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rsi, qword [rel compile._#Var.dec#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ mov rdx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.standard_op
+ jmp compile._#Var.dec#1#wrap#end
+compile._#Var.dec#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.dec#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._unary
+ jmp compile._#Var.dec#1#wrap#end
+compile._#Var.dec#1#wrap#1#if#end:
+compile._#Var.dec#1#wrap#end:
+
+compile._#Var.dec#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.test:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.test#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.in_mem
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.test#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.type_size
+ mov r13, rax ; (SET)
+ cmp r13, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.test#1#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.test#1#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var.test#1#wrap#0#if#0#wrap#end
+compile._#Var.test#1#wrap#0#if#0#wrap#0#if#end:
+ cmp r13, 2
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.test#1#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.test#1#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var.test#1#wrap#0#if#0#wrap#end
+compile._#Var.test#1#wrap#0#if#0#wrap#1#if#end:
+ cmp r13, 4
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.test#1#wrap#0#if#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.test#1#wrap#0#if#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var.test#1#wrap#0#if#0#wrap#end
+compile._#Var.test#1#wrap#0#if#0#wrap#2#if#end:
+ cmp r13, 8
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.test#1#wrap#0#if#0#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.test#1#wrap#0#if#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var.test#1#wrap#0#if#0#wrap#end
+compile._#Var.test#1#wrap#0#if#0#wrap#3#if#end:
+compile._#Var.test#1#wrap#0#if#0#wrap#end:
+ jmp compile._#Var.test#1#wrap#end
+compile._#Var.test#1#wrap#0#if#end:
+compile._#Var.test#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.test#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Var.test#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.cmov:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, rbx ; (SET)
+ mov r11, rcx ; (SET)
+ mov r12, rdx ; (SET)
+ mov r13, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r12 ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov qword [rbp - 88], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ mov rcx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_r
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cmov#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r15 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cmov#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cmov#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cmov#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cmov#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cmov#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cmov#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable ax
+ ; putting struct address into register
+ lea rdi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov qword [rbp - 192], 1 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rax ; (SET)
+ mov qword [rbp - 256], r10 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 264], rsi ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ mov rcx, qword [rbp - 264] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_r
+ sub rsp, 8 ; Create stack space for local variable ax_str
+ mov qword [rbp - 248], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ mov qword [rbp - 264], r10 ; (SET)
+ mov rax, qword [rbp - 256] ; (SET)
+ mov rbx, qword [rbp - 264] ; (SET)
+ lea rsp, [rbp - 248] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ sub rsp, 8 ; Create stack space for local variable to_str
+ mov qword [rbp - 256], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 264], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cmov#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 272], rsi ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ mov rbx, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 264], r10 ; (SET)
+ mov rsi, qword [rbp - 256] ; (SET_PRM_R)
+ mov qword [rbp - 272], rsi ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ mov rbx, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 256] ; (SET_PRM_R)
+ mov qword [rbp - 264], rsi ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 264], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cmov#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 272], rsi ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ mov rbx, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 264], r10 ; (SET)
+ mov rsi, qword [rbp - 248] ; (SET_PRM_R)
+ mov qword [rbp - 272], rsi ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ mov rbx, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 248] ; (SET_PRM_R)
+ mov qword [rbp - 264], rsi ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 264], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cmov#9#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 272], rsi ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ mov rbx, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+
+compile._#Var.cmov#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.cset:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, rbx ; (SET)
+ mov r11, rcx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cset#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cset#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cset#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cset#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable ax
+ ; putting struct address into register
+ lea rdi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov qword [rbp - 192], 1 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rax ; (SET)
+ mov qword [rbp - 256], r10 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 264], rsi ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ mov rcx, qword [rbp - 264] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_r
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov qword [rbp - 256], r10 ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_prim_l
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cset#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], r10 ; (SET)
+ mov qword [rbp - 256], r13 ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], r13 ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cset#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], r10 ; (SET)
+ mov qword [rbp - 256], r12 ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], r12 ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], r10 ; (SET)
+ mov rsi, qword [rel compile._#Var.cset#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+
+compile._#Var.cset#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var.member:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_struct
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.member#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.member#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.member#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.member#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.member#0#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ mov qword [rbp - 96], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.member#end
+ jmp compile._#Var.member#0#wrap#end
+compile._#Var.member#0#wrap#0#if#end:
+compile._#Var.member#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Struct.get_member
+ mov r13, rax ; (SET)
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.member#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.member#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.member#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var.member#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ mov qword [rbp - 96], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.member#end
+ jmp compile._#Var.member#1#wrap#end
+compile._#Var.member#1#wrap#0#if#end:
+compile._#Var.member#1#wrap#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 241], r10 ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.member#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ mov qword [rbp - 256], 5 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var._set_struct_r
+ mov qword [rbp - 184], 5 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov dword [rbp - 244], 0 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov ebx, dword [rbp - 244] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ mov rcx, qword [rbp - 176] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.member#2#wrap#0#if#0#wrap#0#if#end
+ mov r14, qword [rbp - 176] ; (SET)
+ cmp r14, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, 0 ; (SET)
+ sub rbx, r14 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ jmp compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Var.member#2#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r14 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov qword [rbp - 248], r15 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov rsi, qword [rel compile._#Var.member#2#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov qword [rbp - 176], 0 ; (SET)
+ jmp compile._#Var.member#2#wrap#0#if#0#wrap#end
+compile._#Var.member#2#wrap#0#if#0#wrap#0#if#end:
+compile._#Var.member#2#wrap#0#if#0#wrap#end:
+ jmp compile._#Var.member#2#wrap#end
+compile._#Var.member#2#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 184], rsi ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ add rbx, qword [rsi] ; (STD_OP)
+ mov qword [rbp - 176], rbx ; (SET)
+ jmp compile._#Var.member#2#wrap#end
+compile._#Var.member#2#wrap#1#if#end:
+compile._#Var.member#2#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var.member#end
+
+compile._#Var.member#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._len:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov qword [rbp - 160], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.first_non_ref
+ mov r13d, eax ; (SET)
+ cmp r13d, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._len#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._len#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var._len#0#wrap#end
+compile._#Var._len#0#wrap#0#if#end:
+ cmp r13d, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._len#0#wrap#1#if#end
+ movsxd rsi, r13d ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ jmp compile._#Var._len#0#wrap#end
+compile._#Var._len#0#wrap#1#if#end:
+ cmp r13d, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._len#0#wrap#2#if#end
+ mov qword [rbp - 88], 8 ; (SET)
+ jmp compile._#Var._len#0#wrap#end
+compile._#Var._len#0#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ jmp compile._#Var._len#0#wrap#end
+compile._#Var._len#0#wrap#3#if#end:
+compile._#Var._len#0#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Var._len#end
+
+compile._#Var._len#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Var._print:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 64], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._print#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var._print#3#wrap#end
+compile._#Var._print#3#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#3#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var._print#3#wrap#end
+compile._#Var._print#3#wrap#1#if#end:
+compile._#Var._print#3#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 64], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._print#6#loop#end
+compile._#Var._print#6#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#6#loop#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ movsxd rsi, dword [r12] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+compile._#Var._print#6#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._print#6#loop#end
+ jmp compile._#Var._print#6#loop#start
+compile._#Var._print#6#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Var._print#7#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#7#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Var._print#7#wrap#end
+compile._#Var._print#7#wrap#0#if#end:
+compile._#Var._print#7#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 64], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#9#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 64], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#10#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Var._print#11#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+compile._#Var._print#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 88 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov byte [rbx], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ sub rsp, 88 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 88 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 88 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+
+compile._#Function.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._resolve_dlist:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, qword [rel NULL] ; (SET)
+ mov r15, 1 ; (SET)
+ sub rsp, 8 ; Create stack space for local variable stack_up
+ mov qword [rbp - 64], 8 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 88 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_dlist#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Module.related_type
+ sub rsp, 8 ; Create stack space for local variable s
+ mov qword [rbp - 72], rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable p
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 160] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._resolve_dlist#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov qword [rbp - 160], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov dword [rbp - 172], 0 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov ebx, dword [rbp - 172] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ mov qword [rbp - 112], r15 ; (SET)
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Function._resolve_dlist#0#wrap#end
+compile._#Function._resolve_dlist#0#wrap#0#if#end:
+compile._#Function._resolve_dlist#0#wrap#end:
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_dlist#1#wrap#0#if#end
+ jmp compile._#Function._resolve_dlist#end
+ jmp compile._#Function._resolve_dlist#1#wrap#end
+compile._#Function._resolve_dlist#1#wrap#0#if#end:
+compile._#Function._resolve_dlist#1#wrap#end:
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 72], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 72] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_dlist#2#loop#end
+compile._#Function._resolve_dlist#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_TYPE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_dlist#2#loop#0#wrap#0#if#end
+ mov r13, r14 ; (SET)
+ jmp compile._#Function._resolve_dlist#2#loop#0#wrap#end
+compile._#Function._resolve_dlist#2#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#end
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Function._resolve_dlist#end
+ jmp compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#0#wrap#end
+compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#0#wrap#0#if#end:
+compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#0#wrap#end:
+ sub rsp, 88 ; Create stack space for local variable p
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov qword [rbp - 176], r13 ; (SET)
+ mov qword [rbp - 184], r14 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ mov rcx, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Var.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov qword [rbp - 176], r11 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Var._resolve_type
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 161], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 162], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 170], rax ; (SET)
+ mov rax, qword [rbp - 170] ; (SET)
+ lea rsp, [rbp - 162] ; Free stack space (freeing tmp variables)
+ call compile._#Var.regable
+ mov r8b, byte [rbp - 162] ; (SET)
+ mov bl, byte [rbp - 161] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#1#wrap#0#if#0#bool#end
+ cmp r15, 7
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#1#wrap#0#if#end
+ mov qword [rbp - 112], r15 ; (SET)
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ jmp compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#1#wrap#end
+compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#1#wrap#0#if#end:
+ mov rbx, 0 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 112], rbx ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rbx, qword [rbp - 64] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 176], rax ; (SET)
+ mov rax, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 168] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ add rbx, rax ; (STD_OP)
+ mov qword [rbp - 64], rbx ; (SET)
+ jmp compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#1#wrap#end
+compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#1#wrap#1#if#end:
+compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Function._resolve_dlist#2#loop#0#wrap#end
+compile._#Function._resolve_dlist#2#loop#0#wrap#1#if#end:
+compile._#Function._resolve_dlist#2#loop#0#wrap#end:
+compile._#Function._resolve_dlist#2#loop#rep:
+ mov rbx, qword [rbp - 72] ; (SET)
+ inc qword qword [rbp - 72] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 72] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_dlist#2#loop#end
+ jmp compile._#Function._resolve_dlist#2#loop#start
+compile._#Function._resolve_dlist#2#loop#end:
+
+compile._#Function._resolve_dlist#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._resolve_tlist:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 50 ; Create stack space for local variable out_id
+ mov rsi, qword [rel compile._#Function._resolve_tlist#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov r14, 1 ; (SET)
+ mov r15, 8 ; (SET)
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 114], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 114] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_tlist#1#loop#end
+compile._#Function._resolve_tlist#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 122], rsi ; (SET)
+ mov rsi, qword [rbp - 114] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rax, qword [rbp - 122] ; (SET)
+ mov rbx, qword [rbp - 130] ; (SET)
+ lea rsp, [rbp - 114] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_TYPE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for local variable r
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 202] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 210], rax ; (SET)
+ mov qword [rbp - 218], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 106] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 226], rsi ; (SET)
+ mov rax, qword [rbp - 210] ; (SET)
+ mov rbx, qword [rbp - 218] ; (SET)
+ mov rcx, qword [rbp - 226] ; (SET)
+ lea rsp, [rbp - 202] ; Free stack space (freeing tmp variables)
+ call compile._#Var.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 202] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 210], rax ; (SET)
+ mov qword [rbp - 218], r11 ; (SET)
+ mov rax, qword [rbp - 210] ; (SET)
+ mov rbx, qword [rbp - 218] ; (SET)
+ lea rsp, [rbp - 202] ; Free stack space (freeing tmp variables)
+ call compile._#Var._resolve_type
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 130], rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 138], rsi ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 203], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 204], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 202] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 212], rax ; (SET)
+ mov rax, qword [rbp - 212] ; (SET)
+ lea rsp, [rbp - 204] ; Free stack space (freeing tmp variables)
+ call compile._#Var.regable
+ mov r8b, byte [rbp - 204] ; (SET)
+ mov bl, byte [rbp - 203] ; (SET)
+ lea rsp, [rbp - 202] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#0#if#0#bool#end
+ cmp r14, 7
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#0#if#end
+ mov qword [rbp - 154], r14 ; (SET)
+ cmp r14, 4
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end
+ mov rbx, qword [rbp - 154] ; (SET)
+ add rbx, 4 ; (STD_OP)
+ mov qword [rbp - 154], rbx ; (SET)
+ jmp compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#0#if#1#wrap#end
+compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#0#if#1#wrap#end:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ jmp compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#end
+compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#0#if#end:
+ mov rbx, 0 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 154], rbx ; (SET)
+ mov qword [rbp - 146], r15 ; (SET)
+ mov rbx, r15 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 210], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 202] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 218], rax ; (SET)
+ mov rax, qword [rbp - 218] ; (SET)
+ lea rsp, [rbp - 210] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ mov rbx, qword [rbp - 210] ; (SET)
+ lea rsp, [rbp - 202] ; Free stack space (freeing tmp variables)
+ add rbx, rax ; (STD_OP)
+ mov r15, rbx ; (SET)
+ jmp compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#end
+compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 210], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 202] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 218], rsi ; (SET)
+ mov rax, qword [rbp - 210] ; (SET)
+ mov rbx, qword [rbp - 218] ; (SET)
+ lea rsp, [rbp - 202] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Function._resolve_tlist#1#loop#0#wrap#end
+compile._#Function._resolve_tlist#1#loop#0#wrap#0#if#end:
+compile._#Function._resolve_tlist#1#loop#0#wrap#end:
+compile._#Function._resolve_tlist#1#loop#rep:
+ mov rbx, qword [rbp - 114] ; (SET)
+ inc qword qword [rbp - 114] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 114] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_tlist#1#loop#end
+ jmp compile._#Function._resolve_tlist#1#loop#start
+compile._#Function._resolve_tlist#1#loop#end:
+
+compile._#Function._resolve_tlist#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._resolve_type:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 88 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._resolve_dlist
+ jmp compile._#Function._resolve_type#0#wrap#0#if#0#wrap#end
+compile._#Function._resolve_type#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._resolve_type#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._resolve_type#end
+ jmp compile._#Function._resolve_type#0#wrap#end
+compile._#Function._resolve_type#0#wrap#0#if#end:
+compile._#Function._resolve_type#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_DLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._resolve_dlist
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#1#wrap#0#if#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ jmp compile._#Function._resolve_type#1#wrap#0#if#0#wrap#end
+compile._#Function._resolve_type#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._resolve_type#1#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._resolve_type#1#wrap#end
+compile._#Function._resolve_type#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 88 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._resolve_dlist
+ jmp compile._#Function._resolve_type#1#wrap#end
+compile._#Function._resolve_type#1#wrap#1#if#end:
+compile._#Function._resolve_type#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_TLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._resolve_tlist
+ jmp compile._#Function._resolve_type#2#wrap#end
+compile._#Function._resolve_type#2#wrap#0#if#end:
+compile._#Function._resolve_type#2#wrap#end:
+ mov r14, 0 ; (SET)
+ mov r15, 0 ; (SET)
+ sub rsp, 8 ; Create stack space for local variable v
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 72], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 72] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#3#loop#end
+compile._#Function._resolve_type#3#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 64], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#3#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ sub rsp, 8 ; Create stack space for local variable vsz
+ mov qword [rbp - 80], rax ; (SET)
+ mov rbx, r14 ; (SET)
+ add rbx, qword [rbp - 80] ; (STD_OP)
+ mov r14, rbx ; (SET)
+ jmp compile._#Function._resolve_type#3#loop#0#wrap#end
+compile._#Function._resolve_type#3#loop#0#wrap#0#if#end:
+compile._#Function._resolve_type#3#loop#0#wrap#end:
+compile._#Function._resolve_type#3#loop#rep:
+ mov rbx, qword [rbp - 72] ; (SET)
+ inc qword qword [rbp - 72] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 72] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#3#loop#end
+ jmp compile._#Function._resolve_type#3#loop#start
+compile._#Function._resolve_type#3#loop#end:
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 72], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 72] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#4#loop#end
+compile._#Function._resolve_type#4#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 64], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#4#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 72] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ sub rsp, 8 ; Create stack space for local variable vsz
+ mov qword [rbp - 80], rax ; (SET)
+ mov rbx, r15 ; (SET)
+ add rbx, qword [rbp - 80] ; (STD_OP)
+ mov r15, rbx ; (SET)
+ jmp compile._#Function._resolve_type#4#loop#0#wrap#end
+compile._#Function._resolve_type#4#loop#0#wrap#0#if#end:
+compile._#Function._resolve_type#4#loop#0#wrap#end:
+compile._#Function._resolve_type#4#loop#rep:
+ mov rbx, qword [rbp - 72] ; (SET)
+ inc qword qword [rbp - 72] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 72] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#4#loop#end
+ jmp compile._#Function._resolve_type#4#loop#start
+compile._#Function._resolve_type#4#loop#end:
+ cmp r15, r14
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._resolve_type#5#wrap#0#if#end
+ mov rbx, r15 ; (SET)
+ sub rbx, r14 ; (STD_OP)
+ sub rsp, 8 ; Create stack space for local variable padding
+ mov qword [rbp - 72], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 80], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 80] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._resolve_type#5#wrap#0#if#0#loop#end
+compile._#Function._resolve_type#5#wrap#0#if#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 88], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rsi, qword [rbp - 80] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 80] ; Free stack space (freeing tmp variables)
+ mov qword [rbp - 64], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable off
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov r9, qword [rbp - 88] ; (SET)
+ add r9, qword [rbp - 72] ; (STD_OP)
+ mov qword [r8], r9 ; (SET)
+compile._#Function._resolve_type#5#wrap#0#if#0#loop#rep:
+ mov r8, qword [rbp - 80] ; (SET)
+ inc qword qword [rbp - 80] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 80] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._resolve_type#5#wrap#0#if#0#loop#end
+ jmp compile._#Function._resolve_type#5#wrap#0#if#0#loop#start
+compile._#Function._resolve_type#5#wrap#0#if#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rsi, qword [rbp - 72] ; (SET_PRM_R)
+ mov qword [r8], rsi ; (SET)
+ jmp compile._#Function._resolve_type#5#wrap#end
+compile._#Function._resolve_type#5#wrap#0#if#end:
+compile._#Function._resolve_type#5#wrap#end:
+
+compile._#Function._resolve_type#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compute_scope_vars_loop:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compute_scope_vars_loop#0#loop#end
+compile._#Function._compute_scope_vars_loop#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_DECL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compute_scope_vars_loop#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.mk_aware_node
+ jmp compile._#Function._compute_scope_vars_loop#0#loop#0#wrap#end
+compile._#Function._compute_scope_vars_loop#0#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.precheck_stmt
+ jmp compile._#Function._compute_scope_vars_loop#0#loop#0#wrap#end
+compile._#Function._compute_scope_vars_loop#0#loop#0#wrap#1#if#end:
+compile._#Function._compute_scope_vars_loop#0#loop#0#wrap#end:
+compile._#Function._compute_scope_vars_loop#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compute_scope_vars_loop#0#loop#end
+ jmp compile._#Function._compute_scope_vars_loop#0#loop#start
+compile._#Function._compute_scope_vars_loop#0#loop#end:
+
+compile._#Function._compute_scope_vars_loop#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compute_scope_vars:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compute_scope_vars#0#loop#end
+compile._#Function._compute_scope_vars#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.mk_aware
+compile._#Function._compute_scope_vars#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compute_scope_vars#0#loop#end
+ jmp compile._#Function._compute_scope_vars#0#loop#start
+compile._#Function._compute_scope_vars#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._first_stmt_off
+ mov r13, rax ; (SET)
+ cmp r13, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compute_scope_vars#1#wrap#0#if#end
+ jmp compile._#Function._compute_scope_vars#end
+ jmp compile._#Function._compute_scope_vars#1#wrap#end
+compile._#Function._compute_scope_vars#1#wrap#0#if#end:
+compile._#Function._compute_scope_vars#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov qword [rbp - 88], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compute_scope_vars_loop
+
+compile._#Function._compute_scope_vars#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._call_label:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 104 ; Create stack space for local variable tmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 89 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 184], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ mov rcx, qword [rbp - 184] ; (SET)
+ mov rdx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Function._call_label#end
+
+compile._#Function._call_label#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._build_func:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 104 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov qword [rbp - 176], r11 ; (SET)
+ mov qword [rbp - 184], r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ mov rcx, qword [rbp - 184] ; (SET)
+ mov rdx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.init
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 136 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._build_func#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._build_func#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_h
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov qword [rbp - 176], r13 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_h
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._build_func#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_h
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Function._build_func#0#wrap#end
+compile._#Function._build_func#0#wrap#0#if#end:
+compile._#Function._build_func#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.place_base_label
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._build_func#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._build_func#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._build_func#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._build_func#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._build_func#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._build_func#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._build_func#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._build_func#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compute_scope_vars
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._build_func#9#loop#end
+compile._#Function._build_func#9#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], rsi ; (SET)
+ mov qword [rbp - 176], r14 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ cmp al, 0
+ je compile._#Function._build_func#9#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Var.top_ptrc
+ mov r15, rax ; (SET)
+ sub rsp, 4 ; Create stack space for local variable set
+ mov dword [rbp - 164], 0 ; (SET)
+ mov ebx, dword [rbp - 164] ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov dword [rbp - 164], ebx ; (SET)
+ mov esi, dword [rbp - 164] ; (SET_PRM_R)
+ mov dword [r15], esi ; (SET)
+ jmp compile._#Function._build_func#9#loop#0#wrap#end
+compile._#Function._build_func#9#loop#0#wrap#0#if#end:
+compile._#Function._build_func#9#loop#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov qword [rbp - 176], r13 ; (SET)
+ mov qword [rbp - 184], r13 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ mov rcx, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.mk_set_var
+compile._#Function._build_func#9#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._build_func#9#loop#end
+ jmp compile._#Function._build_func#9#loop#start
+compile._#Function._build_func#9#loop#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._build_func#end
+
+compile._#Function._build_func#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._end_func:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._end_func#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.place_end_label
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._end_func#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._end_func#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._end_func#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._end_func#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._end_func#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._end_func#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._end_func#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._end_func#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Function._end_func#9#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end
+
+compile._#Function._end_func#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._first_stmt_off:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._first_stmt_off#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rbx, r11 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov rax, rbx ; (SET)
+ jmp compile._#Function._first_stmt_off#end
+ jmp compile._#Function._first_stmt_off#0#wrap#end
+compile._#Function._first_stmt_off#0#wrap#0#if#end:
+compile._#Function._first_stmt_off#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_DLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._first_stmt_off#1#wrap#0#if#end
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._first_stmt_off#1#wrap#0#if#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ jmp compile._#Function._first_stmt_off#1#wrap#0#if#0#wrap#end
+compile._#Function._first_stmt_off#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._first_stmt_off#1#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._first_stmt_off#1#wrap#end
+compile._#Function._first_stmt_off#1#wrap#0#if#end:
+compile._#Function._first_stmt_off#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_TLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._first_stmt_off#2#wrap#0#if#end
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ jmp compile._#Function._first_stmt_off#2#wrap#end
+compile._#Function._first_stmt_off#2#wrap#0#if#end:
+compile._#Function._first_stmt_off#2#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Function._first_stmt_off#end
+
+compile._#Function._first_stmt_off#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._first_stmt_off
+ mov r13, rax ; (SET)
+ sub rsp, 104 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r10 ; (SET)
+ mov qword [rbp - 176], r11 ; (SET)
+ mov qword [rbp - 184], r12 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ mov rcx, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ sub rsp, 104
+ call compile._#Function._build_func
+ ; putting struct address into register
+ lea rdi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ add rsp, 104
+ sub rsp, 104 ; Create stack space for local variable fscope
+ ; putting struct address into register
+ lea rdi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ cmp r13, 0
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r14 ; (SET)
+ mov qword [rbp - 296], r13 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ mov rdx, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_statements
+ jmp compile._#Function._compile#0#wrap#end
+compile._#Function._compile#0#wrap#0#if#end:
+compile._#Function._compile#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r12 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._end_func
+
+compile._#Function._compile#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_statements:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ mov r14, qword [rel NULL] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_statements#0#loop#end
+compile._#Function._compile_statements#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_FLOW_CONTROL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_statements#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_flow_control
+ jmp compile._#Function._compile_statements#0#loop#0#wrap#end
+compile._#Function._compile_statements#0#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ASM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_statements#0#loop#0#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_statements#0#loop#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_statements#0#loop#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Function._compile_statements#0#loop#0#wrap#end
+compile._#Function._compile_statements#0#loop#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_DECL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_statements#0#loop#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_decl
+ jmp compile._#Function._compile_statements#0#loop#0#wrap#end
+compile._#Function._compile_statements#0#loop#0#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_statements#0#loop#0#wrap#3#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r14 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ cmp al, 0
+ je compile._#Function._compile_statements#0#loop#0#wrap#3#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov byte [rbp - 249], 1 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov cl, byte [rbp - 249] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_to
+ jmp compile._#Function._compile_statements#0#loop#0#wrap#3#if#0#wrap#end
+compile._#Function._compile_statements#0#loop#0#wrap#3#if#0#wrap#0#if#end:
+compile._#Function._compile_statements#0#loop#0#wrap#3#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_statements#0#loop#0#wrap#end
+compile._#Function._compile_statements#0#loop#0#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_IF_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_statements#0#loop#0#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov qword [rbp - 88], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_if
+ mov r13, rax ; (SET)
+ jmp compile._#Function._compile_statements#0#loop#0#wrap#end
+compile._#Function._compile_statements#0#loop#0#wrap#4#if#end:
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_LOOP_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_statements#0#loop#0#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_loop
+ jmp compile._#Function._compile_statements#0#loop#0#wrap#end
+compile._#Function._compile_statements#0#loop#0#wrap#5#if#end:
+compile._#Function._compile_statements#0#loop#0#wrap#end:
+compile._#Function._compile_statements#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_statements#0#loop#end
+ jmp compile._#Function._compile_statements#0#loop#start
+compile._#Function._compile_statements#0#loop#end:
+
+compile._#Function._compile_statements#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_cf_pre:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, qword [rel NULL] ; (SET)
+ mov r14b, 0 ; (SET)
+ sub rsp, 88 ; Create stack space for local variable v
+ mov r15, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#0#loop#end
+compile._#Function._compile_cf_pre#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], r15 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_FLOW_CONTROL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_flow_control
+ jmp compile._#Function._compile_cf_pre#0#loop#0#wrap#end
+compile._#Function._compile_cf_pre#0#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ASM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#0#loop#0#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_pre#0#loop#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_pre#0#loop#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Function._compile_cf_pre#0#loop#0#wrap#end
+compile._#Function._compile_cf_pre#0#loop#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_DECL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#0#loop#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_decl
+ jmp compile._#Function._compile_cf_pre#0#loop#0#wrap#end
+compile._#Function._compile_cf_pre#0#loop#0#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ mov qword [rbp - 256], r13 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable count
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov r8, r15 ; (SET)
+ add r8, 1 ; (STD_OP)
+ cmp r8, qword [rbp - 152]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#0#wrap#0#if#end
+ mov r14b, 1 ; (SET)
+ jmp compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#0#wrap#end
+compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ cmp al, 0
+ je compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#0#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov byte [rbp - 169], 1 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ mov cl, byte [rbp - 169] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_to
+ jmp compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#0#wrap#1#if#0#wrap#end
+compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#0#wrap#1#if#0#wrap#0#if#end:
+compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#0#wrap#1#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rax ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#0#wrap#end
+compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#0#wrap#1#if#end:
+compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#0#wrap#end:
+ jmp compile._#Function._compile_cf_pre#0#loop#0#wrap#end
+compile._#Function._compile_cf_pre#0#loop#0#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_IF_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#0#loop#0#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r12 ; (SET)
+ mov qword [rbp - 176], r15 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ mov rdx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_if
+ mov r15, rax ; (SET)
+ jmp compile._#Function._compile_cf_pre#0#loop#0#wrap#end
+compile._#Function._compile_cf_pre#0#loop#0#wrap#4#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_LOOP_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#0#loop#0#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_loop
+ jmp compile._#Function._compile_cf_pre#0#loop#0#wrap#end
+compile._#Function._compile_cf_pre#0#loop#0#wrap#5#if#end:
+compile._#Function._compile_cf_pre#0#loop#0#wrap#end:
+compile._#Function._compile_cf_pre#0#loop#rep:
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#0#loop#end
+ jmp compile._#Function._compile_cf_pre#0#loop#start
+compile._#Function._compile_cf_pre#0#loop#end:
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#1#wrap#0#if#end
+ mov r14b, 0 ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 153], rax ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_bool
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r15, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end_label
+ sub rsp, 8 ; Create stack space for local variable lab
+ mov qword [rbp - 152], rax ; (SET)
+ mov rcx, qword [rbp - 96] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#bool#end
+ mov rcx, qword [rbp - 88] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r15 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r15 ; (SET)
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r15 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+ mov rcx, qword [rbp - 96] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#Var.test
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r15 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r15 ; (SET)
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r15 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov r14b, 1 ; (SET)
+ jmp compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_cf_pre#1#wrap#0#if#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 153], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_pre#1#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov byte [rbp - 161], 1 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov cl, byte [rbp - 161] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_to
+ jmp compile._#Function._compile_cf_pre#1#wrap#0#if#1#wrap#end
+compile._#Function._compile_cf_pre#1#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_cf_pre#1#wrap#0#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_cf_pre#1#wrap#end
+compile._#Function._compile_cf_pre#1#wrap#0#if#end:
+compile._#Function._compile_cf_pre#1#wrap#end:
+
+ ; STARTING RETURN
+ mov al, r14b ; (SET)
+ jmp compile._#Function._compile_cf_pre#end
+
+compile._#Function._compile_cf_pre#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_cf_post:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ mov r14b, sil ; (SET)
+ mov r15, qword [rel NULL] ; (SET)
+ sub rsp, 1 ; Create stack space for local variable last_var
+ mov byte [rbp - 57], 0 ; (SET)
+ sub rsp, 88 ; Create stack space for local variable v
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 153], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 153] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#0#loop#end
+compile._#Function._compile_cf_post#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rsi, qword [rbp - 153] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r15, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_FLOW_CONTROL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov qword [rbp - 169], r11 ; (SET)
+ mov qword [rbp - 177], r15 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ mov rcx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_flow_control
+ jmp compile._#Function._compile_cf_post#0#loop#0#wrap#end
+compile._#Function._compile_cf_post#0#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ASM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#0#loop#0#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_post#0#loop#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_post#0#loop#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Function._compile_cf_post#0#loop#0#wrap#end
+compile._#Function._compile_cf_post#0#loop#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_DECL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#0#loop#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov qword [rbp - 169], r11 ; (SET)
+ mov qword [rbp - 177], r15 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ mov rcx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_decl
+ jmp compile._#Function._compile_cf_post#0#loop#0#wrap#end
+compile._#Function._compile_cf_post#0#loop#0#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 249], r10 ; (SET)
+ mov qword [rbp - 257], r11 ; (SET)
+ mov qword [rbp - 265], r15 ; (SET)
+ mov rax, qword [rbp - 249] ; (SET)
+ mov rbx, qword [rbp - 257] ; (SET)
+ mov rcx, qword [rbp - 265] ; (SET)
+ lea rsp, [rbp - 241] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 241] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 241] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable count
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov r8, qword [rbp - 153] ; (SET)
+ add r8, 1 ; (STD_OP)
+ cmp r8, qword [rbp - 161]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#0#wrap#0#if#end
+ mov byte [rbp - 57], 1 ; (SET)
+ jmp compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#0#wrap#end
+compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 169], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ cmp al, 0
+ je compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#0#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 169], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov byte [rbp - 178], 1 ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ mov cl, byte [rbp - 178] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_to
+ jmp compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#0#wrap#1#if#0#wrap#end
+compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#0#wrap#1#if#0#wrap#0#if#end:
+compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#0#wrap#1#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 169], rax ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#0#wrap#end
+compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#0#wrap#1#if#end:
+compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#0#wrap#end:
+ jmp compile._#Function._compile_cf_post#0#loop#0#wrap#end
+compile._#Function._compile_cf_post#0#loop#0#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_IF_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#0#loop#0#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov qword [rbp - 169], r11 ; (SET)
+ mov qword [rbp - 177], r13 ; (SET)
+ mov rsi, qword [rbp - 153] ; (SET_PRM_R)
+ mov qword [rbp - 185], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ mov rcx, qword [rbp - 177] ; (SET)
+ mov rdx, qword [rbp - 185] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_if
+ mov qword [rbp - 153], rax ; (SET)
+ jmp compile._#Function._compile_cf_post#0#loop#0#wrap#end
+compile._#Function._compile_cf_post#0#loop#0#wrap#4#if#end:
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_LOOP_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#0#loop#0#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r10 ; (SET)
+ mov qword [rbp - 169], r11 ; (SET)
+ mov qword [rbp - 177], r15 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ mov rcx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_loop
+ jmp compile._#Function._compile_cf_post#0#loop#0#wrap#end
+compile._#Function._compile_cf_post#0#loop#0#wrap#5#if#end:
+compile._#Function._compile_cf_post#0#loop#0#wrap#end:
+compile._#Function._compile_cf_post#0#loop#rep:
+ mov rbx, qword [rbp - 153] ; (SET)
+ inc qword qword [rbp - 153] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 153] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#0#loop#end
+ jmp compile._#Function._compile_cf_post#0#loop#start
+compile._#Function._compile_cf_post#0#loop#end:
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#1#wrap#0#if#end
+ mov byte [rbp - 57], 0 ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 146], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 154], rax ; (SET)
+ mov rax, qword [rbp - 154] ; (SET)
+ lea rsp, [rbp - 146] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_bool
+ mov bl, byte [rbp - 146] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable buf
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], r11 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end_label
+ sub rsp, 8 ; Create stack space for local variable lab
+ mov qword [rbp - 161], rax ; (SET)
+ mov rcx, qword [rbp - 97] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#bool#end
+ mov rcx, qword [rbp - 89] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 153] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 153] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rsi, qword [rbp - 161] ; (SET_PRM_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 153] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+ mov rcx, qword [rbp - 97] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 169], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#Var.test
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 153] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 153] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rsi, qword [rbp - 161] ; (SET_PRM_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 153] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 161] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov byte [rbp - 57], 1 ; (SET)
+ jmp compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_cf_post#1#wrap#0#if#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 146], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 154], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 162], rsi ; (SET)
+ mov rax, qword [rbp - 154] ; (SET)
+ mov rbx, qword [rbp - 162] ; (SET)
+ lea rsp, [rbp - 146] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 146] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#1#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 153], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov byte [rbp - 162], 1 ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ mov cl, byte [rbp - 162] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_to
+ jmp compile._#Function._compile_cf_post#1#wrap#0#if#1#wrap#end
+compile._#Function._compile_cf_post#1#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_cf_post#1#wrap#0#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 153], rax ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_cf_post#1#wrap#end
+compile._#Function._compile_cf_post#1#wrap#0#if#end:
+compile._#Function._compile_cf_post#1#wrap#end:
+ mov cl, byte [rbp - 57] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#2#wrap#0#if#end
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ sub rsp, 8 ; Create stack space for local variable off
+ mov qword [rbp - 153], rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rsi, qword [rbp - 153] ; (SET_PRM_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ mov r15, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 249], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 257], r10 ; (SET)
+ mov qword [rbp - 265], r11 ; (SET)
+ mov qword [rbp - 273], r15 ; (SET)
+ mov rax, qword [rbp - 257] ; (SET)
+ mov rbx, qword [rbp - 265] ; (SET)
+ mov rcx, qword [rbp - 273] ; (SET)
+ lea rsp, [rbp - 249] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 241] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ mov rbx, qword [rbp - 249] ; (SET)
+ lea rsp, [rbp - 241] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 241] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable buf
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 169], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], r11 ; (SET)
+ mov rax, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end_label
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for local variable lab
+ mov qword [rbp - 169], rax ; (SET)
+ mov rcx, qword [rbp - 97] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rcx, qword [rbp - 89] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 170], al ; Mov after compare
+ cmp byte byte [rbp - 170], 0
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 161] ; (SET_PRM_R)
+ mov qword [rbp - 185], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 193], rsi ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ mov rbx, qword [rbp - 193] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 161] ; (SET_PRM_R)
+ mov qword [rbp - 185], rsi ; (SET)
+ mov rsi, qword [rbp - 169] ; (SET_PRM_R)
+ mov qword [rbp - 193], rsi ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ mov rbx, qword [rbp - 193] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 161] ; (SET_PRM_R)
+ mov qword [rbp - 185], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 193], rsi ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ mov rbx, qword [rbp - 193] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+ mov rcx, qword [rbp - 97] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 185], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 193], rsi ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ mov rbx, qword [rbp - 193] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call compile._#Var.test
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 161] ; (SET_PRM_R)
+ mov qword [rbp - 185], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 193], rsi ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ mov rbx, qword [rbp - 193] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 161] ; (SET_PRM_R)
+ mov qword [rbp - 185], rsi ; (SET)
+ mov rsi, qword [rbp - 169] ; (SET_PRM_R)
+ mov qword [rbp - 193], rsi ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ mov rbx, qword [rbp - 193] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 161] ; (SET_PRM_R)
+ mov qword [rbp - 185], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 193], rsi ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ mov rbx, qword [rbp - 193] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 169] ; (SET_PRM_R)
+ mov qword [rbp - 185], rsi ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 178], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 186], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 194], rsi ; (SET)
+ mov rax, qword [rbp - 186] ; (SET)
+ mov rbx, qword [rbp - 194] ; (SET)
+ lea rsp, [rbp - 178] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov r8b, byte [rbp - 178] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 185], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 193], rsi ; (SET)
+ mov byte [rbp - 194], 1 ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ mov rbx, qword [rbp - 193] ; (SET)
+ mov cl, byte [rbp - 194] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_to
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#1#wrap#end
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 177], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 145] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 185], rax ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 169] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#end
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_cf_post#2#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_cf_post#2#wrap#end
+compile._#Function._compile_cf_post#2#wrap#0#if#end:
+compile._#Function._compile_cf_post#2#wrap#end:
+
+compile._#Function._compile_cf_post#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_if_if:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_if_if#0#wrap#0#if#end
+ jmp compile._#Function._compile_if_if#end
+ jmp compile._#Function._compile_if_if#0#wrap#end
+compile._#Function._compile_if_if#0#wrap#0#if#end:
+compile._#Function._compile_if_if#0#wrap#end:
+ sub rsp, 104 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_if_if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ sub rsp, 104
+ call compile._#Scope.gen_sub
+ ; putting struct address into register
+ lea rdi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ add rsp, 104
+ sub rsp, 104 ; Create stack space for local variable s
+ ; putting struct address into register
+ lea rdi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], 0 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_SLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_if_if#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r13 ; (SET)
+ mov qword [rbp - 296], 0 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ mov rdx, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compute_scope_vars_loop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r12 ; (SET)
+ mov qword [rbp - 296], 1 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ mov rdx, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compute_scope_vars_loop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r13 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_cf_pre
+ mov rbx, r14 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ jmp compile._#Function._compile_if_if#2#wrap#end
+compile._#Function._compile_if_if#2#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r12 ; (SET)
+ mov qword [rbp - 296], 0 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ mov rdx, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compute_scope_vars_loop
+ jmp compile._#Function._compile_if_if#2#wrap#end
+compile._#Function._compile_if_if#2#wrap#1#if#end:
+compile._#Function._compile_if_if#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r12 ; (SET)
+ mov qword [rbp - 296], r14 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ mov rdx, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_statements
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r15, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r15 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_if_if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r11 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end_label
+ sub rsp, 8 ; Create stack space for local variable lab
+ mov qword [rbp - 272], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 280], r15 ; (SET)
+ mov rsi, qword [rbp - 272] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ mov rbx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 280], r15 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_if_if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ mov rbx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 272] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rax ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.place_end_label
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rax ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end
+
+compile._#Function._compile_if_if#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_if_elif:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ELIF_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_if_elif#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Function._compile_if_elif#end
+ jmp compile._#Function._compile_if_elif#0#wrap#end
+compile._#Function._compile_if_elif#0#wrap#0#if#end:
+compile._#Function._compile_if_elif#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_if_if
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._#Function._compile_if_elif#end
+
+compile._#Function._compile_if_elif#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_if_else:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ELSE_BLOCK]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_if_else#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Function._compile_if_else#end
+ jmp compile._#Function._compile_if_else#0#wrap#end
+compile._#Function._compile_if_else#0#wrap#0#if#end:
+compile._#Function._compile_if_else#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_if_if
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._#Function._compile_if_else#end
+
+compile._#Function._compile_if_else#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_if:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ sub rsp, 104 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ sub rsp, 104
+ call compile._#Scope.gen_sub
+ ; putting struct address into register
+ lea rdi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ add rsp, 104
+ sub rsp, 104 ; Create stack space for local variable wrap
+ ; putting struct address into register
+ lea rdi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], r13 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r14 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_if_if
+ mov r15b, 1 ; (SET)
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_if#1#loop#end
+compile._#Function._compile_if#1#loop#start:
+ mov rbx, r13 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov r13, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_if#1#loop#0#wrap#0#if#end
+ mov r15b, 0 ; (SET)
+ jmp compile._#Function._compile_if#1#loop#0#wrap#end
+compile._#Function._compile_if#1#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], r13 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 265], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 273], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 281], rsi ; (SET)
+ mov qword [rbp - 289], r14 ; (SET)
+ mov rax, qword [rbp - 273] ; (SET)
+ mov rbx, qword [rbp - 281] ; (SET)
+ mov rcx, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 265] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_if_elif
+ mov bl, byte [rbp - 265] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_if#1#loop#0#wrap#1#if#0#wrap#0#if#end
+ mov r15b, 0 ; (SET)
+ jmp compile._#Function._compile_if#1#loop#0#wrap#1#if#0#wrap#end
+compile._#Function._compile_if#1#loop#0#wrap#1#if#0#wrap#0#if#end:
+compile._#Function._compile_if#1#loop#0#wrap#1#if#0#wrap#end:
+ jmp compile._#Function._compile_if#1#loop#0#wrap#end
+compile._#Function._compile_if#1#loop#0#wrap#1#if#end:
+compile._#Function._compile_if#1#loop#0#wrap#end:
+compile._#Function._compile_if#1#loop#rep:
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_if#1#loop#end
+ jmp compile._#Function._compile_if#1#loop#start
+compile._#Function._compile_if#1#loop#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_if#2#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 265], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 273], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 281], rsi ; (SET)
+ mov qword [rbp - 289], r14 ; (SET)
+ mov rax, qword [rbp - 273] ; (SET)
+ mov rbx, qword [rbp - 281] ; (SET)
+ mov rcx, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 265] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_if_else
+ mov bl, byte [rbp - 265] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_if#2#wrap#0#if#0#wrap#0#if#end
+ mov rbx, r13 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov r13, rbx ; (SET)
+ jmp compile._#Function._compile_if#2#wrap#0#if#0#wrap#end
+compile._#Function._compile_if#2#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_if#2#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_if#2#wrap#end
+compile._#Function._compile_if#2#wrap#0#if#end:
+compile._#Function._compile_if#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.place_end_label
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end
+ mov rbx, r13 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r13, rbx ; (SET)
+
+ ; STARTING RETURN
+ mov rax, r13 ; (SET)
+ jmp compile._#Function._compile_if#end
+
+compile._#Function._compile_if#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_loop:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 104 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_loop#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ sub rsp, 104
+ call compile._#Scope.gen_sub
+ ; putting struct address into register
+ lea rdi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ add rsp, 104
+ sub rsp, 104 ; Create stack space for local variable ls
+ ; putting struct address into register
+ lea rdi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ mov r13, qword [rel NULL] ; (SET)
+ mov r14, qword [rel NULL] ; (SET)
+ mov r15, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], 0 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable first
+ mov qword [rbp - 272], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 272] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_SLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 273], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 272] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 281], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 289], rsi ; (SET)
+ mov rax, qword [rbp - 281] ; (SET)
+ mov rbx, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 273] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 273] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ mov r13, qword [rbp - 272] ; (SET)
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ jmp compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 273], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 272] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 281], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 289], rsi ; (SET)
+ mov rax, qword [rbp - 281] ; (SET)
+ mov rbx, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 273] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 273] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#end
+ mov r14, qword [rbp - 272] ; (SET)
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ jmp compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_loop#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_loop#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_loop#1#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_loop#1#wrap#end
+compile._#Function._compile_loop#1#wrap#0#if#end:
+compile._#Function._compile_loop#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#2#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], 1 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable second
+ mov qword [rbp - 272], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 272] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_SLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#2#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 273], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 272] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 281], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_loop#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 289], rsi ; (SET)
+ mov rax, qword [rbp - 281] ; (SET)
+ mov rbx, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 273] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 273] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ mov r14, qword [rbp - 272] ; (SET)
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ jmp compile._#Function._compile_loop#2#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_loop#2#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_loop#2#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_loop#2#wrap#0#if#0#wrap#end
+compile._#Function._compile_loop#2#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_loop#2#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_loop#2#wrap#end
+compile._#Function._compile_loop#2#wrap#0#if#end:
+compile._#Function._compile_loop#2#wrap#end:
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r13 ; (SET)
+ mov qword [rbp - 296], 0 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ mov rdx, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compute_scope_vars_loop
+ jmp compile._#Function._compile_loop#3#wrap#end
+compile._#Function._compile_loop#3#wrap#0#if#end:
+compile._#Function._compile_loop#3#wrap#end:
+ cmp r14, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#4#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r14 ; (SET)
+ mov qword [rbp - 296], 0 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ mov rdx, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compute_scope_vars_loop
+ jmp compile._#Function._compile_loop#4#wrap#end
+compile._#Function._compile_loop#4#wrap#0#if#end:
+compile._#Function._compile_loop#4#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], r12 ; (SET)
+ mov qword [rbp - 296], r15 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ mov rdx, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compute_scope_vars_loop
+ sub rsp, 1 ; Create stack space for local variable has_pre
+ mov byte [rbp - 265], 0 ; (SET)
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#5#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 273], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 281], rsi ; (SET)
+ mov qword [rbp - 289], r13 ; (SET)
+ mov rax, qword [rbp - 273] ; (SET)
+ mov rbx, qword [rbp - 281] ; (SET)
+ mov rcx, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 265] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_cf_pre
+ mov byte [rbp - 265], al ; (SET)
+ jmp compile._#Function._compile_loop#5#wrap#end
+compile._#Function._compile_loop#5#wrap#0#if#end:
+compile._#Function._compile_loop#5#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 273], rax ; (SET)
+ mov rax, qword [rbp - 273] ; (SET)
+ lea rsp, [rbp - 265] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.place_start_label
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 273], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 281], rsi ; (SET)
+ mov qword [rbp - 289], r12 ; (SET)
+ mov qword [rbp - 297], r15 ; (SET)
+ mov rax, qword [rbp - 273] ; (SET)
+ mov rbx, qword [rbp - 281] ; (SET)
+ mov rcx, qword [rbp - 289] ; (SET)
+ mov rdx, qword [rbp - 297] ; (SET)
+ lea rsp, [rbp - 265] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_statements
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 273], rax ; (SET)
+ mov rax, qword [rbp - 273] ; (SET)
+ lea rsp, [rbp - 265] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.place_rep_label
+ cmp r14, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#6#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 273], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 281], rsi ; (SET)
+ mov qword [rbp - 289], r13 ; (SET)
+ mov qword [rbp - 297], r14 ; (SET)
+ mov sil, byte [rbp - 265] ; (SET_PRM_R)
+ mov byte [rbp - 298], sil ; (SET)
+ mov rax, qword [rbp - 273] ; (SET)
+ mov rbx, qword [rbp - 281] ; (SET)
+ mov rcx, qword [rbp - 289] ; (SET)
+ mov rdx, qword [rbp - 297] ; (SET)
+ mov sil, byte [rbp - 298] ; (SET)
+ lea rsp, [rbp - 265] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_cf_post
+ jmp compile._#Function._compile_loop#6#wrap#end
+compile._#Function._compile_loop#6#wrap#0#if#end:
+ mov cl, byte [rbp - 265] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_loop#6#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ sub rsp, 8 ; Create stack space for local variable idx
+ mov qword [rbp - 273], rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 281], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 289], rsi ; (SET)
+ mov rsi, qword [rbp - 273] ; (SET_PRM_R)
+ mov qword [rbp - 297], rsi ; (SET)
+ mov rax, qword [rbp - 289] ; (SET)
+ mov rbx, qword [rbp - 297] ; (SET)
+ lea rsp, [rbp - 281] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 281] ; (SET)
+ lea rsp, [rbp - 273] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for local variable last
+ mov qword [rbp - 281], rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 377], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 385], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 393], rsi ; (SET)
+ mov rsi, qword [rbp - 281] ; (SET_PRM_R)
+ mov qword [rbp - 401], rsi ; (SET)
+ mov rax, qword [rbp - 385] ; (SET)
+ mov rbx, qword [rbp - 393] ; (SET)
+ mov rcx, qword [rbp - 401] ; (SET)
+ lea rsp, [rbp - 377] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 369] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ mov rbx, qword [rbp - 377] ; (SET)
+ lea rsp, [rbp - 369] ; Free stack space (freeing tmp variables)
+ sub rsp, 88 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rdi, [rbp - 457] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 369] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for local variable buf
+ mov rsi, qword [rbp - 248] ; (SET_PRM_R)
+ mov qword [rbp - 465], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 473], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 481], rax ; (SET)
+ mov rax, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end_label
+ mov rbx, qword [rbp - 473] ; (SET)
+ lea rsp, [rbp - 465] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for local variable lab
+ mov qword [rbp - 473], rax ; (SET)
+ mov rcx, qword [rbp - 409] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov rcx, qword [rbp - 401] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov byte [rbp - 474], al ; Mov after compare
+ cmp byte byte [rbp - 474], 0
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ cmp r8b, 0
+ je compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 465] ; (SET_PRM_R)
+ mov qword [rbp - 489], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 497], rsi ; (SET)
+ mov rax, qword [rbp - 489] ; (SET)
+ mov rbx, qword [rbp - 497] ; (SET)
+ lea rsp, [rbp - 481] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 465] ; (SET_PRM_R)
+ mov qword [rbp - 489], rsi ; (SET)
+ mov rsi, qword [rbp - 473] ; (SET_PRM_R)
+ mov qword [rbp - 497], rsi ; (SET)
+ mov rax, qword [rbp - 489] ; (SET)
+ mov rbx, qword [rbp - 497] ; (SET)
+ lea rsp, [rbp - 481] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 465] ; (SET_PRM_R)
+ mov qword [rbp - 489], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 497], rsi ; (SET)
+ mov rax, qword [rbp - 489] ; (SET)
+ mov rbx, qword [rbp - 497] ; (SET)
+ lea rsp, [rbp - 481] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_loop#6#wrap#1#if#0#wrap#end
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#0#if#end:
+ mov rcx, qword [rbp - 409] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_loop#6#wrap#1#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 457] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 489], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 497], rsi ; (SET)
+ mov rax, qword [rbp - 489] ; (SET)
+ mov rbx, qword [rbp - 497] ; (SET)
+ lea rsp, [rbp - 481] ; Free stack space (freeing tmp variables)
+ call compile._#Var.test
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 465] ; (SET_PRM_R)
+ mov qword [rbp - 489], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_loop#6#wrap#1#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 497], rsi ; (SET)
+ mov rax, qword [rbp - 489] ; (SET)
+ mov rbx, qword [rbp - 497] ; (SET)
+ lea rsp, [rbp - 481] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 465] ; (SET_PRM_R)
+ mov qword [rbp - 489], rsi ; (SET)
+ mov rsi, qword [rbp - 473] ; (SET_PRM_R)
+ mov qword [rbp - 497], rsi ; (SET)
+ mov rax, qword [rbp - 489] ; (SET)
+ mov rbx, qword [rbp - 497] ; (SET)
+ lea rsp, [rbp - 481] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 465] ; (SET_PRM_R)
+ mov qword [rbp - 489], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_loop#6#wrap#1#if#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 497], rsi ; (SET)
+ mov rax, qword [rbp - 489] ; (SET)
+ mov rbx, qword [rbp - 497] ; (SET)
+ lea rsp, [rbp - 481] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_loop#6#wrap#1#if#0#wrap#end
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#1#if#end:
+compile._#Function._compile_loop#6#wrap#1#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 473] ; (SET_PRM_R)
+ mov qword [rbp - 489], rsi ; (SET)
+ mov rax, qword [rbp - 489] ; (SET)
+ lea rsp, [rbp - 481] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 482], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 490], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 457] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 498], rsi ; (SET)
+ mov rax, qword [rbp - 490] ; (SET)
+ mov rbx, qword [rbp - 498] ; (SET)
+ lea rsp, [rbp - 482] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov r8b, byte [rbp - 482] ; (SET)
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_loop#6#wrap#1#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 489], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 457] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 497], rsi ; (SET)
+ mov byte [rbp - 498], 1 ; (SET)
+ mov rax, qword [rbp - 489] ; (SET)
+ mov rbx, qword [rbp - 497] ; (SET)
+ mov cl, byte [rbp - 498] ; (SET)
+ lea rsp, [rbp - 481] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_to
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_loop#6#wrap#1#if#1#wrap#end
+compile._#Function._compile_loop#6#wrap#1#if#1#wrap#0#if#end:
+compile._#Function._compile_loop#6#wrap#1#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 481], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 457] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 489], rax ; (SET)
+ mov rax, qword [rbp - 489] ; (SET)
+ lea rsp, [rbp - 481] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ mov rbx, qword [rbp - 481] ; (SET)
+ lea rsp, [rbp - 473] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_loop#6#wrap#end
+compile._#Function._compile_loop#6#wrap#1#if#end:
+compile._#Function._compile_loop#6#wrap#end:
+ sub rsp, 8 ; Create stack space for local variable cb
+ mov rsi, qword [rbp - 248] ; (SET_PRM_R)
+ mov qword [rbp - 273], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 273] ; (SET_PRM_R)
+ mov qword [rbp - 281], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_loop#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 289], rsi ; (SET)
+ mov rax, qword [rbp - 281] ; (SET)
+ mov rbx, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 273] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 281], rax ; (SET)
+ mov rax, qword [rbp - 281] ; (SET)
+ lea rsp, [rbp - 273] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.start_label
+ sub rsp, 8 ; Create stack space for local variable lab
+ mov qword [rbp - 281], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 273] ; (SET_PRM_R)
+ mov qword [rbp - 289], rsi ; (SET)
+ mov rsi, qword [rbp - 281] ; (SET_PRM_R)
+ mov qword [rbp - 297], rsi ; (SET)
+ mov rax, qword [rbp - 289] ; (SET)
+ mov rbx, qword [rbp - 297] ; (SET)
+ lea rsp, [rbp - 281] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 273] ; (SET_PRM_R)
+ mov qword [rbp - 289], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_loop#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 297], rsi ; (SET)
+ mov rax, qword [rbp - 289] ; (SET)
+ mov rbx, qword [rbp - 297] ; (SET)
+ lea rsp, [rbp - 281] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 281] ; (SET_PRM_R)
+ mov qword [rbp - 289], rsi ; (SET)
+ mov rax, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 281] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 289], rax ; (SET)
+ mov rax, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 281] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.place_end_label
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 289], rax ; (SET)
+ mov rax, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 281] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end
+
+compile._#Function._compile_loop#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._check_return:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._check_return#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ cmp r12, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._check_return#0#wrap#0#if#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov cx, word [rdi] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VLIST]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Function._check_return#0#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._check_return#0#wrap#0#if#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r13, qword [rsi] ; (SET)
+ jmp compile._#Function._check_return#0#wrap#0#if#0#wrap#end
+compile._#Function._check_return#0#wrap#0#if#0#wrap#0#if#end:
+ mov r13, 1 ; (SET)
+ jmp compile._#Function._check_return#0#wrap#0#if#0#wrap#end
+compile._#Function._check_return#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Function._check_return#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._check_return#0#wrap#end
+compile._#Function._check_return#0#wrap#0#if#end:
+compile._#Function._check_return#0#wrap#end:
+ cmp r13, r12
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._check_return#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._#Function._check_return#end
+ jmp compile._#Function._check_return#1#wrap#end
+compile._#Function._check_return#1#wrap#0#if#end:
+compile._#Function._check_return#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._check_return#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._check_return#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._check_return#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._check_return#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._check_return#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._print
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Function._check_return#end
+
+compile._#Function._check_return#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_return_vals:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_return_vals#0#wrap#0#if#end
+ jmp compile._#Function._compile_return_vals#end
+ jmp compile._#Function._compile_return_vals#0#wrap#end
+compile._#Function._compile_return_vals#0#wrap#0#if#end:
+compile._#Function._compile_return_vals#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_return_vals#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ jmp compile._#Function._compile_return_vals#1#wrap#end
+compile._#Function._compile_return_vals#1#wrap#0#if#end:
+compile._#Function._compile_return_vals#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_return_vals#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 88 ; Create stack space for local variable cmp
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_return_vals#3#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 32 ; Create stack space for local variable tmps
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov qword [rbp - 280], 88 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ mov r15, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#end
+compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], r15 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], r15 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 360], r11 ; (SET)
+ mov qword [rbp - 368], r13 ; (SET)
+ mov rax, qword [rbp - 360] ; (SET)
+ mov rbx, qword [rbp - 368] ; (SET)
+ lea rsp, [rbp - 352] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 360], r10 ; (SET)
+ mov qword [rbp - 368], r11 ; (SET)
+ mov qword [rbp - 376], r14 ; (SET)
+ mov rax, qword [rbp - 360] ; (SET)
+ mov rbx, qword [rbp - 368] ; (SET)
+ mov rcx, qword [rbp - 376] ; (SET)
+ lea rsp, [rbp - 352] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 265], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 273], rax ; (SET)
+ mov rax, qword [rbp - 273] ; (SET)
+ lea rsp, [rbp - 265] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 265] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#0#wrap#0#if#end
+ sub rsp, 4 ; Create stack space for local variable pp
+ mov dword [rbp - 268], 0 ; (SET)
+ mov ebx, dword [rbp - 268] ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov dword [rbp - 268], ebx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 276], rax ; (SET)
+ mov rax, qword [rbp - 276] ; (SET)
+ lea rsp, [rbp - 268] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 276], rax ; (SET)
+ mov esi, dword [rbp - 268] ; (SET_PRM_R)
+ mov dword [rbp - 280], esi ; (SET)
+ mov rax, qword [rbp - 276] ; (SET)
+ mov ebx, dword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 268] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#0#wrap#end
+compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ jmp compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#0#wrap#end
+compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#0#wrap#1#if#end:
+compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#rep:
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#end
+ jmp compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#start
+compile._#Function._compile_return_vals#3#wrap#0#if#1#loop#end:
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 272], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 272] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_return_vals#3#wrap#0#if#2#loop#end
+compile._#Function._compile_return_vals#3#wrap#0#if#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rsi, qword [rbp - 272] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ mov rbx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 280], rax ; (SET)
+ mov rsi, qword [rbp - 272] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ mov rbx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 280], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov qword [rbp - 296], r15 ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ mov rbx, qword [rbp - 288] ; (SET)
+ mov rcx, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 280], r15 ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+compile._#Function._compile_return_vals#3#wrap#0#if#2#loop#rep:
+ mov rbx, qword [rbp - 272] ; (SET)
+ inc qword qword [rbp - 272] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 272] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_return_vals#3#wrap#0#if#2#loop#end
+ jmp compile._#Function._compile_return_vals#3#wrap#0#if#2#loop#start
+compile._#Function._compile_return_vals#3#wrap#0#if#2#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r11 ; (SET)
+ mov rsi, qword [rbp - 256] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov byte [rbp - 281], 0 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov cl, byte [rbp - 281] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_tmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ jmp compile._#Function._compile_return_vals#3#wrap#end
+compile._#Function._compile_return_vals#3#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 0 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ mov qword [rbp - 256], r12 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_return_vals#3#wrap#end
+compile._#Function._compile_return_vals#3#wrap#1#if#end:
+compile._#Function._compile_return_vals#3#wrap#end:
+
+compile._#Function._compile_return_vals#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._return:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r10 ; (SET)
+ mov qword [rbp - 73], r12 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Function._check_return
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._return#0#wrap#0#if#end
+ jmp compile._#Function._return#end
+ jmp compile._#Function._return#0#wrap#end
+compile._#Function._return#0#wrap#0#if#end:
+compile._#Function._return#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_return_vals
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._return#1#loop#end
+compile._#Function._return#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r11, qword [rsi] ; (SET)
+compile._#Function._return#1#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._return#1#loop#end
+ jmp compile._#Function._return#1#loop#start
+compile._#Function._return#1#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end_label
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._return#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._return#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Function._return#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_flow_control:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_flow_control#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._return
+ jmp compile._#Function._compile_flow_control#0#wrap#end
+compile._#Function._compile_flow_control#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_flow_control#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.closest_loop
+ mov r13, rax ; (SET)
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_flow_control#0#wrap#1#if#1#wrap#0#if#end
+ jmp compile._#Function._compile_flow_control#end
+ jmp compile._#Function._compile_flow_control#0#wrap#1#if#1#wrap#end
+compile._#Function._compile_flow_control#0#wrap#1#if#1#wrap#0#if#end:
+compile._#Function._compile_flow_control#0#wrap#1#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.rep_label
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#1#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#1#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Function._compile_flow_control#0#wrap#end
+compile._#Function._compile_flow_control#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_flow_control#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.closest_break
+ mov r13, rax ; (SET)
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_flow_control#0#wrap#2#if#1#wrap#0#if#end
+ jmp compile._#Function._compile_flow_control#end
+ jmp compile._#Function._compile_flow_control#0#wrap#2#if#1#wrap#end
+compile._#Function._compile_flow_control#0#wrap#2#if#1#wrap#0#if#end:
+compile._#Function._compile_flow_control#0#wrap#2#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.rep_label
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#2#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#2#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Function._compile_flow_control#0#wrap#end
+compile._#Function._compile_flow_control#0#wrap#2#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#3#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#3#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_flow_control#0#wrap#3#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Function._compile_flow_control#0#wrap#end
+compile._#Function._compile_flow_control#0#wrap#3#if#end:
+compile._#Function._compile_flow_control#0#wrap#end:
+
+compile._#Function._compile_flow_control#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_decl:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_decl#0#loop#end
+compile._#Function._compile_decl#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_decl#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._find_var
+ mov r15, rax ; (SET)
+ cmp r15, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Function._compile_decl#end
+ jmp compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_decl#0#loop#0#wrap#0#if#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_decl#0#loop#0#wrap#0#if#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable val
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov qword [rbp - 248], r15 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.mk_set_var
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_decl#0#loop#0#wrap#0#if#1#wrap#end
+compile._#Function._compile_decl#0#loop#0#wrap#0#if#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.mk_var
+ jmp compile._#Function._compile_decl#0#loop#0#wrap#0#if#1#wrap#end
+compile._#Function._compile_decl#0#loop#0#wrap#0#if#1#wrap#1#if#end:
+compile._#Function._compile_decl#0#loop#0#wrap#0#if#1#wrap#end:
+ jmp compile._#Function._compile_decl#0#loop#0#wrap#end
+compile._#Function._compile_decl#0#loop#0#wrap#0#if#end:
+compile._#Function._compile_decl#0#loop#0#wrap#end:
+compile._#Function._compile_decl#0#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_decl#0#loop#end
+ jmp compile._#Function._compile_decl#0#loop#start
+compile._#Function._compile_decl#0#loop#end:
+
+compile._#Function._compile_decl#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_call:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ mov r14, rsi ; (SET)
+ mov r15b, dil ; (SET)
+ sub rsp, 88 ; Create stack space for local variable result
+ sub rsp, 8 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], rsi ; (SET)
+ mov qword [rbp - 168], 0 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], r11 ; (SET)
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp_stack
+ ; putting struct address into register
+ lea rdi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_call#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_call#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_call#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_call#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Function._compile_call#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_call#0#wrap#end
+compile._#Function._compile_call#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ mov qword [rbp - 168], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_call#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ mov rcx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#Function._find_literal_type
+ sub rsp, 8 ; Create stack space for local variable t
+ mov qword [rbp - 160], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rax ; (SET)
+ mov rsi, qword [rbp - 160] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ jmp compile._#Function._compile_call#0#wrap#end
+compile._#Function._compile_call#0#wrap#1#if#end:
+compile._#Function._compile_call#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.save_caller_tmp
+ sub rsp, 8 ; Create stack space for local variable saved
+ mov qword [rbp - 160], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r11 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.get_tmp_handle
+ sub rsp, 8 ; Create stack space for local variable handle
+ mov qword [rbp - 168], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable param_count
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#1#wrap#0#if#end
+ mov rbx, qword [rbp - 176] ; (SET)
+ inc qword qword [rbp - 176] ; (UNARY)
+ jmp compile._#Function._compile_call#1#wrap#end
+compile._#Function._compile_call#1#wrap#0#if#end:
+compile._#Function._compile_call#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for local variable nn
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 192], rsi ; (SET)
+ mov qword [rbp - 200], 0 ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ mov rbx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 184], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov cx, word [r9] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_call#2#wrap#0#if#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ mov rsi, [rbp - 184] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rdi, [rbp - 192] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Function._compile_call#2#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#2#wrap#0#if#0#wrap#0#if#end
+ mov rbx, qword [rbp - 176] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 176], rbx ; (SET)
+ jmp compile._#Function._compile_call#2#wrap#0#if#0#wrap#end
+compile._#Function._compile_call#2#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_call#2#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_call#2#wrap#end
+compile._#Function._compile_call#2#wrap#0#if#end:
+compile._#Function._compile_call#2#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 176] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 184], r11 ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ sub rsp, 8 ; Create stack space for local variable blab
+ mov qword [rbp - 184], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_call#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_call#3#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 184] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_call#3#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_call#3#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 200], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ mov rbx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_call#3#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rsi, qword [rbp - 176] ; (SET_PRM_R)
+ mov qword [rbp - 200], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ mov rbx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 184] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rax, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov qword [rbp - 96], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_call#end
+ jmp compile._#Function._compile_call#3#wrap#end
+compile._#Function._compile_call#3#wrap#0#if#end:
+compile._#Function._compile_call#3#wrap#end:
+ sub rsp, 32 ; Create stack space for local variable tmps
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 216], rax ; (SET)
+ mov qword [rbp - 224], 88 ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 216], rax ; (SET)
+ mov rsi, qword [rbp - 176] ; (SET_PRM_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector._grow
+ mov rsi, qword [rbp - 176] ; (SET_PRM_R)
+ mov qword [rbp - 200], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for local variable inp
+ sub rsp, 88 ; Create stack space for local variable last_stack
+ mov qword [rbp - 256], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 312], r11 ; (SET)
+ mov rax, qword [rbp - 312] ; (SET)
+ lea rsp, [rbp - 304] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_stack_slot
+ mov qword [rbp - 248], rax ; (SET)
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 312], 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 312] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#5#loop#end
+compile._#Function._compile_call#5#loop#start:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, qword [rbp - 312] ; (STD_OP)
+ sub rsp, 8 ; Create stack space for local variable pidx
+ mov qword [rbp - 320], rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rsi, qword [rbp - 320] ; (SET_PRM_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 336] ; (SET)
+ mov rbx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 328] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ mov qword [rbp - 216], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_call#5#loop#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 416], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 424], r11 ; (SET)
+ mov rsi, qword [rbp - 216] ; (SET_PRM_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rax, qword [rbp - 424] ; (SET)
+ mov rbx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 416] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp_stack
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ mov rbx, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ sub rsp, 88 ; Create stack space for local variable to_set
+ ; putting struct address into register
+ lea rdi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 504], rbx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 505], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 513], rax ; (SET)
+ mov rax, qword [rbp - 513] ; (SET)
+ lea rsp, [rbp - 505] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov r8b, byte [rbp - 505] ; (SET)
+ mov rbx, qword [rbp - 504] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_call#5#loop#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 4 ; Create stack space for local variable ptrc
+ mov dword [rbp - 500], 0 ; (SET)
+ mov r8d, dword [rbp - 500] ; (SET)
+ sub r8d, 1 ; (STD_OP)
+ mov dword [rbp - 500], r8d ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 508], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 516], rax ; (SET)
+ mov rax, qword [rbp - 516] ; (SET)
+ lea rsp, [rbp - 508] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ mov rbx, qword [rbp - 508] ; (SET)
+ lea rsp, [rbp - 500] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 508], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 516], rax ; (SET)
+ mov esi, dword [rbp - 500] ; (SET_PRM_R)
+ mov dword [rbp - 520], esi ; (SET)
+ mov rax, qword [rbp - 516] ; (SET)
+ mov ebx, dword [rbp - 520] ; (SET)
+ lea rsp, [rbp - 508] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ mov rbx, qword [rbp - 508] ; (SET)
+ lea rsp, [rbp - 500] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_call#5#loop#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_call#5#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_call#5#loop#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 504], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 512], rax ; (SET)
+ mov rsi, qword [rbp - 320] ; (SET_PRM_R)
+ mov qword [rbp - 520], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 528], rsi ; (SET)
+ mov rax, qword [rbp - 512] ; (SET)
+ mov rbx, qword [rbp - 520] ; (SET)
+ mov rcx, qword [rbp - 528] ; (SET)
+ lea rsp, [rbp - 504] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.replace
+ mov rbx, qword [rbp - 504] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ ; putting struct address into register
+ lea rdi, [rbp - 304] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_call#5#loop#0#wrap#end
+compile._#Function._compile_call#5#loop#0#wrap#0#if#end:
+compile._#Function._compile_call#5#loop#0#wrap#end:
+compile._#Function._compile_call#5#loop#rep:
+ mov r8, qword [rbp - 312] ; (SET)
+ inc qword qword [rbp - 312] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 312] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_call#5#loop#end
+ jmp compile._#Function._compile_call#5#loop#start
+compile._#Function._compile_call#5#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 312], r11 ; (SET)
+ mov rax, qword [rbp - 312] ; (SET)
+ lea rsp, [rbp - 304] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.get_tmp_handle
+ sub rsp, 8 ; Create stack space for local variable param_handle
+ mov qword [rbp - 312], rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable last_reg
+ mov qword [rbp - 352], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 408], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 408] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#6#loop#end
+compile._#Function._compile_call#6#loop#start:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 416], rsi ; (SET)
+ mov rsi, qword [rbp - 408] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 216], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#6#loop#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 504], r11 ; (SET)
+ mov rsi, qword [rbp - 216] ; (SET_PRM_R)
+ mov qword [rbp - 512], rsi ; (SET)
+ mov rax, qword [rbp - 504] ; (SET)
+ mov rbx, qword [rbp - 512] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp_stack
+ ; putting struct address into register
+ lea rdi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable to_set
+ ; putting struct address into register
+ lea rdi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 585], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 593], rax ; (SET)
+ mov rax, qword [rbp - 593] ; (SET)
+ lea rsp, [rbp - 585] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 585] ; (SET)
+ lea rsp, [rbp - 584] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#6#loop#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 4 ; Create stack space for local variable ptrc
+ mov dword [rbp - 588], 0 ; (SET)
+ mov ebx, dword [rbp - 588] ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov dword [rbp - 588], ebx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 596], rax ; (SET)
+ mov rax, qword [rbp - 596] ; (SET)
+ lea rsp, [rbp - 588] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 596], rax ; (SET)
+ mov esi, dword [rbp - 588] ; (SET_PRM_R)
+ mov dword [rbp - 600], esi ; (SET)
+ mov rax, qword [rbp - 596] ; (SET)
+ mov ebx, dword [rbp - 600] ; (SET)
+ lea rsp, [rbp - 588] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_call#6#loop#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_call#6#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_call#6#loop#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 592], rax ; (SET)
+ mov rsi, qword [rbp - 408] ; (SET_PRM_R)
+ mov qword [rbp - 600], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 608], rsi ; (SET)
+ mov rax, qword [rbp - 592] ; (SET)
+ mov rbx, qword [rbp - 600] ; (SET)
+ mov rcx, qword [rbp - 608] ; (SET)
+ lea rsp, [rbp - 584] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.replace
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 592], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 400] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 600], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 608], rsi ; (SET)
+ mov rax, qword [rbp - 592] ; (SET)
+ mov rbx, qword [rbp - 600] ; (SET)
+ mov rcx, qword [rbp - 608] ; (SET)
+ lea rsp, [rbp - 584] ; Free stack space (freeing tmp variables)
+ call compile._#Function._set_var_ptr
+ ; putting struct address into register
+ lea rdi, [rbp - 400] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_call#6#loop#0#wrap#end
+compile._#Function._compile_call#6#loop#0#wrap#0#if#end:
+compile._#Function._compile_call#6#loop#0#wrap#end:
+compile._#Function._compile_call#6#loop#rep:
+ mov rbx, qword [rbp - 408] ; (SET)
+ inc qword qword [rbp - 408] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 408] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#6#loop#end
+ jmp compile._#Function._compile_call#6#loop#start
+compile._#Function._compile_call#6#loop#end:
+ sub rsp, 8 ; Create stack space for local variable use_self
+ mov qword [rbp - 408], 0 ; (SET)
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#7#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ mov qword [rbp - 424], 0 ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 216], rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 504], r14 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 512], rsi ; (SET)
+ mov qword [rbp - 520], 1 ; (SET)
+ mov rax, qword [rbp - 504] ; (SET)
+ mov rbx, qword [rbp - 512] ; (SET)
+ mov rcx, qword [rbp - 520] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.take_ptr
+ ; putting struct address into register
+ lea rdi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable _sptr
+ ; putting struct address into register
+ lea rdi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 216] ; (SET_PRM_R)
+ mov qword [rbp - 592], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 600], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 608], rsi ; (SET)
+ mov rax, qword [rbp - 592] ; (SET)
+ mov rbx, qword [rbp - 600] ; (SET)
+ mov rcx, qword [rbp - 608] ; (SET)
+ lea rsp, [rbp - 584] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 592], rax ; (SET)
+ mov rax, qword [rbp - 592] ; (SET)
+ lea rsp, [rbp - 584] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ mov rbx, qword [rbp - 408] ; (SET)
+ inc qword qword [rbp - 408] ; (UNARY)
+ jmp compile._#Function._compile_call#7#wrap#end
+compile._#Function._compile_call#7#wrap#0#if#end:
+compile._#Function._compile_call#7#wrap#end:
+ sub rsp, 8 ; Create stack space for local variable pnode
+ sub rsp, 8 ; Create stack space for local variable i
+ mov rsi, qword [rbp - 408] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 424] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#8#loop#end
+compile._#Function._compile_call#8#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ sub rbx, qword [rbp - 408] ; (STD_OP)
+ mov qword [rbp - 440], rbx ; (SET)
+ mov rax, qword [rbp - 432] ; (SET)
+ mov rbx, qword [rbp - 440] ; (SET)
+ lea rsp, [rbp - 424] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 416], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rax ; (SET)
+ mov rsi, qword [rbp - 424] ; (SET_PRM_R)
+ mov qword [rbp - 440], rsi ; (SET)
+ mov rax, qword [rbp - 432] ; (SET)
+ mov rbx, qword [rbp - 440] ; (SET)
+ lea rsp, [rbp - 424] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 216], rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 520], r10 ; (SET)
+ mov qword [rbp - 528], r11 ; (SET)
+ mov rsi, qword [rbp - 416] ; (SET_PRM_R)
+ mov qword [rbp - 536], rsi ; (SET)
+ mov rax, qword [rbp - 520] ; (SET)
+ mov rbx, qword [rbp - 528] ; (SET)
+ mov rcx, qword [rbp - 536] ; (SET)
+ lea rsp, [rbp - 512] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 512] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable param
+ ; putting struct address into register
+ lea rdi, [rbp - 600] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 512] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 216] ; (SET_PRM_R)
+ mov qword [rbp - 608], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 616], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 600] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 624], rsi ; (SET)
+ mov rax, qword [rbp - 608] ; (SET)
+ mov rbx, qword [rbp - 616] ; (SET)
+ mov rcx, qword [rbp - 624] ; (SET)
+ lea rsp, [rbp - 600] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 608], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 600] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 616], rsi ; (SET)
+ mov rax, qword [rbp - 608] ; (SET)
+ mov rbx, qword [rbp - 616] ; (SET)
+ lea rsp, [rbp - 600] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ cmp al, 0
+ je compile._#Function._compile_call#8#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 608], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 600] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 616], rsi ; (SET)
+ mov byte [rbp - 617], 1 ; (SET)
+ mov rax, qword [rbp - 608] ; (SET)
+ mov rbx, qword [rbp - 616] ; (SET)
+ mov cl, byte [rbp - 617] ; (SET)
+ lea rsp, [rbp - 600] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_to
+ jmp compile._#Function._compile_call#8#loop#0#wrap#end
+compile._#Function._compile_call#8#loop#0#wrap#0#if#end:
+compile._#Function._compile_call#8#loop#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 600] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 608], rax ; (SET)
+ mov rax, qword [rbp - 608] ; (SET)
+ lea rsp, [rbp - 600] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+compile._#Function._compile_call#8#loop#rep:
+ mov rbx, qword [rbp - 424] ; (SET)
+ inc qword qword [rbp - 424] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 424] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#8#loop#end
+ jmp compile._#Function._compile_call#8#loop#start
+compile._#Function._compile_call#8#loop#end:
+ sub rsp, 8 ; Create stack space for local variable ptmp
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 432], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 432] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#9#loop#end
+compile._#Function._compile_call#9#loop#start:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 440], rsi ; (SET)
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rax, qword [rbp - 440] ; (SET)
+ mov rbx, qword [rbp - 448] ; (SET)
+ lea rsp, [rbp - 432] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 216], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 216] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#9#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 440], rax ; (SET)
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rax, qword [rbp - 440] ; (SET)
+ mov rbx, qword [rbp - 448] ; (SET)
+ lea rsp, [rbp - 432] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 424], rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 433], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 216] ; (SET_PRM_R)
+ mov qword [rbp - 441], rsi ; (SET)
+ mov rax, qword [rbp - 441] ; (SET)
+ lea rsp, [rbp - 433] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 433] ; (SET)
+ lea rsp, [rbp - 432] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#9#loop#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 216] ; (SET_PRM_R)
+ mov qword [rbp - 528], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 536], rsi ; (SET)
+ mov qword [rbp - 544], 1 ; (SET)
+ mov rax, qword [rbp - 528] ; (SET)
+ mov rbx, qword [rbp - 536] ; (SET)
+ mov rcx, qword [rbp - 544] ; (SET)
+ lea rsp, [rbp - 520] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.take_ptr
+ ; putting struct address into register
+ lea rdi, [rbp - 520] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable to_set
+ ; putting struct address into register
+ lea rdi, [rbp - 608] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 520] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 608] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 616], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 624], rsi ; (SET)
+ mov rsi, qword [rbp - 424] ; (SET_PRM_R)
+ mov qword [rbp - 632], rsi ; (SET)
+ mov rax, qword [rbp - 616] ; (SET)
+ mov rbx, qword [rbp - 624] ; (SET)
+ mov rcx, qword [rbp - 632] ; (SET)
+ lea rsp, [rbp - 608] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 608] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 616], rax ; (SET)
+ mov rax, qword [rbp - 616] ; (SET)
+ lea rsp, [rbp - 608] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_call#9#loop#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_call#9#loop#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 216] ; (SET_PRM_R)
+ mov qword [rbp - 440], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rsi, qword [rbp - 424] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 440] ; (SET)
+ mov rbx, qword [rbp - 448] ; (SET)
+ mov rcx, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 432] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ jmp compile._#Function._compile_call#9#loop#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_call#9#loop#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Function._compile_call#9#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_call#9#loop#0#wrap#end
+compile._#Function._compile_call#9#loop#0#wrap#0#if#end:
+compile._#Function._compile_call#9#loop#0#wrap#end:
+compile._#Function._compile_call#9#loop#rep:
+ mov rbx, qword [rbp - 432] ; (SET)
+ inc qword qword [rbp - 432] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 432] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#9#loop#end
+ jmp compile._#Function._compile_call#9#loop#start
+compile._#Function._compile_call#9#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 432], r11 ; (SET)
+ mov rsi, qword [rbp - 312] ; (SET_PRM_R)
+ mov qword [rbp - 440], rsi ; (SET)
+ mov rax, qword [rbp - 432] ; (SET)
+ mov rbx, qword [rbp - 440] ; (SET)
+ lea rsp, [rbp - 424] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_after_handle
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable buf
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#10#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 440], rsi ; (SET)
+ mov rax, qword [rbp - 440] ; (SET)
+ lea rsp, [rbp - 432] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ sub rsp, 8 ; Create stack space for local variable pad_num
+ mov qword [rbp - 440], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_call#10#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ mov rbx, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rsi, qword [rbp - 440] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ mov rbx, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_call#10#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ mov rbx, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 440] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Function._compile_call#10#wrap#end
+compile._#Function._compile_call#10#wrap#0#if#end:
+compile._#Function._compile_call#10#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 440], r13 ; (SET)
+ mov rax, qword [rbp - 440] ; (SET)
+ lea rsp, [rbp - 432] ; Free stack space (freeing tmp variables)
+ call compile._#Function._call_label
+ sub rsp, 8 ; Create stack space for local variable call
+ mov qword [rbp - 440], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_call#11#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ mov rbx, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rsi, qword [rbp - 440] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ mov rbx, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_call#12#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ mov rbx, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 440] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call _delete
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#13#wrap#0#if#end
+ ; putting struct address into register
+ mov rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#13#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 536], rsi ; (SET)
+ mov rax, qword [rbp - 536] ; (SET)
+ lea rsp, [rbp - 528] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 528] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable out_pos
+ ; putting struct address into register
+ lea rdi, [rbp - 616] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 528] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov qword [rbp - 568], 7 ; (SET)
+ mov qword [rbp - 560], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable buf
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 624], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 632], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 640], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 616] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 648], rsi ; (SET)
+ mov rax, qword [rbp - 632] ; (SET)
+ mov rbx, qword [rbp - 640] ; (SET)
+ mov rcx, qword [rbp - 648] ; (SET)
+ lea rsp, [rbp - 624] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 616] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 632], rax ; (SET)
+ mov rax, qword [rbp - 632] ; (SET)
+ lea rsp, [rbp - 624] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_call#13#wrap#0#if#0#wrap#end
+compile._#Function._compile_call#13#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_call#13#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_call#13#wrap#end
+compile._#Function._compile_call#13#wrap#0#if#end:
+compile._#Function._compile_call#13#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#14#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 448], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ sub rsp, 8 ; Create stack space for local variable pad_num
+ mov qword [rbp - 448], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_call#14#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 464], rsi ; (SET)
+ mov rax, qword [rbp - 456] ; (SET)
+ mov rbx, qword [rbp - 464] ; (SET)
+ lea rsp, [rbp - 448] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rsi, qword [rbp - 448] ; (SET_PRM_R)
+ mov qword [rbp - 464], rsi ; (SET)
+ mov rax, qword [rbp - 456] ; (SET)
+ mov rbx, qword [rbp - 464] ; (SET)
+ lea rsp, [rbp - 448] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_call#14#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 464], rsi ; (SET)
+ mov rax, qword [rbp - 456] ; (SET)
+ mov rbx, qword [rbp - 464] ; (SET)
+ lea rsp, [rbp - 448] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 448] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 448] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Function._compile_call#14#wrap#end
+compile._#Function._compile_call#14#wrap#0#if#end:
+compile._#Function._compile_call#14#wrap#end:
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 448], 0 ; (SET)
+ mov rcx, qword [rbp - 448] ; (SET)
+ cmp rcx, qword [rbp - 200]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#15#loop#end
+compile._#Function._compile_call#15#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 456], rax ; (SET)
+ mov rsi, qword [rbp - 448] ; (SET_PRM_R)
+ mov qword [rbp - 464], rsi ; (SET)
+ mov rax, qword [rbp - 456] ; (SET)
+ mov rbx, qword [rbp - 464] ; (SET)
+ lea rsp, [rbp - 448] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 216], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 216] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 448] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+compile._#Function._compile_call#15#loop#rep:
+ mov rbx, qword [rbp - 448] ; (SET)
+ inc qword qword [rbp - 448] ; (UNARY)
+ mov rcx, qword [rbp - 448] ; (SET)
+ cmp rcx, qword [rbp - 200]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_call#15#loop#end
+ jmp compile._#Function._compile_call#15#loop#start
+compile._#Function._compile_call#15#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 448], rax ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 448], r11 ; (SET)
+ mov rsi, qword [rbp - 168] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ mov rbx, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_after_handle
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 448], r11 ; (SET)
+ mov rsi, qword [rbp - 160] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ mov rbx, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.restore_caller_tmp
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_call#end
+
+compile._#Function._compile_call#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._set_var_ptr:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 88 ; Create stack space for local variable vv
+ mov r13, 88 ; (SET)
+ mov r14, 0 ; (SET)
+ cmp r14, r13
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._set_var_ptr#1#loop#end
+compile._#Function._set_var_ptr#1#loop#start:
+ mov rbx, r11 ; (SET)
+ mov rcx, 1 ; (SET)
+ imul rcx, r14 ; (MUL)
+ add rbx, rcx ; (STD_OP)
+ mov r15, rbx ; (SET)
+ mov r8, r12 ; (SET)
+ mov rcx, 1 ; (SET)
+ imul rcx, r14 ; (MUL)
+ add r8, rcx ; (STD_OP)
+ sub rsp, 8 ; Create stack space for local variable in
+ mov qword [rbp - 152], r8 ; (SET)
+ mov rdi, [rbp - 152] ; (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [r15], sil ; (SET)
+compile._#Function._set_var_ptr#1#loop#rep:
+ mov r9, r14 ; (SET)
+ inc r14 ; (UNARY)
+ cmp r14, r13
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+ je compile._#Function._set_var_ptr#1#loop#end
+ jmp compile._#Function._set_var_ptr#1#loop#start
+compile._#Function._set_var_ptr#1#loop#end:
+
+compile._#Function._set_var_ptr#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_chain_r_post:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r_post#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_post#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Function._compile_chain_r_post#0#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r_post#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#1#if#end
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r13 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.de_ref
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._set_var_ptr
+ jmp compile._#Function._compile_chain_r_post#0#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r_post#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#2#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r11 ; (SET)
+ mov qword [rbp - 73], r13 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#0#if#end
+ mov r14b, 0 ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r13 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end
+ mov r14b, 1 ; (SET)
+ mov r15d, 0 ; (SET)
+ mov ebx, r15d ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov r15d, ebx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov dword [rbp - 68], r15d ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov ebx, dword [rbp - 68] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#0#if#0#wrap#end:
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ mov qword [rbp - 248], r13 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ cmp r14b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov dword [rbp - 156], 0 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov ebx, dword [rbp - 156] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#0#if#1#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#0#if#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._set_var_ptr
+ jmp compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#0#if#end:
+compile._#Function._compile_chain_r_post#0#wrap#2#if#1#wrap#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable idx
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r14 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov qword [rbp - 184], 6 ; (SET)
+ jmp compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#0#if#end:
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 5
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r14 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ mov qword [rbp - 184], 6 ; (SET)
+ jmp compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#1#if#end:
+compile._#Function._compile_chain_r_post#0#wrap#2#if#2#wrap#end:
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 416], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov qword [rbp - 440], 1 ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ mov rdx, qword [rbp - 440] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.index
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 321], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 329], r11 ; (SET)
+ mov qword [rbp - 337], r13 ; (SET)
+ mov rax, qword [rbp - 329] ; (SET)
+ mov rbx, qword [rbp - 337] ; (SET)
+ lea rsp, [rbp - 321] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 321] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#2#if#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r11 ; (SET)
+ mov qword [rbp - 336], r13 ; (SET)
+ mov byte [rbp - 337], 1 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov cl, byte [rbp - 337] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_to
+ jmp compile._#Function._compile_chain_r_post#0#wrap#2#if#3#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#2#if#3#wrap#0#if#end:
+compile._#Function._compile_chain_r_post#0#wrap#2#if#3#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r13 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r10 ; (SET)
+ mov qword [rbp - 336], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Function._set_var_ptr
+ jmp compile._#Function._compile_chain_r_post#0#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r_post#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#3#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable copy
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.strip_refs
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 416], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov qword [rbp - 344], r13 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.inc
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r13 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r10 ; (SET)
+ mov qword [rbp - 336], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Function._set_var_ptr
+ jmp compile._#Function._compile_chain_r_post#0#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#3#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r_post#0#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_post#0#wrap#4#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable copy
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.strip_refs
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 416], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov qword [rbp - 344], r13 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.dec
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r13 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r10 ; (SET)
+ mov qword [rbp - 336], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Function._set_var_ptr
+ jmp compile._#Function._compile_chain_r_post#0#wrap#end
+compile._#Function._compile_chain_r_post#0#wrap#4#if#end:
+compile._#Function._compile_chain_r_post#0#wrap#end:
+
+compile._#Function._compile_chain_r_post#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_chain_r_base:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ sub rsp, 88 ; Create stack space for local variable result
+ mov qword [rbp - 96], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#0#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#0#wrap#0#if#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call parse.print_node_type
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#0#wrap#0#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r_base#end
+ jmp compile._#Function._compile_chain_r_base#0#wrap#end
+compile._#Function._compile_chain_r_base#0#wrap#0#if#end:
+compile._#Function._compile_chain_r_base#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.find_var
+ mov r14, rax ; (SET)
+ cmp r14, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable name
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r13 ; (SET)
+ lea rsi, qword [rbp - 152] ; (TAKE_PTR)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r15, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r15 ; (SET)
+ mov rsi, qword [rel compile.SEARCH_VAR] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov qword [rbp - 176], r13 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ mov rcx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#Module.find
+ mov r14, rax ; (SET)
+ cmp r14, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#1#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], r14 ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.as_global
+ ; putting struct address into register
+ lea rdi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r13 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ jmp compile._#Function._compile_chain_r_base#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r_base#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_chain_r_base#1#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_chain_r_base#1#wrap#end
+compile._#Function._compile_chain_r_base#1#wrap#0#if#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r14 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ jmp compile._#Function._compile_chain_r_base#1#wrap#end
+compile._#Function._compile_chain_r_base#1#wrap#1#if#end:
+compile._#Function._compile_chain_r_base#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#2#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 0 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r15, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#end
+ cmp r14, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ mov qword [rbp - 96], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r_base#end
+ jmp compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#1#wrap#end
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable mod
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 153], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call compile._#Module.is_method
+ mov bl, byte [rbp - 153] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#2#wrap#0#if#end
+ ; putting struct address into register
+ mov rsi, [rbp - 152] ; initial struct addr move (SET_STR_R)
+ add rsi, 137 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ jmp compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#2#wrap#end
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#2#wrap#0#if#end:
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#2#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rsi, qword [rel compile.SEARCH_FUNC] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov qword [rbp - 176], r13 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ mov rcx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#Module.find
+ sub rsp, 8 ; Create stack space for local variable to_call
+ mov qword [rbp - 160], rax ; (SET)
+ mov rcx, qword [rbp - 160] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r11 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ sub rsp, 8 ; Create stack space for local variable blab
+ mov qword [rbp - 168], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 168] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 168] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 168] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 168] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 168] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 176], r13 ; (SET)
+ mov rax, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 168] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r_base#end
+ jmp compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#end
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#0#if#end:
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#3#wrap#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 256], r10 ; (SET)
+ mov qword [rbp - 264], r11 ; (SET)
+ mov qword [rbp - 272], r15 ; (SET)
+ mov rsi, qword [rbp - 160] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov byte [rbp - 289], 0 ; (SET)
+ mov rax, qword [rbp - 256] ; (SET)
+ mov rbx, qword [rbp - 264] ; (SET)
+ mov rcx, qword [rbp - 272] ; (SET)
+ mov rdx, qword [rbp - 280] ; (SET)
+ mov rsi, qword [rbp - 288] ; (SET)
+ mov dil, byte [rbp - 289] ; (SET)
+ lea rsp, [rbp - 248] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_call
+ ; putting struct address into register
+ lea rdi, [rbp - 248] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 248] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ jmp compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#0#if#end:
+ mov rcx, qword [rbp - 96] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ sub rsp, 8 ; Create stack space for local variable blab
+ mov qword [rbp - 152], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r13 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r_base#end
+ jmp compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r15 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ mov rdx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_chain_r_post
+ jmp compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#2#if#end:
+compile._#Function._compile_chain_r_base#2#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_chain_r_base#2#wrap#end
+compile._#Function._compile_chain_r_base#2#wrap#0#if#end:
+compile._#Function._compile_chain_r_base#2#wrap#end:
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 152], 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 152] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#3#loop#end
+compile._#Function._compile_chain_r_base#3#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rsi, qword [rbp - 152] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r15, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 153], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r15] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#3#loop#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 153] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#3#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rax ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ mov qword [rbp - 96], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r_base#3#loop#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r13 ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r_base#end
+ jmp compile._#Function._compile_chain_r_base#3#loop#0#wrap#end
+compile._#Function._compile_chain_r_base#3#loop#0#wrap#0#if#end:
+compile._#Function._compile_chain_r_base#3#loop#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 160], r10 ; (SET)
+ mov qword [rbp - 168], r11 ; (SET)
+ mov qword [rbp - 176], r15 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 184], rsi ; (SET)
+ mov rax, qword [rbp - 160] ; (SET)
+ mov rbx, qword [rbp - 168] ; (SET)
+ mov rcx, qword [rbp - 176] ; (SET)
+ mov rdx, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 152] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_chain_r_post
+compile._#Function._compile_chain_r_base#3#loop#rep:
+ mov rbx, qword [rbp - 152] ; (SET)
+ inc qword qword [rbp - 152] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 152] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r_base#3#loop#end
+ jmp compile._#Function._compile_chain_r_base#3#loop#start
+compile._#Function._compile_chain_r_base#3#loop#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r_base#end
+
+compile._#Function._compile_chain_r_base#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_chain_r:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r14 ; (SET)
+ mov qword [rbp - 176], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ mov rdx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_chain_r_base
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable working
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#0#wrap#0#if#end
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#0#wrap#0#if#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r#end
+ jmp compile._#Function._compile_chain_r#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_chain_r#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_chain_r#0#wrap#end
+compile._#Function._compile_chain_r#0#wrap#0#if#end:
+compile._#Function._compile_chain_r#0#wrap#end:
+ mov r15b, 1 ; (SET)
+ sub rsp, 8 ; Create stack space for local variable rhn
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#end
+compile._#Function._compile_chain_r#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], rsi ; (SET)
+ mov qword [rbp - 256], 1 ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 240], rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 241], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 249], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 257], rsi ; (SET)
+ mov rax, qword [rbp - 249] ; (SET)
+ mov rbx, qword [rbp - 257] ; (SET)
+ lea rsp, [rbp - 241] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 241] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#0#wrap#0#if#end
+ mov r12, qword [rbp - 240] ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], rsi ; (SET)
+ mov qword [rbp - 256], 0 ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ mov rbx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 240], rax ; (SET)
+ jmp compile._#Function._compile_chain_r#1#loop#0#wrap#end
+compile._#Function._compile_chain_r#1#loop#0#wrap#0#if#end:
+ mov r15b, 0 ; (SET)
+ jmp compile._#Function._compile_chain_r#1#loop#0#wrap#end
+compile._#Function._compile_chain_r#1#loop#0#wrap#1#if#end:
+compile._#Function._compile_chain_r#1#loop#0#wrap#end:
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 248], r13 ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ mov qword [rbp - 184], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r#end
+ jmp compile._#Function._compile_chain_r#1#loop#1#wrap#end
+compile._#Function._compile_chain_r#1#loop#1#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#end
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable dat
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 256], r13 ; (SET)
+ lea rsi, qword [rbp - 248] ; (TAKE_PTR)
+ mov qword [rbp - 264], rsi ; (SET)
+ mov rax, qword [rbp - 256] ; (SET)
+ mov rbx, qword [rbp - 264] ; (SET)
+ lea rsp, [rbp - 248] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable mod
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 256], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 256] ; (SET_PRM_R)
+ mov qword [rbp - 264], rsi ; (SET)
+ mov rsi, qword [rel compile.SEARCH_VAR] ; (SET_PRM_R)
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], r13 ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ mov rbx, qword [rbp - 272] ; (SET)
+ mov rcx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call compile._#Module.find
+ sub rsp, 8 ; Create stack space for local variable find
+ mov qword [rbp - 264], rax ; (SET)
+ mov rcx, qword [rbp - 264] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 264] ; (SET_PRM_R)
+ mov qword [rbp - 360], rsi ; (SET)
+ mov rax, qword [rbp - 360] ; (SET)
+ lea rsp, [rbp - 352] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.as_global
+ ; putting struct address into register
+ lea rdi, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r13 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#0#wrap#end:
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#end
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], 0 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable post_op
+ mov qword [rbp - 272], rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 273], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 272] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 281], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 289], rsi ; (SET)
+ mov rax, qword [rbp - 281] ; (SET)
+ mov rbx, qword [rbp - 289] ; (SET)
+ lea rsp, [rbp - 273] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 273] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#end
+ mov rcx, qword [rbp - 264] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r#end
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#1#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable mod
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 280] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rsi, qword [rel compile.SEARCH_FUNC] ; (SET_PRM_R)
+ mov qword [rbp - 296], rsi ; (SET)
+ mov qword [rbp - 304], r13 ; (SET)
+ mov rax, qword [rbp - 288] ; (SET)
+ mov rbx, qword [rbp - 296] ; (SET)
+ mov rcx, qword [rbp - 304] ; (SET)
+ lea rsp, [rbp - 280] ; Free stack space (freeing tmp variables)
+ call compile._#Module.find
+ sub rsp, 8 ; Create stack space for local variable to_call
+ mov qword [rbp - 288], rax ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 296], rsi ; (SET)
+ mov rax, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 288] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 296], rsi ; (SET)
+ mov rax, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 288] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 296], rsi ; (SET)
+ mov rax, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 288] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 296], r11 ; (SET)
+ mov rax, qword [rbp - 296] ; (SET)
+ lea rsp, [rbp - 288] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ sub rsp, 8 ; Create stack space for local variable blab
+ mov qword [rbp - 296], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 296] ; (SET_PRM_R)
+ mov qword [rbp - 304], rsi ; (SET)
+ mov rax, qword [rbp - 304] ; (SET)
+ lea rsp, [rbp - 296] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 304], rsi ; (SET)
+ mov rax, qword [rbp - 304] ; (SET)
+ lea rsp, [rbp - 296] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 296] ; (SET_PRM_R)
+ mov qword [rbp - 304], rsi ; (SET)
+ mov rax, qword [rbp - 304] ; (SET)
+ lea rsp, [rbp - 296] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 304], r13 ; (SET)
+ mov rax, qword [rbp - 304] ; (SET)
+ lea rsp, [rbp - 296] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r#end
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#2#wrap#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 384], r10 ; (SET)
+ mov qword [rbp - 392], r11 ; (SET)
+ mov rsi, qword [rbp - 272] ; (SET_PRM_R)
+ mov qword [rbp - 400], rsi ; (SET)
+ mov rsi, qword [rbp - 288] ; (SET_PRM_R)
+ mov qword [rbp - 408], rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 416], rsi ; (SET)
+ mov byte [rbp - 417], 0 ; (SET)
+ mov rax, qword [rbp - 384] ; (SET)
+ mov rbx, qword [rbp - 392] ; (SET)
+ mov rcx, qword [rbp - 400] ; (SET)
+ mov rdx, qword [rbp - 408] ; (SET)
+ mov rsi, qword [rbp - 416] ; (SET)
+ mov dil, byte [rbp - 417] ; (SET)
+ lea rsp, [rbp - 376] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_call
+ ; putting struct address into register
+ lea rdi, [rbp - 376] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 376] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 288] ; Free stack space (freeing tmp variables)
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#end:
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 280], r11 ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ sub rsp, 8 ; Create stack space for local variable blab
+ mov qword [rbp - 280], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 280] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 280] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 280] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 280] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 280] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 288], r13 ; (SET)
+ mov rax, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 280] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r#end
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#1#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 280], r10 ; (SET)
+ mov qword [rbp - 288], r11 ; (SET)
+ mov rsi, qword [rbp - 272] ; (SET_PRM_R)
+ mov qword [rbp - 296], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 304], rsi ; (SET)
+ mov rax, qword [rbp - 280] ; (SET)
+ mov rbx, qword [rbp - 288] ; (SET)
+ mov rcx, qword [rbp - 296] ; (SET)
+ mov rdx, qword [rbp - 304] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_chain_r_post
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#2#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#1#wrap#end:
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for local variable post_idx
+ mov qword [rbp - 248], 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#end
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 256], rsi ; (SET)
+ mov qword [rbp - 264], 0 ; (SET)
+ mov rax, qword [rbp - 256] ; (SET)
+ mov rbx, qword [rbp - 264] ; (SET)
+ lea rsp, [rbp - 248] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable post
+ mov qword [rbp - 256], rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 257], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 256] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 265], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 273], rsi ; (SET)
+ mov rax, qword [rbp - 265] ; (SET)
+ mov rbx, qword [rbp - 273] ; (SET)
+ lea rsp, [rbp - 257] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 257] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#0#if#end
+ mov rbx, qword [rbp - 248] ; (SET)
+ inc qword qword [rbp - 248] ; (UNARY)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 264], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 272], rsi ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ mov rbx, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call compile._#Var.find_method
+ sub rsp, 8 ; Create stack space for local variable to_call
+ mov qword [rbp - 264], rax ; (SET)
+ mov rcx, qword [rbp - 264] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ mov qword [rbp - 184], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r#end
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#0#if#1#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#0#if#1#wrap#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 360], r10 ; (SET)
+ mov qword [rbp - 368], r11 ; (SET)
+ mov rsi, qword [rbp - 256] ; (SET_PRM_R)
+ mov qword [rbp - 376], rsi ; (SET)
+ mov rsi, qword [rbp - 264] ; (SET_PRM_R)
+ mov qword [rbp - 384], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 392], rsi ; (SET)
+ mov byte [rbp - 393], 1 ; (SET)
+ mov rax, qword [rbp - 360] ; (SET)
+ mov rbx, qword [rbp - 368] ; (SET)
+ mov rcx, qword [rbp - 376] ; (SET)
+ mov rdx, qword [rbp - 384] ; (SET)
+ mov rsi, qword [rbp - 392] ; (SET)
+ mov dil, byte [rbp - 393] ; (SET)
+ lea rsp, [rbp - 352] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_call
+ ; putting struct address into register
+ lea rdi, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable result
+ ; putting struct address into register
+ lea rdi, [rbp - 440] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 448], rax ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 440] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#0#wrap#end:
+ mov rcx, qword [rbp - 248] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 352], rsi ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 360], rsi ; (SET)
+ mov rax, qword [rbp - 344] ; (SET)
+ mov rbx, qword [rbp - 352] ; (SET)
+ mov rcx, qword [rbp - 360] ; (SET)
+ lea rsp, [rbp - 336] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.member
+ ; putting struct address into register
+ lea rdi, [rbp - 336] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable mbr
+ ; putting struct address into register
+ lea rdi, [rbp - 424] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 336] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov rcx, qword [rbp - 376] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rax ; (SET)
+ mov rax, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 424] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ mov qword [rbp - 184], 0 ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r#end
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rax ; (SET)
+ mov rax, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 424] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 424] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#0#if#1#wrap#0#if#end
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 432], rsi ; (SET)
+ mov qword [rbp - 440], 0 ; (SET)
+ mov rax, qword [rbp - 432] ; (SET)
+ mov rbx, qword [rbp - 440] ; (SET)
+ lea rsp, [rbp - 424] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable post
+ mov qword [rbp - 432], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 440], r10 ; (SET)
+ mov qword [rbp - 448], r11 ; (SET)
+ mov rsi, qword [rbp - 432] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 464], rsi ; (SET)
+ mov rax, qword [rbp - 440] ; (SET)
+ mov rbx, qword [rbp - 448] ; (SET)
+ mov rcx, qword [rbp - 456] ; (SET)
+ mov rdx, qword [rbp - 464] ; (SET)
+ lea rsp, [rbp - 432] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_chain_r_post
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#0#if#1#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#0#if#1#wrap#end:
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#0#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#1#wrap#end:
+ jmp compile._#Function._compile_chain_r#1#loop#2#wrap#end
+compile._#Function._compile_chain_r#1#loop#2#wrap#1#if#end:
+compile._#Function._compile_chain_r#1#loop#2#wrap#end:
+ sub rsp, 8 ; Create stack space for local variable post
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 256], 1 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 256] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#3#loop#end
+compile._#Function._compile_chain_r#1#loop#3#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 264], rsi ; (SET)
+ mov rsi, qword [rbp - 256] ; (SET_PRM_R)
+ mov qword [rbp - 272], rsi ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ mov rbx, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov qword [rbp - 248], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 264], r10 ; (SET)
+ mov qword [rbp - 272], r11 ; (SET)
+ mov rsi, qword [rbp - 248] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 264] ; (SET)
+ mov rbx, qword [rbp - 272] ; (SET)
+ mov rcx, qword [rbp - 280] ; (SET)
+ mov rdx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 256] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile_chain_r_post
+compile._#Function._compile_chain_r#1#loop#3#loop#rep:
+ mov rbx, qword [rbp - 256] ; (SET)
+ inc qword qword [rbp - 256] ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 256] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#3#loop#end
+ jmp compile._#Function._compile_chain_r#1#loop#3#loop#start
+compile._#Function._compile_chain_r#1#loop#3#loop#end:
+compile._#Function._compile_chain_r#1#loop#rep:
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_chain_r#1#loop#end
+ jmp compile._#Function._compile_chain_r#1#loop#start
+compile._#Function._compile_chain_r#1#loop#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain_r#end
+
+compile._#Function._compile_chain_r#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_chain:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable chain
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 8 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 184], r10 ; (SET)
+ mov qword [rbp - 192], r11 ; (SET)
+ mov qword [rbp - 200], r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 208], rsi ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ mov rbx, qword [rbp - 192] ; (SET)
+ mov rcx, qword [rbp - 200] ; (SET)
+ mov rdx, qword [rbp - 208] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_chain_r
+ ; putting struct address into register
+ lea rdi, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_chain#end
+
+compile._#Function._compile_chain#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_bool_op:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 104 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 168], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bool_op#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 176], rsi ; (SET)
+ mov rax, qword [rbp - 168] ; (SET)
+ mov rbx, qword [rbp - 176] ; (SET)
+ lea rsp, [rbp - 160] ; Free stack space (freeing tmp variables)
+ sub rsp, 104
+ call compile._#Scope.gen_sub
+ ; putting struct address into register
+ lea rdi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ add rsp, 104
+ sub rsp, 104 ; Create stack space for local variable bs
+ ; putting struct address into register
+ lea rdi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 160] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], 0 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], rsi ; (SET)
+ mov qword [rbp - 280], 1 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov r15, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ mov qword [rbp - 280], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bool_op#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 288], rsi ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Function._find_literal_type
+ sub rsp, 8 ; Create stack space for local variable t
+ mov qword [rbp - 272], rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable dummy
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 360] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 368], rax ; (SET)
+ mov rsi, qword [rbp - 272] ; (SET_PRM_R)
+ mov qword [rbp - 376], rsi ; (SET)
+ mov rax, qword [rbp - 368] ; (SET)
+ mov rbx, qword [rbp - 376] ; (SET)
+ lea rsp, [rbp - 360] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 456], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 360] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 464], rsi ; (SET)
+ mov rax, qword [rbp - 456] ; (SET)
+ mov rbx, qword [rbp - 464] ; (SET)
+ lea rsp, [rbp - 448] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 448] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rdi, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 448] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 360] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 544], rax ; (SET)
+ mov rax, qword [rbp - 544] ; (SET)
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 632], r10 ; (SET)
+ mov qword [rbp - 640], r11 ; (SET)
+ mov qword [rbp - 648], r13 ; (SET)
+ mov rax, qword [rbp - 632] ; (SET)
+ mov rbx, qword [rbp - 640] ; (SET)
+ mov rcx, qword [rbp - 648] ; (SET)
+ lea rsp, [rbp - 624] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 624] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable lhs
+ ; putting struct address into register
+ lea rdi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 624] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 713], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 721], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 729], rsi ; (SET)
+ mov rax, qword [rbp - 721] ; (SET)
+ mov rbx, qword [rbp - 729] ; (SET)
+ lea rsp, [rbp - 713] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 713] ; (SET)
+ lea rsp, [rbp - 712] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 720], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 728], rsi ; (SET)
+ mov byte [rbp - 729], 1 ; (SET)
+ mov rax, qword [rbp - 720] ; (SET)
+ mov rbx, qword [rbp - 728] ; (SET)
+ mov cl, byte [rbp - 729] ; (SET)
+ lea rsp, [rbp - 712] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_after
+ jmp compile._#Function._compile_bool_op#2#wrap#end
+compile._#Function._compile_bool_op#2#wrap#0#if#end:
+compile._#Function._compile_bool_op#2#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 713], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 721], rax ; (SET)
+ mov rax, qword [rbp - 721] ; (SET)
+ lea rsp, [rbp - 713] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_struct
+ mov bl, byte [rbp - 713] ; (SET)
+ lea rsp, [rbp - 712] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_bool_op#3#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 720], rsi ; (SET)
+ mov rax, qword [rbp - 720] ; (SET)
+ lea rsp, [rbp - 712] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 720], rax ; (SET)
+ mov rax, qword [rbp - 720] ; (SET)
+ lea rsp, [rbp - 712] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 720], rax ; (SET)
+ mov rax, qword [rbp - 720] ; (SET)
+ lea rsp, [rbp - 712] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bool_op#end
+ jmp compile._#Function._compile_bool_op#3#wrap#end
+compile._#Function._compile_bool_op#3#wrap#0#if#end:
+compile._#Function._compile_bool_op#3#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable buf
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 720], rsi ; (SET)
+ mov r8, r15 ; (SET)
+ ; Gen index
+ mov rax, 1 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 38
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#4#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 728], rax ; (SET)
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 736], rsi ; (SET)
+ mov rax, qword [rbp - 728] ; (SET)
+ mov rbx, qword [rbp - 736] ; (SET)
+ lea rsp, [rbp - 720] ; Free stack space (freeing tmp variables)
+ call compile._#Var.test
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 728], rax ; (SET)
+ mov rax, qword [rbp - 728] ; (SET)
+ lea rsp, [rbp - 720] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end_label
+ sub rsp, 8 ; Create stack space for local variable lab
+ mov qword [rbp - 728], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 736], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bool_op#4#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 744], rsi ; (SET)
+ mov rax, qword [rbp - 736] ; (SET)
+ mov rbx, qword [rbp - 744] ; (SET)
+ lea rsp, [rbp - 728] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 736], rsi ; (SET)
+ mov rsi, qword [rbp - 728] ; (SET_PRM_R)
+ mov qword [rbp - 744], rsi ; (SET)
+ mov rax, qword [rbp - 736] ; (SET)
+ mov rbx, qword [rbp - 744] ; (SET)
+ lea rsp, [rbp - 728] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 736], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bool_op#4#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 744], rsi ; (SET)
+ mov rax, qword [rbp - 736] ; (SET)
+ mov rbx, qword [rbp - 744] ; (SET)
+ lea rsp, [rbp - 728] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Function._compile_bool_op#4#wrap#end
+compile._#Function._compile_bool_op#4#wrap#0#if#end:
+ mov r8, r15 ; (SET)
+ ; Gen index
+ mov rax, 1 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 124
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#4#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 728], rax ; (SET)
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 736], rsi ; (SET)
+ mov rax, qword [rbp - 728] ; (SET)
+ mov rbx, qword [rbp - 736] ; (SET)
+ lea rsp, [rbp - 720] ; Free stack space (freeing tmp variables)
+ call compile._#Var.test
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 728], rax ; (SET)
+ mov rax, qword [rbp - 728] ; (SET)
+ lea rsp, [rbp - 720] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end_label
+ sub rsp, 8 ; Create stack space for local variable lab
+ mov qword [rbp - 728], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 736], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bool_op#4#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 744], rsi ; (SET)
+ mov rax, qword [rbp - 736] ; (SET)
+ mov rbx, qword [rbp - 744] ; (SET)
+ lea rsp, [rbp - 728] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 736], rsi ; (SET)
+ mov rsi, qword [rbp - 728] ; (SET_PRM_R)
+ mov qword [rbp - 744], rsi ; (SET)
+ mov rax, qword [rbp - 736] ; (SET)
+ mov rbx, qword [rbp - 744] ; (SET)
+ lea rsp, [rbp - 728] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 736], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bool_op#4#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 744], rsi ; (SET)
+ mov rax, qword [rbp - 736] ; (SET)
+ mov rbx, qword [rbp - 744] ; (SET)
+ lea rsp, [rbp - 728] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ jmp compile._#Function._compile_bool_op#4#wrap#end
+compile._#Function._compile_bool_op#4#wrap#1#if#end:
+ mov r8, r15 ; (SET)
+ ; Gen index
+ mov rax, 1 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 94
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#4#wrap#2#if#end
+ mov rcx, qword [rbp - 664] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#0#bool#end
+ mov rcx, qword [rbp - 664] ; (SET)
+ cmp rcx, 11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 721], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 729], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 737], rsi ; (SET)
+ mov rax, qword [rbp - 729] ; (SET)
+ mov rbx, qword [rbp - 737] ; (SET)
+ lea rsp, [rbp - 721] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 721] ; (SET)
+ lea rsp, [rbp - 720] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for local variable was_ref
+ mov byte [rbp - 721], 0 ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 722], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 730], rax ; (SET)
+ mov rax, qword [rbp - 730] ; (SET)
+ lea rsp, [rbp - 722] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 722] ; (SET)
+ lea rsp, [rbp - 721] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#0#if#0#wrap#0#if#end
+ mov byte [rbp - 721], 1 ; (SET)
+ sub rsp, 4 ; Create stack space for local variable ptr
+ mov dword [rbp - 725], 0 ; (SET)
+ mov ebx, dword [rbp - 725] ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov dword [rbp - 725], ebx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 733], rax ; (SET)
+ mov rax, qword [rbp - 733] ; (SET)
+ lea rsp, [rbp - 725] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 733], rax ; (SET)
+ mov esi, dword [rbp - 725] ; (SET_PRM_R)
+ mov dword [rbp - 737], esi ; (SET)
+ mov rax, qword [rbp - 733] ; (SET)
+ mov ebx, dword [rbp - 737] ; (SET)
+ lea rsp, [rbp - 725] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#0#if#0#wrap#end:
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 905], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 913], rsi ; (SET)
+ mov rax, qword [rbp - 905] ; (SET)
+ mov rbx, qword [rbp - 913] ; (SET)
+ lea rsp, [rbp - 897] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 897] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 809] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 897] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 809] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 809] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 817], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 825], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 833], rsi ; (SET)
+ mov rax, qword [rbp - 817] ; (SET)
+ mov rbx, qword [rbp - 825] ; (SET)
+ mov rcx, qword [rbp - 833] ; (SET)
+ lea rsp, [rbp - 809] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 817], rax ; (SET)
+ mov rax, qword [rbp - 817] ; (SET)
+ lea rsp, [rbp - 809] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ ; putting struct address into register
+ lea rdi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 809] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov cl, byte [rbp - 721] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 817], rax ; (SET)
+ mov rax, qword [rbp - 817] ; (SET)
+ lea rsp, [rbp - 809] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 817], rax ; (SET)
+ mov dword [rbp - 821], 0 ; (SET)
+ mov rax, qword [rbp - 817] ; (SET)
+ mov ebx, dword [rbp - 821] ; (SET)
+ lea rsp, [rbp - 809] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#0#if#1#wrap#end
+compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#0#if#1#wrap#end:
+ jmp compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#end
+compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#1#wrap#end:
+ jmp compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#end
+compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#0#if#end:
+compile._#Function._compile_bool_op#4#wrap#2#if#0#wrap#end:
+ jmp compile._#Function._compile_bool_op#4#wrap#end
+compile._#Function._compile_bool_op#4#wrap#2#if#end:
+compile._#Function._compile_bool_op#4#wrap#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 816], r10 ; (SET)
+ mov qword [rbp - 824], r11 ; (SET)
+ mov qword [rbp - 832], r14 ; (SET)
+ mov rax, qword [rbp - 816] ; (SET)
+ mov rbx, qword [rbp - 824] ; (SET)
+ mov rcx, qword [rbp - 832] ; (SET)
+ lea rsp, [rbp - 808] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 808] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable rhs
+ ; putting struct address into register
+ lea rdi, [rbp - 896] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 808] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 897], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 896] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 905], rax ; (SET)
+ mov rax, qword [rbp - 905] ; (SET)
+ lea rsp, [rbp - 897] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_struct
+ mov bl, byte [rbp - 897] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#5#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_bool_op#5#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 904], rsi ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 896] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bool_op#end
+ jmp compile._#Function._compile_bool_op#5#wrap#end
+compile._#Function._compile_bool_op#5#wrap#0#if#end:
+compile._#Function._compile_bool_op#5#wrap#end:
+ mov r8, r15 ; (SET)
+ ; Gen index
+ mov rax, 1 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 94
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#6#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ sub rsp, 1 ; Create stack space for local variable is_ref
+ mov byte [rbp - 897], al ; (SET)
+ mov rcx, qword [rbp - 664] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne compile._#Function._compile_bool_op#6#wrap#0#if#0#wrap#0#if#0#bool#end
+ mov cl, byte [rbp - 897] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile._#Function._compile_bool_op#6#wrap#0#if#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#6#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 1081], rax ; (SET)
+ mov rax, qword [rbp - 1081] ; (SET)
+ lea rsp, [rbp - 1073] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 1073] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 985] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 1073] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 985] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 985] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 993], rax ; (SET)
+ mov rax, qword [rbp - 993] ; (SET)
+ lea rsp, [rbp - 985] ; Free stack space (freeing tmp variables)
+ call compile._#Var.strip_refs
+ mov qword [rbp - 937], 3 ; (SET)
+ mov qword [rbp - 929], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 985] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 993], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 1001], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 1009], rsi ; (SET)
+ mov rax, qword [rbp - 993] ; (SET)
+ mov rbx, qword [rbp - 1001] ; (SET)
+ mov rcx, qword [rbp - 1009] ; (SET)
+ lea rsp, [rbp - 985] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 993], rax ; (SET)
+ mov rax, qword [rbp - 993] ; (SET)
+ lea rsp, [rbp - 985] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ ; putting struct address into register
+ lea rdi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 985] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bool_op#6#wrap#0#if#0#wrap#end
+compile._#Function._compile_bool_op#6#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_bool_op#6#wrap#0#if#0#wrap#end:
+ mov r8, r15 ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 33
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 905], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 913], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 921], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 896] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 929], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 937], rsi ; (SET)
+ mov rax, qword [rbp - 905] ; (SET)
+ mov rbx, qword [rbp - 913] ; (SET)
+ mov rcx, qword [rbp - 921] ; (SET)
+ mov rdx, qword [rbp - 929] ; (SET)
+ mov rsi, qword [rbp - 937] ; (SET)
+ lea rsp, [rbp - 897] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cmov
+ jmp compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#end
+compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 905], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 913], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 921], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 896] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 929], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 937], rsi ; (SET)
+ mov rax, qword [rbp - 905] ; (SET)
+ mov rbx, qword [rbp - 913] ; (SET)
+ mov rcx, qword [rbp - 921] ; (SET)
+ mov rdx, qword [rbp - 929] ; (SET)
+ mov rsi, qword [rbp - 937] ; (SET)
+ lea rsp, [rbp - 897] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cmov
+ jmp compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#end
+compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#1#if#end:
+compile._#Function._compile_bool_op#6#wrap#0#if#1#wrap#end:
+ jmp compile._#Function._compile_bool_op#6#wrap#end
+compile._#Function._compile_bool_op#6#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 896] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 912], rsi ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ mov rbx, qword [rbp - 912] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Var.test
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.place_end_label
+ mov r8, r15 ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 33
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 912], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 920], rsi ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ mov rbx, qword [rbp - 912] ; (SET)
+ mov rcx, qword [rbp - 920] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cset
+ jmp compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#end
+compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rsi, qword [rbp - 720] ; (SET_PRM_R)
+ mov qword [rbp - 912], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 920], rsi ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ mov rbx, qword [rbp - 912] ; (SET)
+ mov rcx, qword [rbp - 920] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cset
+ jmp compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#end
+compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#1#if#end:
+compile._#Function._compile_bool_op#6#wrap#1#if#0#wrap#end:
+ jmp compile._#Function._compile_bool_op#6#wrap#end
+compile._#Function._compile_bool_op#6#wrap#1#if#end:
+compile._#Function._compile_bool_op#6#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 712] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 896] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 904], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 912], rsi ; (SET)
+ mov byte [rbp - 913], 1 ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ mov rbx, qword [rbp - 912] ; (SET)
+ mov cl, byte [rbp - 913] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_after
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 904], rax ; (SET)
+ mov rax, qword [rbp - 904] ; (SET)
+ lea rsp, [rbp - 896] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bool_op#end
+
+compile._#Function._compile_bool_op#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_cmp_op:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._find_literal_type
+ mov r15, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable dummy
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov qword [rbp - 160], r15 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 416], r10 ; (SET)
+ mov qword [rbp - 424], r11 ; (SET)
+ mov qword [rbp - 432], r13 ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable lhs
+ ; putting struct address into register
+ lea rdi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 497], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 505], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 513], rsi ; (SET)
+ mov rax, qword [rbp - 505] ; (SET)
+ mov rbx, qword [rbp - 513] ; (SET)
+ lea rsp, [rbp - 497] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 497] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 504], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 512], rsi ; (SET)
+ mov byte [rbp - 513], 1 ; (SET)
+ mov rax, qword [rbp - 504] ; (SET)
+ mov rbx, qword [rbp - 512] ; (SET)
+ mov cl, byte [rbp - 513] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_after
+ jmp compile._#Function._compile_cmp_op#1#wrap#end
+compile._#Function._compile_cmp_op#1#wrap#0#if#end:
+compile._#Function._compile_cmp_op#1#wrap#end:
+ mov rcx, qword [rbp - 448] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_cmp_op#2#wrap#0#if#0#bool#end
+ mov rcx, qword [rbp - 448] ; (SET)
+ cmp rcx, 11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile._#Function._compile_cmp_op#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#2#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 497], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 505], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 513], rsi ; (SET)
+ mov rax, qword [rbp - 505] ; (SET)
+ mov rbx, qword [rbp - 513] ; (SET)
+ lea rsp, [rbp - 497] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 497] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for local variable was_ref
+ mov byte [rbp - 497], 0 ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 498], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 506], rax ; (SET)
+ mov rax, qword [rbp - 506] ; (SET)
+ lea rsp, [rbp - 498] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 498] ; (SET)
+ lea rsp, [rbp - 497] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#end
+ mov byte [rbp - 497], 1 ; (SET)
+ sub rsp, 4 ; Create stack space for local variable ptr
+ mov dword [rbp - 501], 0 ; (SET)
+ mov ebx, dword [rbp - 501] ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov dword [rbp - 501], ebx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 509], rax ; (SET)
+ mov rax, qword [rbp - 509] ; (SET)
+ lea rsp, [rbp - 501] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 509], rax ; (SET)
+ mov esi, dword [rbp - 501] ; (SET_PRM_R)
+ mov dword [rbp - 513], esi ; (SET)
+ mov rax, qword [rbp - 509] ; (SET)
+ mov ebx, dword [rbp - 513] ; (SET)
+ lea rsp, [rbp - 501] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#0#if#0#wrap#end:
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 681], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 689], rsi ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ mov rbx, qword [rbp - 689] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 673] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 585] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 673] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 585] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 585] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 593], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 601], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 609], rsi ; (SET)
+ mov rax, qword [rbp - 593] ; (SET)
+ mov rbx, qword [rbp - 601] ; (SET)
+ mov rcx, qword [rbp - 609] ; (SET)
+ lea rsp, [rbp - 585] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 593], rax ; (SET)
+ mov rax, qword [rbp - 593] ; (SET)
+ lea rsp, [rbp - 585] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ ; putting struct address into register
+ lea rdi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 585] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov cl, byte [rbp - 497] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 593], rax ; (SET)
+ mov rax, qword [rbp - 593] ; (SET)
+ lea rsp, [rbp - 585] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 593], rax ; (SET)
+ mov dword [rbp - 597], 0 ; (SET)
+ mov rax, qword [rbp - 593] ; (SET)
+ mov ebx, dword [rbp - 597] ; (SET)
+ lea rsp, [rbp - 585] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#0#if#1#wrap#end
+compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#0#if#1#wrap#end:
+ jmp compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#end
+compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_cmp_op#2#wrap#0#if#1#wrap#end:
+ jmp compile._#Function._compile_cmp_op#2#wrap#end
+compile._#Function._compile_cmp_op#2#wrap#0#if#end:
+compile._#Function._compile_cmp_op#2#wrap#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 592], r10 ; (SET)
+ mov qword [rbp - 600], r11 ; (SET)
+ mov qword [rbp - 608], r14 ; (SET)
+ mov rax, qword [rbp - 592] ; (SET)
+ mov rbx, qword [rbp - 600] ; (SET)
+ mov rcx, qword [rbp - 608] ; (SET)
+ lea rsp, [rbp - 584] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable rhs
+ ; putting struct address into register
+ lea rdi, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 673], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 674], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 682], rax ; (SET)
+ mov rax, qword [rbp - 682] ; (SET)
+ lea rsp, [rbp - 674] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_struct
+ mov r8b, byte [rbp - 674] ; (SET)
+ mov bl, byte [rbp - 673] ; (SET)
+ lea rsp, [rbp - 672] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne compile._#Function._compile_cmp_op#3#wrap#0#if#0#bool#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 673], bl ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 674], r8b ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 675], r9b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 683], rax ; (SET)
+ mov rax, qword [rbp - 683] ; (SET)
+ lea rsp, [rbp - 675] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_struct
+ mov r9b, byte [rbp - 675] ; (SET)
+ mov r8b, byte [rbp - 674] ; (SET)
+ mov bl, byte [rbp - 673] ; (SET)
+ lea rsp, [rbp - 672] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 673], al ; (SET)
+ mov cl, byte [rbp - 673] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 672] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Function._compile_cmp_op#3#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#3#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 680], rsi ; (SET)
+ mov rax, qword [rbp - 680] ; (SET)
+ lea rsp, [rbp - 672] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 680], rax ; (SET)
+ mov rax, qword [rbp - 680] ; (SET)
+ lea rsp, [rbp - 672] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 680], rax ; (SET)
+ mov rax, qword [rbp - 680] ; (SET)
+ lea rsp, [rbp - 672] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 680], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 688], rsi ; (SET)
+ mov byte [rbp - 689], 1 ; (SET)
+ mov rax, qword [rbp - 680] ; (SET)
+ mov rbx, qword [rbp - 688] ; (SET)
+ mov cl, byte [rbp - 689] ; (SET)
+ lea rsp, [rbp - 672] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_after
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_cmp_op#end
+ jmp compile._#Function._compile_cmp_op#3#wrap#end
+compile._#Function._compile_cmp_op#3#wrap#0#if#end:
+compile._#Function._compile_cmp_op#3#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 680], rax ; (SET)
+ mov rax, qword [rbp - 680] ; (SET)
+ lea rsp, [rbp - 672] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ sub rsp, 1 ; Create stack space for local variable is_ref
+ mov byte [rbp - 673], al ; (SET)
+ mov rcx, qword [rbp - 448] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne compile._#Function._compile_cmp_op#4#wrap#0#if#0#bool#end
+ mov cl, byte [rbp - 673] ; (SET)
+ cmp cl, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile._#Function._compile_cmp_op#4#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#4#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 857], rax ; (SET)
+ mov rax, qword [rbp - 857] ; (SET)
+ lea rsp, [rbp - 849] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 849] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 761] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 849] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 761] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 761] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 769], rax ; (SET)
+ mov rax, qword [rbp - 769] ; (SET)
+ lea rsp, [rbp - 761] ; Free stack space (freeing tmp variables)
+ call compile._#Var.strip_refs
+ mov qword [rbp - 713], 3 ; (SET)
+ mov qword [rbp - 705], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 761] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 769], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 777], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 785], rsi ; (SET)
+ mov rax, qword [rbp - 769] ; (SET)
+ mov rbx, qword [rbp - 777] ; (SET)
+ mov rcx, qword [rbp - 785] ; (SET)
+ lea rsp, [rbp - 761] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 769], rax ; (SET)
+ mov rax, qword [rbp - 769] ; (SET)
+ lea rsp, [rbp - 761] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ ; putting struct address into register
+ lea rdi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 761] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_cmp_op#4#wrap#end
+compile._#Function._compile_cmp_op#4#wrap#0#if#end:
+compile._#Function._compile_cmp_op#4#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 674], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 682], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 690], rsi ; (SET)
+ mov rax, qword [rbp - 682] ; (SET)
+ mov rbx, qword [rbp - 690] ; (SET)
+ lea rsp, [rbp - 674] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 674] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#5#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 681], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 689], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 697], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 705], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 713], rsi ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ mov rbx, qword [rbp - 689] ; (SET)
+ mov rcx, qword [rbp - 697] ; (SET)
+ mov rdx, qword [rbp - 705] ; (SET)
+ mov rsi, qword [rbp - 713] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cmov
+ jmp compile._#Function._compile_cmp_op#5#wrap#end
+compile._#Function._compile_cmp_op#5#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 674], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 682], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 690], rsi ; (SET)
+ mov rax, qword [rbp - 682] ; (SET)
+ mov rbx, qword [rbp - 690] ; (SET)
+ lea rsp, [rbp - 674] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 674] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#5#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 681], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 689], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 697], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 705], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 713], rsi ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ mov rbx, qword [rbp - 689] ; (SET)
+ mov rcx, qword [rbp - 697] ; (SET)
+ mov rdx, qword [rbp - 705] ; (SET)
+ mov rsi, qword [rbp - 713] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cmov
+ jmp compile._#Function._compile_cmp_op#5#wrap#end
+compile._#Function._compile_cmp_op#5#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 674], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 682], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 690], rsi ; (SET)
+ mov rax, qword [rbp - 682] ; (SET)
+ mov rbx, qword [rbp - 690] ; (SET)
+ lea rsp, [rbp - 674] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 674] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#5#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 681], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 689], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 697], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 705], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#2#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 713], rsi ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ mov rbx, qword [rbp - 689] ; (SET)
+ mov rcx, qword [rbp - 697] ; (SET)
+ mov rdx, qword [rbp - 705] ; (SET)
+ mov rsi, qword [rbp - 713] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cmov
+ jmp compile._#Function._compile_cmp_op#5#wrap#end
+compile._#Function._compile_cmp_op#5#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 674], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 682], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 690], rsi ; (SET)
+ mov rax, qword [rbp - 682] ; (SET)
+ mov rbx, qword [rbp - 690] ; (SET)
+ lea rsp, [rbp - 674] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 674] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#5#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 681], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 689], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 697], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 705], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#3#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 713], rsi ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ mov rbx, qword [rbp - 689] ; (SET)
+ mov rcx, qword [rbp - 697] ; (SET)
+ mov rdx, qword [rbp - 705] ; (SET)
+ mov rsi, qword [rbp - 713] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cmov
+ jmp compile._#Function._compile_cmp_op#5#wrap#end
+compile._#Function._compile_cmp_op#5#wrap#3#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 674], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 682], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 690], rsi ; (SET)
+ mov rax, qword [rbp - 682] ; (SET)
+ mov rbx, qword [rbp - 690] ; (SET)
+ lea rsp, [rbp - 674] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 674] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#5#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 681], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 689], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 697], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 705], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#4#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 713], rsi ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ mov rbx, qword [rbp - 689] ; (SET)
+ mov rcx, qword [rbp - 697] ; (SET)
+ mov rdx, qword [rbp - 705] ; (SET)
+ mov rsi, qword [rbp - 713] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cmov
+ jmp compile._#Function._compile_cmp_op#5#wrap#end
+compile._#Function._compile_cmp_op#5#wrap#4#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 674], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 682], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#5#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 690], rsi ; (SET)
+ mov rax, qword [rbp - 682] ; (SET)
+ mov rbx, qword [rbp - 690] ; (SET)
+ lea rsp, [rbp - 674] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 674] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#5#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 681], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 689], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 697], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 705], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#5#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 713], rsi ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ mov rbx, qword [rbp - 689] ; (SET)
+ mov rcx, qword [rbp - 697] ; (SET)
+ mov rdx, qword [rbp - 705] ; (SET)
+ mov rsi, qword [rbp - 713] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cmov
+ jmp compile._#Function._compile_cmp_op#5#wrap#end
+compile._#Function._compile_cmp_op#5#wrap#5#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 674], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 682], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#6#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 690], rsi ; (SET)
+ mov rax, qword [rbp - 682] ; (SET)
+ mov rbx, qword [rbp - 690] ; (SET)
+ lea rsp, [rbp - 674] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 674] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#5#wrap#6#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 681], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 689], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 697], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 705], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#6#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 713], rsi ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ mov rbx, qword [rbp - 689] ; (SET)
+ mov rcx, qword [rbp - 697] ; (SET)
+ mov rdx, qword [rbp - 705] ; (SET)
+ mov rsi, qword [rbp - 713] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cmov
+ jmp compile._#Function._compile_cmp_op#5#wrap#end
+compile._#Function._compile_cmp_op#5#wrap#6#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 674], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 682], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#7#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 690], rsi ; (SET)
+ mov rax, qword [rbp - 682] ; (SET)
+ mov rbx, qword [rbp - 690] ; (SET)
+ lea rsp, [rbp - 674] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 674] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_cmp_op#5#wrap#7#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 681], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 689], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 697], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 705], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_cmp_op#5#wrap#7#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 713], rsi ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ mov rbx, qword [rbp - 689] ; (SET)
+ mov rcx, qword [rbp - 697] ; (SET)
+ mov rdx, qword [rbp - 705] ; (SET)
+ mov rsi, qword [rbp - 713] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Var.cmov
+ jmp compile._#Function._compile_cmp_op#5#wrap#end
+compile._#Function._compile_cmp_op#5#wrap#7#if#end:
+compile._#Function._compile_cmp_op#5#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 681], rax ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 672] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 681], rax ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 681], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 689], rsi ; (SET)
+ mov byte [rbp - 690], 1 ; (SET)
+ mov rax, qword [rbp - 681] ; (SET)
+ mov rbx, qword [rbp - 689] ; (SET)
+ mov cl, byte [rbp - 690] ; (SET)
+ lea rsp, [rbp - 673] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_after
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_cmp_op#end
+
+compile._#Function._compile_cmp_op#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_bin:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bin#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_chain
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bin#end
+ jmp compile._#Function._compile_bin#0#wrap#end
+compile._#Function._compile_bin#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile.BOOL_OPS] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_bool_op
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bin#end
+ jmp compile._#Function._compile_bin#0#wrap#end
+compile._#Function._compile_bin#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile.CMP_OPS] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call parse._in_csv
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#0#wrap#2#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_cmp_op
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bin#end
+ jmp compile._#Function._compile_bin#0#wrap#end
+compile._#Function._compile_bin#0#wrap#2#if#end:
+compile._#Function._compile_bin#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bin#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#1#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable lhs
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 241], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 249], rsi ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ mov rbx, qword [rbp - 249] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#1#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov byte [rbp - 249], 1 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov cl, byte [rbp - 249] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_after
+ jmp compile._#Function._compile_bin#1#wrap#0#if#1#wrap#end
+compile._#Function._compile_bin#1#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_bin#1#wrap#0#if#1#wrap#end:
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#0#bool#end
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ cmp r9b, 0
+compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 241], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 249], rsi ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ mov rbx, qword [rbp - 249] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#0#if#end
+ mov r15b, 0 ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 241], rax ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#end
+ mov r15b, 1 ; (SET)
+ sub rsp, 4 ; Create stack space for local variable ptr
+ mov dword [rbp - 236], 0 ; (SET)
+ mov ebx, dword [rbp - 236] ; (SET)
+ sub ebx, 1 ; (STD_OP)
+ mov dword [rbp - 236], ebx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 244], rax ; (SET)
+ mov rax, qword [rbp - 244] ; (SET)
+ lea rsp, [rbp - 236] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 244], rax ; (SET)
+ mov esi, dword [rbp - 236] ; (SET_PRM_R)
+ mov dword [rbp - 248], esi ; (SET)
+ mov rax, qword [rbp - 244] ; (SET)
+ mov ebx, dword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 236] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#0#if#0#wrap#end
+compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#0#if#0#wrap#end:
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 416], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 344], rsi ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ cmp r15b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#0#if#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_pop
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov dword [rbp - 332], 0 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov ebx, dword [rbp - 332] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#0#if#1#wrap#end
+compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#0#if#1#wrap#end:
+ jmp compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#end
+compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#0#if#end:
+compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#1#wrap#end:
+ jmp compile._#Function._compile_bin#1#wrap#0#if#2#wrap#end
+compile._#Function._compile_bin#1#wrap#0#if#2#wrap#0#if#end:
+compile._#Function._compile_bin#1#wrap#0#if#2#wrap#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r10 ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ mov qword [rbp - 344], r14 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable rhs
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 417], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#1#wrap#0#if#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 416], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ mov byte [rbp - 425], 1 ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov cl, byte [rbp - 425] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_to
+ jmp compile._#Function._compile_bin#1#wrap#0#if#3#wrap#end
+compile._#Function._compile_bin#1#wrap#0#if#3#wrap#0#if#end:
+compile._#Function._compile_bin#1#wrap#0#if#3#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bin#end
+ jmp compile._#Function._compile_bin#1#wrap#end
+compile._#Function._compile_bin#1#wrap#0#if#end:
+compile._#Function._compile_bin#1#wrap#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable lhs
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 241], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 249], rsi ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ mov rbx, qword [rbp - 249] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.is_tmp
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#2#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable copy
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.strip_refs
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 592], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 600], rsi ; (SET)
+ mov rax, qword [rbp - 592] ; (SET)
+ mov rbx, qword [rbp - 600] ; (SET)
+ lea rsp, [rbp - 584] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 504], rax ; (SET)
+ mov rax, qword [rbp - 504] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 504], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 512], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 520], rsi ; (SET)
+ mov rax, qword [rbp - 504] ; (SET)
+ mov rbx, qword [rbp - 512] ; (SET)
+ mov rcx, qword [rbp - 520] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 504], rax ; (SET)
+ mov rax, qword [rbp - 504] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bin#2#wrap#end
+compile._#Function._compile_bin#2#wrap#0#if#end:
+compile._#Function._compile_bin#2#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 241], rax ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#3#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable copy
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.strip_refs
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 592], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 600], rsi ; (SET)
+ mov rax, qword [rbp - 592] ; (SET)
+ mov rbx, qword [rbp - 600] ; (SET)
+ lea rsp, [rbp - 584] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp
+ ; putting struct address into register
+ lea rdi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 584] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 504], rax ; (SET)
+ mov rax, qword [rbp - 504] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 504], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 512], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 520], rsi ; (SET)
+ mov rax, qword [rbp - 504] ; (SET)
+ mov rbx, qword [rbp - 512] ; (SET)
+ mov rcx, qword [rbp - 520] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 504], rax ; (SET)
+ mov rax, qword [rbp - 504] ; (SET)
+ lea rsp, [rbp - 496] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 496] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bin#3#wrap#end
+compile._#Function._compile_bin#3#wrap#0#if#end:
+compile._#Function._compile_bin#3#wrap#end:
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r10 ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ mov qword [rbp - 344], r14 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable rhs
+ ; putting struct address into register
+ lea rdi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bin#4#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#4#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.mul
+ jmp compile._#Function._compile_bin#4#wrap#end
+compile._#Function._compile_bin#4#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bin#4#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#4#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.div
+ jmp compile._#Function._compile_bin#4#wrap#end
+compile._#Function._compile_bin#4#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bin#4#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#4#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.mod
+ jmp compile._#Function._compile_bin#4#wrap#end
+compile._#Function._compile_bin#4#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bin#4#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#4#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.add
+ jmp compile._#Function._compile_bin#4#wrap#end
+compile._#Function._compile_bin#4#wrap#3#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bin#4#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#4#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.sub
+ jmp compile._#Function._compile_bin#4#wrap#end
+compile._#Function._compile_bin#4#wrap#4#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bin#4#wrap#5#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#4#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.and
+ jmp compile._#Function._compile_bin#4#wrap#end
+compile._#Function._compile_bin#4#wrap#5#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bin#4#wrap#6#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#4#wrap#6#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.or
+ jmp compile._#Function._compile_bin#4#wrap#end
+compile._#Function._compile_bin#4#wrap#6#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 409], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 417], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_bin#4#wrap#7#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 425], rsi ; (SET)
+ mov rax, qword [rbp - 417] ; (SET)
+ mov rbx, qword [rbp - 425] ; (SET)
+ lea rsp, [rbp - 409] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 409] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_bin#4#wrap#7#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov rcx, qword [rbp - 432] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.xor
+ jmp compile._#Function._compile_bin#4#wrap#end
+compile._#Function._compile_bin#4#wrap#7#if#end:
+compile._#Function._compile_bin#4#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 416], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 424], rsi ; (SET)
+ mov byte [rbp - 425], 1 ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ mov rbx, qword [rbp - 424] ; (SET)
+ mov cl, byte [rbp - 425] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_after
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 408] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 416], rax ; (SET)
+ mov rax, qword [rbp - 416] ; (SET)
+ lea rsp, [rbp - 408] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_bin#end
+
+compile._#Function._compile_bin#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_pre:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_pre#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_pre#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 0 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ mov qword [rbp - 256], r13 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.neg
+ jmp compile._#Function._compile_pre#0#wrap#end
+compile._#Function._compile_pre#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_pre#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_pre#0#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 0 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ mov qword [rbp - 256], r13 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.not
+ jmp compile._#Function._compile_pre#0#wrap#end
+compile._#Function._compile_pre#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_pre#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_pre#0#wrap#2#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 0 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 328], r10 ; (SET)
+ mov qword [rbp - 336], r11 ; (SET)
+ mov qword [rbp - 344], r13 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 336], rsi ; (SET)
+ mov qword [rbp - 344], 5 ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ mov rbx, qword [rbp - 336] ; (SET)
+ mov rcx, qword [rbp - 344] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.take_ptr
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_pre#0#wrap#end
+compile._#Function._compile_pre#0#wrap#2#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_pre#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_pre#0#wrap#3#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 0 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ mov qword [rbp - 256], r13 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.dec
+ jmp compile._#Function._compile_pre#0#wrap#end
+compile._#Function._compile_pre#0#wrap#3#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_pre#0#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_pre#0#wrap#4#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 0 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov qword [rbp - 248], r11 ; (SET)
+ mov qword [rbp - 256], r13 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ mov rcx, qword [rbp - 256] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.inc
+ jmp compile._#Function._compile_pre#0#wrap#end
+compile._#Function._compile_pre#0#wrap#4#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_pre#0#wrap#5#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_pre#0#wrap#5#if#end
+ sub rsp, 96 ; Create stack space for local variable f_buff
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rax ; (SET)
+ mov rax, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 240] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.init
+ sub rsp, 104 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 352], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_pre#0#wrap#5#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 360], rsi ; (SET)
+ mov rax, qword [rbp - 352] ; (SET)
+ mov rbx, qword [rbp - 360] ; (SET)
+ lea rsp, [rbp - 344] ; Free stack space (freeing tmp variables)
+ sub rsp, 104
+ call compile._#Scope.gen_sub
+ ; putting struct address into register
+ lea rdi, [rbp - 344] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ add rsp, 104
+ sub rsp, 104 ; Create stack space for local variable f_scope
+ ; putting struct address into register
+ lea rdi, [rbp - 448] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 344] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ ; putting struct address into register
+ lea rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 432], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 456], rsi ; (SET)
+ mov qword [rbp - 464], 0 ; (SET)
+ mov rax, qword [rbp - 456] ; (SET)
+ mov rbx, qword [rbp - 464] ; (SET)
+ lea rsp, [rbp - 448] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 632], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 448] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 640], rsi ; (SET)
+ mov qword [rbp - 648], r13 ; (SET)
+ mov rax, qword [rbp - 632] ; (SET)
+ mov rbx, qword [rbp - 640] ; (SET)
+ mov rcx, qword [rbp - 648] ; (SET)
+ lea rsp, [rbp - 624] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 624] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 624] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 544], r10 ; (SET)
+ mov qword [rbp - 552], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_pre#0#wrap#5#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 560], rsi ; (SET)
+ mov rax, qword [rbp - 544] ; (SET)
+ mov rbx, qword [rbp - 552] ; (SET)
+ mov rcx, qword [rbp - 560] ; (SET)
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ call compile._#Function._find_literal_type
+ mov r14, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 632], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 640], rsi ; (SET)
+ mov qword [rbp - 648], r14 ; (SET)
+ mov rax, qword [rbp - 632] ; (SET)
+ mov rbx, qword [rbp - 640] ; (SET)
+ mov rcx, qword [rbp - 648] ; (SET)
+ lea rsp, [rbp - 624] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var._len
+ ; putting struct address into register
+ lea rdi, [rbp - 624] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 624] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 544], rax ; (SET)
+ mov rax, qword [rbp - 544] ; (SET)
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ mov rcx, qword [rbp - 96] ; (SET)
+ cmp rcx, qword [rel compile.VLOC_LITL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_pre#0#wrap#5#if#3#wrap#0#if#end
+ mov r15, qword [rbp - 376] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 448] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 544], rax ; (SET)
+ mov qword [rbp - 552], r15 ; (SET)
+ mov byte [rbp - 553], 1 ; (SET)
+ mov rax, qword [rbp - 544] ; (SET)
+ mov rbx, qword [rbp - 552] ; (SET)
+ mov cl, byte [rbp - 553] ; (SET)
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_tmp
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable cb
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 544], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 544] ; (SET_PRM_R)
+ mov qword [rbp - 552], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 560], rsi ; (SET)
+ mov rax, qword [rbp - 552] ; (SET)
+ mov rbx, qword [rbp - 560] ; (SET)
+ lea rsp, [rbp - 544] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.append
+ jmp compile._#Function._compile_pre#0#wrap#5#if#3#wrap#end
+compile._#Function._compile_pre#0#wrap#5#if#3#wrap#0#if#end:
+compile._#Function._compile_pre#0#wrap#5#if#3#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 448] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 544], rax ; (SET)
+ mov rax, qword [rbp - 544] ; (SET)
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 240] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 544], rax ; (SET)
+ mov rax, qword [rbp - 544] ; (SET)
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.end
+ jmp compile._#Function._compile_pre#0#wrap#end
+compile._#Function._compile_pre#0#wrap#5#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_pre#0#wrap#6#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_pre#0#wrap#6#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Function._compile_pre#0#wrap#end
+compile._#Function._compile_pre#0#wrap#6#if#end:
+compile._#Function._compile_pre#0#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_pre#end
+
+compile._#Function._compile_pre#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._find_literal_type:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for local variable name
+ mov qword [rbp - 64], rcx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable vec
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov qword [rbp - 112], 8 ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ lea rsi, qword [rbp - 64] ; (TAKE_PTR)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rsi, qword [rel compile.SEARCH_STRUCT] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 120], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ mov rcx, qword [rbp - 120] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call compile._#Module.find
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Function._find_literal_type#end
+
+compile._#Function._find_literal_type#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_literal:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_literal#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._find_literal_type
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov qword [rbp - 160], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ mov qword [rbp - 88], 1 ; (SET)
+ jmp compile._#Function._compile_literal#0#wrap#end
+compile._#Function._compile_literal#0#wrap#0#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_literal#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#1#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._find_literal_type
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov qword [rbp - 160], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ mov qword [rbp - 88], 0 ; (SET)
+ jmp compile._#Function._compile_literal#0#wrap#end
+compile._#Function._compile_literal#0#wrap#1#if#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 153], rsi ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#2#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 161], rsi ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ mov rbx, qword [rbp - 161] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_literal#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#2#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._find_literal_type
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov qword [rbp - 160], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ mov qword [rbp - 88], 0 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov dword [rbp - 156], 1 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov ebx, dword [rbp - 156] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ jmp compile._#Function._compile_literal#0#wrap#end
+compile._#Function._compile_literal#0#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [r8] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 39
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_literal#0#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#3#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._find_literal_type
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov qword [rbp - 160], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ mov rbx, r14 ; (SET)
+ add r14, 1 ; (STD_OP)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r14 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils.unquote_cha
+ mov r15b, al ; (SET)
+ movzx rsi, r15b ; (SET_PRM_R)
+ mov qword [rbp - 88], rsi ; (SET)
+ jmp compile._#Function._compile_literal#0#wrap#end
+compile._#Function._compile_literal#0#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, qword [r8] ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 34
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_literal#0#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.gen_const_name
+ mov r13, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 184], rsi ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call utils.unquote_str
+ ; putting struct address into register
+ lea rdi, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable vout
+ ; putting struct address into register
+ lea rdi, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r14 ; (SET)
+ mov qword [rbp - 224], r13 ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r14 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#4#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 200] ; (SET_PRM_R)
+ mov qword [rbp - 216], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r14 ; (SET)
+ mov qword [rbp - 224], r15 ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r14 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#4#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r15 ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 216], 1 ; (SET)
+ mov rcx, qword [rbp - 216] ; (SET)
+ cmp rcx, qword [rbp - 200]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_literal#0#wrap#4#if#2#loop#end
+compile._#Function._compile_literal#0#wrap#4#if#2#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 224], rax ; (SET)
+ mov rbx, qword [rbp - 216] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 232], rbx ; (SET)
+ mov rax, qword [rbp - 224] ; (SET)
+ mov rbx, qword [rbp - 232] ; (SET)
+ lea rsp, [rbp - 216] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable uptr
+ mov qword [rbp - 224], rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable utmp
+ mov rdi, [rbp - 224] ; (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [rbp - 225], sil ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ movzx rsi, byte [rbp - 225] ; (SET_PRM_R)
+ mov qword [rbp - 233], rsi ; (SET)
+ mov rax, qword [rbp - 233] ; (SET)
+ lea rsp, [rbp - 225] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 233], r14 ; (SET)
+ mov qword [rbp - 241], r15 ; (SET)
+ mov rax, qword [rbp - 233] ; (SET)
+ mov rbx, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 225] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 233], r14 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#4#if#2#loop#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 241], rsi ; (SET)
+ mov rax, qword [rbp - 233] ; (SET)
+ mov rbx, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 225] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 233], r15 ; (SET)
+ mov rax, qword [rbp - 233] ; (SET)
+ lea rsp, [rbp - 225] ; Free stack space (freeing tmp variables)
+ call _delete
+compile._#Function._compile_literal#0#wrap#4#if#2#loop#rep:
+ mov rbx, qword [rbp - 216] ; (SET)
+ inc qword qword [rbp - 216] ; (UNARY)
+ mov rcx, qword [rbp - 216] ; (SET)
+ cmp rcx, qword [rbp - 200]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_literal#0#wrap#4#if#2#loop#end
+ jmp compile._#Function._compile_literal#0#wrap#4#if#2#loop#start
+compile._#Function._compile_literal#0#wrap#4#if#2#loop#end:
+ mov rcx, qword [rbp - 200] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_literal#0#wrap#4#if#3#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for local variable i
+ mov rsi, qword [rbp - 200] ; (SET_PRM_R)
+ mov qword [rbp - 216], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 224], rax ; (SET)
+ mov rbx, qword [rbp - 216] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 232], rbx ; (SET)
+ mov rax, qword [rbp - 224] ; (SET)
+ mov rbx, qword [rbp - 232] ; (SET)
+ lea rsp, [rbp - 216] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ sub rsp, 8 ; Create stack space for local variable uptr
+ mov qword [rbp - 224], rax ; (SET)
+ sub rsp, 1 ; Create stack space for local variable utmp
+ mov rdi, [rbp - 224] ; (SET_PRM_L)
+ mov sil, byte [rdi] ; (SET_PRM_R)
+ mov byte [rbp - 225], sil ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ movzx rsi, byte [rbp - 225] ; (SET_PRM_R)
+ mov qword [rbp - 233], rsi ; (SET)
+ mov rax, qword [rbp - 233] ; (SET)
+ lea rsp, [rbp - 225] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 233], r14 ; (SET)
+ mov qword [rbp - 241], r15 ; (SET)
+ mov rax, qword [rbp - 233] ; (SET)
+ mov rbx, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 225] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 233], r15 ; (SET)
+ mov rax, qword [rbp - 233] ; (SET)
+ lea rsp, [rbp - 225] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Function._compile_literal#0#wrap#4#if#3#wrap#end
+compile._#Function._compile_literal#0#wrap#4#if#3#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r14 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#4#if#3#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ jmp compile._#Function._compile_literal#0#wrap#4#if#3#wrap#end
+compile._#Function._compile_literal#0#wrap#4#if#3#wrap#1#if#end:
+compile._#Function._compile_literal#0#wrap#4#if#3#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r14 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#4#if#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 216], rax ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 216], rax ; (SET)
+ mov qword [rbp - 224], r13 ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 216], rax ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#4#if#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 216], rax ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r14 ; (SET)
+ mov qword [rbp - 224], r15 ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r14 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#4#if#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r14 ; (SET)
+ mov qword [rbp - 224], r13 ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r14 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#4#if#7#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_d
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 216], r10 ; (SET)
+ mov qword [rbp - 224], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#4#if#8#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 232], rsi ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ mov rbx, qword [rbp - 224] ; (SET)
+ mov rcx, qword [rbp - 232] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call compile._#Function._find_literal_type
+ sub rsp, 8 ; Create stack space for local variable t
+ mov qword [rbp - 216], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 224], rax ; (SET)
+ mov rsi, qword [rbp - 216] ; (SET_PRM_R)
+ mov qword [rbp - 232], rsi ; (SET)
+ mov rax, qword [rbp - 224] ; (SET)
+ mov rbx, qword [rbp - 232] ; (SET)
+ lea rsp, [rbp - 216] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 144] ; (SET_PRM_R)
+ mov qword [rbp - 224], rsi ; (SET)
+ mov rax, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 216] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 208] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 224], rax ; (SET)
+ mov rax, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 216] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 144], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 4 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 224], rax ; (SET)
+ mov dword [rbp - 228], 1 ; (SET)
+ mov rax, qword [rbp - 224] ; (SET)
+ mov ebx, dword [rbp - 228] ; (SET)
+ lea rsp, [rbp - 216] ; Free stack space (freeing tmp variables)
+ call compile._#Var.ptr_push
+ mov rbx, qword [rbp - 96] ; (SET)
+ sub rbx, 2 ; (STD_OP)
+ mov qword [rbp - 96], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 224], r13 ; (SET)
+ mov rax, qword [rbp - 224] ; (SET)
+ lea rsp, [rbp - 216] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Function._compile_literal#0#wrap#end
+compile._#Function._compile_literal#0#wrap#4#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov rsi, qword [rel compile._#Function._compile_literal#0#wrap#5#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 168], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Function._find_literal_type
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov qword [rbp - 160], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils.cstr_to_int
+ mov qword [rbp - 88], rax ; (SET)
+ jmp compile._#Function._compile_literal#0#wrap#end
+compile._#Function._compile_literal#0#wrap#5#if#end:
+compile._#Function._compile_literal#0#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_literal#end
+
+compile._#Function._compile_literal#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._print_artifact:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._print_artifact#0#loop#end
+compile._#Function._print_artifact#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [r12] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._print_artifact#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._print_artifact#0#loop#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Function._print_artifact#0#loop#0#wrap#end
+compile._#Function._print_artifact#0#loop#0#wrap#0#if#end:
+compile._#Function._print_artifact#0#loop#0#wrap#end:
+compile._#Function._print_artifact#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._print_artifact#0#loop#end
+ jmp compile._#Function._print_artifact#0#loop#start
+compile._#Function._print_artifact#0#loop#end:
+
+compile._#Function._print_artifact#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._compile_value:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_value#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_value
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_value#end
+ jmp compile._#Function._compile_value#0#wrap#end
+compile._#Function._compile_value#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_LITERAL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_value#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_literal
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_value#end
+ jmp compile._#Function._compile_value#0#wrap#end
+compile._#Function._compile_value#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_value#0#wrap#2#if#end
+ sub rsp, 32 ; Create stack space for local variable tmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 8 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 184], r10 ; (SET)
+ mov qword [rbp - 192], r11 ; (SET)
+ mov qword [rbp - 200], r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 208], rsi ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ mov rbx, qword [rbp - 192] ; (SET)
+ mov rcx, qword [rbp - 200] ; (SET)
+ mov rdx, qword [rbp - 208] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_chain_r_base
+ ; putting struct address into register
+ lea rdi, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rdi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov rcx, qword [rbp - 80] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_value#0#wrap#2#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 272], rax ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Function._compile_value#0#wrap#2#if#0#wrap#end
+compile._#Function._compile_value#0#wrap#2#if#0#wrap#0#if#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_value#end
+ jmp compile._#Function._compile_value#0#wrap#2#if#0#wrap#end
+compile._#Function._compile_value#0#wrap#2#if#0#wrap#1#if#end:
+compile._#Function._compile_value#0#wrap#2#if#0#wrap#end:
+ jmp compile._#Function._compile_value#0#wrap#end
+compile._#Function._compile_value#0#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_PRE_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_value#0#wrap#3#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_pre
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_value#end
+ jmp compile._#Function._compile_value#0#wrap#end
+compile._#Function._compile_value#0#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_BIN_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._compile_value#0#wrap#4#if#end
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r11 ; (SET)
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Function._compile_bin
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_value#end
+ jmp compile._#Function._compile_value#0#wrap#end
+compile._#Function._compile_value#0#wrap#4#if#end:
+compile._#Function._compile_value#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_value#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call parse.print_node_type
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._compile_value#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 88 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._init
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Function._compile_value#end
+
+compile._#Function._compile_value#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function._print:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._print#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._print#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 64], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._print#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._print#3#loop#end
+compile._#Function._print#3#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rbx, r11 ; (SET)
+ add rbx, 2 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._print
+compile._#Function._print#3#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._print#3#loop#end
+ jmp compile._#Function._print#3#loop#start
+compile._#Function._print#3#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 64], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._print#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._print#5#loop#end
+compile._#Function._print#5#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rbx, r11 ; (SET)
+ add rbx, 2 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._print
+compile._#Function._print#5#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function._print#5#loop#end
+ jmp compile._#Function._print#5#loop#start
+compile._#Function._print#5#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Function._print#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+compile._#Function._print#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Function.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function.end#0#loop#end
+compile._#Function.end#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+compile._#Function.end#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function.end#0#loop#end
+ jmp compile._#Function.end#0#loop#start
+compile._#Function.end#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function.end#1#loop#end
+compile._#Function.end#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+compile._#Function.end#1#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Function.end#1#loop#end
+ jmp compile._#Function.end#1#loop#start
+compile._#Function.end#1#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+compile._#Function.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable v
+ sub rsp, 64 ; Create stack space for local variable s
+ sub rsp, 97 ; Create stack space for local variable f
+ sub rsp, 145 ; Create stack space for local variable m
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 137 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 458], rsi ; (SET)
+ mov qword [rbp - 466], 88 ; (SET)
+ mov rax, qword [rbp - 458] ; (SET)
+ mov rbx, qword [rbp - 466] ; (SET)
+ lea rsp, [rbp - 450] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 458], rsi ; (SET)
+ mov qword [rbp - 466], 64 ; (SET)
+ mov rax, qword [rbp - 458] ; (SET)
+ mov rbx, qword [rbp - 466] ; (SET)
+ lea rsp, [rbp - 450] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 458], rsi ; (SET)
+ mov qword [rbp - 466], 97 ; (SET)
+ mov rax, qword [rbp - 458] ; (SET)
+ mov rbx, qword [rbp - 466] ; (SET)
+ lea rsp, [rbp - 450] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 458], rsi ; (SET)
+ mov qword [rbp - 466], 145 ; (SET)
+ mov rax, qword [rbp - 458] ; (SET)
+ mov rbx, qword [rbp - 466] ; (SET)
+ lea rsp, [rbp - 450] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+
+compile._#Module._init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 136 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r9, rsi ; (SET)
+ mov cx, word [r9] ; (SET)
+ cmp cx, word [rel parse.NTYPE_EXPORT]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ mov byte [rbx], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._from_tree
+
+compile._#Module.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module.update_children:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.update_children#0#loop#end
+compile._#Module.update_children#0#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Module.update_children
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 137 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+compile._#Module.update_children#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.update_children#0#loop#end
+ jmp compile._#Module.update_children#0#loop#start
+compile._#Module.update_children#0#loop#end:
+ sub rsp, 32 ; Create stack space for local variable n
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.update_children#1#loop#end
+compile._#Module.update_children#1#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 104], rsi ; (SET)
+ mov qword [rbp - 112], r12 ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov rsi, qword [rel compile._#Module.update_children#1#loop#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 120], rax ; (SET)
+ mov rax, qword [rbp - 120] ; (SET)
+ lea rsp, [rbp - 112] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 112], rax ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_sub
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r10 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+compile._#Module.update_children#1#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.update_children#1#loop#end
+ jmp compile._#Module.update_children#1#loop#start
+compile._#Module.update_children#1#loop#end:
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.update_children#2#loop#end
+compile._#Module.update_children#2#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 104], rsi ; (SET)
+ mov qword [rbp - 112], r13 ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 80 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+compile._#Module.update_children#2#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.update_children#2#loop#end
+ jmp compile._#Module.update_children#2#loop#start
+compile._#Module.update_children#2#loop#end:
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.update_children#3#loop#end
+compile._#Module.update_children#3#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 104], rsi ; (SET)
+ mov qword [rbp - 112], r14 ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 89 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+compile._#Module.update_children#3#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.update_children#3#loop#end
+ jmp compile._#Module.update_children#3#loop#start
+compile._#Module.update_children#3#loop#end:
+
+compile._#Module.update_children#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._create_methods:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable n
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov rsi, qword [rel compile._#Module._create_methods#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.from_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r11 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 145 ; Create stack space for local variable m
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 233] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 241], rax ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Module._init
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 241], rax ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 233], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 136 ; Add offset when getting member (MEMBER)
+ mov sil, byte [rsi] ; (SET_PRM_R)
+ mov byte [rbp - 97], sil ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 241], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 233] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 249], rsi ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ mov rbx, qword [rbp - 249] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r12, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 241], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 249], rsi ; (SET)
+ mov qword [rbp - 257], r12 ; (SET)
+ mov rax, qword [rbp - 249] ; (SET)
+ mov rbx, qword [rbp - 257] ; (SET)
+ lea rsp, [rbp - 241] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ mov r13, rax ; (SET)
+
+ ; STARTING RETURN
+ mov rax, r13 ; (SET)
+ jmp compile._#Module._create_methods#end
+
+compile._#Module._create_methods#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module.is_method:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strlen
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8, rax ; (SET)
+ cmp r8, 3
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.is_method#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Module.is_method#end
+ jmp compile._#Module.is_method#0#wrap#end
+compile._#Module.is_method#0#wrap#0#if#end:
+compile._#Module.is_method#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov r11, qword [rsi] ; (SET)
+ mov r8, r11 ; (SET)
+ ; Gen index
+ mov rax, 0 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 95
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.is_method#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Module.is_method#end
+ jmp compile._#Module.is_method#1#wrap#end
+compile._#Module.is_method#1#wrap#0#if#end:
+ mov r8, r11 ; (SET)
+ ; Gen index
+ mov rax, 1 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 35
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.is_method#1#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Module.is_method#end
+ jmp compile._#Module.is_method#1#wrap#end
+compile._#Module.is_method#1#wrap#1#if#end:
+ mov r8, r11 ; (SET)
+ ; Gen index
+ mov rax, 2 ; (SET)
+ imul rax, 1 ; (MUL)
+ mov rsi, r8 ; (GEN_IDX)
+ add rax, rsi ; (GEN_IDX)
+ mov r8, rax ; (SET)
+ mov cl, byte [r8] ; (SET)
+ cmp cl, 35
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.is_method#1#wrap#2#if#end
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Module.is_method#end
+ jmp compile._#Module.is_method#1#wrap#end
+compile._#Module.is_method#1#wrap#2#if#end:
+compile._#Module.is_method#1#wrap#end:
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._#Module.is_method#end
+
+compile._#Module.is_method#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module.related_type:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 65], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ call compile._#Module.is_method
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.related_type#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Module.related_type#end
+ jmp compile._#Module.related_type#0#wrap#end
+compile._#Module.related_type#0#wrap#0#if#end:
+compile._#Module.related_type#0#wrap#end:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 137 ; Add offset when getting member (MEMBER)
+ mov r10, qword [rsi] ; (SET)
+ mov r11, qword [rbp - 64] ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.related_type#1#loop#end
+compile._#Module.related_type#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, r11
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.related_type#1#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Module.related_type#end
+ jmp compile._#Module.related_type#1#loop#0#wrap#end
+compile._#Module.related_type#1#loop#0#wrap#0#if#end:
+compile._#Module.related_type#1#loop#0#wrap#end:
+compile._#Module.related_type#1#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.related_type#1#loop#end
+ jmp compile._#Module.related_type#1#loop#start
+compile._#Module.related_type#1#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Module.related_type#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Module.related_type#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Module.related_type#end
+
+compile._#Module.related_type#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._from_tree:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._from_tree#0#loop#end
+compile._#Module._from_tree#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_MODULE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._from_tree#0#loop#0#wrap#0#if#end
+ sub rsp, 145 ; Create stack space for local variable m
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 209], rax ; (SET)
+ mov qword [rbp - 217], r13 ; (SET)
+ mov qword [rbp - 225], r12 ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ mov rbx, qword [rbp - 217] ; (SET)
+ mov rcx, qword [rbp - 225] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call compile._#Module.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 209], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 217], rsi ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ mov rbx, qword [rbp - 217] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Module._from_tree#0#loop#0#wrap#end
+compile._#Module._from_tree#0#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_EXPORT]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._from_tree#0#loop#0#wrap#1#if#end
+ sub rsp, 145 ; Create stack space for local variable m
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 209], rax ; (SET)
+ mov qword [rbp - 217], r13 ; (SET)
+ mov qword [rbp - 225], r12 ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ mov rbx, qword [rbp - 217] ; (SET)
+ mov rcx, qword [rbp - 225] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call compile._#Module.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 209], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 201] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 217], rsi ; (SET)
+ mov rax, qword [rbp - 209] ; (SET)
+ mov rbx, qword [rbp - 217] ; (SET)
+ lea rsp, [rbp - 201] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Module._from_tree#0#loop#0#wrap#end
+compile._#Module._from_tree#0#loop#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_STRUCT]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._from_tree#0#loop#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._create_methods
+ mov r15, rax ; (SET)
+ sub rsp, 64 ; Create stack space for local variable s
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov qword [rbp - 136], r13 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call compile._#Struct.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Module._from_tree#0#loop#0#wrap#end
+compile._#Module._from_tree#0#loop#0#wrap#2#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_FUNCTION]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._from_tree#0#loop#0#wrap#3#if#end
+ sub rsp, 97 ; Create stack space for local variable f
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 153] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 161], rax ; (SET)
+ mov qword [rbp - 169], r13 ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call compile._#Function.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 161], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 153] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 169], rsi ; (SET)
+ mov rax, qword [rbp - 161] ; (SET)
+ mov rbx, qword [rbp - 169] ; (SET)
+ lea rsp, [rbp - 153] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Module._from_tree#0#loop#0#wrap#end
+compile._#Module._from_tree#0#loop#0#wrap#3#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_DECL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._from_tree#0#loop#0#wrap#4#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._decl
+ jmp compile._#Module._from_tree#0#loop#0#wrap#end
+compile._#Module._from_tree#0#loop#0#wrap#4#if#end:
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ASM]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._from_tree#0#loop#0#wrap#5#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_h
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rsi, qword [rel compile._#Module._from_tree#0#loop#0#wrap#5#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_h
+ jmp compile._#Module._from_tree#0#loop#0#wrap#end
+compile._#Module._from_tree#0#loop#0#wrap#5#if#end:
+compile._#Module._from_tree#0#loop#0#wrap#end:
+compile._#Module._from_tree#0#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._from_tree#0#loop#end
+ jmp compile._#Module._from_tree#0#loop#start
+compile._#Module._from_tree#0#loop#end:
+
+compile._#Module._from_tree#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._method_id:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable tmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov qword [rbp - 136], 8 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for local variable str
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._method_id#0#loop#end
+compile._#Module._method_id#0#loop#start:
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 46
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._method_id#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 136], rax ; (SET)
+ mov rax, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 128] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 128], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 136], rax ; (SET)
+ lea rsi, qword [rbp - 128] ; (TAKE_PTR)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 136] ; (SET)
+ mov rbx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 128] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 136], rax ; (SET)
+ mov qword [rbp - 144], 1 ; (SET)
+ mov rax, qword [rbp - 136] ; (SET)
+ mov rbx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 128] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ jmp compile._#Module._method_id#0#loop#0#wrap#end
+compile._#Module._method_id#0#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 136], rax ; (SET)
+ mov qword [rbp - 144], r11 ; (SET)
+ mov rax, qword [rbp - 136] ; (SET)
+ mov rbx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 128] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Module._method_id#0#loop#0#wrap#end
+compile._#Module._method_id#0#loop#0#wrap#1#if#end:
+compile._#Module._method_id#0#loop#0#wrap#end:
+compile._#Module._method_id#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ add r11, 1 ; (STD_OP)
+ mov cl, byte [r11] ; (SET)
+ cmp cl, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._method_id#0#loop#end
+ jmp compile._#Module._method_id#0#loop#start
+compile._#Module._method_id#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 136], rax ; (SET)
+ mov rax, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 128] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 128], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Module._method_id#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rsi, qword [rbp - 128] ; (SET_PRM_R)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 136] ; (SET)
+ mov rbx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 128] ; Free stack space (freeing tmp variables)
+ call utils.stradd
+ sub rsp, 8 ; Create stack space for local variable last
+ mov qword [rbp - 136], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 128] ; (SET_PRM_R)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 136] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rax ; (SET)
+ lea rsi, qword [rbp - 136] ; (TAKE_PTR)
+ mov qword [rbp - 152], rsi ; (SET)
+ mov rax, qword [rbp - 144] ; (SET)
+ mov rbx, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 136] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ jmp compile._#Module._method_id#end
+
+compile._#Module._method_id#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._method_id_end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._method_id_end#0#loop#end
+compile._#Module._method_id_end#0#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [r12] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+compile._#Module._method_id_end#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._method_id_end#0#loop#end
+ jmp compile._#Module._method_id_end#0#loop#start
+compile._#Module._method_id_end#0#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+compile._#Module._method_id_end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._collect_methods:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, rbx ; (SET)
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._collect_methods#0#loop#end
+compile._#Module._collect_methods#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_FUNCTION]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._collect_methods#0#loop#0#wrap#0#if#end
+ sub rsp, 97 ; Create stack space for local variable f
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 161] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 169], rax ; (SET)
+ mov qword [rbp - 177], r11 ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call compile._#Function.init
+ mov byte [rbp - 73], 1 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 169], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 161] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 177], rsi ; (SET)
+ mov rax, qword [rbp - 169] ; (SET)
+ mov rbx, qword [rbp - 177] ; (SET)
+ lea rsp, [rbp - 161] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Module._collect_methods#0#loop#0#wrap#end
+compile._#Module._collect_methods#0#loop#0#wrap#0#if#end:
+compile._#Module._collect_methods#0#loop#0#wrap#end:
+compile._#Module._collect_methods#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._collect_methods#0#loop#end
+ jmp compile._#Module._collect_methods#0#loop#start
+compile._#Module._collect_methods#0#loop#end:
+
+compile._#Module._collect_methods#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module.collect_methods:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.collect_methods#0#loop#end
+compile._#Module.collect_methods#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_METHOD]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.collect_methods#0#loop#0#wrap#0#if#end
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call compile._#Module._method_id
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable id
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ mov rsi, qword [rel compile.SEARCH_SUB] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 144], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ mov rcx, qword [rbp - 144] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call compile._#Module.find
+ mov r14, rax ; (SET)
+ cmp r14, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 128], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r14 ; (SET)
+ mov qword [rbp - 136], r12 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call compile._#Module._collect_methods
+ jmp compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#end
+compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 128], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#end
+compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Module.collect_methods#0#loop#0#wrap#0#if#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call compile._#Module._method_id_end
+ jmp compile._#Module.collect_methods#0#loop#0#wrap#end
+compile._#Module.collect_methods#0#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_MODULE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.collect_methods#0#loop#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_sub
+ mov r14, rax ; (SET)
+ cmp r14, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.collect_methods#0#loop#0#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module.collect_methods
+ jmp compile._#Module.collect_methods#0#loop#0#wrap#1#if#0#wrap#end
+compile._#Module.collect_methods#0#loop#0#wrap#1#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Module.collect_methods#0#loop#0#wrap#1#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Module.collect_methods#0#loop#0#wrap#1#if#0#wrap#end
+compile._#Module.collect_methods#0#loop#0#wrap#1#if#0#wrap#1#if#end:
+compile._#Module.collect_methods#0#loop#0#wrap#1#if#0#wrap#end:
+ jmp compile._#Module.collect_methods#0#loop#0#wrap#end
+compile._#Module.collect_methods#0#loop#0#wrap#1#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_EXPORT]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.collect_methods#0#loop#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_sub
+ mov r14, rax ; (SET)
+ cmp r14, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.collect_methods#0#loop#0#wrap#2#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module.collect_methods
+ jmp compile._#Module.collect_methods#0#loop#0#wrap#2#if#0#wrap#end
+compile._#Module.collect_methods#0#loop#0#wrap#2#if#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Module.collect_methods#0#loop#0#wrap#2#if#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Module.collect_methods#0#loop#0#wrap#2#if#0#wrap#end
+compile._#Module.collect_methods#0#loop#0#wrap#2#if#0#wrap#1#if#end:
+compile._#Module.collect_methods#0#loop#0#wrap#2#if#0#wrap#end:
+ jmp compile._#Module.collect_methods#0#loop#0#wrap#end
+compile._#Module.collect_methods#0#loop#0#wrap#2#if#end:
+compile._#Module.collect_methods#0#loop#0#wrap#end:
+compile._#Module.collect_methods#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.collect_methods#0#loop#end
+ jmp compile._#Module.collect_methods#0#loop#start
+compile._#Module.collect_methods#0#loop#end:
+
+compile._#Module.collect_methods#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._decl:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._decl#0#wrap#0#if#end
+ jmp compile._#Module._decl#end
+ jmp compile._#Module._decl#0#wrap#end
+compile._#Module._decl#0#wrap#0#if#end:
+compile._#Module._decl#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_TYPE]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._decl#1#wrap#0#if#end
+ jmp compile._#Module._decl#end
+ jmp compile._#Module._decl#1#wrap#end
+compile._#Module._decl#1#wrap#0#if#end:
+compile._#Module._decl#1#wrap#end:
+ mov r14, 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._decl#2#loop#end
+compile._#Module._decl#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r13] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._decl#2#loop#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for local variable v
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov qword [rbp - 160], r12 ; (SET)
+ mov qword [rbp - 168], r13 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Module._decl#2#loop#0#wrap#end
+compile._#Module._decl#2#loop#0#wrap#0#if#end:
+compile._#Module._decl#2#loop#0#wrap#end:
+compile._#Module._decl#2#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._decl#2#loop#end
+ jmp compile._#Module._decl#2#loop#start
+compile._#Module._decl#2#loop#end:
+
+compile._#Module._decl#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module.compile:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._size_structs
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._compile
+
+compile._#Module.compile#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._size_structs:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r11, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._size_structs#0#loop#end
+compile._#Module._size_structs#0#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r11 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._size_structs#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Struct._compute_size
+ jmp compile._#Module._size_structs#0#loop#0#wrap#end
+compile._#Module._size_structs#0#loop#0#wrap#0#if#end:
+compile._#Module._size_structs#0#loop#0#wrap#end:
+compile._#Module._size_structs#0#loop#rep:
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._size_structs#0#loop#end
+ jmp compile._#Module._size_structs#0#loop#start
+compile._#Module._size_structs#0#loop#end:
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._size_structs#1#loop#end
+compile._#Module._size_structs#1#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._resolve_type
+compile._#Module._size_structs#1#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._size_structs#1#loop#end
+ jmp compile._#Module._size_structs#1#loop#start
+compile._#Module._size_structs#1#loop#end:
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._size_structs#2#loop#end
+compile._#Module._size_structs#2#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Function._resolve_type
+compile._#Module._size_structs#2#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._size_structs#2#loop#end
+ jmp compile._#Module._size_structs#2#loop#start
+compile._#Module._size_structs#2#loop#end:
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._size_structs#3#loop#end
+compile._#Module._size_structs#3#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Module._size_structs
+compile._#Module._size_structs#3#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._size_structs#3#loop#end
+ jmp compile._#Module._size_structs#3#loop#start
+compile._#Module._size_structs#3#loop#end:
+
+compile._#Module._size_structs#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._compile:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, rbx ; (SET)
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._compile#0#loop#end
+compile._#Module._compile#0#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var._static_compile
+compile._#Module._compile#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._compile#0#loop#end
+ jmp compile._#Module._compile#0#loop#start
+compile._#Module._compile#0#loop#end:
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._compile#1#loop#end
+compile._#Module._compile#1#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov qword [rbp - 88], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ mov rcx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Function._compile
+compile._#Module._compile#1#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._compile#1#loop#end
+ jmp compile._#Module._compile#1#loop#start
+compile._#Module._compile#1#loop#end:
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._compile#2#loop#end
+compile._#Module._compile#2#loop#start:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r13 ; (SET)
+ mov qword [rbp - 80], r10 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Module._compile
+compile._#Module._compile#2#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._compile#2#loop#end
+ jmp compile._#Module._compile#2#loop#start
+compile._#Module._compile#2#loop#end:
+
+compile._#Module._compile#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module.find:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.find#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Module.find#end
+ jmp compile._#Module.find#0#wrap#end
+compile._#Module.find#0#wrap#0#if#end:
+compile._#Module.find#0#wrap#end:
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov qword [rbp - 88], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find
+ mov rax, rax ; (SET)
+ jmp compile._#Module.find#end
+
+compile._#Module.find#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._find:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ mov r8, r13 ; (SET)
+ add r8, 1 ; (STD_OP)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r8, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 64], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 64] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#0#wrap#0#if#0#loop#end
+compile._#Module._find#0#wrap#0#if#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 65], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [r15] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 81], rsi ; (SET)
+ mov rax, qword [rbp - 73] ; (SET)
+ mov rbx, qword [rbp - 81] ; (SET)
+ lea rsp, [rbp - 65] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 65] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#0#wrap#0#if#0#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r14 ; (SET)
+ mov qword [rbp - 80], r11 ; (SET)
+ mov qword [rbp - 88], r12 ; (SET)
+ mov rbx, r13 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 96], rbx ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ mov rcx, qword [rbp - 88] ; (SET)
+ mov rdx, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find
+ sub rsp, 8 ; Create stack space for local variable v
+ mov qword [rbp - 72], rax ; (SET)
+ mov rcx, qword [rbp - 72] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#0#wrap#0#if#0#loop#0#wrap#0#if#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rbp - 72] ; (SET)
+ jmp compile._#Module._find#end
+ jmp compile._#Module._find#0#wrap#0#if#0#loop#0#wrap#0#if#0#wrap#end
+compile._#Module._find#0#wrap#0#if#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Module._find#0#wrap#0#if#0#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Module._find#0#wrap#0#if#0#loop#0#wrap#end
+compile._#Module._find#0#wrap#0#if#0#loop#0#wrap#0#if#end:
+compile._#Module._find#0#wrap#0#if#0#loop#0#wrap#end:
+compile._#Module._find#0#wrap#0#if#0#loop#rep:
+ mov rbx, qword [rbp - 64] ; (SET)
+ inc qword qword [rbp - 64] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 64] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#0#wrap#0#if#0#loop#end
+ jmp compile._#Module._find#0#wrap#0#if#0#loop#start
+compile._#Module._find#0#wrap#0#if#0#loop#end:
+ jmp compile._#Module._find#0#wrap#end
+compile._#Module._find#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ mov r15, qword [rel NULL] ; (SET)
+ cmp r11, qword [rel compile.SEARCH_VAR]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#0#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [r14] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_var
+ mov r15, rax ; (SET)
+ jmp compile._#Module._find#0#wrap#1#if#0#wrap#end
+compile._#Module._find#0#wrap#1#if#0#wrap#0#if#end:
+ cmp r11, qword [rel compile.SEARCH_STRUCT]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#0#wrap#1#if#0#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [r14] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_struct
+ mov r15, rax ; (SET)
+ jmp compile._#Module._find#0#wrap#1#if#0#wrap#end
+compile._#Module._find#0#wrap#1#if#0#wrap#1#if#end:
+ cmp r11, qword [rel compile.SEARCH_FUNC]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#0#wrap#1#if#0#wrap#2#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [r14] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_func
+ mov r15, rax ; (SET)
+ jmp compile._#Module._find#0#wrap#1#if#0#wrap#end
+compile._#Module._find#0#wrap#1#if#0#wrap#2#if#end:
+ cmp r11, qword [rel compile.SEARCH_SUB]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#0#wrap#1#if#0#wrap#3#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rsi, qword [r14] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find_sub
+ mov r15, rax ; (SET)
+ jmp compile._#Module._find#0#wrap#1#if#0#wrap#end
+compile._#Module._find#0#wrap#1#if#0#wrap#3#if#end:
+compile._#Module._find#0#wrap#1#if#0#wrap#end:
+ cmp r15, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#0#wrap#1#if#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r15 ; (SET)
+ jmp compile._#Module._find#end
+ jmp compile._#Module._find#0#wrap#1#if#1#wrap#end
+compile._#Module._find#0#wrap#1#if#1#wrap#0#if#end:
+compile._#Module._find#0#wrap#1#if#1#wrap#end:
+ jmp compile._#Module._find#0#wrap#end
+compile._#Module._find#0#wrap#1#if#end:
+compile._#Module._find#0#wrap#end:
+ cmp r13, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Module._find#1#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 137 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Module._find#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 137 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov qword [rbp - 88], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._find
+ mov rax, rax ; (SET)
+ jmp compile._#Module._find#end
+ jmp compile._#Module._find#1#wrap#end
+compile._#Module._find#1#wrap#0#if#end:
+compile._#Module._find#1#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Module._find#end
+
+compile._#Module._find#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._find_var:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_var#0#loop#end
+compile._#Module._find_var#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_var#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Module._find_var#end
+ jmp compile._#Module._find_var#0#loop#0#wrap#end
+compile._#Module._find_var#0#loop#0#wrap#0#if#end:
+compile._#Module._find_var#0#loop#0#wrap#end:
+compile._#Module._find_var#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_var#0#loop#end
+ jmp compile._#Module._find_var#0#loop#start
+compile._#Module._find_var#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Module._find_var#end
+
+compile._#Module._find_var#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._find_struct:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_struct#0#loop#end
+compile._#Module._find_struct#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_struct#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Module._find_struct#end
+ jmp compile._#Module._find_struct#0#loop#0#wrap#end
+compile._#Module._find_struct#0#loop#0#wrap#0#if#end:
+compile._#Module._find_struct#0#loop#0#wrap#end:
+compile._#Module._find_struct#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_struct#0#loop#end
+ jmp compile._#Module._find_struct#0#loop#start
+compile._#Module._find_struct#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Module._find_struct#end
+
+compile._#Module._find_struct#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._find_func:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_func#0#loop#end
+compile._#Module._find_func#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_func#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Module._find_func#end
+ jmp compile._#Module._find_func#0#loop#0#wrap#end
+compile._#Module._find_func#0#loop#0#wrap#0#if#end:
+compile._#Module._find_func#0#loop#0#wrap#end:
+compile._#Module._find_func#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_func#0#loop#end
+ jmp compile._#Module._find_func#0#loop#start
+compile._#Module._find_func#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Module._find_func#end
+
+compile._#Module._find_func#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._find_sub:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_sub#0#loop#end
+compile._#Module._find_sub#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_sub#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Module._find_sub#end
+ jmp compile._#Module._find_sub#0#loop#0#wrap#end
+compile._#Module._find_sub#0#loop#0#wrap#0#if#end:
+compile._#Module._find_sub#0#loop#0#wrap#end:
+compile._#Module._find_sub#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._find_sub#0#loop#end
+ jmp compile._#Module._find_sub#0#loop#start
+compile._#Module._find_sub#0#loop#end:
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Module._find_sub#end
+
+compile._#Module._find_sub#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module.print:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module._print
+
+compile._#Module.print#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module._print:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Module._print#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Module._print#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._print#2#loop#end
+compile._#Module._print#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._print
+compile._#Module._print#2#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._print#2#loop#end
+ jmp compile._#Module._print#2#loop#start
+compile._#Module._print#2#loop#end:
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._print#3#loop#end
+compile._#Module._print#3#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Struct._print
+compile._#Module._print#3#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._print#3#loop#end
+ jmp compile._#Module._print#3#loop#start
+compile._#Module._print#3#loop#end:
+ mov r15, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._print#4#loop#end
+compile._#Module._print#4#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function._print
+compile._#Module._print#4#loop#rep:
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._print#4#loop#end
+ jmp compile._#Module._print#4#loop#start
+compile._#Module._print#4#loop#end:
+ sub rsp, 8 ; Create stack space for local variable i
+ mov qword [rbp - 64], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 64] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._print#5#loop#end
+compile._#Module._print#5#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r15, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rbx, r11 ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov qword [rbp - 80], rbx ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Module._print
+compile._#Module._print#5#loop#rep:
+ mov rbx, qword [rbp - 64] ; (SET)
+ inc qword qword [rbp - 64] ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [rbp - 64] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module._print#5#loop#end
+ jmp compile._#Module._print#5#loop#start
+compile._#Module._print#5#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._indent
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Module._print#6#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+compile._#Module._print#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Module.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.end#0#loop#end
+compile._#Module.end#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+compile._#Module.end#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.end#0#loop#end
+ jmp compile._#Module.end#0#loop#start
+compile._#Module.end#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.end#1#loop#end
+compile._#Module.end#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Struct.end
+compile._#Module.end#1#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.end#1#loop#end
+ jmp compile._#Module.end#1#loop#start
+compile._#Module.end#1#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 40 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.end#2#loop#end
+compile._#Module.end#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Function.end
+compile._#Module.end#2#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.end#2#loop#end
+ jmp compile._#Module.end#2#loop#start
+compile._#Module.end#2#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 72 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ mov r15, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.end#3#loop#end
+compile._#Module.end#3#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Module.end
+compile._#Module.end#3#loop#rep:
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Module.end#3#loop#end
+ jmp compile._#Module.end#3#loop#start
+compile._#Module.end#3#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 104 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+compile._#Module.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.init:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ mov r13, rdx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rbx, rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils.strcpy
+ mov rbx, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov qword [rbx], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov rsi, qword [rel NULL] ; (SET_PRM_R)
+ mov qword [rbx], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 96 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], 0 ; (SET)
+ sub rsp, 88 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 88 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 88 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+
+compile._#Scope.init#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.print:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.print#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.print#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.print#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.print#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.print#4#loop#end
+compile._#Scope.print#4#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._print
+compile._#Scope.print#4#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.print#4#loop#end
+ jmp compile._#Scope.print#4#loop#start
+compile._#Scope.print#4#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.print#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+
+compile._#Scope.print#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.end:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.end#0#loop#end
+compile._#Scope.end#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+compile._#Scope.end#0#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.end#0#loop#end
+ jmp compile._#Scope.end#0#loop#start
+compile._#Scope.end#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ mov r12, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.end#1#loop#end
+compile._#Scope.end#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+compile._#Scope.end#1#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r12, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.end#1#loop#end
+ jmp compile._#Scope.end#1#loop#start
+compile._#Scope.end#1#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+compile._#Scope.end#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope._next_reg_slot:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_reg_slot#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_reg_slot
+ mov r11, rax ; (SET)
+ jmp compile._#Scope._next_reg_slot#0#wrap#end
+compile._#Scope._next_reg_slot#0#wrap#0#if#end:
+compile._#Scope._next_reg_slot#0#wrap#end:
+ cmp r11, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_reg_slot#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Scope._next_reg_slot#end
+ jmp compile._#Scope._next_reg_slot#1#wrap#end
+compile._#Scope._next_reg_slot#1#wrap#0#if#end:
+compile._#Scope._next_reg_slot#1#wrap#end:
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_reg_slot#2#loop#end
+compile._#Scope._next_reg_slot#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_reg_slot#2#loop#0#wrap#0#if#end
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ cmp r11, 16
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_reg_slot#2#loop#0#wrap#0#if#0#wrap#0#if#end
+ mov r11, 0 ; (SET)
+ mov rbx, r11 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r11, rbx ; (SET)
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Scope._next_reg_slot#end
+ jmp compile._#Scope._next_reg_slot#2#loop#0#wrap#0#if#0#wrap#end
+compile._#Scope._next_reg_slot#2#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Scope._next_reg_slot#2#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Scope._next_reg_slot#2#loop#0#wrap#end
+compile._#Scope._next_reg_slot#2#loop#0#wrap#0#if#end:
+compile._#Scope._next_reg_slot#2#loop#0#wrap#end:
+compile._#Scope._next_reg_slot#2#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_reg_slot#2#loop#end
+ jmp compile._#Scope._next_reg_slot#2#loop#start
+compile._#Scope._next_reg_slot#2#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Scope._next_reg_slot#end
+
+compile._#Scope._next_reg_slot#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope._next_tmp_slot:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 2 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_tmp_slot#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_tmp_slot
+ mov r11, rax ; (SET)
+ jmp compile._#Scope._next_tmp_slot#0#wrap#end
+compile._#Scope._next_tmp_slot#0#wrap#0#if#end:
+compile._#Scope._next_tmp_slot#0#wrap#end:
+ cmp r11, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_tmp_slot#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Scope._next_tmp_slot#end
+ jmp compile._#Scope._next_tmp_slot#1#wrap#end
+compile._#Scope._next_tmp_slot#1#wrap#0#if#end:
+compile._#Scope._next_tmp_slot#1#wrap#end:
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_tmp_slot#2#loop#end
+compile._#Scope._next_tmp_slot#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_tmp_slot#2#loop#0#wrap#0#if#end
+ mov rbx, r11 ; (SET)
+ inc r11 ; (UNARY)
+ cmp r11, 4
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_tmp_slot#2#loop#0#wrap#0#if#0#wrap#0#if#end
+ mov r11, 0 ; (SET)
+ mov rbx, r11 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r11, rbx ; (SET)
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Scope._next_tmp_slot#end
+ jmp compile._#Scope._next_tmp_slot#2#loop#0#wrap#0#if#0#wrap#end
+compile._#Scope._next_tmp_slot#2#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Scope._next_tmp_slot#2#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Scope._next_tmp_slot#2#loop#0#wrap#end
+compile._#Scope._next_tmp_slot#2#loop#0#wrap#0#if#end:
+compile._#Scope._next_tmp_slot#2#loop#0#wrap#end:
+compile._#Scope._next_tmp_slot#2#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_tmp_slot#2#loop#end
+ jmp compile._#Scope._next_tmp_slot#2#loop#start
+compile._#Scope._next_tmp_slot#2#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Scope._next_tmp_slot#end
+
+compile._#Scope._next_tmp_slot#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope._next_stack_slot:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, 0 ; (SET)
+ mov rbx, r11 ; (SET)
+ sub rbx, 56 ; (STD_OP)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_stack_slot#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_stack_slot
+ mov r11, rax ; (SET)
+ jmp compile._#Scope._next_stack_slot#0#wrap#end
+compile._#Scope._next_stack_slot#0#wrap#0#if#end:
+compile._#Scope._next_stack_slot#0#wrap#end:
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_stack_slot#1#loop#end
+compile._#Scope._next_stack_slot#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Scope._next_stack_slot#1#loop#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Scope._next_stack_slot#1#loop#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_stack_slot#1#loop#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ cmp r14, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_stack_slot#1#loop#0#wrap#0#if#1#wrap#0#if#end
+ mov r11, r14 ; (SET)
+ jmp compile._#Scope._next_stack_slot#1#loop#0#wrap#0#if#1#wrap#end
+compile._#Scope._next_stack_slot#1#loop#0#wrap#0#if#1#wrap#0#if#end:
+compile._#Scope._next_stack_slot#1#loop#0#wrap#0#if#1#wrap#end:
+ jmp compile._#Scope._next_stack_slot#1#loop#0#wrap#end
+compile._#Scope._next_stack_slot#1#loop#0#wrap#0#if#end:
+compile._#Scope._next_stack_slot#1#loop#0#wrap#end:
+compile._#Scope._next_stack_slot#1#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_stack_slot#1#loop#end
+ jmp compile._#Scope._next_stack_slot#1#loop#start
+compile._#Scope._next_stack_slot#1#loop#end:
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_stack_slot#2#loop#end
+compile._#Scope._next_stack_slot#2#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Scope._next_stack_slot#2#loop#0#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Scope._next_stack_slot#2#loop#0#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_stack_slot#2#loop#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r14, qword [rsi] ; (SET)
+ cmp r14, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_stack_slot#2#loop#0#wrap#0#if#1#wrap#0#if#end
+ mov r11, r14 ; (SET)
+ jmp compile._#Scope._next_stack_slot#2#loop#0#wrap#0#if#1#wrap#end
+compile._#Scope._next_stack_slot#2#loop#0#wrap#0#if#1#wrap#0#if#end:
+compile._#Scope._next_stack_slot#2#loop#0#wrap#0#if#1#wrap#end:
+ jmp compile._#Scope._next_stack_slot#2#loop#0#wrap#end
+compile._#Scope._next_stack_slot#2#loop#0#wrap#0#if#end:
+compile._#Scope._next_stack_slot#2#loop#0#wrap#end:
+compile._#Scope._next_stack_slot#2#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._next_stack_slot#2#loop#end
+ jmp compile._#Scope._next_stack_slot#2#loop#start
+compile._#Scope._next_stack_slot#2#loop#end:
+
+ ; STARTING RETURN
+ mov rax, r11 ; (SET)
+ jmp compile._#Scope._next_stack_slot#end
+
+compile._#Scope._next_stack_slot#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.mk_aware:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable mk
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov qword [rbp - 176], 0 ; (SET)
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_aware#0#wrap#0#if#end
+ mov qword [rbp - 184], 1 ; (SET)
+ jmp compile._#Scope.mk_aware#0#wrap#end
+compile._#Scope.mk_aware#0#wrap#0#if#end:
+compile._#Scope.mk_aware#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+
+compile._#Scope.mk_aware#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.mk_aware_node:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, qword [rel NULL] ; (SET)
+ mov r14, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_aware_node#0#loop#end
+compile._#Scope.mk_aware_node#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_TYPE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_aware_node#0#loop#0#wrap#0#if#end
+ mov r13, r12 ; (SET)
+ jmp compile._#Scope.mk_aware_node#0#loop#0#wrap#end
+compile._#Scope.mk_aware_node#0#loop#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#end
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ jmp compile._#Scope.mk_aware_node#end
+ jmp compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#0#wrap#end
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#0#wrap#0#if#end:
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#0#wrap#end:
+ sub rsp, 88 ; Create stack space for local variable v
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ mov qword [rbp - 160], r13 ; (SET)
+ mov qword [rbp - 168], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ mov rcx, qword [rbp - 168] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 152], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Var._resolve_type
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 145], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 153], rax ; (SET)
+ mov rax, qword [rbp - 153] ; (SET)
+ lea rsp, [rbp - 145] ; Free stack space (freeing tmp variables)
+ call compile._#Var.regable
+ mov bl, byte [rbp - 145] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#1#wrap#0#if#end
+ mov qword [rbp - 96], 1 ; (SET)
+ jmp compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#1#wrap#end
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#1#wrap#0#if#end:
+ mov qword [rbp - 96], 0 ; (SET)
+ mov rbx, qword [rbp - 96] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 96], rbx ; (SET)
+ jmp compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#1#wrap#end
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#1#wrap#1#if#end:
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#1#wrap#end:
+ mov qword [rbp - 88], 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 160], rsi ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#2#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], rsi ; (SET)
+ mov qword [rbp - 160], 0 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_VALUE]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#2#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r10 ; (SET)
+ mov qword [rbp - 160], r12 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ mov rbx, qword [rbp - 160] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.precheck_stmt
+ jmp compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#2#wrap#0#if#0#wrap#end
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#2#wrap#0#if#0#wrap#0#if#end:
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#2#wrap#0#if#0#wrap#end:
+ jmp compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#2#wrap#end
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#2#wrap#0#if#end:
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#2#wrap#end:
+ jmp compile._#Scope.mk_aware_node#0#loop#0#wrap#end
+compile._#Scope.mk_aware_node#0#loop#0#wrap#1#if#end:
+compile._#Scope.mk_aware_node#0#loop#0#wrap#end:
+compile._#Scope.mk_aware_node#0#loop#rep:
+ mov rbx, r14 ; (SET)
+ inc r14 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r14, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_aware_node#0#loop#end
+ jmp compile._#Scope.mk_aware_node#0#loop#start
+compile._#Scope.mk_aware_node#0#loop#end:
+
+compile._#Scope.mk_aware_node#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.try_move:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_PRE_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.try_move#0#loop#end
+compile._#Scope.try_move#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.try_move#0#loop#0#wrap#0#if#end
+ jmp compile._#Scope.try_move#end
+ jmp compile._#Scope.try_move#0#loop#0#wrap#end
+compile._#Scope.try_move#0#loop#0#wrap#0#if#end:
+compile._#Scope.try_move#0#loop#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+compile._#Scope.try_move#0#loop#rep:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_PRE_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.try_move#0#loop#end
+ jmp compile._#Scope.try_move#0#loop#start
+compile._#Scope.try_move#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_ID]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.try_move#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._find_var
+ mov r12, rax ; (SET)
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.try_move#1#wrap#0#if#0#wrap#0#if#end
+ jmp compile._#Scope.try_move#end
+ jmp compile._#Scope.try_move#1#wrap#0#if#0#wrap#end
+compile._#Scope.try_move#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Scope.try_move#1#wrap#0#if#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.try_move#1#wrap#0#if#1#wrap#0#if#end
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov r8, r13 ; (SET)
+ sub r8, 1 ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Scope.try_move#1#wrap#0#if#1#wrap#end
+compile._#Scope.try_move#1#wrap#0#if#1#wrap#0#if#end:
+compile._#Scope.try_move#1#wrap#0#if#1#wrap#end:
+ jmp compile._#Scope.try_move#1#wrap#end
+compile._#Scope.try_move#1#wrap#0#if#end:
+compile._#Scope.try_move#1#wrap#end:
+
+compile._#Scope.try_move#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.precheck_stmt:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov r8, rsi ; (SET)
+ mov cx, word [r8] ; (SET)
+ cmp cx, word [rel parse.NTYPE_PRE_OP]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.precheck_stmt#0#wrap#0#if#end
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 2 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.precheck_stmt#0#wrap#0#if#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 73], rsi ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.precheck_stmt#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.try_move
+ jmp compile._#Scope.precheck_stmt#end
+ jmp compile._#Scope.precheck_stmt#0#wrap#0#if#0#wrap#end
+compile._#Scope.precheck_stmt#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Scope.precheck_stmt#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Scope.precheck_stmt#0#wrap#end
+compile._#Scope.precheck_stmt#0#wrap#0#if#end:
+compile._#Scope.precheck_stmt#0#wrap#end:
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.precheck_stmt#1#loop#end
+compile._#Scope.precheck_stmt#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.precheck_stmt
+compile._#Scope.precheck_stmt#1#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 10 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.precheck_stmt#1#loop#end
+ jmp compile._#Scope.precheck_stmt#1#loop#start
+compile._#Scope.precheck_stmt#1#loop#end:
+
+compile._#Scope.precheck_stmt#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope._find_var:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._find_var#0#loop#end
+compile._#Scope._find_var#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 65], rsi ; (SET)
+ mov qword [rbp - 73], r11 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ mov rbx, qword [rbp - 73] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call utils.strcmp
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._find_var#0#loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Scope._find_var#end
+ jmp compile._#Scope._find_var#0#loop#0#wrap#end
+compile._#Scope._find_var#0#loop#0#wrap#0#if#end:
+compile._#Scope._find_var#0#loop#0#wrap#end:
+compile._#Scope._find_var#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 32 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._find_var#0#loop#end
+ jmp compile._#Scope._find_var#0#loop#start
+compile._#Scope._find_var#0#loop#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._find_var#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._find_var
+ mov rax, rax ; (SET)
+ jmp compile._#Scope._find_var#end
+ jmp compile._#Scope._find_var#1#wrap#end
+compile._#Scope._find_var#1#wrap#0#if#end:
+compile._#Scope._find_var#1#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Scope._find_var#end
+
+compile._#Scope._find_var#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.find_var:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._find_var
+ mov r12, rax ; (SET)
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.find_var#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Scope.find_var#end
+ jmp compile._#Scope.find_var#0#wrap#end
+compile._#Scope.find_var#0#wrap#0#if#end:
+compile._#Scope.find_var#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r9, rsi ; (SET)
+ mov rcx, qword [r9] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ jne compile._#Scope.find_var#1#wrap#0#if#0#bool#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rdi, [rbp - 64] ; (SET_PRM_L)
+ mov rcx, qword [rdi] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov r9b, al ; Mov after compare
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ cmp r9b, 0
+compile._#Scope.find_var#1#wrap#0#if#0#bool#end:
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.find_var#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Scope.find_var#end
+ jmp compile._#Scope.find_var#1#wrap#end
+compile._#Scope.find_var#1#wrap#0#if#end:
+compile._#Scope.find_var#1#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.find_var#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.find_var#3#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.find_var#4#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.find_var#5#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _print_num
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov qword [rbp - 72], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var._print
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Scope.find_var#end
+
+compile._#Scope.find_var#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.mk_var:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._find_var
+ mov r12, rax ; (SET)
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_var#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Scope.mk_var#end
+ jmp compile._#Scope.mk_var#0#wrap#end
+compile._#Scope.mk_var#0#wrap#0#if#end:
+compile._#Scope.mk_var#0#wrap#end:
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_var#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_reg_slot
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov qword [rbx], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ add r8, 1 ; (STD_OP)
+ cmp r8, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_var#1#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_stack_slot
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov r8, r13 ; (SET)
+ sub r8, r14 ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Scope.mk_var#1#wrap#0#if#0#wrap#end
+compile._#Scope.mk_var#1#wrap#0#if#0#wrap#0#if#end:
+compile._#Scope.mk_var#1#wrap#0#if#0#wrap#end:
+ jmp compile._#Scope.mk_var#1#wrap#end
+compile._#Scope.mk_var#1#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, qword [rsi] ; (SET)
+ add r8, 1 ; (STD_OP)
+ cmp r8, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_var#1#wrap#1#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_var#1#wrap#1#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_stack_slot
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rbx, rsi ; (SET)
+ mov r8, r13 ; (SET)
+ sub r8, r14 ; (STD_OP)
+ mov qword [rbx], r8 ; (SET)
+ jmp compile._#Scope.mk_var#1#wrap#1#if#0#wrap#end
+compile._#Scope.mk_var#1#wrap#1#if#0#wrap#0#if#end:
+compile._#Scope.mk_var#1#wrap#1#if#0#wrap#end:
+ jmp compile._#Scope.mk_var#1#wrap#end
+compile._#Scope.mk_var#1#wrap#1#if#end:
+compile._#Scope.mk_var#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_var#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ mov r14, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r15, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.mk_var#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.mk_var#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.mk_var#2#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r15 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Scope.mk_var#2#wrap#end
+compile._#Scope.mk_var#2#wrap#0#if#end:
+compile._#Scope.mk_var#2#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Scope.mk_var#end
+
+compile._#Scope.mk_var#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.mk_set_var:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12, rcx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.mk_var
+ mov r13, rax ; (SET)
+ cmp r13, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_set_var#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Scope.mk_set_var#end
+ jmp compile._#Scope.mk_set_var#0#wrap#end
+compile._#Scope.mk_set_var#0#wrap#0#if#end:
+compile._#Scope.mk_set_var#0#wrap#end:
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 57], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 65], r13 ; (SET)
+ mov rax, qword [rbp - 65] ; (SET)
+ lea rsp, [rbp - 57] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 57] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_set_var#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.max_ref
+ mov r14, rax ; (SET)
+ mov rbx, r14 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r14, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov qword [rbp - 88], r14 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ mov rdx, qword [rbp - 88] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set_ref
+ jmp compile._#Scope.mk_set_var#1#wrap#end
+compile._#Scope.mk_set_var#1#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov qword [rbp - 80], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov rcx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ jmp compile._#Scope.mk_set_var#1#wrap#end
+compile._#Scope.mk_set_var#1#wrap#1#if#end:
+compile._#Scope.mk_set_var#1#wrap#end:
+
+ ; STARTING RETURN
+ mov rax, r13 ; (SET)
+ jmp compile._#Scope.mk_set_var#end
+
+compile._#Scope.mk_set_var#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.mk_tmp:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov qword [rbp - 176], 0 ; (SET)
+ mov r12, 0 ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 233], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 241], rax ; (SET)
+ mov rax, qword [rbp - 241] ; (SET)
+ lea rsp, [rbp - 233] ; Free stack space (freeing tmp variables)
+ call compile._#Var.regable
+ mov bl, byte [rbp - 233] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_tmp#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_tmp_slot
+ mov r12, rax ; (SET)
+ mov qword [rbp - 184], r12 ; (SET)
+ mov r8, qword [rbp - 184] ; (SET)
+ add r8, 1 ; (STD_OP)
+ cmp r8, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_tmp#0#wrap#0#if#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_stack_slot
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ mov r13, rax ; (SET)
+ mov rbx, r12 ; (SET)
+ sub rbx, r13 ; (STD_OP)
+ mov qword [rbp - 176], rbx ; (SET)
+ jmp compile._#Scope.mk_tmp#0#wrap#0#if#0#wrap#end
+compile._#Scope.mk_tmp#0#wrap#0#if#0#wrap#0#if#end:
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 2
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_tmp#0#wrap#0#if#0#wrap#1#if#end
+ mov rbx, qword [rbp - 184] ; (SET)
+ add rbx, 6 ; (STD_OP)
+ mov qword [rbp - 184], rbx ; (SET)
+ jmp compile._#Scope.mk_tmp#0#wrap#0#if#0#wrap#end
+compile._#Scope.mk_tmp#0#wrap#0#if#0#wrap#1#if#end:
+compile._#Scope.mk_tmp#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Scope.mk_tmp#0#wrap#end
+compile._#Scope.mk_tmp#0#wrap#0#if#end:
+ mov r13, 0 ; (SET)
+ mov rbx, r13 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r13, rbx ; (SET)
+ mov qword [rbp - 184], r13 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_stack_slot
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ mov r14, rax ; (SET)
+ mov rbx, r12 ; (SET)
+ sub rbx, r14 ; (STD_OP)
+ mov qword [rbp - 176], rbx ; (SET)
+ jmp compile._#Scope.mk_tmp#0#wrap#end
+compile._#Scope.mk_tmp#0#wrap#1#if#end:
+compile._#Scope.mk_tmp#0#wrap#end:
+ mov rcx, qword [rbp - 184] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.mk_tmp#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r13 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 240], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.mk_tmp#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 240], rsi ; (SET)
+ mov qword [rbp - 248], r14 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 240], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.mk_tmp#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r14 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Scope.mk_tmp#1#wrap#end
+compile._#Scope.mk_tmp#1#wrap#0#if#end:
+compile._#Scope.mk_tmp#1#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Scope.mk_tmp#end
+
+compile._#Scope.mk_tmp#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.mk_tmp_stack:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 152], r11 ; (SET)
+ mov rax, qword [rbp - 152] ; (SET)
+ lea rsp, [rbp - 144] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rdi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ mov qword [rbp - 176], 0 ; (SET)
+ mov r12, 0 ; (SET)
+ mov rbx, r12 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r12, rbx ; (SET)
+ mov qword [rbp - 184], r12 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r10 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_stack_slot
+ mov r13, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 240], rax ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#Var.actual_size
+ mov r14, rax ; (SET)
+ mov rbx, r13 ; (SET)
+ sub rbx, r14 ; (STD_OP)
+ mov qword [rbp - 176], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r14 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r15, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 240], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.mk_tmp_stack#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 240], rsi ; (SET)
+ mov qword [rbp - 248], r15 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 240], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.mk_tmp_stack#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], r15 ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call _delete
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 240], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 248], rsi ; (SET)
+ mov rax, qword [rbp - 240] ; (SET)
+ mov rbx, qword [rbp - 248] ; (SET)
+ lea rsp, [rbp - 232] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+
+ ; STARTING RETURN
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 232] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 328], rax ; (SET)
+ mov rax, qword [rbp - 328] ; (SET)
+ lea rsp, [rbp - 320] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.copy
+ ; putting struct address into register
+ lea rdi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 320] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ jmp compile._#Scope.mk_tmp_stack#end
+
+compile._#Scope.mk_tmp_stack#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope._get_reg_tmp:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._get_reg_tmp#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._get_reg_tmp
+ jmp compile._#Scope._get_reg_tmp#0#wrap#end
+compile._#Scope._get_reg_tmp#0#wrap#0#if#end:
+compile._#Scope._get_reg_tmp#0#wrap#end:
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._get_reg_tmp#1#loop#end
+compile._#Scope._get_reg_tmp#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._get_reg_tmp#1#loop#0#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push
+ jmp compile._#Scope._get_reg_tmp#1#loop#0#wrap#end
+compile._#Scope._get_reg_tmp#1#loop#0#wrap#0#if#end:
+compile._#Scope._get_reg_tmp#1#loop#0#wrap#end:
+compile._#Scope._get_reg_tmp#1#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._get_reg_tmp#1#loop#end
+ jmp compile._#Scope._get_reg_tmp#1#loop#start
+compile._#Scope._get_reg_tmp#1#loop#end:
+
+compile._#Scope._get_reg_tmp#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.save_caller_tmp:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 88 ; Create stack space for local variable tmp
+ sub rsp, 32 ; Create stack space for local variable tmps
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 184], rax ; (SET)
+ mov qword [rbp - 192], 88 ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ mov rbx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 184], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ mov rbx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._get_reg_tmp
+ mov rcx, qword [rbp - 168] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.save_caller_tmp#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 184], rax ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+ ; STARTING RETURN
+ mov rax, 0 ; (SET)
+ jmp compile._#Scope.save_caller_tmp#end
+ jmp compile._#Scope.save_caller_tmp#1#wrap#end
+compile._#Scope.save_caller_tmp#1#wrap#0#if#end:
+compile._#Scope.save_caller_tmp#1#wrap#end:
+ mov r12, 0 ; (SET)
+ cmp r12, qword [rbp - 168]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.save_caller_tmp#2#loop#end
+compile._#Scope.save_caller_tmp#2#loop#start:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 184], rax ; (SET)
+ mov qword [rbp - 192], r12 ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ mov rbx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r11, rax ; (SET)
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r10 ; (SET)
+ mov qword [rbp - 280], r11 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Scope.mk_tmp_stack
+ ; putting struct address into register
+ lea rdi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ ; putting struct address into register
+ lea rdi, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 177], bl ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 185], rax ; (SET)
+ mov rax, qword [rbp - 185] ; (SET)
+ lea rsp, [rbp - 177] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov bl, byte [rbp - 177] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ mov r8b, al ; (SET)
+ cmp r8b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.save_caller_tmp#2#loop#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 272], r11 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 280], rsi ; (SET)
+ mov qword [rbp - 288], 1 ; (SET)
+ mov rax, qword [rbp - 272] ; (SET)
+ mov rbx, qword [rbp - 280] ; (SET)
+ mov rcx, qword [rbp - 288] ; (SET)
+ lea rsp, [rbp - 264] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.take_ptr
+ ; putting struct address into register
+ lea rdi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable ref_val
+ ; putting struct address into register
+ lea rdi, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 264] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 448], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 456], rsi ; (SET)
+ mov qword [rbp - 464], 2 ; (SET)
+ mov rax, qword [rbp - 448] ; (SET)
+ mov rbx, qword [rbp - 456] ; (SET)
+ mov rcx, qword [rbp - 464] ; (SET)
+ lea rsp, [rbp - 440] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.take_ptr
+ ; putting struct address into register
+ lea rdi, [rbp - 440] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ sub rsp, 88 ; Create stack space for local variable ref_set
+ ; putting struct address into register
+ lea rdi, [rbp - 528] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 440] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 528] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 536], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 544], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 552], rsi ; (SET)
+ mov rax, qword [rbp - 536] ; (SET)
+ mov rbx, qword [rbp - 544] ; (SET)
+ mov rcx, qword [rbp - 552] ; (SET)
+ lea rsp, [rbp - 528] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 352] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 536], rax ; (SET)
+ mov rax, qword [rbp - 536] ; (SET)
+ lea rsp, [rbp - 528] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 528] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 536], rax ; (SET)
+ mov rax, qword [rbp - 536] ; (SET)
+ lea rsp, [rbp - 528] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Scope.save_caller_tmp#2#loop#0#wrap#end
+compile._#Scope.save_caller_tmp#2#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 184], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov qword [rbp - 200], r11 ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ mov rbx, qword [rbp - 192] ; (SET)
+ mov rcx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ jmp compile._#Scope.save_caller_tmp#2#loop#0#wrap#end
+compile._#Scope.save_caller_tmp#2#loop#0#wrap#1#if#end:
+compile._#Scope.save_caller_tmp#2#loop#0#wrap#end:
+ mov r8, qword [rbp - 168] ; (SET)
+ sub r8, 1 ; (STD_OP)
+ cmp r12, r8
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.save_caller_tmp#2#loop#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 144] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 184], rax ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ jmp compile._#Scope.save_caller_tmp#2#loop#1#wrap#end
+compile._#Scope.save_caller_tmp#2#loop#1#wrap#0#if#end:
+compile._#Scope.save_caller_tmp#2#loop#1#wrap#end:
+compile._#Scope.save_caller_tmp#2#loop#rep:
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ cmp r12, qword [rbp - 168]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.save_caller_tmp#2#loop#end
+ jmp compile._#Scope.save_caller_tmp#2#loop#start
+compile._#Scope.save_caller_tmp#2#loop#end:
+ mov r12, qword [rbp - 168] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 184], rax ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+ ; STARTING RETURN
+ mov rax, r12 ; (SET)
+ jmp compile._#Scope.save_caller_tmp#end
+
+compile._#Scope.save_caller_tmp#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.restore_caller_tmp:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ cmp r11, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.restore_caller_tmp#0#wrap#0#if#end
+ jmp compile._#Scope.restore_caller_tmp#end
+ jmp compile._#Scope.restore_caller_tmp#0#wrap#end
+compile._#Scope.restore_caller_tmp#0#wrap#0#if#end:
+compile._#Scope.restore_caller_tmp#0#wrap#end:
+ sub rsp, 88 ; Create stack space for local variable t
+ sub rsp, 32 ; Create stack space for local variable tmps
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 184], rax ; (SET)
+ mov qword [rbp - 192], 88 ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ mov rbx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 184], r10 ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ mov rbx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._get_reg_tmp
+ mov r14, 1 ; (SET)
+ cmp r14, r11
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.restore_caller_tmp#2#loop#end
+compile._#Scope.restore_caller_tmp#2#loop#start:
+ mov rbx, r11 ; (SET)
+ sub rbx, r14 ; (STD_OP)
+ mov r15, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable idx_saved
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 184], rsi ; (SET)
+ mov r8, qword [rbp - 184] ; (SET)
+ sub r8, r14 ; (STD_OP)
+ mov qword [rbp - 184], r8 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 192], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 200], rax ; (SET)
+ mov qword [rbp - 208], r15 ; (SET)
+ mov rax, qword [rbp - 200] ; (SET)
+ mov rbx, qword [rbp - 208] ; (SET)
+ lea rsp, [rbp - 192] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ mov r13, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 192], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 200], rsi ; (SET)
+ mov rsi, qword [rbp - 184] ; (SET_PRM_R)
+ mov qword [rbp - 208], rsi ; (SET)
+ mov rax, qword [rbp - 200] ; (SET)
+ mov rbx, qword [rbp - 208] ; (SET)
+ lea rsp, [rbp - 192] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov rbx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 192], rbx ; (SET)
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov byte [rbp - 193], r8b ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 201], r13 ; (SET)
+ mov rax, qword [rbp - 201] ; (SET)
+ lea rsp, [rbp - 193] ; Free stack space (freeing tmp variables)
+ call compile._#Var.is_ref
+ mov r8b, byte [rbp - 193] ; (SET)
+ mov rbx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ mov r9b, al ; (SET)
+ cmp r9b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Scope.restore_caller_tmp#2#loop#0#wrap#0#if#end
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 280], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 288], r12 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 296], rsi ; (SET)
+ mov qword [rbp - 304], 1 ; (SET)
+ mov rax, qword [rbp - 288] ; (SET)
+ mov rbx, qword [rbp - 296] ; (SET)
+ mov rcx, qword [rbp - 304] ; (SET)
+ lea rsp, [rbp - 280] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.take_ptr
+ ; putting struct address into register
+ lea rdi, [rbp - 272] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ mov rbx, qword [rbp - 280] ; (SET)
+ lea rsp, [rbp - 272] ; Free stack space (freeing tmp variables)
+ sub rsp, 88 ; Create stack space for local variable ref_val
+ ; putting struct address into register
+ lea rdi, [rbp - 360] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 272] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 88 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 456], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 464], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 472], rsi ; (SET)
+ mov qword [rbp - 480], 2 ; (SET)
+ mov rax, qword [rbp - 464] ; (SET)
+ mov rbx, qword [rbp - 472] ; (SET)
+ mov rcx, qword [rbp - 480] ; (SET)
+ lea rsp, [rbp - 456] ; Free stack space (freeing tmp variables)
+ sub rsp, 88
+ call compile._#Var.take_ptr
+ ; putting struct address into register
+ lea rdi, [rbp - 448] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ add rsp, 88
+ mov rbx, qword [rbp - 456] ; (SET)
+ lea rsp, [rbp - 448] ; Free stack space (freeing tmp variables)
+ sub rsp, 88 ; Create stack space for local variable ref_set
+ ; putting struct address into register
+ lea rdi, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 448] ; initial struct addr move (SET_STR_R)
+ mov rcx, 88 ; size of struct [Var] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 544], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 552], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 560], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 360] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 568], rsi ; (SET)
+ mov rax, qword [rbp - 552] ; (SET)
+ mov rbx, qword [rbp - 560] ; (SET)
+ mov rcx, qword [rbp - 568] ; (SET)
+ lea rsp, [rbp - 544] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ mov rbx, qword [rbp - 544] ; (SET)
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 544], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 360] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 552], rax ; (SET)
+ mov rax, qword [rbp - 552] ; (SET)
+ lea rsp, [rbp - 544] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ mov rbx, qword [rbp - 544] ; (SET)
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 544], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 536] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 552], rax ; (SET)
+ mov rax, qword [rbp - 552] ; (SET)
+ lea rsp, [rbp - 544] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ mov rbx, qword [rbp - 544] ; (SET)
+ lea rsp, [rbp - 536] ; Free stack space (freeing tmp variables)
+ jmp compile._#Scope.restore_caller_tmp#2#loop#0#wrap#end
+compile._#Scope.restore_caller_tmp#2#loop#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 192], rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 200], r13 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 208], rsi ; (SET)
+ mov qword [rbp - 216], r12 ; (SET)
+ mov rax, qword [rbp - 200] ; (SET)
+ mov rbx, qword [rbp - 208] ; (SET)
+ mov rcx, qword [rbp - 216] ; (SET)
+ lea rsp, [rbp - 192] ; Free stack space (freeing tmp variables)
+ call compile._#Var.set
+ mov rbx, qword [rbp - 192] ; (SET)
+ lea rsp, [rbp - 184] ; Free stack space (freeing tmp variables)
+ jmp compile._#Scope.restore_caller_tmp#2#loop#0#wrap#end
+compile._#Scope.restore_caller_tmp#2#loop#0#wrap#1#if#end:
+compile._#Scope.restore_caller_tmp#2#loop#0#wrap#end:
+compile._#Scope.restore_caller_tmp#2#loop#rep:
+ mov r8, r14 ; (SET)
+ inc r14 ; (UNARY)
+ cmp r14, r11
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov r8b, al ; Mov after compare
+ cmp r8b, 0
+ je compile._#Scope.restore_caller_tmp#2#loop#end
+ jmp compile._#Scope.restore_caller_tmp#2#loop#start
+compile._#Scope.restore_caller_tmp#2#loop#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 184], r10 ; (SET)
+ mov qword [rbp - 192], r11 ; (SET)
+ mov byte [rbp - 193], 1 ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ mov rbx, qword [rbp - 192] ; (SET)
+ mov cl, byte [rbp - 193] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_tmp
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 176] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 184], rax ; (SET)
+ mov rax, qword [rbp - 184] ; (SET)
+ lea rsp, [rbp - 176] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+
+compile._#Scope.restore_caller_tmp#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.free_tmp:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12b, cl ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, r11
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_tmp#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r11, qword [rsi] ; (SET)
+ jmp compile._#Scope.free_tmp#0#wrap#end
+compile._#Scope.free_tmp#0#wrap#0#if#end:
+compile._#Scope.free_tmp#0#wrap#end:
+ mov r13b, 0 ; (SET)
+ mov r15, 1 ; (SET)
+ cmp r15, r11
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_tmp#1#loop#end
+compile._#Scope.free_tmp#1#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable tmp_count
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rbx, qword [rbp - 64] ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov qword [rbp - 80], rbx ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_tmp#1#loop#0#wrap#0#if#end
+ mov r13b, 1 ; (SET)
+ jmp compile._#Scope.free_tmp#1#loop#0#wrap#end
+compile._#Scope.free_tmp#1#loop#0#wrap#0#if#end:
+compile._#Scope.free_tmp#1#loop#0#wrap#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r14 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Var.end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.pop
+compile._#Scope.free_tmp#1#loop#rep:
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ cmp r15, r11
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_tmp#1#loop#end
+ jmp compile._#Scope.free_tmp#1#loop#start
+compile._#Scope.free_tmp#1#loop#end:
+ cmp r13b, 1
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_tmp#2#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._next_stack_slot
+ mov r15, rax ; (SET)
+ mov rbx, 0 ; (SET)
+ sub rbx, r15 ; (STD_OP)
+ mov r15, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r15 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ sub rsp, 8 ; Create stack space for local variable stk_mv_str
+ mov qword [rbp - 64], rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.free_tmp#2#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.free_tmp#2#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _delete
+ jmp compile._#Scope.free_tmp#2#wrap#end
+compile._#Scope.free_tmp#2#wrap#0#if#end:
+compile._#Scope.free_tmp#2#wrap#end:
+
+compile._#Scope.free_tmp#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.is_tmp:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r13, 0 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.is_tmp#0#loop#end
+compile._#Scope.is_tmp#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r12, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.is_tmp#0#loop#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r12] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.is_tmp#0#loop#0#wrap#0#if#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov al, 1 ; (SET)
+ jmp compile._#Scope.is_tmp#end
+ jmp compile._#Scope.is_tmp#0#loop#0#wrap#0#if#0#wrap#end
+compile._#Scope.is_tmp#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Scope.is_tmp#0#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Scope.is_tmp#0#loop#0#wrap#end
+compile._#Scope.is_tmp#0#loop#0#wrap#0#if#end:
+compile._#Scope.is_tmp#0#loop#0#wrap#end:
+compile._#Scope.is_tmp#0#loop#rep:
+ mov rbx, r13 ; (SET)
+ inc r13 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r13, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.is_tmp#0#loop#end
+ jmp compile._#Scope.is_tmp#0#loop#start
+compile._#Scope.is_tmp#0#loop#end:
+
+ ; STARTING RETURN
+ mov al, 0 ; (SET)
+ jmp compile._#Scope.is_tmp#end
+
+compile._#Scope.is_tmp#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.free_to:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12b, cl ; (SET)
+ mov r13, 0 ; (SET)
+ mov rbx, r13 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r13, rbx ; (SET)
+ mov r15, 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_to#0#loop#end
+compile._#Scope.free_to#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, r15 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_to#0#loop#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_to#0#loop#0#wrap#0#if#0#wrap#0#if#end
+ mov r13, r15 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov r15, rbx ; (SET)
+ jmp compile._#Scope.free_to#0#loop#0#wrap#0#if#0#wrap#end
+compile._#Scope.free_to#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Scope.free_to#0#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Scope.free_to#0#loop#0#wrap#end
+compile._#Scope.free_to#0#loop#0#wrap#0#if#end:
+compile._#Scope.free_to#0#loop#0#wrap#end:
+compile._#Scope.free_to#0#loop#rep:
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_to#0#loop#end
+ jmp compile._#Scope.free_to#0#loop#start
+compile._#Scope.free_to#0#loop#end:
+ cmp r13, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_to#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ mov r15, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable off
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.free_to#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.free_to#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.free_to#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _print_num
+ jmp compile._#Scope.free_to#1#wrap#end
+compile._#Scope.free_to#1#wrap#0#if#end:
+ cmp r13, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_to#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov byte [rbp - 73], 0 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov cl, byte [rbp - 73] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_tmp
+ jmp compile._#Scope.free_to#1#wrap#end
+compile._#Scope.free_to#1#wrap#1#if#end:
+compile._#Scope.free_to#1#wrap#end:
+
+compile._#Scope.free_to#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.free_after:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ mov r12b, cl ; (SET)
+ mov r13, 0 ; (SET)
+ mov rbx, r13 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r13, rbx ; (SET)
+ mov r15, 1 ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_after#0#loop#end
+compile._#Scope.free_after#0#loop#start:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ sub rbx, r15 ; (STD_OP)
+ mov qword [rbp - 72], rbx ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.get
+ mov r14, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 48 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_after#0#loop#0#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r14] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_after#0#loop#0#wrap#0#if#0#wrap#0#if#end
+ mov rbx, r15 ; (SET)
+ sub rbx, 1 ; (STD_OP)
+ mov r13, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ add rbx, 1 ; (STD_OP)
+ mov r15, rbx ; (SET)
+ jmp compile._#Scope.free_after#0#loop#0#wrap#0#if#0#wrap#end
+compile._#Scope.free_after#0#loop#0#wrap#0#if#0#wrap#0#if#end:
+compile._#Scope.free_after#0#loop#0#wrap#0#if#0#wrap#end:
+ jmp compile._#Scope.free_after#0#loop#0#wrap#end
+compile._#Scope.free_after#0#loop#0#wrap#0#if#end:
+compile._#Scope.free_after#0#loop#0#wrap#end:
+compile._#Scope.free_after#0#loop#rep:
+ mov rbx, r15 ; (SET)
+ inc r15 ; (UNARY)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r15, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovng ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_after#0#loop#end
+ jmp compile._#Scope.free_after#0#loop#start
+compile._#Scope.free_after#0#loop#end:
+ cmp r13, 0
+ mov ax, 0
+ mov cx, 1
+ cmovl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_after#1#wrap#0#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ mov r15, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r11] ; initial struct addr move (SET_STR_R)
+ add rsi, 56 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for local variable off
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.free_after#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 72], r15 ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.free_after#1#wrap#0#if#1#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _printf
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rel compile._#Scope.free_after#1#wrap#0#if#2#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call _print_num
+ jmp compile._#Scope.free_after#1#wrap#end
+compile._#Scope.free_after#1#wrap#0#if#end:
+ cmp r13, 0
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_after#1#wrap#1#if#end
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r13 ; (SET)
+ mov byte [rbp - 73], r12b ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov cl, byte [rbp - 73] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_tmp
+ jmp compile._#Scope.free_after#1#wrap#end
+compile._#Scope.free_after#1#wrap#1#if#end:
+compile._#Scope.free_after#1#wrap#end:
+
+compile._#Scope.free_after#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.get_tmp_handle:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rax, qword [rsi] ; (SET)
+ jmp compile._#Scope.get_tmp_handle#end
+
+compile._#Scope.get_tmp_handle#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.free_after_handle:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovnl ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_after_handle#0#wrap#0#if#end
+ jmp compile._#Scope.free_after_handle#end
+ jmp compile._#Scope.free_after_handle#0#wrap#end
+compile._#Scope.free_after_handle#0#wrap#0#if#end:
+compile._#Scope.free_after_handle#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ mov rbx, r12 ; (SET)
+ sub rbx, r11 ; (STD_OP)
+ mov r12, rbx ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov byte [rbp - 73], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov cl, byte [rbp - 73] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_tmp
+
+compile._#Scope.free_after_handle#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.free_to_handle:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ cmp r11, qword [rsi]
+ mov ax, 0
+ mov cx, 1
+ cmovg ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_to_handle#0#wrap#0#if#end
+ jmp compile._#Scope.free_to_handle#end
+ jmp compile._#Scope.free_to_handle#0#wrap#end
+compile._#Scope.free_to_handle#0#wrap#0#if#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, 0
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.free_to_handle#0#wrap#1#if#end
+ jmp compile._#Scope.free_to_handle#end
+ jmp compile._#Scope.free_to_handle#0#wrap#end
+compile._#Scope.free_to_handle#0#wrap#1#if#end:
+compile._#Scope.free_to_handle#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 64 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ lea rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ mov rbx, r12 ; (SET)
+ sub rbx, r11 ; (STD_OP)
+ mov r12, rbx ; (SET)
+ mov rbx, r12 ; (SET)
+ inc r12 ; (UNARY)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov qword [rbp - 72], r12 ; (SET)
+ mov byte [rbp - 73], 1 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ mov cl, byte [rbp - 73] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.free_tmp
+
+compile._#Scope.free_to_handle#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.mk_sub:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ mov r10, rbx ; (SET)
+ sub rsp, 104 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 168] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 176], rax ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 8 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 184], rsi ; (SET)
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 192], rsi ; (SET)
+ mov qword [rbp - 200], r10 ; (SET)
+ mov rax, qword [rbp - 176] ; (SET)
+ mov rbx, qword [rbp - 184] ; (SET)
+ mov rcx, qword [rbp - 192] ; (SET)
+ mov rdx, qword [rbp - 200] ; (SET)
+ lea rsp, [rbp - 168] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.init
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 144], rsi ; (SET)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 168] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ jmp compile._#Scope.mk_sub#end
+
+compile._#Scope.mk_sub#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.gen_sub:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ mov r11, rbx ; (SET)
+ sub rsp, 32 ; Create stack space for local variable true_name
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], 1 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 96 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 96], rsi ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r12, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov byte [rbp - 97], 35 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov bl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov byte [rbp - 97], 35 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov bl, byte [rbp - 97] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 96], rax ; (SET)
+ mov qword [rbp - 104], r11 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ mov rbx, qword [rbp - 104] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r12 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ call _delete
+ sub rsp, 104 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 200], r10 ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 216], rax ; (SET)
+ mov rax, qword [rbp - 216] ; (SET)
+ lea rsp, [rbp - 208] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov qword [rbp - 208], rax ; (SET)
+ mov rax, qword [rbp - 200] ; (SET)
+ mov rbx, qword [rbp - 208] ; (SET)
+ lea rsp, [rbp - 192] ; Free stack space (freeing tmp variables)
+ sub rsp, 104
+ call compile._#Scope.mk_sub
+ ; putting struct address into register
+ lea rdi, [rbp - 192] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ add rsp, 104
+ sub rsp, 104 ; Create stack space for local variable out
+ ; putting struct address into register
+ lea rdi, [rbp - 296] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 192] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 304], rax ; (SET)
+ mov rax, qword [rbp - 304] ; (SET)
+ lea rsp, [rbp - 296] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 96 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ inc qword qword [rsi] ; (UNARY)
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 296] ; initial struct addr move (SET_STR_R)
+ mov rcx, 104 ; size of struct [Scope] in bytes
+ rep movsb ; move struct
+ jmp compile._#Scope.gen_sub#end
+
+compile._#Scope.gen_sub#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope._closest_break:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope._closest_break#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils.ends_with
+ cmp al, 0
+ je compile._#Scope._closest_break#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rbp - 64] ; (SET)
+ jmp compile._#Scope._closest_break#end
+ jmp compile._#Scope._closest_break#0#wrap#end
+compile._#Scope._closest_break#0#wrap#0#if#end:
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope._closest_break#0#wrap#1#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils.ends_with
+ cmp al, 0
+ je compile._#Scope._closest_break#0#wrap#1#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rbp - 64] ; (SET)
+ jmp compile._#Scope._closest_break#end
+ jmp compile._#Scope._closest_break#0#wrap#end
+compile._#Scope._closest_break#0#wrap#1#if#end:
+compile._#Scope._closest_break#0#wrap#end:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope._closest_break#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Scope._closest_break#end
+ jmp compile._#Scope._closest_break#1#wrap#end
+compile._#Scope._closest_break#1#wrap#0#if#end:
+compile._#Scope._closest_break#1#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.closest_loop
+ mov rax, rax ; (SET)
+ jmp compile._#Scope._closest_break#end
+
+compile._#Scope._closest_break#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.closest_break:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.closest_break#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Scope.closest_break#end
+ jmp compile._#Scope.closest_break#0#wrap#end
+compile._#Scope.closest_break#0#wrap#0#if#end:
+compile._#Scope.closest_break#0#wrap#end:
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ mov r11, qword [rsi] ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rsi, qword [rel compile._#Scope.closest_break#1#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call utils.ends_with
+ cmp al, 0
+ je compile._#Scope.closest_break#1#wrap#0#if#end
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ ; putting struct address into register
+ mov rsi, [rsi] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r12, qword [rsi] ; (SET)
+ cmp r12, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmovne ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.closest_break#1#wrap#0#if#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r12 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._closest_break
+ mov rax, rax ; (SET)
+ jmp compile._#Scope.closest_break#end
+ jmp compile._#Scope.closest_break#1#wrap#0#if#1#wrap#end
+compile._#Scope.closest_break#1#wrap#0#if#1#wrap#0#if#end:
+compile._#Scope.closest_break#1#wrap#0#if#1#wrap#end:
+ jmp compile._#Scope.closest_break#1#wrap#end
+compile._#Scope.closest_break#1#wrap#0#if#end:
+compile._#Scope.closest_break#1#wrap#end:
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope._closest_break
+ mov rax, rax ; (SET)
+ jmp compile._#Scope.closest_break#end
+
+compile._#Scope.closest_break#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.closest_loop:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.closest_loop#0#wrap#0#if#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 80], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ mov rbx, qword [rbp - 80] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call utils.ends_with
+ cmp al, 0
+ je compile._#Scope.closest_loop#0#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rbp - 64] ; (SET)
+ jmp compile._#Scope.closest_loop#end
+ jmp compile._#Scope.closest_loop#0#wrap#end
+compile._#Scope.closest_loop#0#wrap#0#if#end:
+compile._#Scope.closest_loop#0#wrap#end:
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ mov r8, rsi ; (SET)
+ mov rcx, qword [r8] ; (SET)
+ cmp rcx, qword [rel NULL]
+ mov ax, 0
+ mov cx, 1
+ cmove ax, cx ; Compare set
+ mov bl, al ; Mov after compare
+ cmp bl, 0
+ je compile._#Scope.closest_loop#1#wrap#0#if#end
+
+ ; STARTING RETURN
+ mov rax, qword [rel NULL] ; (SET)
+ jmp compile._#Scope.closest_loop#end
+ jmp compile._#Scope.closest_loop#1#wrap#end
+compile._#Scope.closest_loop#1#wrap#0#if#end:
+compile._#Scope.closest_loop#1#wrap#end:
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ mov rsi, [rbp - 64] ; initial struct addr move (SET_STR_R)
+ add rsi, 24 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 64] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.closest_loop
+ mov rax, rax ; (SET)
+ jmp compile._#Scope.closest_loop#end
+
+compile._#Scope.closest_loop#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope._base_label:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ sub rsp, 8 ; Create stack space for local variable self
+ mov qword [rbp - 64], rax ; (SET)
+ sub rsp, 32 ; Create stack space for local variable out
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 104], rax ; (SET)
+ mov qword [rbp - 112], 1 ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.init
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rbp - 64] ; (SET_PRM_R)
+ mov qword [rbp - 104], rsi ; (SET)
+ ; putting struct address into register
+ lea rsi, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 112], rsi ; (SET)
+ mov rax, qword [rbp - 104] ; (SET)
+ mov rbx, qword [rbp - 112] ; (SET)
+ lea rsp, [rbp - 96] ; Free stack space (freeing tmp variables)
+ call compile._recursive_scope_name
+
+ ; STARTING RETURN
+ ; putting struct address into register
+ lea rdi, [rbp + 8] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 96] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ jmp compile._#Scope._base_label#end
+
+compile._#Scope._base_label#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.base_label:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call compile._#Scope._base_label
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile._#Scope.base_label#end
+
+compile._#Scope.base_label#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.place_base_label:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.base_label
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.place_base_label#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Scope.place_base_label#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.start_label:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call compile._#Scope._base_label
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rsi, qword [rel compile._#Scope.start_label#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile._#Scope.start_label#end
+
+compile._#Scope.start_label#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.place_start_label:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.start_label
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.place_start_label#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Scope.place_start_label#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.rep_label:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call compile._#Scope._base_label
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rsi, qword [rel compile._#Scope.rep_label#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile._#Scope.rep_label#end
+
+compile._#Scope.rep_label#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.place_rep_label:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.rep_label
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.place_rep_label#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Scope.place_rep_label#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.end_label:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call compile._#Scope._base_label
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rsi, qword [rel compile._#Scope.end_label#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile._#Scope.end_label#end
+
+compile._#Scope.end_label#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.place_end_label:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r10 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#Scope.end_label
+ mov r11, rax ; (SET)
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov qword [rbp - 72], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 16 ; Add offset when getting member (MEMBER)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 64], rsi ; (SET)
+ mov rsi, qword [rel compile._#Scope.place_end_label#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 72], rsi ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ mov rbx, qword [rbp - 72] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call compile._#CompBuf.add_c
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 64], r11 ; (SET)
+ mov rax, qword [rbp - 64] ; (SET)
+ lea rsp, [rbp - 56] ; Free stack space (freeing tmp variables)
+ call _delete
+
+compile._#Scope.place_end_label#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+
+compile._#Scope.gen_const_name:
+ push rbp
+ lea rbp, [rsp + 8]
+ push r10
+ push r11
+ push r12
+ push r13
+ push r14
+ push r15 ; scope init
+
+ mov r10, rax ; (SET)
+ sub rsp, 32 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 96], r10 ; (SET)
+ mov rax, qword [rbp - 96] ; (SET)
+ lea rsp, [rbp - 88] ; Free stack space (freeing tmp variables)
+ sub rsp, 32
+ call compile._#Scope._base_label
+ ; putting struct address into register
+ lea rdi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rsp] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ add rsp, 32
+ sub rsp, 32 ; Create stack space for local variable v
+ ; putting struct address into register
+ lea rdi, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ ; putting struct address into register
+ lea rsi, [rbp - 88] ; initial struct addr move (SET_STR_R)
+ mov rcx, 32 ; size of struct [Vector] in bytes
+ rep movsb ; move struct
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 96 ; Add offset when getting member (MEMBER)
+ mov rsi, qword [rsi] ; (SET_PRM_R)
+ mov qword [rbp - 128], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils.int_to_str
+ mov r11, rax ; (SET)
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 1 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov byte [rbp - 129], 35 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov bl, byte [rbp - 129] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_char
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov qword [rbp - 136], r11 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rsi, qword [rel compile._#Scope.gen_const_name#0#const#ptr] ; (SET_PRM_R)
+ mov qword [rbp - 136], rsi ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ mov rbx, qword [rbp - 136] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.push_cstr
+ sub rsp, 8 ; Create stack space for tmp variable
+ mov qword [rbp - 128], r11 ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call _delete
+ ; putting struct address into register
+ lea rsi, [r10] ; initial struct addr move (SET_STR_R)
+ add rsi, 96 ; Add offset when getting member (MEMBER)
+ mov rbx, qword [rsi] ; (SET)
+ inc qword qword [rsi] ; (UNARY)
+
+ ; STARTING RETURN
+ sub rsp, 8 ; Create stack space for tmp variable
+ ; putting struct address into register
+ lea rax, [rbp - 120] ; initial struct addr move (SET_STR_R)
+ mov qword [rbp - 128], rax ; (SET)
+ mov rax, qword [rbp - 128] ; (SET)
+ lea rsp, [rbp - 120] ; Free stack space (freeing tmp variables)
+ call utils._#Vector.as_cstr
+ mov rax, rax ; (SET)
+ jmp compile._#Scope.gen_const_name#end
+
+compile._#Scope.gen_const_name#end:
+ lea rsp, [rbp - 56]
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop r11
+ pop r10
+ pop rbp
+ ret ; scope end
+
+