diff options
Diffstat (limited to 'stuck/tnslc.asm')
| -rwxr-xr-x | stuck/tnslc.asm | 77877 |
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 + + |