M2-Planet/seed.M1

15101 lines
384 KiB
Plaintext

# This file was generated by running:
# ./bin/vm --rom roms/cc_x86 --memory 4M --tape_01 stage3/M2-Planet_x86.c --tape_02 ../M2-Planet/seed.M1
# In stage0
# Core program
# Defining function fgetc
:FUNCTION_fgetc
LOAD_IMMEDIATE_eax %3
LOAD_EFFECTIVE_ADDRESS_ebx %4
LOAD_INTEGER_ebx
PUSH_ebx
COPY_esp_to_ecx
LOAD_IMMEDIATE_edx %1
INT_80
TEST
POP_eax
JUMP_NE8 !FUNCTION_fgetc_Done
LOAD_IMMEDIATE_eax %-1
:FUNCTION_fgetc_Done
RETURN
# Defining function fputc
:FUNCTION_fputc
LOAD_IMMEDIATE_eax %4
LOAD_EFFECTIVE_ADDRESS_ebx %4
LOAD_INTEGER_ebx
LOAD_EFFECTIVE_ADDRESS_ecx %8
LOAD_IMMEDIATE_edx %1
INT_80
RETURN
# Defining function open
:FUNCTION_open
LOAD_EFFECTIVE_ADDRESS_ebx %12
LOAD_INTEGER_ebx
LOAD_EFFECTIVE_ADDRESS_ecx %8
LOAD_INTEGER_ecx
LOAD_EFFECTIVE_ADDRESS_edx %4
LOAD_INTEGER_edx
LOAD_IMMEDIATE_eax %5
INT_80
RETURN
# Defining function fopen
:FUNCTION_fopen
# Defining local f
PUSH_eax #f
# IF_fopen_0
LOAD_IMMEDIATE_eax %119
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_fopen_0
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %577
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax %384
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_open
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_fopen_0
:ELSE_fopen_0
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax %0
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_open
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_fopen_0
# IF_fopen_1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETG
MOVEZBL
TEST
JUMP_EQ %ELSE_fopen_1
LOAD_IMMEDIATE_eax %0
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_fopen_1
:ELSE_fopen_1
:_END_IF_fopen_1
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function close
:FUNCTION_close
LOAD_EFFECTIVE_ADDRESS_ebx %4
LOAD_IMMEDIATE_eax %6
INT_80
RETURN
# Defining function fclose
:FUNCTION_fclose
# Defining local error
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_close
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #error
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function malloc
:FUNCTION_malloc
STORE_eax_into_ESP_IMMEDIATE8 !4
PUSH_eax
LOAD_IMMEDIATE_eax %45
LOAD_IMMEDIATE_ebx %0
INT_80
POP_ebx
ADD_eax_to_ebx
PUSH_eax
PUSH_ebx
LOAD_IMMEDIATE_eax %45
INT_80
POP_ebx
CMP
POP_eax
JUMP_EQ8 !FUNCTION_malloc_Done
LOAD_IMMEDIATE_eax %-1
:FUNCTION_malloc_Done
RETURN
# Defining function memset
:FUNCTION_memset
# Defining local s
PUSH_eax #s
# FOR_initialization_memset_0
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
:FOR_memset_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETL
MOVEZBL
TEST
JUMP_EQ %FOR_END_memset_0
JUMP %FOR_THEN_memset_0
:FOR_ITER_memset_0
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %FOR_memset_0
:FOR_THEN_memset_0
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_CHAR
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %FOR_ITER_memset_0
:FOR_END_memset_0
POP_ebx # _recursive_statement_locals
RETURN
# Defining function calloc
:FUNCTION_calloc
# Defining local ret
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
MULTIPLY_eax_by_ebx_into_eax
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_malloc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #ret
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_process_expression2
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
MULTIPLY_eax_by_ebx_into_eax
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_memset
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function free
:FUNCTION_free
RETURN
# Defining function exit
:FUNCTION_exit
POP_ebx
POP_ebx
LOAD_IMMEDIATE_eax %1
INT_80
RETURN
# Defining function match
:FUNCTION_match
# Defining local i
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
PUSH_eax #i
:DO_match_0
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
# IF_match_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_match_1
LOAD_IMMEDIATE_eax %0
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_match_1
:ELSE_match_1
:_END_IF_match_1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_NE %DO_match_0
:DO_END_match_0
LOAD_IMMEDIATE_eax %1
POP_ebx # _return_result_locals
RETURN
# Defining function numerate_number
:FUNCTION_numerate_number
# Defining local result
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %16
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #result
# Defining local i
LOAD_IMMEDIATE_eax %0
PUSH_eax #i
# IF_numerate_number_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_numerate_number_0
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
STORE_CHAR
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_numerate_number_0
:ELSE_numerate_number_0
:_END_IF_numerate_number_0
# IF_numerate_number_1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETG
MOVEZBL
TEST
JUMP_EQ %ELSE_numerate_number_1
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %45
POP_ebx # _common_recursion
STORE_CHAR
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
MULTIPLY_eax_by_ebx_into_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_numerate_number_1
:ELSE_numerate_number_1
:_END_IF_numerate_number_1
# Defining local divisor
LOAD_IMMEDIATE_eax %0x3B9ACA00
PUSH_eax #divisor
:WHILE_numerate_number_2
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
XCHG_eax_ebx
LOAD_IMMEDIATE_edx %0
DIVIDE_eax_by_ebx_into_eax
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_numerate_number_2
# THEN_while_numerate_number_2
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %10
POP_ebx # _common_recursion
XCHG_eax_ebx
LOAD_IMMEDIATE_edx %0
DIVIDE_eax_by_ebx_into_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_numerate_number_2
:END_WHILE_numerate_number_2
:WHILE_numerate_number_3
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETL
MOVEZBL
TEST
JUMP_EQ %END_WHILE_numerate_number_3
# THEN_while_numerate_number_3
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
XCHG_eax_ebx
LOAD_IMMEDIATE_edx %0
DIVIDE_eax_by_ebx_into_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_CHAR
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
XCHG_eax_ebx
LOAD_IMMEDIATE_edx %0
MODULUS_eax_from_ebx_into_ebx
MOVE_edx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %10
POP_ebx # _common_recursion
XCHG_eax_ebx
LOAD_IMMEDIATE_edx %0
DIVIDE_eax_by_ebx_into_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_numerate_number_3
:END_WHILE_numerate_number_3
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
# Defining function char2hex
:FUNCTION_char2hex
# IF_char2hex_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
CMP
SETGE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %57
POP_ebx # _common_recursion
CMP
SETLE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_char2hex_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
RETURN
JUMP %_END_IF_char2hex_0
:ELSE_char2hex_0
# IF_char2hex_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %97
POP_ebx # _common_recursion
CMP
SETGE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %102
POP_ebx # _common_recursion
CMP
SETLE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_char2hex_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %87
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
RETURN
JUMP %_END_IF_char2hex_1
:ELSE_char2hex_1
# IF_char2hex_2
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %65
POP_ebx # _common_recursion
CMP
SETGE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %70
POP_ebx # _common_recursion
CMP
SETLE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_char2hex_2
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %55
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
RETURN
JUMP %_END_IF_char2hex_2
:ELSE_char2hex_2
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
RETURN
:_END_IF_char2hex_2
:_END_IF_char2hex_1
:_END_IF_char2hex_0
RETURN
# Defining function hex2char
:FUNCTION_hex2char
# IF_hex2char_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
CMP
SETGE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %9
POP_ebx # _common_recursion
CMP
SETLE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_hex2char_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
ADD_ebx_to_eax
RETURN
JUMP %_END_IF_hex2char_0
:ELSE_hex2char_0
# IF_hex2char_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %10
POP_ebx # _common_recursion
CMP
SETGE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %15
POP_ebx # _common_recursion
CMP
SETLE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_hex2char_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %55
POP_ebx # _common_recursion
ADD_ebx_to_eax
RETURN
JUMP %_END_IF_hex2char_1
:ELSE_hex2char_1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
RETURN
:_END_IF_hex2char_1
:_END_IF_hex2char_0
RETURN
# Defining function char2dec
:FUNCTION_char2dec
# IF_char2dec_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
CMP
SETGE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %57
POP_ebx # _common_recursion
CMP
SETLE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_char2dec_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
RETURN
JUMP %_END_IF_char2dec_0
:ELSE_char2dec_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
RETURN
:_END_IF_char2dec_0
RETURN
# Defining function dec2char
:FUNCTION_dec2char
# IF_dec2char_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
CMP
SETGE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %9
POP_ebx # _common_recursion
CMP
SETLE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_dec2char_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
ADD_ebx_to_eax
RETURN
JUMP %_END_IF_dec2char_0
:ELSE_dec2char_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
RETURN
:_END_IF_dec2char_0
RETURN
# Defining function numerate_string
:FUNCTION_numerate_string
# Defining local count
LOAD_IMMEDIATE_eax %0
PUSH_eax #count
# Defining local index
PUSH_eax #index
# Defining local negative
PUSH_eax #negative
# IF_numerate_string_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_numerate_string_0
LOAD_IMMEDIATE_eax %0
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_numerate_string_0
:ELSE_numerate_string_0
# IF_numerate_string_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %120
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_numerate_string_1
# IF_numerate_string_2
LOAD_IMMEDIATE_eax %45
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_numerate_string_2
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %3
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_numerate_string_2
:ELSE_numerate_string_2
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_numerate_string_2
:WHILE_numerate_string_3
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_numerate_string_3
# THEN_while_numerate_string_3
# IF_numerate_string_4
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_char2hex
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_numerate_string_4
LOAD_IMMEDIATE_eax %0
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_numerate_string_4
:ELSE_numerate_string_4
:_END_IF_numerate_string_4
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
MULTIPLY_eax_by_ebx_into_eax
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_char2hex
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_numerate_string_3
:END_WHILE_numerate_string_3
JUMP %_END_IF_numerate_string_1
:ELSE_numerate_string_1
# IF_numerate_string_5
LOAD_IMMEDIATE_eax %45
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_numerate_string_5
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_numerate_string_5
:ELSE_numerate_string_5
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_numerate_string_5
:WHILE_numerate_string_6
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_numerate_string_6
# THEN_while_numerate_string_6
# IF_numerate_string_7
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_char2dec
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_numerate_string_7
LOAD_IMMEDIATE_eax %0
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_numerate_string_7
:ELSE_numerate_string_7
:_END_IF_numerate_string_7
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %10
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
MULTIPLY_eax_by_ebx_into_eax
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_char2dec
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_numerate_string_6
:END_WHILE_numerate_string_6
:_END_IF_numerate_string_1
:_END_IF_numerate_string_0
# IF_numerate_string_8
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
TEST
JUMP_EQ %ELSE_numerate_string_8
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
MULTIPLY_eax_by_ebx_into_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_numerate_string_8
:ELSE_numerate_string_8
:_END_IF_numerate_string_8
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
# Defining function file_print
:FUNCTION_file_print
:WHILE_file_print_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_file_print_0
# THEN_while_file_print_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fputc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_file_print_0
:END_WHILE_file_print_0
RETURN
# Defining function copy_string
:FUNCTION_copy_string
:WHILE_copy_string_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_copy_string_0
# THEN_while_copy_string_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
STORE_CHAR
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_copy_string_0
:END_WHILE_copy_string_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
RETURN
# Defining function postpend_char
:FUNCTION_postpend_char
# Defining local ret
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %4096
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #ret
# Defining local hold
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_copy_string
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #hold
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_CHAR
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
# Defining function prepend_char
:FUNCTION_prepend_char
# Defining local ret
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %4096
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #ret
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_CHAR
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_copy_string
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function prepend_string
:FUNCTION_prepend_string
# Defining local ret
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %4096
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #ret
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_copy_string
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_copy_string
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function string_length
:FUNCTION_string_length
# Defining local i
LOAD_IMMEDIATE_eax %0
PUSH_eax #i
:WHILE_string_length_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_string_length_0
# THEN_while_string_length_0
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_string_length_0
:END_WHILE_string_length_0
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function clearWhiteSpace
:FUNCTION_clearWhiteSpace
# IF_clearWhiteSpace_0
LOAD_IMMEDIATE_eax %32
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %9
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
POP_ebx # _common_recursion
OR_eax_ebx
TEST
JUMP_EQ %ELSE_clearWhiteSpace_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_clearWhiteSpace
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
JUMP %_END_IF_clearWhiteSpace_0
:ELSE_clearWhiteSpace_0
# IF_clearWhiteSpace_1
LOAD_IMMEDIATE_eax %10
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_clearWhiteSpace_1
LOAD_IMMEDIATE_eax &GLOBAL_line
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_line
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_clearWhiteSpace
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
JUMP %_END_IF_clearWhiteSpace_1
:ELSE_clearWhiteSpace_1
:_END_IF_clearWhiteSpace_1
:_END_IF_clearWhiteSpace_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
RETURN
# Defining function consume_byte
:FUNCTION_consume_byte
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_CHAR
LOAD_IMMEDIATE_eax &GLOBAL_string_index
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function consume_word
:FUNCTION_consume_word
# Defining local escape
LOAD_IMMEDIATE_eax %0
PUSH_eax #escape
:DO_consume_word_0
# IF_consume_word_1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %92
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_consume_word_1
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_consume_word_1
:ELSE_consume_word_1
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_consume_word_1
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_consume_byte
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
POP_ebx # _common_recursion
OR_eax_ebx
TEST
JUMP_NE %DO_consume_word_0
:DO_END_consume_word_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _return_result_locals
RETURN
# Defining function fixup_label
:FUNCTION_fixup_label
# Defining local hold
LOAD_IMMEDIATE_eax %58
PUSH_eax #hold
# Defining local prev
PUSH_eax #prev
# Defining local i
LOAD_IMMEDIATE_eax %0
PUSH_eax #i
:DO_fixup_label_0
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_CHAR
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_NE %DO_fixup_label_0
:DO_END_fixup_label_0
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
RETURN
# Defining function in_set
:FUNCTION_in_set
:WHILE_in_set_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_in_set_0
# THEN_while_in_set_0
# IF_in_set_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_in_set_1
LOAD_IMMEDIATE_eax %1
RETURN
JUMP %_END_IF_in_set_1
:ELSE_in_set_1
:_END_IF_in_set_1
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_in_set_0
:END_WHILE_in_set_0
LOAD_IMMEDIATE_eax %0
RETURN
# Defining function preserve_keyword
:FUNCTION_preserve_keyword
:WHILE_preserve_keyword_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_preserve_keyword_1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_in_set
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %END_WHILE_preserve_keyword_0
# THEN_while_preserve_keyword_0
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_consume_byte
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_preserve_keyword_0
:END_WHILE_preserve_keyword_0
# IF_preserve_keyword_2
LOAD_IMMEDIATE_eax %58
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_preserve_keyword_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fixup_label
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax %32
RETURN
JUMP %_END_IF_preserve_keyword_2
:ELSE_preserve_keyword_2
:_END_IF_preserve_keyword_2
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
RETURN
# Defining function preserve_symbol
:FUNCTION_preserve_symbol
:WHILE_preserve_symbol_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_preserve_symbol_1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_in_set
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %END_WHILE_preserve_symbol_0
# THEN_while_preserve_symbol_0
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_consume_byte
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_preserve_symbol_0
:END_WHILE_preserve_symbol_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
RETURN
# Defining function purge_macro
:FUNCTION_purge_macro
:WHILE_purge_macro_0
LOAD_IMMEDIATE_eax %10
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_purge_macro_0
# THEN_while_purge_macro_0
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_purge_macro_0
:END_WHILE_purge_macro_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
RETURN
# Defining function reset_hold_string
:FUNCTION_reset_hold_string
# Defining local i
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #i
:WHILE_reset_hold_string_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_reset_hold_string_0
# THEN_while_reset_hold_string_0
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_CHAR
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_reset_hold_string_0
:END_WHILE_reset_hold_string_0
POP_ebx # _recursive_statement_locals
RETURN
# Defining function get_token
:FUNCTION_get_token
# Defining local current
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %20
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #current
:reset #C goto label
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_reset_hold_string
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_string_index
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_clearWhiteSpace
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_get_token_0
LOAD_IMMEDIATE_eax %35
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_get_token_0
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_purge_macro
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %reset
JUMP %_END_IF_get_token_0
:ELSE_get_token_0
# IF_get_token_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_get_token_2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_in_set
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_get_token_1
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_preserve_keyword
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_get_token_1
:ELSE_get_token_1
# IF_get_token_3
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_get_token_4
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_in_set
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_get_token_3
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_preserve_symbol
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_get_token_3
:ELSE_get_token_3
# IF_get_token_5
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %39
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_get_token_5
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %39
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_consume_word
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_get_token_5
:ELSE_get_token_5
# IF_get_token_6
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %34
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_get_token_6
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %34
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_consume_word
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_get_token_6
:ELSE_get_token_6
# IF_get_token_7
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %47
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_get_token_7
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_consume_byte
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_get_token_8
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %42
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_get_token_8
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
:WHILE_get_token_9
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %47
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_get_token_9
# THEN_while_get_token_9
:WHILE_get_token_10
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %42
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_get_token_10
# THEN_while_get_token_10
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_get_token_11
LOAD_IMMEDIATE_eax %10
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_get_token_11
LOAD_IMMEDIATE_eax &GLOBAL_line
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_line
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_get_token_11
:ELSE_get_token_11
:_END_IF_get_token_11
JUMP %WHILE_get_token_10
:END_WHILE_get_token_10
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_get_token_12
LOAD_IMMEDIATE_eax %10
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_get_token_12
LOAD_IMMEDIATE_eax &GLOBAL_line
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_line
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_get_token_12
:ELSE_get_token_12
:_END_IF_get_token_12
JUMP %WHILE_get_token_9
:END_WHILE_get_token_9
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %reset
JUMP %_END_IF_get_token_8
:ELSE_get_token_8
# IF_get_token_13
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %47
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_get_token_13
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %reset
JUMP %_END_IF_get_token_13
:ELSE_get_token_13
:_END_IF_get_token_13
:_END_IF_get_token_8
JUMP %_END_IF_get_token_7
:ELSE_get_token_7
# IF_get_token_14
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0xFFFFFFFF
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_get_token_14
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_free
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_get_token_14
:ELSE_get_token_14
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_consume_byte
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_get_token_14
:_END_IF_get_token_7
:_END_IF_get_token_6
:_END_IF_get_token_5
:_END_IF_get_token_3
:_END_IF_get_token_1
:_END_IF_get_token_0
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_copy_string
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_token
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_token
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_line
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_file
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_token
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function reverse_list
:FUNCTION_reverse_list
# Defining local root
LOAD_IMMEDIATE_eax %0
PUSH_eax #root
:WHILE_reverse_list_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_reverse_list_0
# THEN_while_reverse_list_0
# Defining local next
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
PUSH_eax #next
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
JUMP %WHILE_reverse_list_0
:END_WHILE_reverse_list_0
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function read_all_tokens
:FUNCTION_read_all_tokens
LOAD_IMMEDIATE_eax &GLOBAL_input
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_line
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_file
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_token
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local ch
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_input
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fgetc
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #ch
:WHILE_read_all_tokens_0
LOAD_IMMEDIATE_eax %0xFFFFFFFF
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_read_all_tokens_0
# THEN_while_read_all_tokens_0
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_get_token
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_read_all_tokens_0
:END_WHILE_read_all_tokens_0
LOAD_IMMEDIATE_eax &GLOBAL_token
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function upcase
:FUNCTION_upcase
# IF_upcase_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_upcase_1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_in_set
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_upcase_0
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %32
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_upcase_0
:ELSE_upcase_0
:_END_IF_upcase_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
RETURN
# Defining function hexify
:FUNCTION_hexify
# Defining local i
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_char2hex
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #i
# IF_hexify_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETG
MOVEZBL
TEST
JUMP_EQ %ELSE_hexify_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_hexify_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_hexify_0
:ELSE_hexify_0
:_END_IF_hexify_0
# IF_hexify_2
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
TEST
JUMP_EQ %ELSE_hexify_2
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
COPY_eax_to_ecx
COPY_ebx_to_eax
SAL_eax_cl
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_hexify_2
:ELSE_hexify_2
:_END_IF_hexify_2
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function weird
:FUNCTION_weird
# Defining local c
PUSH_eax #c
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
:weird_reset #C goto label
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
STORE_INTEGER
# IF_weird_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_weird_0
LOAD_IMMEDIATE_eax %0
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_weird_0
:ELSE_weird_0
:_END_IF_weird_0
# IF_weird_1
LOAD_IMMEDIATE_eax %92
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_weird_1
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_escape_lookup
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_weird_2
LOAD_IMMEDIATE_eax %120
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_weird_2
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_weird_2
:ELSE_weird_2
:_END_IF_weird_2
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_weird_1
:ELSE_weird_1
:_END_IF_weird_1
# IF_weird_3
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_weird_4
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_in_set
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
TEST
JUMP_EQ %ELSE_weird_3
LOAD_IMMEDIATE_eax %1
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_weird_3
:ELSE_weird_3
:_END_IF_weird_3
# IF_weird_5
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_weird_6
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_in_set
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %58
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_weird_5
LOAD_IMMEDIATE_eax %1
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_weird_5
:ELSE_weird_5
:_END_IF_weird_5
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %weird_reset
POP_ebx # _recursive_statement_locals
RETURN
# Defining function escape_lookup
:FUNCTION_escape_lookup
# IF_escape_lookup_0
LOAD_IMMEDIATE_eax %92
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
RETURN
JUMP %_END_IF_escape_lookup_0
:ELSE_escape_lookup_0
:_END_IF_escape_lookup_0
# IF_escape_lookup_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %120
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_1
# Defining local t1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_hexify
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #t1
# Defining local t2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %3
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_hexify
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #t2
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_escape_lookup_1
:ELSE_escape_lookup_1
# IF_escape_lookup_2
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %116
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_2
LOAD_IMMEDIATE_eax %9
RETURN
JUMP %_END_IF_escape_lookup_2
:ELSE_escape_lookup_2
# IF_escape_lookup_3
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %110
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_3
LOAD_IMMEDIATE_eax %10
RETURN
JUMP %_END_IF_escape_lookup_3
:ELSE_escape_lookup_3
# IF_escape_lookup_4
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %118
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_4
LOAD_IMMEDIATE_eax %11
RETURN
JUMP %_END_IF_escape_lookup_4
:ELSE_escape_lookup_4
# IF_escape_lookup_5
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %102
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_5
LOAD_IMMEDIATE_eax %12
RETURN
JUMP %_END_IF_escape_lookup_5
:ELSE_escape_lookup_5
# IF_escape_lookup_6
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %114
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_6
LOAD_IMMEDIATE_eax %13
RETURN
JUMP %_END_IF_escape_lookup_6
:ELSE_escape_lookup_6
# IF_escape_lookup_7
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %101
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_7
LOAD_IMMEDIATE_eax %27
RETURN
JUMP %_END_IF_escape_lookup_7
:ELSE_escape_lookup_7
# IF_escape_lookup_8
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %34
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_8
LOAD_IMMEDIATE_eax %34
RETURN
JUMP %_END_IF_escape_lookup_8
:ELSE_escape_lookup_8
# IF_escape_lookup_9
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %39
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_9
LOAD_IMMEDIATE_eax %39
RETURN
JUMP %_END_IF_escape_lookup_9
:ELSE_escape_lookup_9
# IF_escape_lookup_10
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %92
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_escape_lookup_10
LOAD_IMMEDIATE_eax %92
RETURN
JUMP %_END_IF_escape_lookup_10
:ELSE_escape_lookup_10
:_END_IF_escape_lookup_10
:_END_IF_escape_lookup_9
:_END_IF_escape_lookup_8
:_END_IF_escape_lookup_7
:_END_IF_escape_lookup_6
:_END_IF_escape_lookup_5
:_END_IF_escape_lookup_4
:_END_IF_escape_lookup_3
:_END_IF_escape_lookup_2
:_END_IF_escape_lookup_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_escape_lookup_11
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_escape_lookup_12
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function collect_regular_string
:FUNCTION_collect_regular_string
LOAD_IMMEDIATE_eax &GLOBAL_string_index
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
:collect_regular_string_reset #C goto label
# IF_collect_regular_string_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %92
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_regular_string_0
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_escape_lookup
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_CHAR
# IF_collect_regular_string_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %120
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_regular_string_1
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_collect_regular_string_1
:ELSE_collect_regular_string_1
:_END_IF_collect_regular_string_1
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_collect_regular_string_0
:ELSE_collect_regular_string_0
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
STORE_CHAR
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_collect_regular_string_0
LOAD_IMMEDIATE_eax &GLOBAL_string_index
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
# IF_collect_regular_string_2
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_regular_string_2
JUMP %collect_regular_string_reset
JUMP %_END_IF_collect_regular_string_2
:ELSE_collect_regular_string_2
:_END_IF_collect_regular_string_2
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %34
POP_ebx # _common_recursion
STORE_CHAR
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %10
POP_ebx # _common_recursion
STORE_CHAR
# Defining local message
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %3
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #message
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_copy_string
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_reset_hold_string
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function collect_weird_string
:FUNCTION_collect_weird_string
LOAD_IMMEDIATE_eax &GLOBAL_string_index
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local temp
PUSH_eax #temp
# Defining local table
LOAD_IMMEDIATE_eax &STRING_collect_weird_string_0
PUSH_eax #table
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %39
POP_ebx # _common_recursion
STORE_CHAR
:collect_weird_string_reset #C goto label
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %32
POP_ebx # _common_recursion
STORE_CHAR
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_escape_lookup
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
COPY_eax_to_ecx
COPY_ebx_to_eax
SAR_eax_cl
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
STORE_CHAR
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %15
POP_ebx # _common_recursion
AND_eax_ebx
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
STORE_CHAR
# IF_collect_weird_string_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %92
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_weird_string_1
# IF_collect_weird_string_2
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %120
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_weird_string_2
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_collect_weird_string_2
:ELSE_collect_weird_string_2
:_END_IF_collect_weird_string_2
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_collect_weird_string_1
:ELSE_collect_weird_string_1
:_END_IF_collect_weird_string_1
LOAD_IMMEDIATE_eax &GLOBAL_string_index
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %3
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
# IF_collect_weird_string_3
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_weird_string_3
JUMP %collect_weird_string_reset
JUMP %_END_IF_collect_weird_string_3
:ELSE_collect_weird_string_3
:_END_IF_collect_weird_string_3
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %32
POP_ebx # _common_recursion
STORE_CHAR
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
STORE_CHAR
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %48
POP_ebx # _common_recursion
STORE_CHAR
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %3
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %39
POP_ebx # _common_recursion
STORE_CHAR
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %10
POP_ebx # _common_recursion
STORE_CHAR
# Defining local hold
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_string_index
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %6
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #hold
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_copy_string
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_reset_hold_string
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
# Defining function parse_string
:FUNCTION_parse_string
# IF_parse_string_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_weird
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_parse_string_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_collect_weird_string
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
JUMP %_END_IF_parse_string_0
:ELSE_parse_string_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_collect_regular_string
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
:_END_IF_parse_string_0
RETURN
# Defining function initialize_types
:FUNCTION_initialize_types
LOAD_IMMEDIATE_eax &GLOBAL_global_types
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_initialize_types_0
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local a
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #a
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_initialize_types_1
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local b
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #b
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_initialize_types_2
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local c
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #c
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_initialize_types_3
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local d
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #d
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_initialize_types_4
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local e
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #e
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_initialize_types_5
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local f
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #f
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_initialize_types_6
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local g
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #g
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_initialize_types_7
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_prim_types
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
RETURN
# Defining function lookup_type
:FUNCTION_lookup_type
# Defining local i
PUSH_eax #i
# FOR_initialization_lookup_type_0
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
:FOR_lookup_type_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %FOR_END_lookup_type_0
JUMP %FOR_THEN_lookup_type_0
:FOR_ITER_lookup_type_0
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %FOR_lookup_type_0
:FOR_THEN_lookup_type_0
# IF_lookup_type_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_lookup_type_1
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_lookup_type_1
:ELSE_lookup_type_1
:_END_IF_lookup_type_1
JUMP %FOR_ITER_lookup_type_0
:FOR_END_lookup_type_0
LOAD_IMMEDIATE_eax %0
POP_ebx # _return_result_locals
RETURN
# Defining function lookup_member
:FUNCTION_lookup_member
# Defining local i
PUSH_eax #i
# FOR_initialization_lookup_member_0
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
:FOR_lookup_member_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %FOR_END_lookup_member_0
JUMP %FOR_THEN_lookup_member_0
:FOR_ITER_lookup_member_0
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %FOR_lookup_member_0
:FOR_THEN_lookup_member_0
# IF_lookup_member_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_lookup_member_1
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_lookup_member_1
:ELSE_lookup_member_1
:_END_IF_lookup_member_1
JUMP %FOR_ITER_lookup_member_0
:FOR_END_lookup_member_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_lookup_member_2
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_lookup_member_3
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_lookup_member_4
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_line_error
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_lookup_member_5
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _recursive_statement_locals
RETURN
# Defining function build_member
:FUNCTION_build_member
# Defining local member_type
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_type_name
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #member_type
# Defining local i
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #i
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# IF_build_member_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_build_member_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_build_member_0
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_string
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
MULTIPLY_eax_by_ebx_into_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_build_member_2
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_build_member_3
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_build_member_0
:ELSE_build_member_0
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_build_member_0
LOAD_IMMEDIATE_eax &GLOBAL_member_size
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
# Defining function build_union
:FUNCTION_build_union
# Defining local size
LOAD_IMMEDIATE_eax %0
PUSH_eax #size
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_build_union_0
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_build_union_1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
:WHILE_build_union_2
LOAD_IMMEDIATE_eax %125
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_build_union_2
# THEN_while_build_union_2
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_build_member
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_build_union_3
LOAD_IMMEDIATE_eax &GLOBAL_member_size
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETG
MOVEZBL
TEST
JUMP_EQ %ELSE_build_union_3
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_member_size
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_build_union_3
:ELSE_build_union_3
:_END_IF_build_union_3
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_build_union_4
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_build_union_5
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %WHILE_build_union_2
:END_WHILE_build_union_2
LOAD_IMMEDIATE_eax &GLOBAL_member_size
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function create_struct
:FUNCTION_create_struct
# Defining local offset
LOAD_IMMEDIATE_eax %0
PUSH_eax #offset
LOAD_IMMEDIATE_eax &GLOBAL_member_size
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local head
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #head
# Defining local i
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %28
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #i
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_types
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_create_struct_0
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_create_struct_1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# Defining local last
LOAD_IMMEDIATE_eax %0
PUSH_eax #last
:WHILE_create_struct_2
LOAD_IMMEDIATE_eax %125
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_create_struct_2
# THEN_while_create_struct_2
# IF_create_struct_3
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_create_struct_4
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_create_struct_3
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_build_union
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_create_struct_3
:ELSE_create_struct_3
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_build_member
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_create_struct_3
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_member_size
LOAD_INTEGER
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_create_struct_5
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_create_struct_6
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %WHILE_create_struct_2
:END_WHILE_create_struct_2
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_create_struct_7
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_create_struct_8
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
RETURN
# Defining function type_name
:FUNCTION_type_name
# Defining local structure
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_type_name_0
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #structure
# IF_type_name_1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
TEST
JUMP_EQ %ELSE_type_name_1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_type_name_1
:ELSE_type_name_1
:_END_IF_type_name_1
# Defining local ret
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_lookup_type
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #ret
# IF_type_name_2
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_type_name_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_type_name_3
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_type_name_4
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_line_error
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_type_name_2
:ELSE_type_name_2
# IF_type_name_5
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_type_name_5
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_create_struct
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax %0
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_type_name_5
:ELSE_type_name_5
:_END_IF_type_name_5
:_END_IF_type_name_2
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
:WHILE_type_name_6
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %42
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_type_name_6
# THEN_while_type_name_6
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_type_name_6
:END_WHILE_type_name_6
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
# Defining function emit
:FUNCTION_emit
# Defining local t
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %20
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #t
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function emit_out
:FUNCTION_emit_out
LOAD_IMMEDIATE_eax &GLOBAL_out
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_out
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
RETURN
# Defining function uniqueID
:FUNCTION_uniqueID
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_uniqueID_0
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_uniqueID_1
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
RETURN
# Defining function uniqueID_out
:FUNCTION_uniqueID_out
LOAD_IMMEDIATE_eax &GLOBAL_out
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_out
LOAD_INTEGER
PUSH_eax #_process_expression2
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
RETURN
# Defining function sym_declare
:FUNCTION_sym_declare
# Defining local a
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %20
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #a
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function sym_lookup
:FUNCTION_sym_lookup
# Defining local i
PUSH_eax #i
# FOR_initialization_sym_lookup_0
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
:FOR_sym_lookup_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %FOR_END_sym_lookup_0
JUMP %FOR_THEN_sym_lookup_0
:FOR_ITER_sym_lookup_0
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %FOR_sym_lookup_0
:FOR_THEN_sym_lookup_0
# IF_sym_lookup_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_sym_lookup_1
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_sym_lookup_1
:ELSE_sym_lookup_1
:_END_IF_sym_lookup_1
JUMP %FOR_ITER_sym_lookup_0
:FOR_END_sym_lookup_0
LOAD_IMMEDIATE_eax %0
POP_ebx # _return_result_locals
RETURN
# Defining function line_error
:FUNCTION_line_error
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_line_error_0
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_line_error_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function require_match
:FUNCTION_require_match
# IF_require_match_0
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
TEST
JUMP_EQ %ELSE_require_match_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_line_error
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_require_match_0
:ELSE_require_match_0
:_END_IF_require_match_0
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
RETURN
# Defining function function_call
:FUNCTION_function_call
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_0
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_function_call_1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# Defining local passed
LOAD_IMMEDIATE_eax %0
PUSH_eax #passed
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_2
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_3
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_function_call_5
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %41
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_function_call_5
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_6
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
:WHILE_function_call_7
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %44
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_function_call_7
# THEN_while_function_call_7
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_8
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_function_call_7
:END_WHILE_function_call_7
JUMP %_END_IF_function_call_5
:ELSE_function_call_5
:_END_IF_function_call_5
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_9
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_function_call_10
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_function_call_11
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_function_call_11
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_12
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_13
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_14
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_15
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_function_call_11
:ELSE_function_call_11
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_16
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_17
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_18
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
:_END_IF_function_call_11
# FOR_initialization_function_call_19
:FOR_function_call_19
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
CMP
SETG
MOVEZBL
TEST
JUMP_EQ %FOR_END_function_call_19
JUMP %FOR_THEN_function_call_19
:FOR_ITER_function_call_19
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %FOR_function_call_19
:FOR_THEN_function_call_19
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_20
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %FOR_ITER_function_call_19
:FOR_END_function_call_19
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_21
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_call_22
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _recursive_statement_locals
RETURN
# Defining function constant_load
:FUNCTION_constant_load
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_constant_load_0
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_constant_load_1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function variable_load
:FUNCTION_variable_load
# IF_variable_load_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_variable_load_1
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_variable_load_2
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_variable_load_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_function_call
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
JUMP %_END_IF_variable_load_0
:ELSE_variable_load_0
:_END_IF_variable_load_0
LOAD_IMMEDIATE_eax &GLOBAL_current_target
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_variable_load_3
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_variable_load_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_variable_load_5
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_Address_of
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_variable_load_5
RETURN
JUMP %_END_IF_variable_load_5
:ELSE_variable_load_5
:_END_IF_variable_load_5
# IF_variable_load_6
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_variable_load_7
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_variable_load_6
RETURN
JUMP %_END_IF_variable_load_6
:ELSE_variable_load_6
:_END_IF_variable_load_6
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_variable_load_8
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function function_load
:FUNCTION_function_load
# IF_function_load_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_load_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_function_load_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_function_call
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
JUMP %_END_IF_function_load_0
:ELSE_function_load_0
:_END_IF_function_load_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_load_2
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_function_load_3
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function global_load
:FUNCTION_global_load
LOAD_IMMEDIATE_eax &GLOBAL_current_target
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_global_load_0
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_global_load_1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_global_load_2
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_global_load_3
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
TEST
JUMP_EQ %ELSE_global_load_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_global_load_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_global_load_2
:ELSE_global_load_2
:_END_IF_global_load_2
RETURN
# Defining function primary_expr_failure
:FUNCTION_primary_expr_failure
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_line_error
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_failure_0
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_failure_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function primary_expr_string
:FUNCTION_primary_expr_string
# Defining local number_string
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_current_count
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #number_string
LOAD_IMMEDIATE_eax &GLOBAL_current_count
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_current_count
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_string_0
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_strings_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_string_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_strings_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_strings_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_strings_list
LOAD_INTEGER
PUSH_eax #_process_expression2
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_strings_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_parse_string
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_strings_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
RETURN
# Defining function primary_expr_char
:FUNCTION_primary_expr_char
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_char_0
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_escape_lookup
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_char_1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
RETURN
# Defining function primary_expr_number
:FUNCTION_primary_expr_number
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_number_0
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_number_1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
RETURN
# Defining function primary_expr_variable
:FUNCTION_primary_expr_variable
# Defining local s
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #s
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local a
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_constant_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_sym_lookup
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #a
# IF_primary_expr_variable_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_primary_expr_variable_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_constant_load
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_primary_expr_variable_0
:ELSE_primary_expr_variable_0
:_END_IF_primary_expr_variable_0
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_sym_lookup
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_primary_expr_variable_1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_primary_expr_variable_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_variable_load
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_primary_expr_variable_1
:ELSE_primary_expr_variable_1
:_END_IF_primary_expr_variable_1
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_sym_lookup
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_primary_expr_variable_2
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_primary_expr_variable_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_variable_load
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_primary_expr_variable_2
:ELSE_primary_expr_variable_2
:_END_IF_primary_expr_variable_2
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_function_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_sym_lookup
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_primary_expr_variable_3
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_primary_expr_variable_3
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_function_load
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_primary_expr_variable_3
:ELSE_primary_expr_variable_3
:_END_IF_primary_expr_variable_3
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_symbol_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_sym_lookup
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_primary_expr_variable_4
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_primary_expr_variable_4
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_global_load
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_primary_expr_variable_4
:ELSE_primary_expr_variable_4
:_END_IF_primary_expr_variable_4
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_line_error
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_variable_5
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
RETURN
# Defining function promote_type
:FUNCTION_promote_type
# IF_promote_type_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_promote_type_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
RETURN
JUMP %_END_IF_promote_type_0
:ELSE_promote_type_0
:_END_IF_promote_type_0
# IF_promote_type_1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_promote_type_1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
RETURN
JUMP %_END_IF_promote_type_1
:ELSE_promote_type_1
:_END_IF_promote_type_1
# Defining local i
PUSH_eax #i
# FOR_initialization_promote_type_2
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_types
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
:FOR_promote_type_2
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %FOR_END_promote_type_2
JUMP %FOR_THEN_promote_type_2
:FOR_ITER_promote_type_2
LOAD_BASE_ADDRESS_eax %-16
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %FOR_promote_type_2
:FOR_THEN_promote_type_2
# IF_promote_type_3
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_promote_type_3
JUMP %FOR_END_promote_type_2
JUMP %_END_IF_promote_type_3
:ELSE_promote_type_3
:_END_IF_promote_type_3
# IF_promote_type_4
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_promote_type_4
JUMP %FOR_END_promote_type_2
JUMP %_END_IF_promote_type_4
:ELSE_promote_type_4
:_END_IF_promote_type_4
# IF_promote_type_5
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_promote_type_5
JUMP %FOR_END_promote_type_2
JUMP %_END_IF_promote_type_5
:ELSE_promote_type_5
:_END_IF_promote_type_5
# IF_promote_type_6
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_promote_type_6
JUMP %FOR_END_promote_type_2
JUMP %_END_IF_promote_type_6
:ELSE_promote_type_6
:_END_IF_promote_type_6
JUMP %FOR_ITER_promote_type_2
:FOR_END_promote_type_2
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function common_recursion
:FUNCTION_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_last_type
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_current_target
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_common_recursion_0
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
COPY_edi_to_ebp
CALL_eax
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_current_target
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_current_target
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_last_type
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_promote_type
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_common_recursion_1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function general_recursion
:FUNCTION_general_recursion
# IF_general_recursion_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_general_recursion_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_common_recursion
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
COPY_edi_to_ebp
CALL_eax
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_general_recursion_0
:ELSE_general_recursion_0
:_END_IF_general_recursion_0
RETURN
# Defining function ceil_log2
:FUNCTION_ceil_log2
# Defining local result
LOAD_IMMEDIATE_eax %0
PUSH_eax #result
# IF_ceil_log2_0
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
AND_eax_ebx
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_ceil_log2_0
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_ceil_log2_0
:ELSE_ceil_log2_0
:_END_IF_ceil_log2_0
:WHILE_ceil_log2_1
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
CMP
SETG
MOVEZBL
TEST
JUMP_EQ %END_WHILE_ceil_log2_1
# THEN_while_ceil_log2_1
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
COPY_eax_to_ecx
COPY_ebx_to_eax
SAR_eax_cl
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_ceil_log2_1
:END_WHILE_ceil_log2_1
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
# Defining function postfix_expr_arrow
:FUNCTION_postfix_expr_arrow
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_arrow_0
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local i
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_current_target
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_lookup_member
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #i
LOAD_IMMEDIATE_eax &GLOBAL_current_target
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %20
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# IF_postfix_expr_arrow_1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_postfix_expr_arrow_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_arrow_2
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_arrow_3
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_arrow_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_postfix_expr_arrow_1
:ELSE_postfix_expr_arrow_1
:_END_IF_postfix_expr_arrow_1
# IF_postfix_expr_arrow_5
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_arrow_6
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETGE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_postfix_expr_arrow_5
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_arrow_7
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_postfix_expr_arrow_5
:ELSE_postfix_expr_arrow_5
:_END_IF_postfix_expr_arrow_5
POP_ebx # _recursive_statement_locals
RETURN
# Defining function postfix_expr_array
:FUNCTION_postfix_expr_array
# Defining local array
LOAD_IMMEDIATE_eax &GLOBAL_current_target
LOAD_INTEGER
PUSH_eax #array
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_expression
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_common_recursion
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_current_target
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local assign
LOAD_IMMEDIATE_eax &STRING_postfix_expr_array_0
PUSH_eax #assign
# IF_postfix_expr_array_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_array_2
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_current_target
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_postfix_expr_array_1
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_postfix_expr_array_3
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_postfix_expr_array_1
:ELSE_postfix_expr_array_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_array_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_current_target
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %12
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_ceil_log2
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_array_5
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
:_END_IF_postfix_expr_array_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_array_6
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_array_7
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_postfix_expr_array_8
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_postfix_expr_array_9
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_array_10
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_postfix_expr_array_9
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_postfix_expr_array_11
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_postfix_expr_array_9
:ELSE_postfix_expr_array_9
:_END_IF_postfix_expr_array_9
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
RETURN
# Defining function unary_expr_sizeof
:FUNCTION_unary_expr_sizeof
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_unary_expr_sizeof_0
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_unary_expr_sizeof_1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# Defining local a
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_type_name
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #a
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_unary_expr_sizeof_2
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_unary_expr_sizeof_3
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_unary_expr_sizeof_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_unary_expr_sizeof_5
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _recursive_statement_locals
RETURN
# Defining function postfix_expr_stub
:FUNCTION_postfix_expr_stub
# IF_postfix_expr_stub_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_stub_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_postfix_expr_stub_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_postfix_expr_array
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_postfix_expr_stub
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_postfix_expr_stub_0
:ELSE_postfix_expr_stub_0
:_END_IF_postfix_expr_stub_0
# IF_postfix_expr_stub_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_postfix_expr_stub_3
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_postfix_expr_stub_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_postfix_expr_arrow
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_postfix_expr_stub
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_postfix_expr_stub_2
:ELSE_postfix_expr_stub_2
:_END_IF_postfix_expr_stub_2
RETURN
# Defining function postfix_expr
:FUNCTION_postfix_expr
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_primary_expr
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_postfix_expr_stub
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function additive_expr_stub
:FUNCTION_additive_expr_stub
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_postfix_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_0
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_1
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_postfix_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_2
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_3
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_postfix_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_4
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_5
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_postfix_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_6
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_7
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_postfix_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_8
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_9
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_postfix_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_10
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_11
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_postfix_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_12
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_additive_expr_stub_13
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function additive_expr
:FUNCTION_additive_expr
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_postfix_expr
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_additive_expr_stub
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function relational_expr_stub
:FUNCTION_relational_expr_stub
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_0
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_1
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_2
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_3
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_4
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_5
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_6
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_7
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_8
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_9
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_additive_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_10
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_relational_expr_stub_11
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function relational_expr
:FUNCTION_relational_expr
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_additive_expr
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_relational_expr_stub
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function bitwise_expr_stub
:FUNCTION_bitwise_expr_stub
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_bitwise_expr_stub_0
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_bitwise_expr_stub_1
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_bitwise_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_bitwise_expr_stub_2
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_bitwise_expr_stub_3
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_bitwise_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_bitwise_expr_stub_4
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_bitwise_expr_stub_5
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_bitwise_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_bitwise_expr_stub_6
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_bitwise_expr_stub_7
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_bitwise_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_relational_expr
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_bitwise_expr_stub_8
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_bitwise_expr_stub_9
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &FUNCTION_bitwise_expr_stub
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_general_recursion
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function bitwise_expr
:FUNCTION_bitwise_expr
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_relational_expr
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_bitwise_expr_stub
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function primary_expr
:FUNCTION_primary_expr
# IF_primary_expr_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_primary_expr_0
LOAD_IMMEDIATE_eax &GLOBAL_Address_of
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_primary_expr_0
:ELSE_primary_expr_0
LOAD_IMMEDIATE_eax &GLOBAL_Address_of
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_primary_expr_0
# IF_primary_expr_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_3
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_primary_expr_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_unary_expr_sizeof
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_primary_expr_2
:ELSE_primary_expr_2
# IF_primary_expr_4
LOAD_IMMEDIATE_eax %45
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_primary_expr_4
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_5
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_primary_expr
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_common_recursion
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_6
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_primary_expr_4
:ELSE_primary_expr_4
# IF_primary_expr_7
LOAD_IMMEDIATE_eax %33
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_primary_expr_7
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_8
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_postfix_expr
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_common_recursion
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_9
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_primary_expr_7
:ELSE_primary_expr_7
# IF_primary_expr_10
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %40
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_primary_expr_10
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_primary_expr_11
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_primary_expr_12
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_primary_expr_10
:ELSE_primary_expr_10
# IF_primary_expr_13
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %39
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_primary_expr_13
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_primary_expr_char
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_primary_expr_13
:ELSE_primary_expr_13
# IF_primary_expr_14
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %34
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_primary_expr_14
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_primary_expr_string
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_primary_expr_14
:ELSE_primary_expr_14
# IF_primary_expr_15
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_primary_expr_16
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_in_set
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_primary_expr_15
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_primary_expr_variable
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_primary_expr_15
:ELSE_primary_expr_15
# IF_primary_expr_17
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_primary_expr_18
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_in_set
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_primary_expr_17
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_primary_expr_number
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_primary_expr_17
:ELSE_primary_expr_17
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_primary_expr_failure
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
:_END_IF_primary_expr_17
:_END_IF_primary_expr_15
:_END_IF_primary_expr_14
:_END_IF_primary_expr_13
:_END_IF_primary_expr_10
:_END_IF_primary_expr_7
:_END_IF_primary_expr_4
:_END_IF_primary_expr_2
RETURN
# Defining function expression
:FUNCTION_expression
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_bitwise_expr
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_expression_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_expression_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_expression_0
# Defining local store
PUSH_eax #store
# IF_expression_2
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_expression_3
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_expression_4
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_current_target
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %24
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
POP_ebx # _common_recursion
OR_eax_ebx
TEST
JUMP_EQ %ELSE_expression_2
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_expression_5
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_expression_2
:ELSE_expression_2
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_expression_6
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_expression_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &FUNCTION_expression
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_common_recursion
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_current_target
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
JUMP %_END_IF_expression_0
:ELSE_expression_0
:_END_IF_expression_0
RETURN
# Defining function collect_local
:FUNCTION_collect_local
# Defining local type_size
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_type_name
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #type_size
# Defining local a
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_sym_declare
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #a
# IF_collect_local_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_collect_local_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_collect_local_0
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %20
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_collect_local_0
:ELSE_collect_local_0
# IF_collect_local_2
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
POP_ebx # _common_recursion
AND_eax_ebx
TEST
JUMP_EQ %ELSE_collect_local_2
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %8
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_collect_local_2
:ELSE_collect_local_2
# IF_collect_local_3
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_local_3
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %8
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_collect_local_3
:ELSE_collect_local_3
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_collect_local_3
:_END_IF_collect_local_2
:_END_IF_collect_local_0
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_collect_local_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_collect_local_5
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# IF_collect_local_6
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_collect_local_7
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_collect_local_6
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_collect_local_6
:ELSE_collect_local_6
:_END_IF_collect_local_6
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_collect_local_8
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_collect_local_9
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_collect_local_10
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_collect_local_11
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
RETURN
# Defining function process_if
:FUNCTION_process_if
# Defining local number_string
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_current_count
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #number_string
LOAD_IMMEDIATE_eax &GLOBAL_current_count
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_current_count
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_if_0
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_if_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_if_2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_if_3
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_if_4
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_if_5
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_statement
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_if_6
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_if_7
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_process_if_8
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_if_9
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_process_if_8
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_statement
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_process_if_8
:ELSE_process_if_8
:_END_IF_process_if_8
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_if_10
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _recursive_statement_locals
RETURN
# Defining function process_for
:FUNCTION_process_for
# Defining local nested_locals
LOAD_IMMEDIATE_eax &GLOBAL_break_frame
LOAD_INTEGER
PUSH_eax #nested_locals
# Defining local nested_break_head
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
LOAD_INTEGER
PUSH_eax #nested_break_head
# Defining local nested_break_func
LOAD_IMMEDIATE_eax &GLOBAL_break_target_func
LOAD_INTEGER
PUSH_eax #nested_break_func
# Defining local nested_break_num
LOAD_IMMEDIATE_eax &GLOBAL_break_target_num
LOAD_INTEGER
PUSH_eax #nested_break_num
# Defining local number_string
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_current_count
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #number_string
LOAD_IMMEDIATE_eax &GLOBAL_current_count
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_current_count
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_process_for_0
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_num
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_frame
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_func
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_2
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_for_3
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_process_for_4
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_5
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
TEST
JUMP_EQ %ELSE_process_for_4
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_process_for_4
:ELSE_process_for_4
:_END_IF_process_for_4
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_6
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_7
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_for_8
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_9
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_10
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_11
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_12
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_for_13
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_14
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_15
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_16
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_for_17
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_statement
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_18
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_for_19
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_func
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_num
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_frame
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
RETURN
# Defining function process_asm
:FUNCTION_process_asm
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_asm_0
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_asm_1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
:WHILE_process_asm_2
LOAD_IMMEDIATE_eax %34
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_process_asm_2
# THEN_while_process_asm_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_asm_3
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_process_asm_2
:END_WHILE_process_asm_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_asm_4
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_asm_5
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_asm_6
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_asm_7
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function process_do
:FUNCTION_process_do
# Defining local nested_locals
LOAD_IMMEDIATE_eax &GLOBAL_break_frame
LOAD_INTEGER
PUSH_eax #nested_locals
# Defining local nested_break_head
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
LOAD_INTEGER
PUSH_eax #nested_break_head
# Defining local nested_break_func
LOAD_IMMEDIATE_eax &GLOBAL_break_target_func
LOAD_INTEGER
PUSH_eax #nested_break_func
# Defining local nested_break_num
LOAD_IMMEDIATE_eax &GLOBAL_break_target_num
LOAD_INTEGER
PUSH_eax #nested_break_num
# Defining local number_string
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_current_count
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #number_string
LOAD_IMMEDIATE_eax &GLOBAL_current_count
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_current_count
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_process_do_0
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_num
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_frame
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_func
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_do_1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_statement
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_do_2
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_do_3
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_do_4
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_do_5
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_do_6
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_do_7
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_do_8
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_do_9
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_do_10
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_do_11
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_break_frame
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_func
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_num
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
RETURN
# Defining function process_while
:FUNCTION_process_while
# Defining local nested_locals
LOAD_IMMEDIATE_eax &GLOBAL_break_frame
LOAD_INTEGER
PUSH_eax #nested_locals
# Defining local nested_break_head
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
LOAD_INTEGER
PUSH_eax #nested_break_head
# Defining local nested_break_func
LOAD_IMMEDIATE_eax &GLOBAL_break_target_func
LOAD_INTEGER
PUSH_eax #nested_break_func
# Defining local nested_break_num
LOAD_IMMEDIATE_eax &GLOBAL_break_target_num
LOAD_INTEGER
PUSH_eax #nested_break_num
# Defining local number_string
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_current_count
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_numerate_number
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #number_string
LOAD_IMMEDIATE_eax &GLOBAL_current_count
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_current_count
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &STRING_process_while_0
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_num
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_frame
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_func
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_while_1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_while_2
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_while_3
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_while_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_while_5
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_while_6
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_while_7
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_statement
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_while_8
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_while_9
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_uniqueID_out
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_func
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-16
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_target_num
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_break_frame
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
POP_ebx # _recursive_statement_locals
RETURN
# Defining function return_result
:FUNCTION_return_result
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# IF_return_result_0
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %59
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_return_result_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_return_result_0
:ELSE_return_result_0
:_END_IF_return_result_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_return_result_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_return_result_2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# Defining local i
PUSH_eax #i
# FOR_initialization_return_result_3
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
:FOR_return_result_3
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %FOR_END_return_result_3
JUMP %FOR_THEN_return_result_3
:FOR_ITER_return_result_3
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %FOR_return_result_3
:FOR_THEN_return_result_3
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_return_result_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %FOR_ITER_return_result_3
:FOR_END_return_result_3
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_return_result_5
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _recursive_statement_locals
RETURN
# Defining function process_break
:FUNCTION_process_break
# IF_process_break_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_process_break_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_line_error
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_break_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_process_break_0
:ELSE_process_break_0
:_END_IF_process_break_0
# Defining local i
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #i
:WHILE_process_break_2
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_break_frame
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_process_break_2
# THEN_while_process_break_2
# IF_process_break_3
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_process_break_3
JUMP %END_WHILE_process_break_2
JUMP %_END_IF_process_break_3
:ELSE_process_break_3
:_END_IF_process_break_3
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_break_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %WHILE_process_break_2
:END_WHILE_process_break_2
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_break_5
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_break_target_head
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_break_target_func
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_break_6
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_break_target_num
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_break_7
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_process_break_8
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_process_break_9
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _recursive_statement_locals
RETURN
# Defining function recursive_statement
:FUNCTION_recursive_statement
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local frame
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #frame
:WHILE_recursive_statement_0
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_recursive_statement_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
TEST
JUMP_EQ %END_WHILE_recursive_statement_0
# THEN_while_recursive_statement_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_statement
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %WHILE_recursive_statement_0
:END_WHILE_recursive_statement_0
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# IF_recursive_statement_2
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_recursive_statement_3
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_out
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
TEST
JUMP_EQ %ELSE_recursive_statement_2
# Defining local i
PUSH_eax #i
# FOR_initialization_recursive_statement_4
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
:FOR_recursive_statement_4
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %FOR_END_recursive_statement_4
JUMP %FOR_THEN_recursive_statement_4
:FOR_ITER_recursive_statement_4
LOAD_BASE_ADDRESS_eax %-12
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %FOR_recursive_statement_4
:FOR_THEN_recursive_statement_4
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_recursive_statement_5
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %FOR_ITER_recursive_statement_4
:FOR_END_recursive_statement_4
POP_ebx # _recursive_statement_locals
JUMP %_END_IF_recursive_statement_2
:ELSE_recursive_statement_2
:_END_IF_recursive_statement_2
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
RETURN
# Defining function statement
:FUNCTION_statement
# IF_statement_0
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %123
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_statement_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_recursive_statement
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_0
:ELSE_statement_0
# IF_statement_1
LOAD_IMMEDIATE_eax %58
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_statement_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_2
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_statement_1
:ELSE_statement_1
# IF_statement_3
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_prim_types
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_lookup_type
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_4
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
OR_eax_ebx
TEST
JUMP_EQ %ELSE_statement_3
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_collect_local
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_3
:ELSE_statement_3
# IF_statement_5
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_6
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_statement_5
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_process_if
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_5
:ELSE_statement_5
# IF_statement_7
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_8
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_statement_7
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_process_do
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_7
:ELSE_statement_7
# IF_statement_9
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_10
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_statement_9
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_process_while
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_9
:ELSE_statement_9
# IF_statement_11
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_12
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_statement_11
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_process_for
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_11
:ELSE_statement_11
# IF_statement_13
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_14
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_statement_13
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_process_asm
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_13
:ELSE_statement_13
# IF_statement_15
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_16
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_statement_15
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_17
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_18
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_19
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_statement_20
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_15
:ELSE_statement_15
# IF_statement_21
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_22
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_statement_21
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_return_result
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_21
:ELSE_statement_21
# IF_statement_23
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_24
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_statement_23
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_process_break
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_23
:ELSE_statement_23
# IF_statement_25
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_26
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_statement_25
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_27
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_28
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_statement_29
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_statement_25
:ELSE_statement_25
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_expression
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_statement_30
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_statement_31
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
:_END_IF_statement_25
:_END_IF_statement_23
:_END_IF_statement_21
:_END_IF_statement_15
:_END_IF_statement_13
:_END_IF_statement_11
:_END_IF_statement_9
:_END_IF_statement_7
:_END_IF_statement_5
:_END_IF_statement_3
:_END_IF_statement_1
:_END_IF_statement_0
RETURN
# Defining function collect_arguments
:FUNCTION_collect_arguments
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
:WHILE_collect_arguments_0
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_collect_arguments_1
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
TEST
JUMP_EQ %END_WHILE_collect_arguments_0
# THEN_while_collect_arguments_0
# Defining local type_size
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_type_name
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #type_size
# IF_collect_arguments_2
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %41
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_arguments_2
#continue statement
JUMP %_END_IF_collect_arguments_2
:ELSE_collect_arguments_2
# IF_collect_arguments_3
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %44
POP_ebx # _common_recursion
CMP
SETNE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_arguments_3
# Defining local a
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_sym_declare
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #a
# IF_collect_arguments_4
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_arguments_4
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_collect_arguments_4
:ELSE_collect_arguments_4
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %4
POP_ebx # _common_recursion
SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
:_END_IF_collect_arguments_4
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-12
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
JUMP %_END_IF_collect_arguments_3
:ELSE_collect_arguments_3
:_END_IF_collect_arguments_3
:_END_IF_collect_arguments_2
# IF_collect_arguments_5
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %44
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_collect_arguments_5
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_collect_arguments_5
:ELSE_collect_arguments_5
:_END_IF_collect_arguments_5
POP_ebx # _recursive_statement_locals
JUMP %WHILE_collect_arguments_0
:END_WHILE_collect_arguments_0
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
RETURN
# Defining function declare_function
:FUNCTION_declare_function
LOAD_IMMEDIATE_eax &GLOBAL_current_count
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_function
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &GLOBAL_global_function_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_sym_declare
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_function_list
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_collect_arguments
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_declare_function_0
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %59
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_declare_function_0
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_declare_function_0
:ELSE_declare_function_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_declare_function_1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_declare_function_2
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_declare_function_3
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_function
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_declare_function_4
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_statement
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_declare_function_5
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_declare_function_6
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_out
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
TEST
JUMP_EQ %ELSE_declare_function_5
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_declare_function_7
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit_out
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_declare_function_5
:ELSE_declare_function_5
:_END_IF_declare_function_5
:_END_IF_declare_function_0
RETURN
# Defining function program
:FUNCTION_program
LOAD_IMMEDIATE_eax &GLOBAL_out
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_function
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_Address_of
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local type_size
PUSH_eax #type_size
:new_type #C goto label
# IF_program_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_program_0
LOAD_IMMEDIATE_eax &GLOBAL_out
LOAD_INTEGER
POP_ebx # _return_result_locals
RETURN
JUMP %_END_IF_program_0
:ELSE_program_0
:_END_IF_program_0
# IF_program_1
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_2
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_program_1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_constant_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &GLOBAL_global_constant_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_sym_declare
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_constant_list
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %16
ADD_ebx_to_eax
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_program_1
:ELSE_program_1
LOAD_BASE_ADDRESS_eax %-8
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_type_name
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_program_3
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_program_3
JUMP %new_type
JUMP %_END_IF_program_3
:ELSE_program_3
:_END_IF_program_3
LOAD_IMMEDIATE_eax &GLOBAL_global_symbol_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &GLOBAL_global_symbol_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_sym_declare
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# IF_program_4
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_5
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_program_4
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_6
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_7
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_program_4
:ELSE_program_4
# IF_program_8
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_9
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_program_8
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_declare_function
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_program_8
:ELSE_program_8
# IF_program_10
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_11
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_program_10
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_12
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %4
ADD_ebx_to_eax
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_13
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
# IF_program_14
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_program_15
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_in_set
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
TEST
JUMP_EQ %ELSE_program_14
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_16
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_17
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_program_14
:ELSE_program_14
# IF_program_18
LOAD_IMMEDIATE_eax %34
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %0
POP_ebx # _common_recursion
ADD_ebx_to_eax
LOAD_BYTE
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_program_18
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_parse_string
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_emit
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_program_18
:ELSE_program_18
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_line_error
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_19
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_20
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
:_END_IF_program_18
:_END_IF_program_14
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_21
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_program_22
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_require_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_program_10
:ELSE_program_10
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_line_error
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_23
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_program_24
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
:_END_IF_program_10
:_END_IF_program_8
:_END_IF_program_4
:_END_IF_program_1
JUMP %new_type
POP_ebx # _recursive_statement_locals
RETURN
# Defining function recursive_output
:FUNCTION_recursive_output
# IF_recursive_output_0
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_recursive_output_0
RETURN
JUMP %_END_IF_recursive_output_0
:ELSE_recursive_output_0
:_END_IF_recursive_output_0
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_recursive_output
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
# looking up offset
# -> offset calculation
LOAD_IMMEDIATE_ebx %8
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
RETURN
# Defining function main
:FUNCTION_main
LOAD_IMMEDIATE_eax &GLOBAL_hold_string
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %4096
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_calloc
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# Defining local DEBUG
LOAD_IMMEDIATE_eax %0
PUSH_eax #DEBUG
# Defining local in
LOAD_IMMEDIATE_eax %0
PUSH_eax #in
# Defining local destination_file
LOAD_IMMEDIATE_eax %1
PUSH_eax #destination_file
# Defining local i
LOAD_IMMEDIATE_eax %1
PUSH_eax #i
:WHILE_main_0
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-4
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETLE
MOVEZBL
TEST
JUMP_EQ %END_WHILE_main_0
# THEN_while_main_0
# IF_main_1
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_main_1
LOAD_BASE_ADDRESS_eax %-32
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_main_1
:ELSE_main_1
# IF_main_2
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_3
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_4
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
OR_eax_ebx
TEST
JUMP_EQ %ELSE_main_2
# Defining local name
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #name
LOAD_BASE_ADDRESS_eax %-24
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-36
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_5
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fopen
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_main_6
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_main_6
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_7
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-36
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_8
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_main_6
:ELSE_main_6
:_END_IF_main_6
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
PUSH_eax #_process_expression2
LOAD_BASE_ADDRESS_eax %-36
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_read_all_tokens
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-32
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
POP_ebx # _recursive_statement_locals
JUMP %_END_IF_main_2
:ELSE_main_2
# IF_main_9
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_10
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_11
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
OR_eax_ebx
TEST
JUMP_EQ %ELSE_main_9
LOAD_BASE_ADDRESS_eax %-28
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_12
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_fopen
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
# IF_main_13
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_main_13
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_14
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_15
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_main_13
:ELSE_main_13
:_END_IF_main_13
LOAD_BASE_ADDRESS_eax %-32
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %2
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_main_9
:ELSE_main_9
# IF_main_16
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_17
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_18
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
OR_eax_ebx
TEST
JUMP_EQ %ELSE_main_16
LOAD_BASE_ADDRESS_eax %-20
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
STORE_INTEGER
LOAD_BASE_ADDRESS_eax %-32
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax %1
POP_ebx # _common_recursion
ADD_ebx_to_eax
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_main_16
:ELSE_main_16
# IF_main_19
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_20
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_21
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
OR_eax_ebx
TEST
JUMP_EQ %ELSE_main_19
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_22
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %0
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_main_19
:ELSE_main_19
# IF_main_23
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_24
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-8
LOAD_INTEGER
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-32
LOAD_INTEGER
POP_ebx # _common_recursion
SAL_eax_Immediate8 !2
ADD_ebx_to_eax
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &STRING_main_25
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_match
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
OR_eax_ebx
TEST
JUMP_EQ %ELSE_main_23
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_26
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %0
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_main_23
:ELSE_main_23
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_27
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
:_END_IF_main_23
:_END_IF_main_19
:_END_IF_main_16
:_END_IF_main_9
:_END_IF_main_2
:_END_IF_main_1
JUMP %WHILE_main_0
:END_WHILE_main_0
# IF_main_28
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_main_28
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-24
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
PUSH_eax #_process_expression2
LOAD_IMMEDIATE_eax &STRING_main_29
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_read_all_tokens
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
JUMP %_END_IF_main_28
:ELSE_main_28
:_END_IF_main_28
# IF_main_30
LOAD_IMMEDIATE_eax %0
PUSH_eax #_common_recursion
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
POP_ebx # _common_recursion
CMP
SETE
MOVEZBL
TEST
JUMP_EQ %ELSE_main_30
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_31
PUSH_eax #_process_expression1
LOAD_IMMEDIATE_eax %2
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax %1
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_exit
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_main_30
:ELSE_main_30
:_END_IF_main_30
LOAD_IMMEDIATE_eax &GLOBAL_global_token
PUSH_eax #_common_recursion
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_global_token
LOAD_INTEGER
PUSH_eax #_process_expression1
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_reverse_list
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
POP_ebx # _common_recursion
STORE_INTEGER
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_initialize_types
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_reset_hold_string
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# Defining local output_list
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_program
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_eax #output_list
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_32
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_BASE_ADDRESS_eax %-36
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_recursive_output
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_main_33
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
TEST
JUMP_EQ %ELSE_main_33
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_34
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_main_33
:ELSE_main_33
:_END_IF_main_33
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_35
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_globals_list
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_recursive_output
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_36
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &GLOBAL_strings_list
LOAD_INTEGER
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_recursive_output
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
# IF_main_37
LOAD_IMMEDIATE_eax %1
PUSH_eax #_common_recursion
LOAD_BASE_ADDRESS_eax %-20
LOAD_INTEGER
POP_ebx # _common_recursion
XOR_ebx_eax_into_eax
TEST
JUMP_EQ %ELSE_main_37
PUSH_edi # Prevent overwriting in recursion
PUSH_ebp # Protect the old base pointer
COPY_esp_to_edi # Copy new base pointer
LOAD_IMMEDIATE_eax &STRING_main_38
PUSH_eax #_process_expression1
LOAD_BASE_ADDRESS_eax %-28
LOAD_INTEGER
PUSH_eax #_process_expression2
COPY_edi_to_ebp
CALL_IMMEDIATE %FUNCTION_file_print
POP_ebx # _process_expression_locals
POP_ebx # _process_expression_locals
POP_ebp # Restore old base pointer
POP_edi # Prevent overwrite
JUMP %_END_IF_main_37
:ELSE_main_37
:_END_IF_main_37
LOAD_IMMEDIATE_eax %0
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
POP_ebx # _return_result_locals
RETURN
:ELF_data
# Program global variables
:GLOBAL_global_types
NOP
:GLOBAL_prim_types
NOP
:GLOBAL_global_token
NOP
:GLOBAL_strings_list
NOP
:GLOBAL_globals_list
NOP
:GLOBAL_hold_string
NOP
:GLOBAL_string_index
NOP
:GLOBAL_input
NOP
:GLOBAL_token
NOP
:GLOBAL_line
NOP
:GLOBAL_file
NOP
:GLOBAL_member_size
NOP
:GLOBAL_global_symbol_list
NOP
:GLOBAL_global_function_list
NOP
:GLOBAL_global_constant_list
NOP
:GLOBAL_function
NOP
:GLOBAL_out
NOP
:GLOBAL_current_target
NOP
:GLOBAL_break_target_head
NOP
:GLOBAL_break_target_func
NOP
:GLOBAL_break_target_num
NOP
:GLOBAL_break_frame
NOP
:GLOBAL_current_count
NOP
:GLOBAL_last_type
NOP
:GLOBAL_Address_of
NOP
# Program strings
:STRING_preserve_keyword_1
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
:STRING_preserve_symbol_1
"<=>|&!-"
:STRING_get_token_2
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
:STRING_get_token_4
"<=>|&!-"
:STRING_upcase_1
"abcdefghijklmnopqrstuvwxyz"
:STRING_hexify_1
"Tried to print non-hex number
"
:STRING_weird_4
"
!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
:STRING_weird_6
' 20 09 0A 0D 00'
:STRING_escape_lookup_11
"Unknown escape recieved: "
:STRING_escape_lookup_12
" Unable to process
"
:STRING_collect_weird_string_0
"0123456789ABCDEF"
:STRING_initialize_types_0
"void"
:STRING_initialize_types_1
"int"
:STRING_initialize_types_2
"char*"
:STRING_initialize_types_3
"char"
:STRING_initialize_types_4
"char**"
:STRING_initialize_types_5
"FILE"
:STRING_initialize_types_6
"FUNCTION"
:STRING_initialize_types_7
"unsigned"
:STRING_lookup_member_2
"ERROR in lookup_member "
:STRING_lookup_member_3
"->"
:STRING_lookup_member_4
" does not exist
"
:STRING_lookup_member_5
"
"
:STRING_build_member_1
"["
:STRING_build_member_2
"Struct only supports [num] form
"
:STRING_build_member_3
"]"
:STRING_build_union_0
"ERROR in build_union
Missing {
"
:STRING_build_union_1
"{"
:STRING_build_union_4
"ERROR in build_union
Missing ;
"
:STRING_build_union_5
";"
:STRING_create_struct_0
"ERROR in create_struct
Missing {
"
:STRING_create_struct_1
"{"
:STRING_create_struct_4
"union"
:STRING_create_struct_5
"ERROR in create_struct
Missing ;
"
:STRING_create_struct_6
";"
:STRING_create_struct_7
"ERROR in create_struct
Missing ;
"
:STRING_create_struct_8
";"
:STRING_type_name_0
"struct"
:STRING_type_name_3
"Unknown type "
:STRING_type_name_4
"
"
:STRING_uniqueID_0
"_"
:STRING_uniqueID_1
"
"
:STRING_line_error_0
":"
:STRING_line_error_1
":"
:STRING_function_call_0
"ERROR in process_expression_list
No ( was found
"
:STRING_function_call_1
"("
:STRING_function_call_2
"PUSH_edi # Prevent overwriting in recursion
"
:STRING_function_call_3
"PUSH_ebp # Protect the old base pointer
"
:STRING_function_call_4
"COPY_esp_to_edi # Copy new base pointer
"
:STRING_function_call_6
"PUSH_eax #_process_expression1
"
:STRING_function_call_8
"PUSH_eax #_process_expression2
"
:STRING_function_call_9
"ERROR in process_expression_list
No ) was found
"
:STRING_function_call_10
")"
:STRING_function_call_12
"LOAD_BASE_ADDRESS_eax %"
:STRING_function_call_13
"
LOAD_INTEGER
"
:STRING_function_call_14
"COPY_edi_to_ebp
"
:STRING_function_call_15
"CALL_eax
"
:STRING_function_call_16
"COPY_edi_to_ebp
"
:STRING_function_call_17
"CALL_IMMEDIATE %FUNCTION_"
:STRING_function_call_18
"
"
:STRING_function_call_20
"POP_ebx # _process_expression_locals
"
:STRING_function_call_21
"POP_ebp # Restore old base pointer
"
:STRING_function_call_22
"POP_edi # Prevent overwrite
"
:STRING_constant_load_0
"LOAD_IMMEDIATE_eax %"
:STRING_constant_load_1
"
"
:STRING_variable_load_1
"FUNCTION"
:STRING_variable_load_2
"("
:STRING_variable_load_3
"LOAD_BASE_ADDRESS_eax %"
:STRING_variable_load_4
"
"
:STRING_variable_load_7
"="
:STRING_variable_load_8
"LOAD_INTEGER
"
:STRING_function_load_1
"("
:STRING_function_load_2
"LOAD_IMMEDIATE_eax &FUNCTION_"
:STRING_function_load_3
"
"
:STRING_global_load_0
"LOAD_IMMEDIATE_eax &GLOBAL_"
:STRING_global_load_1
"
"
:STRING_global_load_3
"="
:STRING_global_load_4
"LOAD_INTEGER
"
:STRING_primary_expr_failure_0
"Recieved "
:STRING_primary_expr_failure_1
" in primary_expr
"
:STRING_primary_expr_string_0
"LOAD_IMMEDIATE_eax &STRING_"
:STRING_primary_expr_string_1
":STRING_"
:STRING_primary_expr_char_0
"LOAD_IMMEDIATE_eax %"
:STRING_primary_expr_char_1
"
"
:STRING_primary_expr_number_0
"LOAD_IMMEDIATE_eax %"
:STRING_primary_expr_number_1
"
"
:STRING_primary_expr_variable_5
" is not a defined symbol
"
:STRING_common_recursion_0
"PUSH_eax #_common_recursion
"
:STRING_common_recursion_1
"POP_ebx # _common_recursion
"
:STRING_postfix_expr_arrow_0
"# looking up offset
"
:STRING_postfix_expr_arrow_2
"# -> offset calculation
"
:STRING_postfix_expr_arrow_3
"LOAD_IMMEDIATE_ebx %"
:STRING_postfix_expr_arrow_4
"
ADD_ebx_to_eax
"
:STRING_postfix_expr_arrow_6
"="
:STRING_postfix_expr_arrow_7
"LOAD_INTEGER
"
:STRING_postfix_expr_array_0
"LOAD_INTEGER
"
:STRING_postfix_expr_array_2
"char*"
:STRING_postfix_expr_array_3
"LOAD_BYTE
"
:STRING_postfix_expr_array_4
"SAL_eax_Immediate8 !"
:STRING_postfix_expr_array_5
"
"
:STRING_postfix_expr_array_6
"ADD_ebx_to_eax
"
:STRING_postfix_expr_array_7
"ERROR in postfix_expr
Missing ]
"
:STRING_postfix_expr_array_8
"]"
:STRING_postfix_expr_array_10
"="
:STRING_postfix_expr_array_11
""
:STRING_unary_expr_sizeof_0
"ERROR in unary_expr
Missing (
"
:STRING_unary_expr_sizeof_1
"("
:STRING_unary_expr_sizeof_2
"ERROR in unary_expr
Missing )
"
:STRING_unary_expr_sizeof_3
")"
:STRING_unary_expr_sizeof_4
"LOAD_IMMEDIATE_eax %"
:STRING_unary_expr_sizeof_5
"
"
:STRING_postfix_expr_stub_1
"["
:STRING_postfix_expr_stub_3
"->"
:STRING_additive_expr_stub_0
"ADD_ebx_to_eax
"
:STRING_additive_expr_stub_1
"+"
:STRING_additive_expr_stub_2
"SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
"
:STRING_additive_expr_stub_3
"-"
:STRING_additive_expr_stub_4
"MULTIPLY_eax_by_ebx_into_eax
"
:STRING_additive_expr_stub_5
"*"
:STRING_additive_expr_stub_6
"XCHG_eax_ebx
LOAD_IMMEDIATE_edx %0
DIVIDE_eax_by_ebx_into_eax
"
:STRING_additive_expr_stub_7
"/"
:STRING_additive_expr_stub_8
"XCHG_eax_ebx
LOAD_IMMEDIATE_edx %0
MODULUS_eax_from_ebx_into_ebx
MOVE_edx_to_eax
"
:STRING_additive_expr_stub_9
"%"
:STRING_additive_expr_stub_10
"COPY_eax_to_ecx
COPY_ebx_to_eax
SAL_eax_cl
"
:STRING_additive_expr_stub_11
"<<"
:STRING_additive_expr_stub_12
"COPY_eax_to_ecx
COPY_ebx_to_eax
SAR_eax_cl
"
:STRING_additive_expr_stub_13
">>"
:STRING_relational_expr_stub_0
"CMP
SETL
MOVEZBL
"
:STRING_relational_expr_stub_1
"<"
:STRING_relational_expr_stub_2
"CMP
SETLE
MOVEZBL
"
:STRING_relational_expr_stub_3
"<="
:STRING_relational_expr_stub_4
"CMP
SETGE
MOVEZBL
"
:STRING_relational_expr_stub_5
">="
:STRING_relational_expr_stub_6
"CMP
SETG
MOVEZBL
"
:STRING_relational_expr_stub_7
">"
:STRING_relational_expr_stub_8
"CMP
SETE
MOVEZBL
"
:STRING_relational_expr_stub_9
"=="
:STRING_relational_expr_stub_10
"CMP
SETNE
MOVEZBL
"
:STRING_relational_expr_stub_11
"!="
:STRING_bitwise_expr_stub_0
"AND_eax_ebx
"
:STRING_bitwise_expr_stub_1
"&"
:STRING_bitwise_expr_stub_2
"AND_eax_ebx
"
:STRING_bitwise_expr_stub_3
"&&"
:STRING_bitwise_expr_stub_4
"OR_eax_ebx
"
:STRING_bitwise_expr_stub_5
"|"
:STRING_bitwise_expr_stub_6
"OR_eax_ebx
"
:STRING_bitwise_expr_stub_7
"||"
:STRING_bitwise_expr_stub_8
"XOR_ebx_eax_into_eax
"
:STRING_bitwise_expr_stub_9
"^"
:STRING_primary_expr_1
"&"
:STRING_primary_expr_3
"sizeof"
:STRING_primary_expr_5
"LOAD_IMMEDIATE_eax %0
"
:STRING_primary_expr_6
"SUBTRACT_eax_from_ebx_into_ebx
MOVE_ebx_to_eax
"
:STRING_primary_expr_8
"LOAD_IMMEDIATE_eax %1
"
:STRING_primary_expr_9
"XOR_ebx_eax_into_eax
"
:STRING_primary_expr_11
"Error in Primary expression
Didn't get )
"
:STRING_primary_expr_12
")"
:STRING_primary_expr_16
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"
:STRING_primary_expr_18
"0123456789"
:STRING_expression_1
"="
:STRING_expression_3
"]"
:STRING_expression_4
"char*"
:STRING_expression_5
"STORE_INTEGER
"
:STRING_expression_6
"STORE_CHAR
"
:STRING_collect_local_1
"main"
:STRING_collect_local_4
"# Defining local "
:STRING_collect_local_5
"
"
:STRING_collect_local_7
"="
:STRING_collect_local_8
"ERROR in collect_local
Missing ;
"
:STRING_collect_local_9
";"
:STRING_collect_local_10
"PUSH_eax #"
:STRING_collect_local_11
"
"
:STRING_process_if_0
"# IF_"
:STRING_process_if_1
"ERROR in process_if
MISSING (
"
:STRING_process_if_2
"("
:STRING_process_if_3
"TEST
JUMP_EQ %ELSE_"
:STRING_process_if_4
"ERROR in process_if
MISSING )
"
:STRING_process_if_5
")"
:STRING_process_if_6
"JUMP %_END_IF_"
:STRING_process_if_7
":ELSE_"
:STRING_process_if_9
"else"
:STRING_process_if_10
":_END_IF_"
:STRING_process_for_0
"FOR_END_"
:STRING_process_for_1
"# FOR_initialization_"
:STRING_process_for_2
"ERROR in process_for
MISSING (
"
:STRING_process_for_3
"("
:STRING_process_for_5
";"
:STRING_process_for_6
":FOR_"
:STRING_process_for_7
"ERROR in process_for
MISSING ;1
"
:STRING_process_for_8
";"
:STRING_process_for_9
"TEST
JUMP_EQ %FOR_END_"
:STRING_process_for_10
"JUMP %FOR_THEN_"
:STRING_process_for_11
":FOR_ITER_"
:STRING_process_for_12
"ERROR in process_for
MISSING ;2
"
:STRING_process_for_13
";"
:STRING_process_for_14
"JUMP %FOR_"
:STRING_process_for_15
":FOR_THEN_"
:STRING_process_for_16
"ERROR in process_for
MISSING )
"
:STRING_process_for_17
")"
:STRING_process_for_18
"JUMP %FOR_ITER_"
:STRING_process_for_19
":FOR_END_"
:STRING_process_asm_0
"ERROR in process_asm
MISSING (
"
:STRING_process_asm_1
"("
:STRING_process_asm_3
"
"
:STRING_process_asm_4
"ERROR in process_asm
MISSING )
"
:STRING_process_asm_5
")"
:STRING_process_asm_6
"ERROR in process_asm
MISSING ;
"
:STRING_process_asm_7
";"
:STRING_process_do_0
"DO_END_"
:STRING_process_do_1
":DO_"
:STRING_process_do_2
"ERROR in process_do
MISSING while
"
:STRING_process_do_3
"while"
:STRING_process_do_4
"ERROR in process_do
MISSING (
"
:STRING_process_do_5
"("
:STRING_process_do_6
"ERROR in process_do
MISSING )
"
:STRING_process_do_7
")"
:STRING_process_do_8
"ERROR in process_do
MISSING ;
"
:STRING_process_do_9
";"
:STRING_process_do_10
"TEST
JUMP_NE %DO_"
:STRING_process_do_11
":DO_END_"
:STRING_process_while_0
"END_WHILE_"
:STRING_process_while_1
":WHILE_"
:STRING_process_while_2
"ERROR in process_while
MISSING (
"
:STRING_process_while_3
"("
:STRING_process_while_4
"TEST
JUMP_EQ %END_WHILE_"
:STRING_process_while_5
"# THEN_while_"
:STRING_process_while_6
"ERROR in process_while
MISSING )
"
:STRING_process_while_7
")"
:STRING_process_while_8
"JUMP %WHILE_"
:STRING_process_while_9
":END_WHILE_"
:STRING_return_result_1
"ERROR in return_result
MISSING ;
"
:STRING_return_result_2
";"
:STRING_return_result_4
"POP_ebx # _return_result_locals
"
:STRING_return_result_5
"RETURN
"
:STRING_process_break_1
"Not inside of a loop or case statement"
:STRING_process_break_4
"POP_ebx # break_cleanup_locals
"
:STRING_process_break_5
"JUMP %"
:STRING_process_break_6
"_"
:STRING_process_break_7
"
"
:STRING_process_break_8
"ERROR in break statement
Missing ;
"
:STRING_process_break_9
";"
:STRING_recursive_statement_1
"}"
:STRING_recursive_statement_3
"RETURN
"
:STRING_recursive_statement_5
"POP_ebx # _recursive_statement_locals
"
:STRING_statement_2
" #C goto label
"
:STRING_statement_4
"struct"
:STRING_statement_6
"if"
:STRING_statement_8
"do"
:STRING_statement_10
"while"
:STRING_statement_12
"for"
:STRING_statement_14
"asm"
:STRING_statement_16
"goto"
:STRING_statement_17
"JUMP %"
:STRING_statement_18
"
"
:STRING_statement_19
"ERROR in statement
Missing ;
"
:STRING_statement_20
";"
:STRING_statement_22
"return"
:STRING_statement_24
"break"
:STRING_statement_26
"continue"
:STRING_statement_27
"
#continue statement
"
:STRING_statement_28
"ERROR in statement
Missing ;
"
:STRING_statement_29
";"
:STRING_statement_30
"ERROR in statement
MISSING ;
"
:STRING_statement_31
";"
:STRING_collect_arguments_1
")"
:STRING_declare_function_1
"# Defining function "
:STRING_declare_function_2
"
"
:STRING_declare_function_3
":FUNCTION_"
:STRING_declare_function_4
"
"
:STRING_declare_function_6
"RETURN
"
:STRING_declare_function_7
"RETURN
"
:STRING_program_2
"CONSTANT"
:STRING_program_5
";"
:STRING_program_6
":GLOBAL_"
:STRING_program_7
"
NOP
"
:STRING_program_9
"("
:STRING_program_11
"="
:STRING_program_12
":GLOBAL_"
:STRING_program_13
"
"
:STRING_program_15
"0123456789"
:STRING_program_16
"%"
:STRING_program_17
"
"
:STRING_program_19
"Recieved "
:STRING_program_20
" in program
"
:STRING_program_21
"ERROR in Program
Missing ;
"
:STRING_program_22
";"
:STRING_program_23
"Recieved "
:STRING_program_24
" in program
"
:STRING_main_3
"-f"
:STRING_main_4
"--file"
:STRING_main_5
"r"
:STRING_main_7
"Unable to open for reading file: "
:STRING_main_8
"
Aborting to avoid problems
"
:STRING_main_10
"-o"
:STRING_main_11
"--output"
:STRING_main_12
"w"
:STRING_main_14
"Unable to open for writing file: "
:STRING_main_15
"
Aborting to avoid problems
"
:STRING_main_17
"-g"
:STRING_main_18
"--debug"
:STRING_main_20
"-h"
:STRING_main_21
"--help"
:STRING_main_22
" -f input file
-o output file
--help for this message
--version for file version
"
:STRING_main_24
"-V"
:STRING_main_25
"--version"
:STRING_main_26
"M2-Planet v1.0.0
"
:STRING_main_27
"UNKNOWN ARGUMENT
"
:STRING_main_29
"STDIN"
:STRING_main_31
"Either no input files were given or they were empty
"
:STRING_main_32
"
# Core program
"
:STRING_main_34
' 0A 3A 45 4C 46 5F 64 61 74 61 0A 00'
:STRING_main_35
"
# Program global variables
"
:STRING_main_36
"
# Program strings
"
:STRING_main_38
' 0A 3A 45 4C 46 5F 65 6E 64 0A 00'