+ jmp _main_exit
+
+ _main_existing:
+ mov ebx, DWORD [ebp+_ARGV]
+ add ebx, 4 ; first user arg is filename
+ mov ebx, [ebx]
+ mov [ebp-BUFFER_FILENAME], ebx
+
+ push DWORD [ebp-BUFFER_FILENAME]
+ call readFile
+
+ mov [ebp-BUFFER], eax
+ mov [ebp-BUFFER_LINES], ecx
+
+ push DWORD [ebp-BUFFER_LINES]
+ push readlines_str
+ call printf
+
+ push DWORD [ebp-BUFFER]
+ push DWORD [ebp-BUFFER_LINES]
+ push DWORD [ebp-BUFFER_FILENAME]
+ call repl
+
+ mov eax, 0
+ jmp _main_exit
+
+ _main_exit:
+
+ ; free string array
+
+ %undef _ARGC
+ %undef _ARGV
+ %undef BUFFER
+ %undef BUFFER_LINES
+ %undef BUFFER_FILENAME
+
+ mov esp, ebp
+ pop ebp
+ ret
+