Browse Source

writeProcComments is now member of Function, at it has an ostream based overload, also added gmock framework to dependencies

Artur K 12 years ago
parent
commit
d39449124a

+ 21 - 6
CMakeLists.txt

@@ -1,17 +1,25 @@
 PROJECT(dcc_original)
-cmake_minimum_required(VERSION 2.8)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
+
+OPTION(dcc_build_tests "Enable unit tests." OFF)
 
 ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D__UNIX__ -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS)
-if(CMAKE_BUILD_TOOL MATCHES "(msdev|devenv|nmake)")
+IF(CMAKE_BUILD_TOOL MATCHES "(msdev|devenv|nmake)")
     ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D__UNIX__ -D_CRT_NONSTDC_NO_DEPRECATE)
-    add_definitions(/W4)
-else()
+    ADD_DEFINITIONS(/W4)
+ELSE()
     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall --std=c++0x")
-    #SET(CMAKE_CXX_FLAGS_DEBUG "-D_GLIBCXX_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}"  )
-endif()
+    SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}"  ) #-D_GLIBCXX_DEBUG
+ENDIF()
+
+SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeScripts;${CMAKE_MODULE_PATH})
 
 FIND_PACKAGE(LLVM)
 FIND_PACKAGE(Boost)
+IF(dcc_build_tests)
+    FIND_PACKAGE(GMock)
+ENDIF()
+
 llvm_map_components_to_libraries(REQ_LLVM_LIBRARIES jit native mc support)
 INCLUDE_DIRECTORIES(
     include
@@ -87,6 +95,13 @@ set(dcc_HEADERS
     include/StackFrame.h
     include/BasicBlock.h
 )
+SOURCE_GROUP(Source FILES ${dcc_SOURCES})
+SOURCE_GROUP(Headers FILES ${dcc_HEADERS})
+
 ADD_EXECUTABLE(dcc_original ${dcc_SOURCES} ${dcc_HEADERS})
 TARGET_LINK_LIBRARIES(dcc_original ${REQ_LLVM_LIBRARIES})
+if(dcc_build_tests)
+ADD_SUBDIRECTORY(src)
+endif()
+
 

+ 89 - 0
CMakeScripts/FindGMock.cmake

@@ -0,0 +1,89 @@
+# Locate the Google C++ Mocking Framework.
+#
+# Defines the following variables:
+#
+#   GMOCK_FOUND - Found the Google Mocking framework
+#   GMOCK_INCLUDE_DIRS - Include directories
+#
+# Also defines the library variables below as normal
+# variables.  These contain debug/optimized keywords when
+# a debugging library is found.
+#
+#   GMOCK_BOTH_LIBRARIES - Both libgmock & libgmock-main
+#   GMOCK_LIBRARIES - libgmock
+#   GMOCK_MAIN_LIBRARIES - libgmock-main
+#
+# Accepts the following variables as input:
+#
+#   GMOCK_ROOT - (as CMake or env. variable)
+#                The root directory of the gmock install prefix
+#
+#-----------------------
+# Example Usage:
+#
+#    enable_testing(true)
+#    find_package(GMock REQUIRED)
+#    include_directories(${GMOCK_INCLUDE_DIRS})
+#
+#    add_executable(foo foo.cc)
+#    target_link_libraries(foo ${GMOCK_BOTH_LIBRARIES})
+#
+#    add_test(AllTestsInFoo foo)
+#
+
+set (GMOCK_FOUND FALSE)
+
+set (GMOCK_ROOT $ENV{GMOCK_ROOT} CACHE PATH "Path to the gmock root directory.")
+if (NOT EXISTS ${GMOCK_ROOT})
+    message (FATAL_ERROR "GMOCK_ROOT does not exist.")
+endif ()
+
+set (GMOCK_BUILD ${GMOCK_ROOT}/build CACHE PATH "Path to the gmock build directory.")
+if (NOT EXISTS ${GMOCK_BUILD})
+    message (FATAL_ERROR "GMOCK_BUILD does not exist.")
+endif ()
+
+# Find the include directory
+find_path(GMOCK_INCLUDE_DIRS gmock/gmock.h
+        HINTS
+        ${GMOCK_ROOT}/include
+)
+mark_as_advanced(GMOCK_INCLUDE_DIRS)
+
+function(_gmock_find_library _name)
+    find_library(${_name}
+        NAMES ${ARGN}
+        HINTS
+            $ENV{GMOCK_ROOT}
+            ${GMOCK_ROOT}
+    )
+    mark_as_advanced(${_name})
+endfunction()
+
+# Find the gmock libraries
+if (MSVC)
+    find_library (GMOCK_LIBRARIES_DEBUG   gmock ${GMOCK_BUILD}/Debug)
+    find_library (GMOCK_LIBRARIES_RELEASE gmock ${GMOCK_BUILD}/Release)
+    find_library (GMOCK_MAIN_LIBRARIES_DEBUG   gmock_main ${GMOCK_BUILD}/Debug)
+    find_library (GMOCK_MAIN_LIBRARIES_RELEASE gmock_main ${GMOCK_BUILD}/Release)
+    set (GMOCK_LIBRARIES
+        debug ${GMOCK_LIBRARIES_DEBUG}
+        optimized ${GMOCK_LIBRARIES_RELEASE}
+    )
+    set (GMOCK_MAIN_LIBRARIES
+        debug ${GMOCK_MAIN_LIBRARIES_DEBUG}
+        optimized ${GMOCK_MAIN_LIBRARIES_RELEASE}
+    )
+#    message (STATUS "GMOCK_BOTH_LIBRARIES ARE ${GMOCK_BOTH_LIBRARIES}")
+else ()
+    find_library (GMOCK_LIBRARIES      gmock      ${GMOCK_BUILD})
+    find_library (GMOCK_MAIN_LIBRARIES gmock_main ${GMOCK_BUILD})
+    find_library (GTEST_LIBRARIES      gtest      ${GMOCK_BUILD}/gtest)
+    find_library (GTEST_MAIN_LIBRARIES gtest_main ${GMOCK_BUILD})
+endif ()
+set (GMOCK_BOTH_LIBRARIES
+    ${GMOCK_LIBRARIES}
+    ${GMOCK_MAIN_LIBRARIES}
+    ${GTEST_LIBRARIES}
+    ${GTEST_MAIN_LIBRARIES}
+)

+ 1 - 0
include/IdentType.h

@@ -2,6 +2,7 @@
 #include "ast.h"
 #include "types.h"
 #include "machine_x86.h"
+
 struct IDENTTYPE
 {
     condId           idType;

+ 8 - 0
include/Procedure.h

@@ -11,6 +11,13 @@
 struct CALL_GRAPH;
 struct COND_EXPR;
 struct Disassembler;
+struct Function;
+struct CALL_GRAPH;
+
+typedef llvm::iplist<Function> FunctionListType;
+typedef FunctionListType lFunction;
+typedef lFunction::iterator ilFunction;
+
 namespace llvm
 {
 // Traits for intrusive list of basic blocks...
@@ -143,6 +150,7 @@ public:
     void buildCFG(Disassembler &ds);
     void controlFlowAnalysis();
     void newRegArg(iICODE picode, iICODE ticode);
+    void writeProcComments(std::ostream &ostr);
 protected:
     // TODO: replace those with friend visitor ?
     void propLongReg(int loc_ident_idx, const ID &pLocId);

+ 7 - 27
src/CMakeLists.txt

@@ -1,27 +1,7 @@
-SET(SOURCES ast.cpp backend.cpp bundle.cpp chklib.cpp 
-comwrite.cpp control.cpp dataflow.cpp dcc.cpp     
-disassem.cpp error.cpp fixwild.cpp frontend.cpp
-graph.cpp  hlicode.cpp icode.cpp 
-idioms.cpp locident.cpp parser.cpp        
-perfhlib.cpp procs.cpp proplong.cpp reducible.cpp     
-scanner.cpp symtab.cpp udm.cpp)
-SET(dc_INCLUDES
-${PROJECT_SOURCE_DIR}/include/ast.h
-${PROJECT_SOURCE_DIR}/include/bundle.h
-${PROJECT_SOURCE_DIR}/include/dcc.h
-${PROJECT_SOURCE_DIR}/include/disassem.h
-${PROJECT_SOURCE_DIR}/include/dosdcc.h
-${PROJECT_SOURCE_DIR}/include/error.h
-${PROJECT_SOURCE_DIR}/include/graph.h
-${PROJECT_SOURCE_DIR}/include/hlicode.h
-${PROJECT_SOURCE_DIR}/include/icode.h
-${PROJECT_SOURCE_DIR}/include/locident.h
-${PROJECT_SOURCE_DIR}/include/perfhlib.h
-${PROJECT_SOURCE_DIR}/include/scanner.h
-${PROJECT_SOURCE_DIR}/include/state.h
-${PROJECT_SOURCE_DIR}/include/symtab.h
-${PROJECT_SOURCE_DIR}/include/types.h
-)
-SOURCE_GROUP(Source FILES ${SOURCES})
-SOURCE_GROUP(Headers FILES ${dc_INCLUDES}) 
-ADD_EXECUTABLE(dcc_oo ${SOURCES} ${dc_INCLUDES})
+SET(dcc_test_SOURCES tests/comwrite.cpp)
+include_directories(${GMOCK_INCLUDE_DIRS} ${GMOCK_ROOT}/gtest/include)
+enable_testing()
+add_executable(tester ${dcc_test_SOURCES})
+target_link_libraries(tester
+    ${GMOCK_BOTH_LIBRARIES} ${REQ_LLVM_LIBRARIES})
+add_test(dcc-tests tester)

+ 0 - 2
src/bundle.cpp

@@ -50,8 +50,6 @@ static void writeStrTab (std::ostream &ios, strTable &strTab)
 void writeBundle (std::ostream &ios, bundle procCode)
 {
     writeStrTab (ios, procCode.decl);
-    if (procCode.decl[procCode.decl.size() - 1][0] != ' ')
-       ios << "\n";
     writeStrTab (ios, procCode.code);
 }
 

+ 38 - 28
src/comwrite.cpp

@@ -184,6 +184,13 @@ void LLInst::writeIntComment (std::ostringstream &s)
 
 //, &cCode.decl
 void Function::writeProcComments()
+{
+    std::ostringstream ostr;
+    writeProcComments(ostr);
+    cCode.appendDecl(ostr.str());
+}
+
+void Function::writeProcComments(std::ostream &ostr)
 {
     int i;
     ID *id;			/* Pointer to register argument identifier */
@@ -191,79 +198,82 @@ void Function::writeProcComments()
 
     /* About the parameters */
     if (this->cbParam)
-        cCode.appendDecl("/* Takes %d bytes of parameters.\n",this->cbParam);
+        ostr << "/* Takes "<<this->cbParam<<" bytes of parameters.\n";
     else if (this->flg & REG_ARGS)
     {
-        cCode.appendDecl("/* Uses register arguments:\n");
+        ostr << "/* Uses register arguments:\n";
         for (i = 0; i < this->args.numArgs; i++)
         {
             psym = &this->args.sym[i];
+            ostr << " *     "<<psym->name<<" = ";
             if (psym->regs->expr.ident.idType == REGISTER)
             {
                 id = &this->localId.id_arr[psym->regs->expr.ident.idNode.regiIdx];
-                cCode.appendDecl(" *     %s = %s.\n", psym->name,
-                                 Machine_X86::regName(id->id.regi).c_str());
+                ostr << Machine_X86::regName(id->id.regi);
             }
             else		/* long register */
             {
                 id = &this->localId.id_arr[psym->regs->expr.ident.idNode.longIdx];
-                cCode.appendDecl(" *     %s = %s:%s.\n", psym->name,
-                                 Machine_X86::regName(id->id.longId.h).c_str(),
-                                 Machine_X86::regName(id->id.longId.l).c_str());
+                ostr << Machine_X86::regName(id->id.longId.h) << ":";
+                ostr << Machine_X86::regName(id->id.longId.l);
             }
+            ostr << ".\n";
 
         }
     }
     else
-        cCode.appendDecl("/* Takes no parameters.\n");
+        ostr << "/* Takes no parameters.\n";
 
     /* Type of procedure */
     if (this->flg & PROC_RUNTIME)
-        cCode.appendDecl(" * Runtime support routine of the compiler.\n");
+        ostr << " * Runtime support routine of the compiler.\n";
     if (this->flg & PROC_IS_HLL)
-        cCode.appendDecl(" * High-level language prologue code.\n");
+        ostr << " * High-level language prologue code.\n";
     if (this->flg & PROC_ASM)
     {
-        cCode.appendDecl(" * Untranslatable routine.  Assembler provided.\n");
+        ostr << " * Untranslatable routine.  Assembler provided.\n";
         if (this->flg & PROC_IS_FUNC)
-            switch (this->retVal.type) {
+            switch (this->retVal.type) { // TODO: Functions return value in various regs
                 case TYPE_BYTE_SIGN: case TYPE_BYTE_UNSIGN:
-                    cCode.appendDecl(" * Return value in register al.\n");
+                    ostr << " * Return value in register al.\n";
                     break;
                 case TYPE_WORD_SIGN: case TYPE_WORD_UNSIGN:
-                    cCode.appendDecl(" * Return value in register ax.\n");
+                    ostr << " * Return value in register ax.\n";
                     break;
                 case TYPE_LONG_SIGN: case TYPE_LONG_UNSIGN:
-                    cCode.appendDecl(" * Return value in registers dx:ax.\n");
+                    ostr << " * Return value in registers dx:ax.\n";
                     break;
             } /* eos */
     }
 
     /* Calling convention */
     if (this->flg & CALL_PASCAL)
-        cCode.appendDecl(" * Pascal calling convention.\n");
+        ostr << " * Pascal calling convention.\n";
     else if (this->flg & CALL_C)
-        cCode.appendDecl(" * C calling convention.\n");
+        ostr << " * C calling convention.\n";
     else if (this->flg & CALL_UNKNOWN)
-        cCode.appendDecl(" * Unknown calling convention.\n");
+        ostr << " * Unknown calling convention.\n";
 
     /* Other flags */
     if (this->flg & (PROC_BADINST | PROC_IJMP))
-        cCode.appendDecl(" * Incomplete due to an %s.\n",
-                         (this->flg & PROC_BADINST)? "untranslated opcode":
-                                                     "indirect JMP");
+    {
+        ostr << " * Incomplete due to an ";
+        if(this->flg & PROC_BADINST)
+            ostr << "untranslated opcode.\n";
+        else
+            ostr << "indirect JMP.\n";
+    }
     if (this->flg & PROC_ICALL)
-        cCode.appendDecl(" * Indirect call procedure.\n");
+        ostr << " * Indirect call procedure.\n";
     if (this->flg & IMPURE)
-        cCode.appendDecl(" * Contains impure code.\n");
+        ostr << " * Contains impure code.\n";
     if (this->flg & NOT_HLL)
-        cCode.appendDecl(" * Contains instructions not normally used by compilers.\n");
+        ostr << " * Contains instructions not normally used by compilers.\n";
     if (this->flg & FLOAT_OP)
-        cCode.appendDecl(" * Contains coprocessor instructions.\n");
+        ostr << " * Contains coprocessor instructions.\n";
 
     /* Graph reducibility */
     if (this->flg & GRAPH_IRRED)
-        cCode.appendDecl(" * Irreducible control flow graph.\n");
-    cCode.appendDecl(" */\n{\n");
+        ostr << " * Irreducible control flow graph.\n";
+    ostr << " */\n{\n";
 }
-

+ 14 - 0
src/tests/comwrite.cpp

@@ -0,0 +1,14 @@
+#include "dcc.h"
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+TEST(CowriteTest, HandlesZeroInput) {
+  EXPECT_EQ(1, 1);
+}
+
+int main(int argc, char** argv) {
+  // The following line must be executed to initialize Google Mock
+  // (and Google Test) before running the tests.
+  ::testing::InitGoogleMock(&argc, argv);
+  return RUN_ALL_TESTS();
+}

+ 0 - 1
tests/prev_base/BENCHFN.b

@@ -74,7 +74,6 @@ void main ()
 {
 long loc1;
 long loc2;
-
     printf ("enter number of iterations ");
     scanf ("%ld", &loc0);
     printf ("executing %ld iterations\n", loc2);

+ 0 - 1
tests/prev_base/BENCHLNG.b

@@ -110,7 +110,6 @@ long loc3;
 long loc4;
 long loc5;
 int loc6; /* ax */
-
     scanf ("%ld", &loc0);
     printf ("executing %ld iterations\n", loc5);
     scanf ("%ld", &loc2);

+ 0 - 1
tests/prev_base/BENCHMUL.b

@@ -16,7 +16,6 @@ int loc2;
 long loc3;
 long loc4;
 int loc5;
-
     printf ("enter number of iterations\n");
     scanf ("%ld", &loc0);
     printf ("executing %ld iterations\n", loc4);

+ 0 - 1
tests/prev_base/BENCHMUS.b

@@ -16,7 +16,6 @@ long loc2;
 long loc3;
 int loc4;
 int loc5;
-
     printf ("enter number of iterations\n");
     scanf ("%ld", &loc0);
     printf ("executing %ld iterations\n", loc3);

+ 0 - 1
tests/prev_base/BENCHSHO.b

@@ -17,7 +17,6 @@ int loc3;
 long loc4;
 long loc5;
 int loc6; /* ax */
-
     scanf ("%ld", &loc0);
     printf ("executing %ld iterations\n", loc5);
     scanf ("%ld", &loc1);

+ 0 - 1
tests/prev_base/BYTEOPS.b

@@ -13,7 +13,6 @@ void main ()
 {
 int loc1;
 int loc2;
-
     loc1 = 255;
     loc2 = 143;
     loc2 = (loc1 + loc2);

+ 639 - 0
tests/prev_base/DHAMP.EXE.a1

@@ -0,0 +1,639 @@
+		main  PROC  FAR
+000 0008B4 55                  PUSH           bp                 
+001 0008B5 8BEC                MOV            bp, sp             
+002 0008B7 81ECD400            SUB            sp, 0D4h           
+003 0008BB 56                  PUSH           si                 
+004 0008BC 33F6                XOR            si, si             
+005 0008BE B80700              MOV            ax, 7              
+006 0008C1 50                  PUSH           ax                 
+007 0008C2 1E                  PUSH           ds                 
+008 0008C3 B89800              MOV            ax, 98h            
+009 0008C6 50                  PUSH           ax                 
+010 0008C7 9A02000E05          CALL            far ptr printf    
+011 0008CC 83C406              ADD            sp, 6              
+012 0008CF E98401              JMP            L1                 
+
+013 000A56 83FE06         L1:  CMP            si, 6              
+014 000A59 7D03                JGE            L2                 
+015 000A5B E974FE              JMP            L3                 
+
+016 0008D2 8BC6           L3:  MOV            ax, si             
+017 0008D4 3D0500              CMP            ax, 5              
+018 0008D7 7603                JBE            L4                 
+019 0008D9 E97701              JMP            L5                 
+
+020 000A53 EB00           L5:  JMP            L6                 
+
+021 000A55 46             L6:  INC            si                 
+022                            JMP            L1                 ;Synthetic inst
+
+023 0008DC 8BD8           L4:  MOV            bx, ax             
+024 0008DE D1E3                SHL            bx, 1              
+025 0008E0 2EFFA73500          JMP            word ptr cs:[bx+35h];Switch 
+
+026 0008F1 16                  PUSH           ss                 ;Case l0
+027 0008F2 8D4690              LEA            ax, [bp-70h]       
+028 0008F5 50                  PUSH           ax                 
+029 0008F6 16                  PUSH           ss                 
+030 0008F7 8D862CFF            LEA            ax, [bp-0D4h]      
+031 0008FB 50                  PUSH           ax                 
+032 0008FC 9AC2038B00          CALL            far ptr proc_1    
+033 000901 83C408              ADD            sp, 8              
+034 000904 A31806              MOV            [618h], ax         
+035 000907 FF361806            PUSH           word ptr [618h]    
+036 00090B 1E                  PUSH           ds                 
+037 00090C B8A500              MOV            ax, 0A5h           
+038 00090F 50                  PUSH           ax                 
+039 000910 9A02000E05          CALL            far ptr printf    
+040 000915 83C406              ADD            sp, 6              
+041 000918 E93A01              JMP            L6                 
+
+042 00091B 9A1E058B00          CALL            far ptr proc_4    ;Case l1
+043 000920 A31A06              MOV            [61Ah], ax         
+044 000923 FF361A06            PUSH           word ptr [61Ah]    
+045 000927 1E                  PUSH           ds                 
+046 000928 B8B400              MOV            ax, 0B4h           
+047 00092B 50                  PUSH           ax                 
+048 00092C 9A02000E05          CALL            far ptr printf    
+049 000931 83C406              ADD            sp, 6              
+050 000934 E91E01              JMP            L6                 
+
+051 000937 B81800              MOV            ax, 18h            ;Case l2
+052 00093A 50                  PUSH           ax                 
+053 00093B 9A90038B00          CALL            far ptr proc_5    
+054 000940 59                  POP            cx                 
+055 000941 A31E06              MOV            [61Eh], ax         
+056 000944 FF361E06            PUSH           word ptr [61Eh]    
+057 000948 1E                  PUSH           ds                 
+058 000949 B8C300              MOV            ax, 0C3h           
+059 00094C 50                  PUSH           ax                 
+060 00094D 9A02000E05          CALL            far ptr printf    
+061 000952 83C406              ADD            sp, 6              
+062 000955 E9FD00              JMP            L6                 
+
+063 000958 C746F60000          MOV            word ptr [bp-0Ah], 0;Case l3
+064 00095D C746F40000          MOV            word ptr [bp-0Ch], 0
+065 000962 FF76F6              PUSH           word ptr [bp-0Ah]  
+066 000965 FF76F4              PUSH           word ptr [bp-0Ch]  
+067 000968 9AC4018B00          CALL            far ptr proc_6    
+068 00096D 59                  POP            cx                 
+069 00096E 59                  POP            cx                 
+070 00096F 89162206            MOV            [622h], dx         
+071 000973 A32006              MOV            [620h], ax         
+072 000976 FF362206            PUSH           word ptr [622h]    
+073 00097A FF362006            PUSH           word ptr [620h]    
+074 00097E 9AC4018B00          CALL            far ptr proc_6    
+075 000983 59                  POP            cx                 
+076 000984 59                  POP            cx                 
+077 000985 8956F6              MOV            [bp-0Ah], dx       
+078 000988 8946F4              MOV            [bp-0Ch], ax       
+079 00098B FF362206            PUSH           word ptr [622h]    
+080 00098F FF362006            PUSH           word ptr [620h]    
+081 000993 1E                  PUSH           ds                 
+082 000994 B8D200              MOV            ax, 0D2h           
+083 000997 50                  PUSH           ax                 
+084 000998 9A02000E05          CALL            far ptr printf    
+085 00099D 83C408              ADD            sp, 8              
+086 0009A0 FF76F6              PUSH           word ptr [bp-0Ah]  
+087 0009A3 FF76F4              PUSH           word ptr [bp-0Ch]  
+088 0009A6 1E                  PUSH           ds                 
+089 0009A7 B8E100              MOV            ax, 0E1h           
+090 0009AA 50                  PUSH           ax                 
+091 0009AB 9A02000E05          CALL            far ptr printf    
+092 0009B0 83C408              ADD            sp, 8              
+093 0009B3 E99F00              JMP            L6                 
+
+094 0009B6 8B162206            MOV            dx, [622h]         ;Case l4
+095 0009BA A12006              MOV            ax, [620h]         
+096 0009BD 52                  PUSH           dx                 
+097 0009BE 50                  PUSH           ax                 
+098 0009BF CD378626FF          ESC            FILD          [bp-0DAh]
+099 0009C4 CD3D                INT            3Dh                	/* Unknown int */
+
+100 0009C6 83C404              ADD            sp, 4              
+101 0009C9 83EC08              SUB            sp, 8              
+102 0009CC CD399E22FF          ESC            FSTP          [bp-0DEh]
+103 0009D1 CD3D                INT            3Dh                	/* Unknown int */
+
+104 0009D3 9A21028B00          CALL            far ptr proc_7    
+105 0009D8 83C408              ADD            sp, 8              
+106 0009DB CD391E2406          ESC            FSTP          [624h]
+107 0009E0 CD3D                INT            3Dh                	/* Unknown int */
+
+108 0009E2 FF362A06            PUSH           word ptr [62Ah]    
+109 0009E6 FF362806            PUSH           word ptr [628h]    
+110 0009EA FF362606            PUSH           word ptr [626h]    
+111 0009EE FF362406            PUSH           word ptr [624h]    
+112 0009F2 1E                  PUSH           ds                 
+113 0009F3 B8F100              MOV            ax, 0F1h           
+114 0009F6 50                  PUSH           ax                 
+115 0009F7 9A02000E05          CALL            far ptr printf    
+116 0009FC 83C40C              ADD            sp, 0Ch            
+117 0009FF FF362A06            PUSH           word ptr [62Ah]    
+118 000A03 FF362806            PUSH           word ptr [628h]    
+119 000A07 FF362606            PUSH           word ptr [626h]    
+120 000A0B FF362406            PUSH           word ptr [624h]    
+121 000A0F 9AE6028B00          CALL            far ptr proc_9    
+122 000A14 83C408              ADD            sp, 8              
+123 000A17 CD395EF8            ESC            FSTP          [bp-8]
+124 000A1B CD3D                INT            3Dh                	/* Unknown int */
+
+125 000A1D FF76FE              PUSH           word ptr [bp-2]    
+126 000A20 FF76FC              PUSH           word ptr [bp-4]    
+127 000A23 FF76FA              PUSH           word ptr [bp-6]    
+128 000A26 FF76F8              PUSH           word ptr [bp-8]    
+129 000A29 1E                  PUSH           ds                 
+130 000A2A B80001              MOV            ax, 100h           
+131 000A2D 50                  PUSH           ax                 
+132 000A2E 9A02000E05          CALL            far ptr printf    
+133 000A33 83C40C              ADD            sp, 0Ch            
+134 000A36 EB1D                JMP            L6                 
+
+135 000A38 9A73048B00          CALL            far ptr proc_10   ;Case l5
+136 000A3D A31C06              MOV            [61Ch], ax         
+137 000A40 FF361C06            PUSH           word ptr [61Ch]    
+138 000A44 1E                  PUSH           ds                 
+139 000A45 B80E01              MOV            ax, 10Eh           
+140 000A48 50                  PUSH           ax                 
+141 000A49 9A02000E05          CALL            far ptr printf    
+142 000A4E 83C406              ADD            sp, 6              
+143 000A51 EB02                JMP            L6                 
+
+144 000A5E B80700         L2:  MOV            ax, 7              
+145 000A61 50                  PUSH           ax                 
+146 000A62 1E                  PUSH           ds                 
+147 000A63 B81C01              MOV            ax, 11Ch           
+148 000A66 50                  PUSH           ax                 
+149 000A67 9A02000E05          CALL            far ptr printf    
+150 000A6C 83C406              ADD            sp, 6              
+151 000A6F 5E                  POP            si                 
+152 000A70 8BE5                MOV            sp, bp             
+153 000A72 5D                  POP            bp                 
+154 000A73 CB                  RETF                              
+
+		main  ENDP
+
+		proc_1  PROC  FAR
+000 000C72 55                  PUSH           bp                 
+001 000C73 8BEC                MOV            bp, sp             
+002 000C75 56                  PUSH           si                 
+003 000C76 57                  PUSH           di                 
+004 000C77 33F6                XOR            si, si             
+005 000C79 33FF                XOR            di, di             
+006 000C7B EB3D                JMP            L7                 
+
+007 000CBA 81FE2823       L7:  CMP            si, 2328h          
+008 000CBE 7CBD                JL             L8                 
+009 000CC0 8BC7                MOV            ax, di             
+010 000CC2 EB00                JMP            L9                 
+
+011 000CC4 5F             L9:  POP            di                 
+012 000CC5 5E                  POP            si                 
+013 000CC6 5D                  POP            bp                 
+014 000CC7 CB                  RETF                              
+
+015 000C7D 1E             L8:  PUSH           ds                 
+016 000C7E B83701              MOV            ax, 137h           
+017 000C81 50                  PUSH           ax                 
+018 000C82 FF7608              PUSH           word ptr [bp+8]    
+019 000C85 FF7606              PUSH           word ptr [bp+6]    
+020 000C88 9A56048B00          CALL            far ptr proc_2    
+021 000C8D 83C408              ADD            sp, 8              
+022 000C90 1E                  PUSH           ds                 
+023 000C91 B84801              MOV            ax, 148h           
+024 000C94 50                  PUSH           ax                 
+025 000C95 FF760C              PUSH           word ptr [bp+0Ch]  
+026 000C98 FF760A              PUSH           word ptr [bp+0Ah]  
+027 000C9B 9A56048B00          CALL            far ptr proc_2    
+028 000CA0 83C408              ADD            sp, 8              
+029 000CA3 FF760C              PUSH           word ptr [bp+0Ch]  
+030 000CA6 FF760A              PUSH           word ptr [bp+0Ah]  
+031 000CA9 FF7608              PUSH           word ptr [bp+8]    
+032 000CAC FF7606              PUSH           word ptr [bp+6]    
+033 000CAF 9A18048B00          CALL            far ptr proc_3    
+034 000CB4 83C408              ADD            sp, 8              
+035 000CB7 03F8                ADD            di, ax             
+036 000CB9 46                  INC            si                 
+037                            JMP            L7                 ;Synthetic inst
+
+		proc_1  ENDP
+
+		proc_2  PROC  FAR
+000 000D06 55                  PUSH           bp                 
+001 000D07 8BEC                MOV            bp, sp             
+002 000D09 EB00                JMP            L10                
+
+003 000D0B C45E0A         L10: LES            bx, dword ptr[bp+0Ah]
+004 000D0E FF460A              INC            word ptr [bp+0Ah]  
+005 000D11 268A07              MOV            al, es:[bx]        
+006 000D14 C45E06              LES            bx, dword ptr[bp+6]
+007 000D17 FF4606              INC            word ptr [bp+6]    
+008 000D1A 268807              MOV            es:[bx], al        
+009 000D1D 0AC0                OR             al, al             
+010 000D1F 75EA                JNE            L10                
+011 000D21 5D                  POP            bp                 
+012 000D22 CB                  RETF                              
+
+		proc_2  ENDP
+
+		proc_3  PROC  FAR
+000 000CC8 55                  PUSH           bp                 
+001 000CC9 8BEC                MOV            bp, sp             
+002 000CCB EB13                JMP            L11                
+
+003 000CE0 C45E06         L11: LES            bx, dword ptr[bp+6]
+004 000CE3 268A07              MOV            al, es:[bx]        
+005 000CE6 C45E0A              LES            bx, dword ptr[bp+0Ah]
+006 000CE9 263A07              CMP            al, es:[bx]        
+007 000CEC 74DF                JE             L12                
+008 000CEE C45E06              LES            bx, dword ptr[bp+6]
+009 000CF1 268A07              MOV            al, es:[bx]        
+010 000CF4 98                  CWD                               
+011 000CF5 C45E0A              LES            bx, dword ptr[bp+0Ah]
+012 000CF8 50                  PUSH           ax                 
+013 000CF9 268A07              MOV            al, es:[bx]        
+014 000CFC 98                  CWD                               
+015 000CFD 8BD0                MOV            dx, ax             
+016 000CFF 58                  POP            ax                 
+017 000D00 2BC2                SUB            ax, dx             
+018 000D02 EB00                JMP            L13                
+
+019 000D04 5D             L13: POP            bp                 
+020 000D05 CB                  RETF                              
+
+021 000CCD C45E06         L12: LES            bx, dword ptr[bp+6]
+022 000CD0 26803F00            CMP            byte ptr es:[bx], 0
+023 000CD4 7504                JNE            L14                
+024 000CD6 33C0                XOR            ax, ax             
+025 000CD8 EB2A                JMP            L13                
+
+026 000CDA FF4606         L14: INC            word ptr [bp+6]    
+027 000CDD FF460A              INC            word ptr [bp+0Ah]  
+028                            JMP            L11                ;Synthetic inst
+
+		proc_3  ENDP
+
+		proc_4  PROC  FAR
+000 000DCE 55                  PUSH           bp                 
+001 000DCF 8BEC                MOV            bp, sp             
+002 000DD1 83EC04              SUB            sp, 4              
+003 000DD4 56                  PUSH           si                 
+004 000DD5 57                  PUSH           di                 
+005 000DD6 33F6                XOR            si, si             
+006 000DD8 EB20                JMP            L15                
+
+007 000DFA 81FEE803       L15: CMP            si, 3E8h           
+008 000DFE 7CDA                JL             L16                
+009 000E00 8B46FE              MOV            ax, [bp-2]         
+010 000E03 EB00                JMP            L17                
+
+011 000E05 5F             L17: POP            di                 
+012 000E06 5E                  POP            si                 
+013 000E07 8BE5                MOV            sp, bp             
+014 000E09 5D                  POP            bp                 
+015 000E0A CB                  RETF                              
+
+016 000DDA C746FE0000     L16: MOV            word ptr [bp-2], 0 
+017 000DDF 33FF                XOR            di, di             
+018 000DE1 C746FC0100          MOV            word ptr [bp-4], 1 
+019 000DE6 EB0B                JMP            L18                
+
+020 000DF3 81FFB300       L18: CMP            di, 0B3h           
+021 000DF7 7CEF                JL             L19                
+022 000DF9 46                  INC            si                 
+023                            JMP            L15                ;Synthetic inst
+
+024 000DE8 8B46FC         L19: MOV            ax, [bp-4]         
+025 000DEB 0146FE              ADD            [bp-2], ax         
+026 000DEE 8346FC02            ADD            word ptr [bp-4], 2 
+027 000DF2 47                  INC            di                 
+028                            JMP            L18                ;Synthetic inst
+
+		proc_4  ENDP
+
+		proc_5  PROC  FAR
+000 000C40 55                  PUSH           bp                 
+001 000C41 8BEC                MOV            bp, sp             
+002 000C43 56                  PUSH           si                 
+003 000C44 8B7606              MOV            si, [bp+6]         
+004 000C47 83FE02              CMP            si, 2              
+005 000C4A 7E1E                JLE            L20                
+006 000C4C 8BC6                MOV            ax, si             
+007 000C4E 48                  DEC            ax                 
+008 000C4F 50                  PUSH           ax                 
+009 000C50 0E                  PUSH           cs                 
+010 000C51 E8ECFF              CALL           near ptr proc_5    
+011 000C54 59                  POP            cx                 
+012 000C55 50                  PUSH           ax                 
+013 000C56 8BC6                MOV            ax, si             
+014 000C58 05FEFF              ADD            ax, 0FFFEh         
+015 000C5B 50                  PUSH           ax                 
+016 000C5C 0E                  PUSH           cs                 
+017 000C5D E8E0FF              CALL           near ptr proc_5    
+018 000C60 59                  POP            cx                 
+019 000C61 8BD0                MOV            dx, ax             
+020 000C63 58                  POP            ax                 
+021 000C64 03C2                ADD            ax, dx             
+022 000C66 EB07                JMP            L21                
+
+023 000C6F 5E             L21: POP            si                 
+024 000C70 5D                  POP            bp                 
+025 000C71 CB                  RETF                              
+
+026 000C6A B80100         L20: MOV            ax, 1              
+027 000C6D EB00                JMP            L21                
+
+		proc_5  ENDP
+
+		proc_6  PROC  FAR
+000 000A74 55                  PUSH           bp                 
+001 000A75 8BEC                MOV            bp, sp             
+002 000A77 56                  PUSH           si                 
+003 000A78 8B4606              MOV            ax, [bp+6]         
+004 000A7B 0B4608              OR             ax, [bp+8]         
+005 000A7E 7524                JNE            L22                
+006 000A80 33F6                XOR            si, si             
+007 000A82 EB18                JMP            L23                
+
+008 000A9C 81FE2823       L23: CMP            si, 2328h          
+009 000AA0 7CE2                JL             L24                
+010 000AA2 EB22                JMP            L25                
+
+011 000AC6 8B5608         L25: MOV            dx, [bp+8]         
+012 000AC9 8B4606              MOV            ax, [bp+6]         
+013 000ACC EB00                JMP            L26                
+
+014 000ACE 5E             L26: POP            si                 
+015 000ACF 5D                  POP            bp                 
+016 000AD0 CB                  RETF                              
+
+017 000A84 8B169600       L24: MOV            dx, [96h]          
+018 000A88 A19400              MOV            ax, [94h]          
+019 000A8B 014606              ADD            [bp+6], ax         
+020 000A8E 115608              ADC            [bp+8], dx         
+021 000A91 8306940002          ADD            word ptr [94h], 2  
+022 000A96 8316960000          ADC            word ptr [96h], 0  
+023 000A9B 46                  INC            si                 
+024                            JMP            L23                ;Synthetic inst
+
+025 000AA4 33F6           L22: XOR            si, si             
+026 000AA6 EB18                JMP            L27                
+
+027 000AC0 81FE2823       L27: CMP            si, 2328h          
+028 000AC4 7CE2                JL             L28                
+029                            JMP            L25                ;Synthetic inst
+
+030 000AA8 832E940002     L28: SUB            word ptr [94h], 2  
+031 000AAD 831E960000          SBB            word ptr [96h], 0  
+032 000AB2 8B169600            MOV            dx, [96h]          
+033 000AB6 A19400              MOV            ax, [94h]          
+034 000AB9 294606              SUB            [bp+6], ax         
+035 000ABC 195608              SBB            [bp+8], dx         
+036 000ABF 46                  INC            si                 
+037                            JMP            L27                ;Synthetic inst
+
+		proc_6  ENDP
+
+		proc_7  PROC  FAR
+000 000AD1 55                  PUSH           bp                 
+001 000AD2 8BEC                MOV            bp, sp             
+002 000AD4 83EC10              SUB            sp, 10h            
+003 000AD7 CD394606            ESC            FLD          [bp+6]
+004 000ADB CD38362701          ESC            FDIV          [127h]
+005 000AE0 CD395EF8            ESC            FSTP          [bp-8]
+006 000AE4 CD3D                INT            3Dh                	/* Unknown int */
+
+007 000AE6 8B460C              MOV            ax, [bp+0Ch]       
+008 000AE9 8946F6              MOV            [bp-0Ah], ax       
+009 000AEC 8B460A              MOV            ax, [bp+0Ah]       
+010 000AEF 8946F4              MOV            [bp-0Ch], ax       
+011 000AF2 8B4608              MOV            ax, [bp+8]         
+012 000AF5 8946F2              MOV            [bp-0Eh], ax       
+013 000AF8 8B4606              MOV            ax, [bp+6]         
+014 000AFB 8946F0              MOV            [bp-10h], ax       
+015 000AFE EB43                JMP            L29                
+
+016 000B43 CD39062F01     L29: ESC            FLD          [12Fh]
+017 000B48 CD384EF8            ESC            FMUL          [bp-8]
+018 000B4C CD385EF0            ESC            FCOMP          [bp-10h]
+019 000B50 CD393E2C06          ESC            FSTSW          [62Ch]
+020 000B55 CD3D                INT            3Dh                	/* Unknown int */
+
+021 000B57 8A262D06            MOV            ah, [62Dh]         
+022 000B5B 9E                  SAHF                              
+023 000B5C 72A2                JB             L30                
+024 000B5E CD3946F8            ESC            FLD          [bp-8]
+025 000B62 EB00                JMP            L31                
+
+026 000B64 8BE5           L31: MOV            sp, bp             
+027 000B66 5D                  POP            bp                 
+028 000B67 CB                  RETF                              
+
+029 000B00 CD394606       L30: ESC            FLD          [bp+6]
+030 000B04 CD3876F8            ESC            FDIV          [bp-8]
+031 000B08 CD3866F8            ESC            FSUB          [bp-8]
+032 000B0C CD395EF0            ESC            FSTP          [bp-10h]
+033 000B10 CD3D                INT            3Dh                	/* Unknown int */
+
+034 000B12 FF76F6              PUSH           word ptr [bp-0Ah]  
+035 000B15 FF76F4              PUSH           word ptr [bp-0Ch]  
+036 000B18 FF76F2              PUSH           word ptr [bp-0Eh]  
+037 000B1B FF76F0              PUSH           word ptr [bp-10h]  
+038 000B1E 9AB8028B00          CALL            far ptr proc_8    
+039 000B23 83C408              ADD            sp, 8              
+040 000B26 CD395EF0            ESC            FSTP          [bp-10h]
+041 000B2A CD3D                INT            3Dh                	/* Unknown int */
+
+042 000B2C CD394606            ESC            FLD          [bp+6]
+043 000B30 CD3876F8            ESC            FDIV          [bp-8]
+044 000B34 CD3846F8            ESC            FADD          [bp-8]
+045 000B38 CD38362701          ESC            FDIV          [127h]
+046 000B3D CD395EF8            ESC            FSTP          [bp-8]
+047 000B41 CD3D                INT            3Dh                	/* Unknown int */
+
+048                            JMP            L29                ;Synthetic inst
+
+		proc_7  ENDP
+
+		proc_8  PROC  FAR
+000 000B68 55                  PUSH           bp                 
+001 000B69 8BEC                MOV            bp, sp             
+002 000B6B CD39062601          ESC            FLD          [126h]
+003 000B70 CD394606            ESC            FLD          [bp+6]
+004 000B74 CD3AD9              ESC            FCOMPP             
+005 000B77 CD393E2C06          ESC            FSTSW          [62Ch]
+006 000B7C CD3D                INT            3Dh                	/* Unknown int */
+
+007 000B7E 8A262D06            MOV            ah, [62Dh]         
+008 000B82 9E                  SAHF                              
+009 000B83 7309                JAE            L32                
+010 000B85 CD394606            ESC            FLD          [bp+6]
+011 000B89 CD35E0              ESC            FCHS               
+012 000B8C EB04                JMP            L33                
+
+013 000B92 EB00           L33: JMP            L34                
+
+014 000B94 5D             L34: POP            bp                 
+015 000B95 CB                  RETF                              
+
+016 000B8E CD394606       L32: ESC            FLD          [bp+6]
+017                            JMP            L33                ;Synthetic inst
+
+		proc_8  ENDP
+
+		proc_9  PROC  FAR
+000 000B96 55                  PUSH           bp                 
+001 000B97 8BEC                MOV            bp, sp             
+002 000B99 83EC08              SUB            sp, 8              
+003 000B9C 56                  PUSH           si                 
+004 000B9D BE6400              MOV            si, 64h            
+005 000BA0 E98800              JMP            L35                
+
+006 000C2B 8BC6           L35: MOV            ax, si             
+007 000C2D 4E                  DEC            si                 
+008 000C2E 0BC0                OR             ax, ax             
+009 000C30 7403                JE             L36                
+010 000C32 E96EFF              JMP            L37                
+
+011 000BA3 CD394606       L37: ESC            FLD          [bp+6]
+012 000BA7 CD384E06            ESC            FMUL          [bp+6]
+013 000BAB CD384E06            ESC            FMUL          [bp+6]
+014 000BAF CD384E06            ESC            FMUL          [bp+6]
+015 000BB3 CD384E06            ESC            FMUL          [bp+6]
+016 000BB7 CD384E06            ESC            FMUL          [bp+6]
+017 000BBB CD384E06            ESC            FMUL          [bp+6]
+018 000BBF CD395EF8            ESC            FSTP          [bp-8]
+019 000BC3 CD3D                INT            3Dh                	/* Unknown int */
+
+020 000BC5 CD3946F8            ESC            FLD          [bp-8]
+021 000BC9 CD387606            ESC            FDIV          [bp+6]
+022 000BCD CD387606            ESC            FDIV          [bp+6]
+023 000BD1 CD387606            ESC            FDIV          [bp+6]
+024 000BD5 CD387606            ESC            FDIV          [bp+6]
+025 000BD9 CD387606            ESC            FDIV          [bp+6]
+026 000BDD CD387606            ESC            FDIV          [bp+6]
+027 000BE1 CD395EF8            ESC            FSTP          [bp-8]
+028 000BE5 CD3D                INT            3Dh                	/* Unknown int */
+
+029 000BE7 CD3946F8            ESC            FLD          [bp-8]
+030 000BEB CD384606            ESC            FADD          [bp+6]
+031 000BEF CD384606            ESC            FADD          [bp+6]
+032 000BF3 CD384606            ESC            FADD          [bp+6]
+033 000BF7 CD384606            ESC            FADD          [bp+6]
+034 000BFB CD384606            ESC            FADD          [bp+6]
+035 000BFF CD384606            ESC            FADD          [bp+6]
+036 000C03 CD395EF8            ESC            FSTP          [bp-8]
+037 000C07 CD3D                INT            3Dh                	/* Unknown int */
+
+038 000C09 CD3946F8            ESC            FLD          [bp-8]
+039 000C0D CD386606            ESC            FSUB          [bp+6]
+040 000C11 CD386606            ESC            FSUB          [bp+6]
+041 000C15 CD386606            ESC            FSUB          [bp+6]
+042 000C19 CD386606            ESC            FSUB          [bp+6]
+043 000C1D CD386606            ESC            FSUB          [bp+6]
+044 000C21 CD386606            ESC            FSUB          [bp+6]
+045 000C25 CD395EF8            ESC            FSTP          [bp-8]
+046 000C29 CD3D                INT            3Dh                	/* Unknown int */
+
+047                            JMP            L35                ;Synthetic inst
+
+048 000C35 CD3946F8       L36: ESC            FLD          [bp-8]
+049 000C39 EB00                JMP            L38                
+
+050 000C3B 5E             L38: POP            si                 
+051 000C3C 8BE5                MOV            sp, bp             
+052 000C3E 5D                  POP            bp                 
+053 000C3F CB                  RETF                              
+
+		proc_9  ENDP
+
+		proc_10  PROC  FAR
+000 000D23 55                  PUSH           bp                 
+001 000D24 8BEC                MOV            bp, sp             
+002 000D26 83EC68              SUB            sp, 68h            
+003 000D29 56                  PUSH           si                 
+004 000D2A 57                  PUSH           di                 
+005 000D2B 1E                  PUSH           ds                 
+006 000D2C B85901              MOV            ax, 159h           
+007 000D2F 50                  PUSH           ax                 
+008 000D30 16                  PUSH           ss                 
+009 000D31 8D469C              LEA            ax, [bp-64h]       
+010 000D34 50                  PUSH           ax                 
+011 000D35 0E                  PUSH           cs                 
+012 000D36 E8CDFF              CALL           near ptr proc_2    
+013 000D39 83C408              ADD            sp, 8              
+014 000D3C 1E                  PUSH           ds                 
+015 000D3D B87001              MOV            ax, 170h           
+016 000D40 50                  PUSH           ax                 
+017 000D41 1E                  PUSH           ds                 
+018 000D42 B86701              MOV            ax, 167h           
+019 000D45 50                  PUSH           ax                 
+020 000D46 9A24022904          CALL            far ptr fopen     
+021 000D4B 83C408              ADD            sp, 8              
+022 000D4E 89569A              MOV            [bp-66h], dx       
+023 000D51 894698              MOV            [bp-68h], ax       
+024 000D54 0BD0                OR             dx, ax             
+025 000D56 7516                JNE            L39                
+026 000D58 1E                  PUSH           ds                 
+027 000D59 B87201              MOV            ax, 172h           
+028 000D5C 50                  PUSH           ax                 
+029 000D5D 9A02000E05          CALL            far ptr printf    
+030 000D62 59                  POP            cx                 
+031 000D63 59                  POP            cx                 
+032 000D64 B8FFFF              MOV            ax, 0FFFFh         
+033 000D67 50                  PUSH           ax                 
+034 000D68 9A0200DA03          CALL            far ptr exit      
+035 000D6D 59                  POP            cx                 
+
+036 000D6E 33FF           L39: XOR            di, di             
+037 000D70 EB3D                JMP            L40                
+
+038 000DAF 47             L40: INC            di                 
+039 000DB0 8BC7                MOV            ax, di             
+040 000DB2 3DE803              CMP            ax, 3E8h           
+041 000DB5 7CBB                JL             L41                
+042 000DB7 FF769A              PUSH           word ptr [bp-66h]  
+043 000DBA FF7698              PUSH           word ptr [bp-68h]  
+044 000DBD 9A0800A104          CALL            far ptr fclose    
+045 000DC2 59                  POP            cx                 
+046 000DC3 59                  POP            cx                 
+047 000DC4 8BC7                MOV            ax, di             
+048 000DC6 EB00                JMP            L42                
+
+049 000DC8 5F             L42: POP            di                 
+050 000DC9 5E                  POP            si                 
+051 000DCA 8BE5                MOV            sp, bp             
+052 000DCC 5D                  POP            bp                 
+053 000DCD CB                  RETF                              
+
+054 000D72 33F6           L41: XOR            si, si             
+055 000D74 EB32                JMP            L43                
+
+056 000DA8 36807A9C00     L43: CMP            byte ptr ss:[bp+si-64h], 0
+057 000DAD 75C7                JNE            L44                
+058                            JMP            L40                ;Synthetic inst
+
+059 000D76 C45E98         L44: LES            bx, dword ptr[bp-68h]
+060 000D79 26FF07              INC            word ptr es:[bx]   
+061 000D7C 7D17                JGE            L45                
+062 000D7E 368A429C            MOV            al, ss:[bp+si-64h] 
+063 000D82 C45E98              LES            bx, dword ptr[bp-68h]
+064 000D85 26FF470C            INC            word ptr es:[bx+0Ch]
+065 000D89 26C45F0C            LES            bx, dword ptres:[bx+0Ch]
+066 000D8D 4B                  DEC            bx                 
+067 000D8E 268807              MOV            es:[bx], al        
+068 000D91 B400                MOV            ah, 0              
+069 000D93 EB12                JMP            L46                
+
+070 000DA7 46             L46: INC            si                 
+071                            JMP            L43                ;Synthetic inst
+
+072 000D95 FF769A         L45: PUSH           word ptr [bp-66h]  
+073 000D98 FF7698              PUSH           word ptr [bp-68h]  
+074 000D9B 36FF729C            PUSH           word ptr ss:[bp+si-64h]
+075 000D9F 9A06001005          CALL            far ptr _fputc    
+076 000DA4 83C406              ADD            sp, 6              
+077                            JMP            L46                ;Synthetic inst
+
+		proc_10  ENDP
+

+ 601 - 0
tests/prev_base/DHAMP.EXE.a2

@@ -0,0 +1,601 @@
+		proc_10  PROC  FAR
+000 000D23 55                  PUSH           bp                 
+001 000D24 8BEC                MOV            bp, sp             
+002 000D26 83EC68              SUB            sp, 68h            
+003 000D29 56                  PUSH           si                 
+004 000D2A 57                  PUSH           di                 
+005 000D2B 1E                  PUSH           ds                 
+006 000D2C B85901              MOV            ax, 159h           
+007 000D2F 50                  PUSH           ax                 
+008 000D30 16                  PUSH           ss                 
+009 000D31 8D469C              LEA            ax, [bp-64h]       
+010 000D34 50                  PUSH           ax                 
+011 000D35 0E                  PUSH           cs                 
+012 000D36 E8CDFF              CALL           near ptr proc_2    
+013 000D39 83C408              ADD            sp, 8              
+014 000D3C 1E                  PUSH           ds                 
+015 000D3D B87001              MOV            ax, 170h           
+016 000D40 50                  PUSH           ax                 
+017 000D41 1E                  PUSH           ds                 
+018 000D42 B86701              MOV            ax, 167h           
+019 000D45 50                  PUSH           ax                 
+020 000D46 9A24022904          CALL            far ptr fopen     
+021 000D4B 83C408              ADD            sp, 8              
+022 000D4E 89569A              MOV            [bp-66h], dx       
+023 000D51 894698              MOV            [bp-68h], ax       
+024 000D54 0BD0                OR             dx, ax             
+025 000D56 7516                JNE            L1                 
+026 000D58 1E                  PUSH           ds                 
+027 000D59 B87201              MOV            ax, 172h           
+028 000D5C 50                  PUSH           ax                 
+029 000D5D 9A02000E05          CALL            far ptr printf    
+030 000D62 59                  POP            cx                 
+031 000D63 59                  POP            cx                 
+032 000D64 B8FFFF              MOV            ax, 0FFFFh         
+033 000D67 50                  PUSH           ax                 
+034 000D68 9A0200DA03          CALL            far ptr exit      
+035 000D6D 59                  POP            cx                 
+
+036 000D6E 33FF           L1:  XOR            di, di             
+
+038 000DAF 47             L2:  INC            di                 
+039 000DB0 8BC7                MOV            ax, di             
+040 000DB2 3DE803              CMP            ax, 3E8h           
+041 000DB5 7CBB                JL             L3                 
+042 000DB7 FF769A              PUSH           word ptr [bp-66h]  
+043 000DBA FF7698              PUSH           word ptr [bp-68h]  
+044 000DBD 9A0800A104          CALL            far ptr fclose    
+045 000DC2 59                  POP            cx                 
+046 000DC3 59                  POP            cx                 
+047 000DC4 8BC7                MOV            ax, di             
+049 000DC8 5F                  POP            di                 
+050 000DC9 5E                  POP            si                 
+051 000DCA 8BE5                MOV            sp, bp             
+052 000DCC 5D                  POP            bp                 
+053 000DCD CB                  RETF                              
+
+054 000D72 33F6           L3:  XOR            si, si             
+
+056 000DA8 36807A9C00     L4:  CMP            byte ptr ss:[bp+si-64h], 0
+057 000DAD 75C7                JNE            L5                 
+
+059 000D76 C45E98         L5:  LES            bx, dword ptr[bp-68h]
+060 000D79 26FF07              INC            word ptr es:[bx]   
+061 000D7C 7D17                JGE            L6                 
+062 000D7E 368A429C            MOV            al, ss:[bp+si-64h] 
+063 000D82 C45E98              LES            bx, dword ptr[bp-68h]
+064 000D85 26FF470C            INC            word ptr es:[bx+0Ch]
+065 000D89 26C45F0C            LES            bx, dword ptres:[bx+0Ch]
+066 000D8D 4B                  DEC            bx                 
+067 000D8E 268807              MOV            es:[bx], al        
+068 000D91 B400                MOV            ah, 0              
+
+070 000DA7 46             L7:  INC            si                 
+071                            JMP            L4                 ;Synthetic inst
+
+072 000D95 FF769A         L6:  PUSH           word ptr [bp-66h]  
+073 000D98 FF7698              PUSH           word ptr [bp-68h]  
+074 000D9B 36FF729C            PUSH           word ptr ss:[bp+si-64h]
+075 000D9F 9A06001005          CALL            far ptr _fputc    
+076 000DA4 83C406              ADD            sp, 6              
+077                            JMP            L7                 ;Synthetic inst
+
+		proc_10  ENDP
+
+		proc_9  PROC  FAR
+000 000B96 55                  PUSH           bp                 
+001 000B97 8BEC                MOV            bp, sp             
+002 000B99 83EC08              SUB            sp, 8              
+003 000B9C 56                  PUSH           si                 
+004 000B9D BE6400              MOV            si, 64h            
+
+006 000C2B 8BC6           L8:  MOV            ax, si             
+007 000C2D 4E                  DEC            si                 
+008 000C2E 0BC0                OR             ax, ax             
+009 000C30 7403                JE             L9                 
+
+011 000BA3 CD394606       L10: ESC            FLD          [bp+6]
+012 000BA7 CD384E06            ESC            FMUL          [bp+6]
+013 000BAB CD384E06            ESC            FMUL          [bp+6]
+014 000BAF CD384E06            ESC            FMUL          [bp+6]
+015 000BB3 CD384E06            ESC            FMUL          [bp+6]
+016 000BB7 CD384E06            ESC            FMUL          [bp+6]
+017 000BBB CD384E06            ESC            FMUL          [bp+6]
+018 000BBF CD395EF8            ESC            FSTP          [bp-8]
+019 000BC3 CD3D                INT            3Dh                	/* Unknown int */
+
+020 000BC5 CD3946F8            ESC            FLD          [bp-8]
+021 000BC9 CD387606            ESC            FDIV          [bp+6]
+022 000BCD CD387606            ESC            FDIV          [bp+6]
+023 000BD1 CD387606            ESC            FDIV          [bp+6]
+024 000BD5 CD387606            ESC            FDIV          [bp+6]
+025 000BD9 CD387606            ESC            FDIV          [bp+6]
+026 000BDD CD387606            ESC            FDIV          [bp+6]
+027 000BE1 CD395EF8            ESC            FSTP          [bp-8]
+028 000BE5 CD3D                INT            3Dh                	/* Unknown int */
+
+029 000BE7 CD3946F8            ESC            FLD          [bp-8]
+030 000BEB CD384606            ESC            FADD          [bp+6]
+031 000BEF CD384606            ESC            FADD          [bp+6]
+032 000BF3 CD384606            ESC            FADD          [bp+6]
+033 000BF7 CD384606            ESC            FADD          [bp+6]
+034 000BFB CD384606            ESC            FADD          [bp+6]
+035 000BFF CD384606            ESC            FADD          [bp+6]
+036 000C03 CD395EF8            ESC            FSTP          [bp-8]
+037 000C07 CD3D                INT            3Dh                	/* Unknown int */
+
+038 000C09 CD3946F8            ESC            FLD          [bp-8]
+039 000C0D CD386606            ESC            FSUB          [bp+6]
+040 000C11 CD386606            ESC            FSUB          [bp+6]
+041 000C15 CD386606            ESC            FSUB          [bp+6]
+042 000C19 CD386606            ESC            FSUB          [bp+6]
+043 000C1D CD386606            ESC            FSUB          [bp+6]
+044 000C21 CD386606            ESC            FSUB          [bp+6]
+045 000C25 CD395EF8            ESC            FSTP          [bp-8]
+046 000C29 CD3D                INT            3Dh                	/* Unknown int */
+
+047                            JMP            L8                 ;Synthetic inst
+
+048 000C35 CD3946F8       L9:  ESC            FLD          [bp-8]
+050 000C3B 5E                  POP            si                 
+051 000C3C 8BE5                MOV            sp, bp             
+052 000C3E 5D                  POP            bp                 
+053 000C3F CB                  RETF                              
+
+		proc_9  ENDP
+
+		proc_8  PROC  FAR
+000 000B68 55                  PUSH           bp                 
+001 000B69 8BEC                MOV            bp, sp             
+002 000B6B CD39062601          ESC            FLD          [126h]
+003 000B70 CD394606            ESC            FLD          [bp+6]
+004 000B74 CD3AD9              ESC            FCOMPP             
+005 000B77 CD393E2C06          ESC            FSTSW          [62Ch]
+006 000B7C CD3D                INT            3Dh                	/* Unknown int */
+
+007 000B7E 8A262D06            MOV            ah, [62Dh]         
+008 000B82 9E                  SAHF                              
+009 000B83 7309                JAE            L11                
+010 000B85 CD394606            ESC            FLD          [bp+6]
+011 000B89 CD35E0              ESC            FCHS               
+
+014 000B94 5D             L12: POP            bp                 
+015 000B95 CB                  RETF                              
+
+016 000B8E CD394606       L11: ESC            FLD          [bp+6]
+017                            JMP            L12                ;Synthetic inst
+
+		proc_8  ENDP
+
+		proc_7  PROC  FAR
+000 000AD1 55                  PUSH           bp                 
+001 000AD2 8BEC                MOV            bp, sp             
+002 000AD4 83EC10              SUB            sp, 10h            
+003 000AD7 CD394606            ESC            FLD          [bp+6]
+004 000ADB CD38362701          ESC            FDIV          [127h]
+005 000AE0 CD395EF8            ESC            FSTP          [bp-8]
+006 000AE4 CD3D                INT            3Dh                	/* Unknown int */
+
+007 000AE6 8B460C              MOV            ax, [bp+0Ch]       
+008 000AE9 8946F6              MOV            [bp-0Ah], ax       
+009 000AEC 8B460A              MOV            ax, [bp+0Ah]       
+010 000AEF 8946F4              MOV            [bp-0Ch], ax       
+011 000AF2 8B4608              MOV            ax, [bp+8]         
+012 000AF5 8946F2              MOV            [bp-0Eh], ax       
+013 000AF8 8B4606              MOV            ax, [bp+6]         
+014 000AFB 8946F0              MOV            [bp-10h], ax       
+
+016 000B43 CD39062F01     L13: ESC            FLD          [12Fh]
+017 000B48 CD384EF8            ESC            FMUL          [bp-8]
+018 000B4C CD385EF0            ESC            FCOMP          [bp-10h]
+019 000B50 CD393E2C06          ESC            FSTSW          [62Ch]
+020 000B55 CD3D                INT            3Dh                	/* Unknown int */
+
+021 000B57 8A262D06            MOV            ah, [62Dh]         
+022 000B5B 9E                  SAHF                              
+023 000B5C 72A2                JB             L14                
+024 000B5E CD3946F8            ESC            FLD          [bp-8]
+026 000B64 8BE5                MOV            sp, bp             
+027 000B66 5D                  POP            bp                 
+028 000B67 CB                  RETF                              
+
+029 000B00 CD394606       L14: ESC            FLD          [bp+6]
+030 000B04 CD3876F8            ESC            FDIV          [bp-8]
+031 000B08 CD3866F8            ESC            FSUB          [bp-8]
+032 000B0C CD395EF0            ESC            FSTP          [bp-10h]
+033 000B10 CD3D                INT            3Dh                	/* Unknown int */
+
+034 000B12 FF76F6              PUSH           word ptr [bp-0Ah]  
+035 000B15 FF76F4              PUSH           word ptr [bp-0Ch]  
+036 000B18 FF76F2              PUSH           word ptr [bp-0Eh]  
+037 000B1B FF76F0              PUSH           word ptr [bp-10h]  
+038 000B1E 9AB8028B00          CALL            far ptr proc_8    
+039 000B23 83C408              ADD            sp, 8              
+040 000B26 CD395EF0            ESC            FSTP          [bp-10h]
+041 000B2A CD3D                INT            3Dh                	/* Unknown int */
+
+042 000B2C CD394606            ESC            FLD          [bp+6]
+043 000B30 CD3876F8            ESC            FDIV          [bp-8]
+044 000B34 CD3846F8            ESC            FADD          [bp-8]
+045 000B38 CD38362701          ESC            FDIV          [127h]
+046 000B3D CD395EF8            ESC            FSTP          [bp-8]
+047 000B41 CD3D                INT            3Dh                	/* Unknown int */
+
+048                            JMP            L13                ;Synthetic inst
+
+		proc_7  ENDP
+
+		proc_6  PROC  FAR
+000 000A74 55                  PUSH           bp                 
+001 000A75 8BEC                MOV            bp, sp             
+002 000A77 56                  PUSH           si                 
+003 000A78 8B4606              MOV            ax, [bp+6]         
+004 000A7B 0B4608              OR             ax, [bp+8]         
+005 000A7E 7524                JNE            L15                
+006 000A80 33F6                XOR            si, si             
+
+008 000A9C 81FE2823       L16: CMP            si, 2328h          
+009 000AA0 7CE2                JL             L17                
+
+011 000AC6 8B5608         L18: MOV            dx, [bp+8]         
+012 000AC9 8B4606              MOV            ax, [bp+6]         
+014 000ACE 5E                  POP            si                 
+015 000ACF 5D                  POP            bp                 
+016 000AD0 CB                  RETF                              
+
+017 000A84 8B169600       L17: MOV            dx, [96h]          
+018 000A88 A19400              MOV            ax, [94h]          
+019 000A8B 014606              ADD            [bp+6], ax         
+020 000A8E 115608              ADC            [bp+8], dx         
+021 000A91 8306940002          ADD            word ptr [94h], 2  
+022 000A96 8316960000          ADC            word ptr [96h], 0  
+023 000A9B 46                  INC            si                 
+024                            JMP            L16                ;Synthetic inst
+
+025 000AA4 33F6           L15: XOR            si, si             
+
+027 000AC0 81FE2823       L19: CMP            si, 2328h          
+028 000AC4 7CE2                JL             L20                
+
+030 000AA8 832E940002     L20: SUB            word ptr [94h], 2  
+031 000AAD 831E960000          SBB            word ptr [96h], 0  
+032 000AB2 8B169600            MOV            dx, [96h]          
+033 000AB6 A19400              MOV            ax, [94h]          
+034 000AB9 294606              SUB            [bp+6], ax         
+035 000ABC 195608              SBB            [bp+8], dx         
+036 000ABF 46                  INC            si                 
+037                            JMP            L19                ;Synthetic inst
+
+		proc_6  ENDP
+
+		proc_5  PROC  FAR
+000 000C40 55                  PUSH           bp                 
+001 000C41 8BEC                MOV            bp, sp             
+002 000C43 56                  PUSH           si                 
+003 000C44 8B7606              MOV            si, [bp+6]         
+004 000C47 83FE02              CMP            si, 2              
+005 000C4A 7E1E                JLE            L21                
+006 000C4C 8BC6                MOV            ax, si             
+007 000C4E 48                  DEC            ax                 
+008 000C4F 50                  PUSH           ax                 
+009 000C50 0E                  PUSH           cs                 
+010 000C51 E8ECFF              CALL           near ptr proc_5    
+011 000C54 59                  POP            cx                 
+012 000C55 50                  PUSH           ax                 
+013 000C56 8BC6                MOV            ax, si             
+014 000C58 05FEFF              ADD            ax, 0FFFEh         
+015 000C5B 50                  PUSH           ax                 
+016 000C5C 0E                  PUSH           cs                 
+017 000C5D E8E0FF              CALL           near ptr proc_5    
+018 000C60 59                  POP            cx                 
+019 000C61 8BD0                MOV            dx, ax             
+020 000C63 58                  POP            ax                 
+021 000C64 03C2                ADD            ax, dx             
+
+023 000C6F 5E             L22: POP            si                 
+024 000C70 5D                  POP            bp                 
+025 000C71 CB                  RETF                              
+
+026 000C6A B80100         L21: MOV            ax, 1              
+027 000C6D EB00                JMP            L22                
+
+		proc_5  ENDP
+
+		proc_4  PROC  FAR
+000 000DCE 55                  PUSH           bp                 
+001 000DCF 8BEC                MOV            bp, sp             
+002 000DD1 83EC04              SUB            sp, 4              
+003 000DD4 56                  PUSH           si                 
+004 000DD5 57                  PUSH           di                 
+005 000DD6 33F6                XOR            si, si             
+
+007 000DFA 81FEE803       L23: CMP            si, 3E8h           
+008 000DFE 7CDA                JL             L24                
+009 000E00 8B46FE              MOV            ax, [bp-2]         
+011 000E05 5F                  POP            di                 
+012 000E06 5E                  POP            si                 
+013 000E07 8BE5                MOV            sp, bp             
+014 000E09 5D                  POP            bp                 
+015 000E0A CB                  RETF                              
+
+016 000DDA C746FE0000     L24: MOV            word ptr [bp-2], 0 
+017 000DDF 33FF                XOR            di, di             
+018 000DE1 C746FC0100          MOV            word ptr [bp-4], 1 
+
+020 000DF3 81FFB300       L25: CMP            di, 0B3h           
+021 000DF7 7CEF                JL             L26                
+022 000DF9 46                  INC            si                 
+023                            JMP            L23                ;Synthetic inst
+
+024 000DE8 8B46FC         L26: MOV            ax, [bp-4]         
+025 000DEB 0146FE              ADD            [bp-2], ax         
+026 000DEE 8346FC02            ADD            word ptr [bp-4], 2 
+027 000DF2 47                  INC            di                 
+028                            JMP            L25                ;Synthetic inst
+
+		proc_4  ENDP
+
+		proc_3  PROC  FAR
+000 000CC8 55                  PUSH           bp                 
+001 000CC9 8BEC                MOV            bp, sp             
+
+003 000CE0 C45E06         L27: LES            bx, dword ptr[bp+6]
+004 000CE3 268A07              MOV            al, es:[bx]        
+005 000CE6 C45E0A              LES            bx, dword ptr[bp+0Ah]
+006 000CE9 263A07              CMP            al, es:[bx]        
+007 000CEC 74DF                JE             L28                
+008 000CEE C45E06              LES            bx, dword ptr[bp+6]
+009 000CF1 268A07              MOV            al, es:[bx]        
+010 000CF4 98                  CWD                               
+011 000CF5 C45E0A              LES            bx, dword ptr[bp+0Ah]
+012 000CF8 50                  PUSH           ax                 
+013 000CF9 268A07              MOV            al, es:[bx]        
+014 000CFC 98                  CWD                               
+015 000CFD 8BD0                MOV            dx, ax             
+016 000CFF 58                  POP            ax                 
+017 000D00 2BC2                SUB            ax, dx             
+
+019 000D04 5D             L29: POP            bp                 
+020 000D05 CB                  RETF                              
+
+021 000CCD C45E06         L28: LES            bx, dword ptr[bp+6]
+022 000CD0 26803F00            CMP            byte ptr es:[bx], 0
+023 000CD4 7504                JNE            L30                
+024 000CD6 33C0                XOR            ax, ax             
+025 000CD8 EB2A                JMP            L29                
+
+026 000CDA FF4606         L30: INC            word ptr [bp+6]    
+027 000CDD FF460A              INC            word ptr [bp+0Ah]  
+028                            JMP            L27                ;Synthetic inst
+
+		proc_3  ENDP
+
+		proc_2  PROC  FAR
+000 000D06 55                  PUSH           bp                 
+001 000D07 8BEC                MOV            bp, sp             
+
+003 000D0B C45E0A         L31: LES            bx, dword ptr[bp+0Ah]
+004 000D0E FF460A              INC            word ptr [bp+0Ah]  
+005 000D11 268A07              MOV            al, es:[bx]        
+006 000D14 C45E06              LES            bx, dword ptr[bp+6]
+007 000D17 FF4606              INC            word ptr [bp+6]    
+008 000D1A 268807              MOV            es:[bx], al        
+009 000D1D 0AC0                OR             al, al             
+010 000D1F 75EA                JNE            L31                
+011 000D21 5D                  POP            bp                 
+012 000D22 CB                  RETF                              
+
+		proc_2  ENDP
+
+		proc_1  PROC  FAR
+000 000C72 55                  PUSH           bp                 
+001 000C73 8BEC                MOV            bp, sp             
+002 000C75 56                  PUSH           si                 
+003 000C76 57                  PUSH           di                 
+004 000C77 33F6                XOR            si, si             
+005 000C79 33FF                XOR            di, di             
+
+007 000CBA 81FE2823       L32: CMP            si, 2328h          
+008 000CBE 7CBD                JL             L33                
+009 000CC0 8BC7                MOV            ax, di             
+011 000CC4 5F                  POP            di                 
+012 000CC5 5E                  POP            si                 
+013 000CC6 5D                  POP            bp                 
+014 000CC7 CB                  RETF                              
+
+015 000C7D 1E             L33: PUSH           ds                 
+016 000C7E B83701              MOV            ax, 137h           
+017 000C81 50                  PUSH           ax                 
+018 000C82 FF7608              PUSH           word ptr [bp+8]    
+019 000C85 FF7606              PUSH           word ptr [bp+6]    
+020 000C88 9A56048B00          CALL            far ptr proc_2    
+021 000C8D 83C408              ADD            sp, 8              
+022 000C90 1E                  PUSH           ds                 
+023 000C91 B84801              MOV            ax, 148h           
+024 000C94 50                  PUSH           ax                 
+025 000C95 FF760C              PUSH           word ptr [bp+0Ch]  
+026 000C98 FF760A              PUSH           word ptr [bp+0Ah]  
+027 000C9B 9A56048B00          CALL            far ptr proc_2    
+028 000CA0 83C408              ADD            sp, 8              
+029 000CA3 FF760C              PUSH           word ptr [bp+0Ch]  
+030 000CA6 FF760A              PUSH           word ptr [bp+0Ah]  
+031 000CA9 FF7608              PUSH           word ptr [bp+8]    
+032 000CAC FF7606              PUSH           word ptr [bp+6]    
+033 000CAF 9A18048B00          CALL            far ptr proc_3    
+034 000CB4 83C408              ADD            sp, 8              
+035 000CB7 03F8                ADD            di, ax             
+036 000CB9 46                  INC            si                 
+037                            JMP            L32                ;Synthetic inst
+
+		proc_1  ENDP
+
+		main  PROC  FAR
+000 0008B4 55                  PUSH           bp                 
+001 0008B5 8BEC                MOV            bp, sp             
+002 0008B7 81ECD400            SUB            sp, 0D4h           
+003 0008BB 56                  PUSH           si                 
+004 0008BC 33F6                XOR            si, si             
+005 0008BE B80700              MOV            ax, 7              
+006 0008C1 50                  PUSH           ax                 
+007 0008C2 1E                  PUSH           ds                 
+008 0008C3 B89800              MOV            ax, 98h            
+009 0008C6 50                  PUSH           ax                 
+010 0008C7 9A02000E05          CALL            far ptr printf    
+011 0008CC 83C406              ADD            sp, 6              
+
+013 000A56 83FE06         L34: CMP            si, 6              
+014 000A59 7D03                JGE            L35                
+
+016 0008D2 8BC6           L36: MOV            ax, si             
+017 0008D4 3D0500              CMP            ax, 5              
+018 0008D7 7603                JBE            L37                
+
+021 000A55 46             L38: INC            si                 
+022                            JMP            L34                ;Synthetic inst
+
+023 0008DC 8BD8           L37: MOV            bx, ax             
+024 0008DE D1E3                SHL            bx, 1              
+025 0008E0 2EFFA73500          JMP            word ptr cs:[bx+35h];Switch 
+
+026 0008F1 16                  PUSH           ss                 ;Case l0
+027 0008F2 8D4690              LEA            ax, [bp-70h]       
+028 0008F5 50                  PUSH           ax                 
+029 0008F6 16                  PUSH           ss                 
+030 0008F7 8D862CFF            LEA            ax, [bp-0D4h]      
+031 0008FB 50                  PUSH           ax                 
+032 0008FC 9AC2038B00          CALL            far ptr proc_1    
+033 000901 83C408              ADD            sp, 8              
+034 000904 A31806              MOV            [618h], ax         
+035 000907 FF361806            PUSH           word ptr [618h]    
+036 00090B 1E                  PUSH           ds                 
+037 00090C B8A500              MOV            ax, 0A5h           
+038 00090F 50                  PUSH           ax                 
+039 000910 9A02000E05          CALL            far ptr printf    
+040 000915 83C406              ADD            sp, 6              
+041 000918 E93A01              JMP            L38                
+
+042 00091B 9A1E058B00          CALL            far ptr proc_4    ;Case l1
+043 000920 A31A06              MOV            [61Ah], ax         
+044 000923 FF361A06            PUSH           word ptr [61Ah]    
+045 000927 1E                  PUSH           ds                 
+046 000928 B8B400              MOV            ax, 0B4h           
+047 00092B 50                  PUSH           ax                 
+048 00092C 9A02000E05          CALL            far ptr printf    
+049 000931 83C406              ADD            sp, 6              
+050 000934 E91E01              JMP            L38                
+
+051 000937 B81800              MOV            ax, 18h            ;Case l2
+052 00093A 50                  PUSH           ax                 
+053 00093B 9A90038B00          CALL            far ptr proc_5    
+054 000940 59                  POP            cx                 
+055 000941 A31E06              MOV            [61Eh], ax         
+056 000944 FF361E06            PUSH           word ptr [61Eh]    
+057 000948 1E                  PUSH           ds                 
+058 000949 B8C300              MOV            ax, 0C3h           
+059 00094C 50                  PUSH           ax                 
+060 00094D 9A02000E05          CALL            far ptr printf    
+061 000952 83C406              ADD            sp, 6              
+062 000955 E9FD00              JMP            L38                
+
+063 000958 C746F60000          MOV            word ptr [bp-0Ah], 0;Case l3
+064 00095D C746F40000          MOV            word ptr [bp-0Ch], 0
+065 000962 FF76F6              PUSH           word ptr [bp-0Ah]  
+066 000965 FF76F4              PUSH           word ptr [bp-0Ch]  
+067 000968 9AC4018B00          CALL            far ptr proc_6    
+068 00096D 59                  POP            cx                 
+069 00096E 59                  POP            cx                 
+070 00096F 89162206            MOV            [622h], dx         
+071 000973 A32006              MOV            [620h], ax         
+072 000976 FF362206            PUSH           word ptr [622h]    
+073 00097A FF362006            PUSH           word ptr [620h]    
+074 00097E 9AC4018B00          CALL            far ptr proc_6    
+075 000983 59                  POP            cx                 
+076 000984 59                  POP            cx                 
+077 000985 8956F6              MOV            [bp-0Ah], dx       
+078 000988 8946F4              MOV            [bp-0Ch], ax       
+079 00098B FF362206            PUSH           word ptr [622h]    
+080 00098F FF362006            PUSH           word ptr [620h]    
+081 000993 1E                  PUSH           ds                 
+082 000994 B8D200              MOV            ax, 0D2h           
+083 000997 50                  PUSH           ax                 
+084 000998 9A02000E05          CALL            far ptr printf    
+085 00099D 83C408              ADD            sp, 8              
+086 0009A0 FF76F6              PUSH           word ptr [bp-0Ah]  
+087 0009A3 FF76F4              PUSH           word ptr [bp-0Ch]  
+088 0009A6 1E                  PUSH           ds                 
+089 0009A7 B8E100              MOV            ax, 0E1h           
+090 0009AA 50                  PUSH           ax                 
+091 0009AB 9A02000E05          CALL            far ptr printf    
+092 0009B0 83C408              ADD            sp, 8              
+093 0009B3 E99F00              JMP            L38                
+
+094 0009B6 8B162206            MOV            dx, [622h]         ;Case l4
+095 0009BA A12006              MOV            ax, [620h]         
+096 0009BD 52                  PUSH           dx                 
+097 0009BE 50                  PUSH           ax                 
+098 0009BF CD378626FF          ESC            FILD          [bp-0DAh]
+099 0009C4 CD3D                INT            3Dh                	/* Unknown int */
+
+100 0009C6 83C404              ADD            sp, 4              
+101 0009C9 83EC08              SUB            sp, 8              
+102 0009CC CD399E22FF          ESC            FSTP          [bp-0DEh]
+103 0009D1 CD3D                INT            3Dh                	/* Unknown int */
+
+104 0009D3 9A21028B00          CALL            far ptr proc_7    
+105 0009D8 83C408              ADD            sp, 8              
+106 0009DB CD391E2406          ESC            FSTP          [624h]
+107 0009E0 CD3D                INT            3Dh                	/* Unknown int */
+
+108 0009E2 FF362A06            PUSH           word ptr [62Ah]    
+109 0009E6 FF362806            PUSH           word ptr [628h]    
+110 0009EA FF362606            PUSH           word ptr [626h]    
+111 0009EE FF362406            PUSH           word ptr [624h]    
+112 0009F2 1E                  PUSH           ds                 
+113 0009F3 B8F100              MOV            ax, 0F1h           
+114 0009F6 50                  PUSH           ax                 
+115 0009F7 9A02000E05          CALL            far ptr printf    
+116 0009FC 83C40C              ADD            sp, 0Ch            
+117 0009FF FF362A06            PUSH           word ptr [62Ah]    
+118 000A03 FF362806            PUSH           word ptr [628h]    
+119 000A07 FF362606            PUSH           word ptr [626h]    
+120 000A0B FF362406            PUSH           word ptr [624h]    
+121 000A0F 9AE6028B00          CALL            far ptr proc_9    
+122 000A14 83C408              ADD            sp, 8              
+123 000A17 CD395EF8            ESC            FSTP          [bp-8]
+124 000A1B CD3D                INT            3Dh                	/* Unknown int */
+
+125 000A1D FF76FE              PUSH           word ptr [bp-2]    
+126 000A20 FF76FC              PUSH           word ptr [bp-4]    
+127 000A23 FF76FA              PUSH           word ptr [bp-6]    
+128 000A26 FF76F8              PUSH           word ptr [bp-8]    
+129 000A29 1E                  PUSH           ds                 
+130 000A2A B80001              MOV            ax, 100h           
+131 000A2D 50                  PUSH           ax                 
+132 000A2E 9A02000E05          CALL            far ptr printf    
+133 000A33 83C40C              ADD            sp, 0Ch            
+134 000A36 EB1D                JMP            L38                
+
+135 000A38 9A73048B00          CALL            far ptr proc_10   ;Case l5
+136 000A3D A31C06              MOV            [61Ch], ax         
+137 000A40 FF361C06            PUSH           word ptr [61Ch]    
+138 000A44 1E                  PUSH           ds                 
+139 000A45 B80E01              MOV            ax, 10Eh           
+140 000A48 50                  PUSH           ax                 
+141 000A49 9A02000E05          CALL            far ptr printf    
+142 000A4E 83C406              ADD            sp, 6              
+143 000A51 EB02                JMP            L38                
+
+144 000A5E B80700         L35: MOV            ax, 7              
+145 000A61 50                  PUSH           ax                 
+146 000A62 1E                  PUSH           ds                 
+147 000A63 B81C01              MOV            ax, 11Ch           
+148 000A66 50                  PUSH           ax                 
+149 000A67 9A02000E05          CALL            far ptr printf    
+150 000A6C 83C406              ADD            sp, 6              
+151 000A6F 5E                  POP            si                 
+152 000A70 8BE5                MOV            sp, bp             
+153 000A72 5D                  POP            bp                 
+154 000A73 CB                  RETF                              
+
+		main  ENDP
+

+ 396 - 0
tests/prev_base/DHAMP.b

@@ -0,0 +1,396 @@
+/*
+ * Input file	: ./tests/inputs/DHAMP.EXE
+ * File type	: EXE
+ */
+
+#include "dcc.h"
+
+
+int proc_2 (long arg0, long arg1)
+/* Takes 8 bytes of parameters.
+ * High-level language prologue code.
+ * C calling convention.
+ */
+{
+char loc1; /* al */
+int loc2; /* al */
+int loc3; /* bx */
+
+    do {
+        arg0 = (arg0 + 1);
+        loc1 = es[bx];
+        arg1 = (arg1 + 1);
+        es[bx] = loc1;
+    } while ((loc2 != 0));
+    return (loc3);
+}
+
+
+int proc_3 (long arg0, long arg1)
+/* Takes 8 bytes of parameters.
+ * High-level language prologue code.
+ * C calling convention.
+ */
+{
+int loc1; /* ax */
+
+    while ((es[bx] == es[bx])) {
+
+        if (es[bx] == 0) {
+            loc1 = 0;
+            return (loc1);
+        }
+        else {
+            arg0 = (arg0 + 1);
+            arg1 = (arg1 + 1);
+        }
+    }	/* end of while */
+    loc1 = (es[bx] - es[bx]);
+}
+
+
+int proc_1 (int arg0, int arg1, int arg2, int arg3)
+/* Takes 8 bytes of parameters.
+ * High-level language prologue code.
+ * C calling convention.
+ */
+{
+int loc1; /* si */
+int loc2; /* di */
+    loc1 = 0;
+    loc2 = 0;
+
+    while ((loc1 < 0x2328)) {
+        proc_2 (arg1, arg0, 311);
+        proc_2 (arg3, arg2, 328);
+        loc2 = (loc2 + proc_3 (arg1, arg0, arg3, arg2));
+        loc1 = (loc1 + 1);
+    }	/* end of while */
+    return (loc2);
+}
+
+
+int proc_4 ()
+/* Takes no parameters.
+ * High-level language prologue code.
+ */
+{
+int loc1;
+int loc2;
+int loc3;
+int loc4;
+    loc3 = 0;
+
+    while ((loc3 < 0x3e8)) {
+        loc1 = 0;
+        loc4 = 0;
+        loc2 = 1;
+
+        while ((loc4 < 179)) {
+            loc1 = (loc1 + loc2);
+            loc2 = (loc2 + 2);
+            loc4 = (loc4 + 1);
+        }	/* end of while */
+        loc3 = (loc3 + 1);
+    }	/* end of while */
+    return (loc1);
+}
+
+
+int proc_5 (int arg0)
+/* Takes 2 bytes of parameters.
+ * High-level language prologue code.
+ * C calling convention.
+ */
+{
+int loc1; /* si */
+int loc2; /* ax */
+    loc1 = arg0;
+
+    if (loc1 > 2) {
+        loc2 = (proc_5 ((loc1 - 1)) + proc_5 ((loc1 + 0xfffe)));
+    }
+    else {
+        loc2 = 1;
+    }
+    return (loc2);
+}
+
+
+long proc_6 (int arg0, int arg1)
+/* Takes 4 bytes of parameters.
+ * High-level language prologue code.
+ * C calling convention.
+ */
+{
+long loc1;
+int loc2; /* si */
+
+    if ((arg0 | arg1) == 0) {
+        loc2 = 0;
+
+        while ((loc2 < 0x2328)) {
+            loc1 = (loc1 + [23798]);
+            [23798] = ([23798] + 2);
+            loc2 = (loc2 + 1);
+        }	/* end of while */
+    }
+    else {
+        loc2 = 0;
+
+        while ((loc2 < 0x2328)) {
+            [23798] = ([23798] - 2);
+            loc1 = (loc1 - [23798]);
+            loc2 = (loc2 + 1);
+        }	/* end of while */
+    }
+    return (loc1);
+}
+
+
+void proc_8 (int arg0)
+/* Takes 8 bytes of parameters.
+ * High-level language prologue code.
+ * Untranslatable routine.  Assembler provided.
+ * C calling convention.
+ * Contains instructions not normally used by compilers.
+ * Contains coprocessor instructions.
+ */
+{
+                    PUSH           bp                 
+                    MOV            bp, sp             
+                    ESC            FLD          [126h]
+                    ESC            FLD          [bp+6]
+                    ESC            FCOMPP             
+                    ESC            FSTSW          [62Ch]
+                    INT            3Dh                	/* Unknown int */
+
+                    MOV            ah, [62Dh]         
+                    SAHF                              
+                    JAE            L1                 
+                    ESC            FLD          [bp+6]
+                    ESC            FCHS               
+
+               L2:  POP            bp                 
+                    RETF                              
+
+               L1:  ESC            FLD          [bp+6]
+                    JMP            L2                 ;Synthetic inst
+}
+
+
+ proc_7 (int arg0, int arg1, int arg2, int arg3)
+/* Takes 8 bytes of parameters.
+ * High-level language prologue code.
+ * Untranslatable routine.  Assembler provided.
+ * C calling convention.
+ * Contains instructions not normally used by compilers.
+ * Contains coprocessor instructions.
+ */
+{
+                    PUSH           bp                 
+                    MOV            bp, sp             
+                    SUB            sp, 10h            
+                    ESC            FLD          [bp+6]
+                    ESC            FDIV          [127h]
+                    ESC            FSTP          [bp-8]
+                    INT            3Dh                	/* Unknown int */
+
+                    MOV            ax, [bp+0Ch]       
+                    MOV            [bp-0Ah], ax       
+                    MOV            ax, [bp+0Ah]       
+                    MOV            [bp-0Ch], ax       
+                    MOV            ax, [bp+8]         
+                    MOV            [bp-0Eh], ax       
+                    MOV            ax, [bp+6]         
+                    MOV            [bp-10h], ax       
+
+               L1:  ESC            FLD          [12Fh]
+                    ESC            FMUL          [bp-8]
+                    ESC            FCOMP          [bp-10h]
+                    ESC            FSTSW          [62Ch]
+                    INT            3Dh                	/* Unknown int */
+
+                    MOV            ah, [62Dh]         
+                    SAHF                              
+                    JB             L2                 
+                    ESC            FLD          [bp-8]
+                    MOV            sp, bp             
+                    POP            bp                 
+                    RETF                              
+
+               L2:  ESC            FLD          [bp+6]
+                    ESC            FDIV          [bp-8]
+                    ESC            FSUB          [bp-8]
+                    ESC            FSTP          [bp-10h]
+                    INT            3Dh                	/* Unknown int */
+
+                    PUSH           word ptr [bp-0Ah]  
+                    PUSH           word ptr [bp-0Ch]  
+                    PUSH           word ptr [bp-0Eh]  
+                    PUSH           word ptr [bp-10h]  
+                    CALL            far ptr proc_8    
+                    ADD            sp, 8              
+                    ESC            FSTP          [bp-10h]
+                    INT            3Dh                	/* Unknown int */
+
+                    ESC            FLD          [bp+6]
+                    ESC            FDIV          [bp-8]
+                    ESC            FADD          [bp-8]
+                    ESC            FDIV          [127h]
+                    ESC            FSTP          [bp-8]
+                    INT            3Dh                	/* Unknown int */
+
+                    JMP            L1                 ;Synthetic inst
+}
+
+
+ proc_9 (int arg0)
+/* Takes 8 bytes of parameters.
+ * High-level language prologue code.
+ * C calling convention.
+ * Contains instructions not normally used by compilers.
+ * Contains coprocessor instructions.
+ */
+{
+int loc1;
+int loc2;
+int loc3; /* ax */
+    loc2 = 100;
+    loc3 = loc2;
+    loc2 = (loc2 - 1);
+
+    while (((loc3 | loc3) != 0)) {
+        loc3 = loc2;
+        loc2 = (loc2 - 1);
+    }	/* end of while */
+    return (var06278);
+}
+
+
+int proc_10 ()
+/* Takes no parameters.
+ * High-level language prologue code.
+ * Untranslatable routine.  Assembler provided.
+ * Return value in register ax.
+ * Contains instructions not normally used by compilers.
+ */
+{
+                    PUSH           bp                 
+                    MOV            bp, sp             
+                    SUB            sp, 68h            
+                    PUSH           si                 
+                    PUSH           di                 
+                    PUSH           ds                 
+                    MOV            ax, 159h           
+                    PUSH           ax                 
+                    PUSH           ss                 
+                    LEA            ax, [bp-64h]       
+                    PUSH           ax                 
+                    PUSH           cs                 
+                    CALL           near ptr proc_2    
+                    ADD            sp, 8              
+                    PUSH           ds                 
+                    MOV            ax, 170h           
+                    PUSH           ax                 
+                    PUSH           ds                 
+                    MOV            ax, 167h           
+                    PUSH           ax                 
+                    CALL            far ptr fopen     
+                    ADD            sp, 8              
+                    MOV            [bp-66h], dx       
+                    MOV            [bp-68h], ax       
+                    OR             dx, ax             
+                    JNE            L1                 
+                    PUSH           ds                 
+                    MOV            ax, 172h           
+                    PUSH           ax                 
+                    CALL            far ptr printf    
+                    POP            cx                 
+                    POP            cx                 
+                    MOV            ax, 0FFFFh         
+                    PUSH           ax                 
+                    CALL            far ptr exit      
+                    POP            cx                 
+
+               L1:  XOR            di, 0              
+
+               L2:  INC            di                 
+                    MOV            ax, di             
+                    CMP            ax, 3E8h           
+                    JL             L3                 
+                    PUSH           word ptr [bp-66h]  
+                    PUSH           word ptr [bp-68h]  
+                    CALL            far ptr fclose    
+                    POP            cx                 
+                    POP            cx                 
+                    MOV            ax, di             
+                    POP            di                 
+                    POP            si                 
+                    MOV            sp, bp             
+                    POP            bp                 
+                    RETF                              
+
+               L3:  XOR            si, 0              
+
+               L4:  CMP            byte ptr ss:[bp+si-64h], 0
+                    JNE            L5                 
+
+               L5:  LES            bx, dword ptr[bp-68h]
+                    INC            word ptr es:[bx]   
+                    JGE            L6                 
+                    MOV            al, ss:[bp+si-64h] 
+                    LES            bx, dword ptr[bp-68h]
+                    INC            word ptr es:[bx+0Ch]
+                    LES            bx, dword ptres:[bx+0Ch]
+                    DEC            bx                 
+                    MOV            es:[bx], al        
+                    MOV            ah, 0              
+
+               L7:  INC            si                 
+                    JMP            L4                 ;Synthetic inst
+
+               L6:  PUSH           word ptr [bp-66h]  
+                    PUSH           word ptr [bp-68h]  
+                    PUSH           word ptr ss:[bp+si-64h]
+                    CALL            far ptr _fputc    
+                    ADD            sp, 6              
+                    JMP            L7                 ;Synthetic inst
+}
+
+
+void main ()
+/* Takes no parameters.
+ * High-level language prologue code.
+ * Contains instructions not normally used by compilers.
+ * Contains coprocessor instructions.
+ */
+{
+int loc1;
+int loc2;
+int loc3;
+int loc4;
+int loc5;
+int loc6;
+int loc7;
+int loc8;
+int loc9;
+int loc10;
+int loc11;
+int loc12; /* ax */
+int loc13; /* bx */
+    printf ("Start...%c\n\n", 7);
+
+    while ((loc11 < 6)) {
+        loc12 = loc11;
+
+        if (loc12 <= 5) {
+            loc13 = (loc12 << 1);
+            var06278 = proc_1 (&loc2, &loc1, , );
+            printf ("\ncresult = %d\n", var06278);
+        }
+        loc11 = (loc11 + 1);
+    }	/* end of while */
+    printf ("\n\n...End%c", 7);
+}
+

+ 99 - 0
tests/prev_base/FIBOL.EXE.a1

@@ -0,0 +1,99 @@
+		main  PROC  FAR
+000 0004C2 55                  PUSH           bp                 
+001 0004C3 8BEC                MOV            bp, sp             
+002 0004C5 83EC04              SUB            sp, 4              
+003 0004C8 56                  PUSH           si                 
+004 0004C9 57                  PUSH           di                 
+005 0004CA 1E                  PUSH           ds                 
+006 0004CB B89400              MOV            ax, 94h            
+007 0004CE 50                  PUSH           ax                 
+008 0004CF 9A0E004D01          CALL            far ptr printf    
+009 0004D4 59                  POP            cx                 
+010 0004D5 59                  POP            cx                 
+011 0004D6 16                  PUSH           ss                 
+012 0004D7 8D46FC              LEA            ax, [bp-4]         
+013 0004DA 50                  PUSH           ax                 
+014 0004DB 1E                  PUSH           ds                 
+015 0004DC B8B100              MOV            ax, 0B1h           
+016 0004DF 50                  PUSH           ax                 
+017 0004E0 9A07000102          CALL            far ptr scanf     
+018 0004E5 83C408              ADD            sp, 8              
+019 0004E8 BE0100              MOV            si, 1              
+020 0004EB EB3B                JMP            L1                 
+
+021 000528 3B76FC         L1:  CMP            si, [bp-4]         
+022 00052B 7EC0                JLE            L2                 
+023 00052D 33C0                XOR            ax, ax             
+024 00052F 50                  PUSH           ax                 
+025 000530 9A0A005A00          CALL            far ptr exit      
+026 000535 59                  POP            cx                 
+027 000536 5F                  POP            di                 
+028 000537 5E                  POP            si                 
+029 000538 8BE5                MOV            sp, bp             
+030 00053A 5D                  POP            bp                 
+031 00053B CB                  RETF                              
+
+032 0004ED 1E             L2:  PUSH           ds                 
+033 0004EE B8B400              MOV            ax, 0B4h           
+034 0004F1 50                  PUSH           ax                 
+035 0004F2 9A0E004D01          CALL            far ptr printf    
+036 0004F7 59                  POP            cx                 
+037 0004F8 59                  POP            cx                 
+038 0004F9 16                  PUSH           ss                 
+039 0004FA 8D46FE              LEA            ax, [bp-2]         
+040 0004FD 50                  PUSH           ax                 
+041 0004FE 1E                  PUSH           ds                 
+042 0004FF B8C300              MOV            ax, 0C3h           
+043 000502 50                  PUSH           ax                 
+044 000503 9A07000102          CALL            far ptr scanf     
+045 000508 83C408              ADD            sp, 8              
+046 00050B FF76FE              PUSH           word ptr [bp-2]    
+047 00050E 9A7C004C00          CALL            far ptr proc_1    
+048 000513 59                  POP            cx                 
+049 000514 8BF8                MOV            di, ax             
+050 000516 57                  PUSH           di                 
+051 000517 FF76FE              PUSH           word ptr [bp-2]    
+052 00051A 1E                  PUSH           ds                 
+053 00051B B8C600              MOV            ax, 0C6h           
+054 00051E 50                  PUSH           ax                 
+055 00051F 9A0E004D01          CALL            far ptr printf    
+056 000524 83C408              ADD            sp, 8              
+057 000527 46                  INC            si                 
+058                            JMP            L1                 ;Synthetic inst
+
+		main  ENDP
+
+		proc_1  PROC  FAR
+000 00053C 55                  PUSH           bp                 
+001 00053D 8BEC                MOV            bp, sp             
+002 00053F 56                  PUSH           si                 
+003 000540 8B7606              MOV            si, [bp+6]         
+004 000543 83FE02              CMP            si, 2              
+005 000546 7E1E                JLE            L3                 
+006 000548 8BC6                MOV            ax, si             
+007 00054A 48                  DEC            ax                 
+008 00054B 50                  PUSH           ax                 
+009 00054C 0E                  PUSH           cs                 
+010 00054D E8ECFF              CALL           near ptr proc_1    
+011 000550 59                  POP            cx                 
+012 000551 50                  PUSH           ax                 
+013 000552 8BC6                MOV            ax, si             
+014 000554 05FEFF              ADD            ax, 0FFFEh         
+015 000557 50                  PUSH           ax                 
+016 000558 0E                  PUSH           cs                 
+017 000559 E8E0FF              CALL           near ptr proc_1    
+018 00055C 59                  POP            cx                 
+019 00055D 8BD0                MOV            dx, ax             
+020 00055F 58                  POP            ax                 
+021 000560 03C2                ADD            ax, dx             
+022 000562 EB07                JMP            L4                 
+
+023 00056B 5E             L4:  POP            si                 
+024 00056C 5D                  POP            bp                 
+025 00056D CB                  RETF                              
+
+026 000566 B80100         L3:  MOV            ax, 1              
+027 000569 EB00                JMP            L4                 
+
+		proc_1  ENDP
+

+ 97 - 0
tests/prev_base/FIBOL.EXE.a2

@@ -0,0 +1,97 @@
+		proc_1  PROC  FAR
+000 00053C 55                  PUSH           bp                 
+001 00053D 8BEC                MOV            bp, sp             
+002 00053F 56                  PUSH           si                 
+003 000540 8B7606              MOV            si, [bp+6]         
+004 000543 83FE02              CMP            si, 2              
+005 000546 7E1E                JLE            L1                 
+006 000548 8BC6                MOV            ax, si             
+007 00054A 48                  DEC            ax                 
+008 00054B 50                  PUSH           ax                 
+009 00054C 0E                  PUSH           cs                 
+010 00054D E8ECFF              CALL           near ptr proc_1    
+011 000550 59                  POP            cx                 
+012 000551 50                  PUSH           ax                 
+013 000552 8BC6                MOV            ax, si             
+014 000554 05FEFF              ADD            ax, 0FFFEh         
+015 000557 50                  PUSH           ax                 
+016 000558 0E                  PUSH           cs                 
+017 000559 E8E0FF              CALL           near ptr proc_1    
+018 00055C 59                  POP            cx                 
+019 00055D 8BD0                MOV            dx, ax             
+020 00055F 58                  POP            ax                 
+021 000560 03C2                ADD            ax, dx             
+
+023 00056B 5E             L2:  POP            si                 
+024 00056C 5D                  POP            bp                 
+025 00056D CB                  RETF                              
+
+026 000566 B80100         L1:  MOV            ax, 1              
+027 000569 EB00                JMP            L2                 
+
+		proc_1  ENDP
+
+		main  PROC  FAR
+000 0004C2 55                  PUSH           bp                 
+001 0004C3 8BEC                MOV            bp, sp             
+002 0004C5 83EC04              SUB            sp, 4              
+003 0004C8 56                  PUSH           si                 
+004 0004C9 57                  PUSH           di                 
+005 0004CA 1E                  PUSH           ds                 
+006 0004CB B89400              MOV            ax, 94h            
+007 0004CE 50                  PUSH           ax                 
+008 0004CF 9A0E004D01          CALL            far ptr printf    
+009 0004D4 59                  POP            cx                 
+010 0004D5 59                  POP            cx                 
+011 0004D6 16                  PUSH           ss                 
+012 0004D7 8D46FC              LEA            ax, [bp-4]         
+013 0004DA 50                  PUSH           ax                 
+014 0004DB 1E                  PUSH           ds                 
+015 0004DC B8B100              MOV            ax, 0B1h           
+016 0004DF 50                  PUSH           ax                 
+017 0004E0 9A07000102          CALL            far ptr scanf     
+018 0004E5 83C408              ADD            sp, 8              
+019 0004E8 BE0100              MOV            si, 1              
+
+021 000528 3B76FC         L3:  CMP            si, [bp-4]         
+022 00052B 7EC0                JLE            L4                 
+023 00052D 33C0                XOR            ax, ax             
+024 00052F 50                  PUSH           ax                 
+025 000530 9A0A005A00          CALL            far ptr exit      
+026 000535 59                  POP            cx                 
+027 000536 5F                  POP            di                 
+028 000537 5E                  POP            si                 
+029 000538 8BE5                MOV            sp, bp             
+030 00053A 5D                  POP            bp                 
+031 00053B CB                  RETF                              
+
+032 0004ED 1E             L4:  PUSH           ds                 
+033 0004EE B8B400              MOV            ax, 0B4h           
+034 0004F1 50                  PUSH           ax                 
+035 0004F2 9A0E004D01          CALL            far ptr printf    
+036 0004F7 59                  POP            cx                 
+037 0004F8 59                  POP            cx                 
+038 0004F9 16                  PUSH           ss                 
+039 0004FA 8D46FE              LEA            ax, [bp-2]         
+040 0004FD 50                  PUSH           ax                 
+041 0004FE 1E                  PUSH           ds                 
+042 0004FF B8C300              MOV            ax, 0C3h           
+043 000502 50                  PUSH           ax                 
+044 000503 9A07000102          CALL            far ptr scanf     
+045 000508 83C408              ADD            sp, 8              
+046 00050B FF76FE              PUSH           word ptr [bp-2]    
+047 00050E 9A7C004C00          CALL            far ptr proc_1    
+048 000513 59                  POP            cx                 
+049 000514 8BF8                MOV            di, ax             
+050 000516 57                  PUSH           di                 
+051 000517 FF76FE              PUSH           word ptr [bp-2]    
+052 00051A 1E                  PUSH           ds                 
+053 00051B B8C600              MOV            ax, 0C6h           
+054 00051E 50                  PUSH           ax                 
+055 00051F 9A0E004D01          CALL            far ptr printf    
+056 000524 83C408              ADD            sp, 8              
+057 000527 46                  INC            si                 
+058                            JMP            L3                 ;Synthetic inst
+
+		main  ENDP
+

+ 51 - 0
tests/prev_base/FIBOL.b

@@ -0,0 +1,51 @@
+/*
+ * Input file	: ./tests/inputs/FIBOL.EXE
+ * File type	: EXE
+ */
+
+#include "dcc.h"
+
+
+int proc_1 (int arg0)
+/* Takes 2 bytes of parameters.
+ * High-level language prologue code.
+ * C calling convention.
+ */
+{
+int loc1; /* si */
+int loc2; /* ax */
+    loc1 = arg0;
+
+    if (loc1 > 2) {
+        loc2 = (proc_1 ((loc1 - 1)) + proc_1 ((loc1 + 0xfffe)));
+    }
+    else {
+        loc2 = 1;
+    }
+    return (loc2);
+}
+
+
+void main ()
+/* Takes no parameters.
+ * High-level language prologue code.
+ * Contains instructions not normally used by compilers.
+ */
+{
+int loc1;
+int loc2;
+int loc3;
+int loc4;
+    printf ("Input number of iterations: ");
+    scanf ("%d", &loc1, );
+    loc3 = 1;
+
+    while ((loc3 <= loc1)) {
+        printf ("Input number: ");
+        scanf ("%d", &loc2, );
+        printf ("fibonacci(%d) = %u\n", loc2, proc_1 (loc2));
+        loc3 = (loc3 + 1);
+    }	/* end of while */
+    exit (0);
+}
+

+ 0 - 2
tests/prev_base/FIBOS.b

@@ -14,7 +14,6 @@ int proc_1 (int arg0)
 {
 int loc1; /* si */
 int loc2; /* ax */
-
     loc1 = arg0;
 
     if (loc1 > 2) {
@@ -36,7 +35,6 @@ int loc1;
 int loc2;
 int loc3;
 int loc4;
-
     printf ("Input number of iterations: ");
     scanf ("%d", &loc1);
     loc3 = 1;

+ 45 - 0
tests/prev_base/INTOPS.EXE.a1

@@ -0,0 +1,45 @@
+		main  PROC  NEAR
+000 0002FA 55                  PUSH           bp                 
+001 0002FB 8BEC                MOV            bp, sp             
+002 0002FD 83EC02              SUB            sp, 2              
+003 000300 56                  PUSH           si                 
+004 000301 C746FEFF00          MOV            word ptr [bp-2], 0FFh
+005 000306 BE8F00              MOV            si, 8Fh            
+006 000309 8B46FE              MOV            ax, [bp-2]         
+007 00030C 03C6                ADD            ax, si             
+008 00030E 8BF0                MOV            si, ax             
+009 000310 8B46FE              MOV            ax, [bp-2]         
+010 000313 2BC6                SUB            ax, si             
+011 000315 8946FE              MOV            [bp-2], ax         
+012 000318 8B46FE              MOV            ax, [bp-2]         
+013 00031B F7E6                MUL            si                 
+014 00031D 8946FE              MOV            [bp-2], ax         
+015 000320 8BC6                MOV            ax, si             
+016 000322 99                  CWD                               
+018 000323 F77EFE              IDIV           word ptr [bp-2]    
+020 000326 8BF0                MOV            si, ax             
+021 000328 8BC6                MOV            ax, si             
+022 00032A 99                  CWD                               
+024 00032B F77EFE              IDIV           word ptr [bp-2]    
+026 00032E 8BF2                MOV            si, dx             
+027 000330 8B46FE              MOV            ax, [bp-2]         
+028 000333 B105                MOV            cl, 5              
+029 000335 D3E0                SHL            ax, cl             
+030 000337 8946FE              MOV            [bp-2], ax         
+031 00033A 8BC6                MOV            ax, si             
+032 00033C 8A4EFE              MOV            cl, [bp-2]         
+033 00033F D3F8                SAR            ax, cl             
+034 000341 8BF0                MOV            si, ax             
+035 000343 56                  PUSH           si                 
+036 000344 FF76FE              PUSH           word ptr [bp-2]    
+037 000347 B89401              MOV            ax, 194h           
+038 00034A 50                  PUSH           ax                 
+039 00034B E8AC06              CALL           near ptr printf    
+040 00034E 83C406              ADD            sp, 6              
+041 000351 5E                  POP            si                 
+042 000352 8BE5                MOV            sp, bp             
+043 000354 5D                  POP            bp                 
+044 000355 C3                  RET                               
+
+		main  ENDP
+

+ 49 - 0
tests/prev_base/INTOPS.EXE.a2

@@ -0,0 +1,49 @@
+		main  PROC  NEAR
+000 0002FA 55                  PUSH           bp                 
+001 0002FB 8BEC                MOV            bp, sp             
+002 0002FD 83EC02              SUB            sp, 2              
+003 000300 56                  PUSH           si                 
+004 000301 C746FEFF00          MOV            word ptr [bp-2], 0FFh
+005 000306 BE8F00              MOV            si, 8Fh            
+006 000309 8B46FE              MOV            ax, [bp-2]         
+007 00030C 03C6                ADD            ax, si             
+008 00030E 8BF0                MOV            si, ax             
+009 000310 8B46FE              MOV            ax, [bp-2]         
+010 000313 2BC6                SUB            ax, si             
+011 000315 8946FE              MOV            [bp-2], ax         
+012 000318 8B46FE              MOV            ax, [bp-2]         
+013 00031B F7E6                MUL            si                 
+014 00031D 8946FE              MOV            [bp-2], ax         
+015 000320 8BC6                MOV            ax, si             
+016 000322 99                  CWD                               
+017                            MOV            tmp, dx:ax         ;Synthetic inst
+018 000323 F77EFE              IDIV           word ptr [bp-2]    
+019                            MOD            word ptr [bp-2]    ;Synthetic inst
+020 000326 8BF0                MOV            si, ax             
+021 000328 8BC6                MOV            ax, si             
+022 00032A 99                  CWD                               
+023                            MOV            tmp, dx:ax         ;Synthetic inst
+024 00032B F77EFE              IDIV           word ptr [bp-2]    
+025                            MOD            word ptr [bp-2]    ;Synthetic inst
+026 00032E 8BF2                MOV            si, dx             
+027 000330 8B46FE              MOV            ax, [bp-2]         
+028 000333 B105                MOV            cl, 5              
+029 000335 D3E0                SHL            ax, cl             
+030 000337 8946FE              MOV            [bp-2], ax         
+031 00033A 8BC6                MOV            ax, si             
+032 00033C 8A4EFE              MOV            cl, [bp-2]         
+033 00033F D3F8                SAR            ax, cl             
+034 000341 8BF0                MOV            si, ax             
+035 000343 56                  PUSH           si                 
+036 000344 FF76FE              PUSH           word ptr [bp-2]    
+037 000347 B89401              MOV            ax, 194h           
+038 00034A 50                  PUSH           ax                 
+039 00034B E8AC06              CALL           near ptr printf    
+040 00034E 83C406              ADD            sp, 6              
+041 000351 5E                  POP            si                 
+042 000352 8BE5                MOV            sp, bp             
+043 000354 5D                  POP            bp                 
+044 000355 C3                  RET                               
+
+		main  ENDP
+

+ 23 - 0
tests/prev_base/INTOPS.b

@@ -0,0 +1,23 @@
+/*
+ * Input file	: ./tests/inputs/INTOPS.EXE
+ * File type	: EXE
+ */
+
+#include "dcc.h"
+
+
+void main ()
+/* Takes no parameters.
+ * High-level language prologue code.
+ */
+{
+int loc1;
+int loc2;
+    loc1 = 255;
+    loc2 = (loc1 + 143);
+    loc1 = (loc1 - loc2);
+    loc1 = (loc1 * loc2);
+    loc1 = (loc1 << 5);
+    printf ("a = %d, b = %d\n", loc1, (((loc2 / loc1) % loc1) >> loc1));
+}
+

+ 291 - 0
tests/prev_base/LONGOPS.EXE.a1

@@ -0,0 +1,291 @@
+		main  PROC  NEAR
+000 0002FA 55                  PUSH           bp                 
+001 0002FB 8BEC                MOV            bp, sp             
+002 0002FD 83EC08              SUB            sp, 8              
+003 000300 C746FA0000          MOV            word ptr [bp-6], 0 
+004 000305 C746F8FF00          MOV            word ptr [bp-8], 0FFh
+005 00030A C746FE0000          MOV            word ptr [bp-2], 0 
+006 00030F C746FC8F00          MOV            word ptr [bp-4], 8Fh
+007 000314 8B56FA              MOV            dx, [bp-6]         
+008 000317 8B46F8              MOV            ax, [bp-8]         
+009 00031A 0346FC              ADD            ax, [bp-4]         
+010 00031D 1356FE              ADC            dx, [bp-2]         
+011 000320 8956FE              MOV            [bp-2], dx         
+012 000323 8946FC              MOV            [bp-4], ax         
+013 000326 8B56FA              MOV            dx, [bp-6]         
+014 000329 8B46F8              MOV            ax, [bp-8]         
+015 00032C 2B46FC              SUB            ax, [bp-4]         
+016 00032F 1B56FE              SBB            dx, [bp-2]         
+017 000332 8956FA              MOV            [bp-6], dx         
+018 000335 8946F8              MOV            [bp-8], ax         
+019 000338 8B56FA              MOV            dx, [bp-6]         
+020 00033B 8B46F8              MOV            ax, [bp-8]         
+021 00033E 8B4EFE              MOV            cx, [bp-2]         
+022 000341 8B5EFC              MOV            bx, [bp-4]         
+023 000344 9AC3081000          CALL            far ptr LXMUL@    
+024 000349 8956FA              MOV            [bp-6], dx         
+025 00034C 8946F8              MOV            [bp-8], ax         
+026 00034F FF76FA              PUSH           word ptr [bp-6]    
+027 000352 FF76F8              PUSH           word ptr [bp-8]    
+028 000355 FF76FE              PUSH           word ptr [bp-2]    
+029 000358 FF76FC              PUSH           word ptr [bp-4]    
+030 00035B 9AC6101000          CALL            far ptr LDIV@     
+031 000360 8956FE              MOV            [bp-2], dx         
+032 000363 8946FC              MOV            [bp-4], ax         
+033 000366 FF76FA              PUSH           word ptr [bp-6]    
+034 000369 FF76F8              PUSH           word ptr [bp-8]    
+035 00036C FF76FE              PUSH           word ptr [bp-2]    
+036 00036F FF76FC              PUSH           word ptr [bp-4]    
+037 000372 9ACF101000          CALL            far ptr LMOD@     
+038 000377 8956FE              MOV            [bp-2], dx         
+039 00037A 8946FC              MOV            [bp-4], ax         
+040 00037D 8B56FA              MOV            dx, [bp-6]         
+041 000380 8B46F8              MOV            ax, [bp-8]         
+042 000383 B105                MOV            cl, 5              
+043 000385 9A87111000          CALL            far ptr LXLSH@    
+044 00038A 8956FA              MOV            [bp-6], dx         
+045 00038D 8946F8              MOV            [bp-8], ax         
+046 000390 8B56FE              MOV            dx, [bp-2]         
+047 000393 8B46FC              MOV            ax, [bp-4]         
+048 000396 8A4EF8              MOV            cl, [bp-8]         
+049 000399 9A69111000          CALL            far ptr LXRSH@    
+050 00039E 8956FE              MOV            [bp-2], dx         
+051 0003A1 8946FC              MOV            [bp-4], ax         
+052 0003A4 FF76FE              PUSH           word ptr [bp-2]    
+053 0003A7 FF76FC              PUSH           word ptr [bp-4]    
+054 0003AA FF76FA              PUSH           word ptr [bp-6]    
+055 0003AD FF76F8              PUSH           word ptr [bp-8]    
+056 0003B0 B89401              MOV            ax, 194h           
+057 0003B3 50                  PUSH           ax                 
+058 0003B4 E8C406              CALL           near ptr printf    
+059 0003B7 83C40A              ADD            sp, 0Ah            
+060 0003BA 8BE5                MOV            sp, bp             
+061 0003BC 5D                  POP            bp                 
+062 0003BD C3                  RET                               
+
+		main  ENDP
+
+		LXMUL@  PROC  FAR
+000 0009C3 56                  PUSH           si                 
+007 0009C6 85C0                TEST           ax, ax             
+008 0009C8 7402                JE             L1                 
+009 0009CA F7E3                MUL            bx                 
+013 0009CD 85C0                TEST           ax, ax             
+014 0009CF 7404                JE             L2                 
+015 0009D1 F7E6                MUL            si                 
+016 0009D3 03C8                ADD            cx, ax             
+020 0009D6 F7E3                MUL            bx                 
+021 0009D8 03D1                ADD            dx, cx             
+022 0009DA 5E                  POP            si                 
+023 0009DB CB                  RETF                              
+
+		LXMUL@  ENDP
+
+		LDIV@  PROC  FAR
+000 0011C6 33C9                XOR            cx, cx             
+001 0011C8 EB0D                JMP            L3                 
+
+002 0011D7 55             L3:  PUSH           bp                 
+003 0011D8 56                  PUSH           si                 
+004 0011D9 57                  PUSH           di                 
+005 0011DA 8BEC                MOV            bp, sp             
+006 0011DC 8BF9                MOV            di, cx             
+007 0011DE 8B460A              MOV            ax, [bp+0Ah]       
+008 0011E1 8B560C              MOV            dx, [bp+0Ch]       
+009 0011E4 8B5E0E              MOV            bx, [bp+0Eh]       
+010 0011E7 8B4E10              MOV            cx, [bp+10h]       
+011 0011EA 0BC9                OR             cx, cx             
+012 0011EC 7508                JNE            L4                 
+013 0011EE 0BD2                OR             dx, dx             
+014 0011F0 7469                JE             L5                 
+015 0011F2 0BDB                OR             bx, bx             
+016 0011F4 7465                JE             L5                 
+
+017 0011F6 F7C70100       L4:  TEST           di, 1              
+018 0011FA 751C                JNE            L6                 
+019 0011FC 0BD2                OR             dx, dx             
+020 0011FE 790A                JNS            L7                 
+021 001200 F7DA                NEG            dx                 
+022 001202 F7D8                NEG            ax                 
+023 001204 83DA00              SBB            dx, 0              
+024 001207 83CF0C              OR             di, 0Ch            
+
+025 00120A 0BC9           L7:  OR             cx, cx             
+026 00120C 790A                JNS            L6                 
+027 00120E F7D9                NEG            cx                 
+028 001210 F7DB                NEG            bx                 
+029 001212 83D900              SBB            cx, 0              
+030 001215 83F704              XOR            di, 4              
+
+031 001218 8BE9           L6:  MOV            bp, cx             
+032 00121A B92000              MOV            cx, 20h            
+033 00121D 57                  PUSH           di                 
+034 00121E 33FF                XOR            di, di             
+035 001220 33F6                XOR            si, si             
+
+036 001222 D1E0           L8:  SHL            ax, 1              
+037 001224 D1D2                RCL            dx, 1              
+038 001226 D1D6                RCL            si, 1              
+039 001228 D1D7                RCL            di, 1              
+040 00122A 3BFD                CMP            di, bp             
+041 00122C 720B                JB             L9                 
+042 00122E 7704                JA             L10                
+043 001230 3BF3                CMP            si, bx             
+044 001232 7205                JB             L9                 
+
+045 001234 2BF3           L10: SUB            si, bx             
+046 001236 1BFD                SBB            di, bp             
+047 001238 40                  INC            ax                 
+
+048 001239 E2E7           L9:  LOOP           L8                 
+049 00123B 5B                  POP            bx                 
+050 00123C F7C30200            TEST           bx, 2              
+051 001240 7406                JE             L11                
+052 001242 8BC6                MOV            ax, si             
+053 001244 8BD7                MOV            dx, di             
+054 001246 D1EB                SHR            bx, 1              
+
+055 001248 F7C30400       L11: TEST           bx, 4              
+056 00124C 7407                JE             L12                
+057 00124E F7DA                NEG            dx                 
+058 001250 F7D8                NEG            ax                 
+059 001252 83DA00              SBB            dx, 0              
+
+060 001255 5F             L12: POP            di                 
+061 001256 5E                  POP            si                 
+062 001257 5D                  POP            bp                 
+063 001258 CA0800              RETF           8                  
+065 00125B F7F3                DIV            bx                 
+067 00125D F7C70200            TEST           di, 2              
+068 001261 7402                JE             L13                
+069 001263 8BC2                MOV            ax, dx             
+
+070 001265 33D2           L13: XOR            dx, dx             
+071 001267 EBEC                JMP            L12                
+
+		LDIV@  ENDP
+
+		LMOD@  PROC  FAR
+000 0011CF B90200              MOV            cx, 2              
+001 0011D2 EB03                JMP            L14                
+
+002 0011D7 55             L14: PUSH           bp                 
+003 0011D8 56                  PUSH           si                 
+004 0011D9 57                  PUSH           di                 
+005 0011DA 8BEC                MOV            bp, sp             
+006 0011DC 8BF9                MOV            di, cx             
+007 0011DE 8B460A              MOV            ax, [bp+0Ah]       
+008 0011E1 8B560C              MOV            dx, [bp+0Ch]       
+009 0011E4 8B5E0E              MOV            bx, [bp+0Eh]       
+010 0011E7 8B4E10              MOV            cx, [bp+10h]       
+011 0011EA 0BC9                OR             cx, cx             
+012 0011EC 7508                JNE            L15                
+013 0011EE 0BD2                OR             dx, dx             
+014 0011F0 7469                JE             L16                
+015 0011F2 0BDB                OR             bx, bx             
+016 0011F4 7465                JE             L16                
+
+017 0011F6 F7C70100       L15: TEST           di, 1              
+018 0011FA 751C                JNE            L17                
+019 0011FC 0BD2                OR             dx, dx             
+020 0011FE 790A                JNS            L18                
+021 001200 F7DA                NEG            dx                 
+022 001202 F7D8                NEG            ax                 
+023 001204 83DA00              SBB            dx, 0              
+024 001207 83CF0C              OR             di, 0Ch            
+
+025 00120A 0BC9           L18: OR             cx, cx             
+026 00120C 790A                JNS            L17                
+027 00120E F7D9                NEG            cx                 
+028 001210 F7DB                NEG            bx                 
+029 001212 83D900              SBB            cx, 0              
+030 001215 83F704              XOR            di, 4              
+
+031 001218 8BE9           L17: MOV            bp, cx             
+032 00121A B92000              MOV            cx, 20h            
+033 00121D 57                  PUSH           di                 
+034 00121E 33FF                XOR            di, di             
+035 001220 33F6                XOR            si, si             
+
+036 001222 D1E0           L19: SHL            ax, 1              
+037 001224 D1D2                RCL            dx, 1              
+038 001226 D1D6                RCL            si, 1              
+039 001228 D1D7                RCL            di, 1              
+040 00122A 3BFD                CMP            di, bp             
+041 00122C 720B                JB             L20                
+042 00122E 7704                JA             L21                
+043 001230 3BF3                CMP            si, bx             
+044 001232 7205                JB             L20                
+
+045 001234 2BF3           L21: SUB            si, bx             
+046 001236 1BFD                SBB            di, bp             
+047 001238 40                  INC            ax                 
+
+048 001239 E2E7           L20: LOOP           L19                
+049 00123B 5B                  POP            bx                 
+050 00123C F7C30200            TEST           bx, 2              
+051 001240 7406                JE             L22                
+052 001242 8BC6                MOV            ax, si             
+053 001244 8BD7                MOV            dx, di             
+054 001246 D1EB                SHR            bx, 1              
+
+055 001248 F7C30400       L22: TEST           bx, 4              
+056 00124C 7407                JE             L23                
+057 00124E F7DA                NEG            dx                 
+058 001250 F7D8                NEG            ax                 
+059 001252 83DA00              SBB            dx, 0              
+
+060 001255 5F             L23: POP            di                 
+061 001256 5E                  POP            si                 
+062 001257 5D                  POP            bp                 
+063 001258 CA0800              RETF           8                  
+065 00125B F7F3                DIV            bx                 
+067 00125D F7C70200            TEST           di, 2              
+068 001261 7402                JE             L24                
+069 001263 8BC2                MOV            ax, dx             
+
+070 001265 33D2           L24: XOR            dx, dx             
+071 001267 EBEC                JMP            L23                
+
+		LMOD@  ENDP
+
+		LXLSH@  PROC  FAR
+000 001287 80F910              CMP            cl, 10h            
+001 00128A 7310                JAE            L25                
+002 00128C 8BD8                MOV            bx, ax             
+003 00128E D3E0                SHL            ax, cl             
+004 001290 D3E2                SHL            dx, cl             
+005 001292 F6D9                NEG            cl                 
+006 001294 80C110              ADD            cl, 10h            
+007 001297 D3EB                SHR            bx, cl             
+008 001299 0BD3                OR             dx, bx             
+009 00129B CB                  RETF                              
+
+010 00129C 80E910         L25: SUB            cl, 10h            
+011 00129F 8BD0                MOV            dx, ax             
+012 0012A1 33C0                XOR            ax, ax             
+013 0012A3 D3E2                SHL            dx, cl             
+014 0012A5 CB                  RETF                              
+
+		LXLSH@  ENDP
+
+		LXRSH@  PROC  FAR
+000 001269 80F910              CMP            cl, 10h            
+001 00126C 7310                JAE            L26                
+002 00126E 8BDA                MOV            bx, dx             
+003 001270 D3E8                SHR            ax, cl             
+004 001272 D3FA                SAR            dx, cl             
+005 001274 F6D9                NEG            cl                 
+006 001276 80C110              ADD            cl, 10h            
+007 001279 D3E3                SHL            bx, cl             
+008 00127B 0BC3                OR             ax, bx             
+009 00127D CB                  RETF                              
+
+010 00127E 80E910         L26: SUB            cl, 10h            
+011 001281 8BC2                MOV            ax, dx             
+012 001283 99                  CWD                               
+013 001284 D3F8                SAR            ax, cl             
+014 001286 CB                  RETF                              
+
+		LXRSH@  ENDP
+

+ 307 - 0
tests/prev_base/LONGOPS.EXE.a2

@@ -0,0 +1,307 @@
+		LXRSH@  PROC  FAR
+000 001269 80F910              CMP            cl, 10h            
+001 00126C 7310                JAE            L1                 
+002 00126E 8BDA                MOV            bx, dx             
+003 001270 D3E8                SHR            ax, cl             
+004 001272 D3FA                SAR            dx, cl             
+005 001274 F6D9                NEG            cl                 
+006 001276 80C110              ADD            cl, 10h            
+007 001279 D3E3                SHL            bx, cl             
+008 00127B 0BC3                OR             ax, bx             
+009 00127D CB                  RETF                              
+
+010 00127E 80E910         L1:  SUB            cl, 10h            
+011 001281 8BC2                MOV            ax, dx             
+012 001283 99                  CWD                               
+013 001284 D3F8                SAR            ax, cl             
+014 001286 CB                  RETF                              
+
+		LXRSH@  ENDP
+
+		LXLSH@  PROC  FAR
+000 001287 80F910              CMP            cl, 10h            
+001 00128A 7310                JAE            L2                 
+002 00128C 8BD8                MOV            bx, ax             
+003 00128E D3E0                SHL            ax, cl             
+004 001290 D3E2                SHL            dx, cl             
+005 001292 F6D9                NEG            cl                 
+006 001294 80C110              ADD            cl, 10h            
+007 001297 D3EB                SHR            bx, cl             
+008 001299 0BD3                OR             dx, bx             
+009 00129B CB                  RETF                              
+
+010 00129C 80E910         L2:  SUB            cl, 10h            
+011 00129F 8BD0                MOV            dx, ax             
+012 0012A1 33C0                XOR            ax, ax             
+013 0012A3 D3E2                SHL            dx, cl             
+014 0012A5 CB                  RETF                              
+
+		LXLSH@  ENDP
+
+		LMOD@  PROC  FAR
+000 0011CF B90200              MOV            cx, 2              
+002 0011D7 55                  PUSH           bp                 
+003 0011D8 56                  PUSH           si                 
+004 0011D9 57                  PUSH           di                 
+005 0011DA 8BEC                MOV            bp, sp             
+006 0011DC 8BF9                MOV            di, cx             
+007 0011DE 8B460A              MOV            ax, [bp+0Ah]       
+008 0011E1 8B560C              MOV            dx, [bp+0Ch]       
+009 0011E4 8B5E0E              MOV            bx, [bp+0Eh]       
+010 0011E7 8B4E10              MOV            cx, [bp+10h]       
+011 0011EA 0BC9                OR             cx, cx             
+012 0011EC 7508                JNE            L3                 
+013 0011EE 0BD2                OR             dx, dx             
+014 0011F0 7469                JE             L4                 
+015 0011F2 0BDB                OR             bx, bx             
+016 0011F4 7465                JE             L4                 
+
+017 0011F6 F7C70100       L3:  TEST           di, 1              
+018 0011FA 751C                JNE            L5                 
+019 0011FC 0BD2                OR             dx, dx             
+020 0011FE 790A                JNS            L6                 
+021 001200 F7DA                NEG            dx                 
+022 001202 F7D8                NEG            ax                 
+023 001204 83DA00              SBB            dx, 0              
+024 001207 83CF0C              OR             di, 0Ch            
+
+025 00120A 0BC9           L6:  OR             cx, cx             
+026 00120C 790A                JNS            L5                 
+027 00120E F7D9                NEG            cx                 
+028 001210 F7DB                NEG            bx                 
+029 001212 83D900              SBB            cx, 0              
+030 001215 83F704              XOR            di, 4              
+
+031 001218 8BE9           L5:  MOV            bp, cx             
+032 00121A B92000              MOV            cx, 20h            
+033 00121D 57                  PUSH           di                 
+034 00121E 33FF                XOR            di, di             
+035 001220 33F6                XOR            si, si             
+
+036 001222 D1E0           L7:  SHL            ax, 1              
+037 001224 D1D2                RCL            dx, 1              
+038 001226 D1D6                RCL            si, 1              
+039 001228 D1D7                RCL            di, 1              
+040 00122A 3BFD                CMP            di, bp             
+041 00122C 720B                JB             L8                 
+042 00122E 7704                JA             L9                 
+043 001230 3BF3                CMP            si, bx             
+044 001232 7205                JB             L8                 
+
+045 001234 2BF3           L9:  SUB            si, bx             
+046 001236 1BFD                SBB            di, bp             
+047 001238 40                  INC            ax                 
+
+048 001239 E2E7           L8:  LOOP           L7                 
+049 00123B 5B                  POP            bx                 
+050 00123C F7C30200            TEST           bx, 2              
+051 001240 7406                JE             L10                
+052 001242 8BC6                MOV            ax, si             
+053 001244 8BD7                MOV            dx, di             
+054 001246 D1EB                SHR            bx, 1              
+
+055 001248 F7C30400       L10: TEST           bx, 4              
+056 00124C 7407                JE             L11                
+057 00124E F7DA                NEG            dx                 
+058 001250 F7D8                NEG            ax                 
+059 001252 83DA00              SBB            dx, 0              
+
+060 001255 5F             L11: POP            di                 
+061 001256 5E                  POP            si                 
+062 001257 5D                  POP            bp                 
+063 001258 CA0800              RETF           8                  
+
+064                       L4:  MOV            tmp, dx:ax         ;Synthetic inst
+065 00125B F7F3                DIV            bx                 
+066                            MOD            bx                 ;Synthetic inst
+067 00125D F7C70200            TEST           di, 2              
+068 001261 7402                JE             L12                
+069 001263 8BC2                MOV            ax, dx             
+
+070 001265 33D2           L12: XOR            dx, dx             
+071 001267 EBEC                JMP            L11                
+
+		LMOD@  ENDP
+
+		LDIV@  PROC  FAR
+000 0011C6 33C9                XOR            cx, cx             
+002 0011D7 55                  PUSH           bp                 
+003 0011D8 56                  PUSH           si                 
+004 0011D9 57                  PUSH           di                 
+005 0011DA 8BEC                MOV            bp, sp             
+006 0011DC 8BF9                MOV            di, cx             
+007 0011DE 8B460A              MOV            ax, [bp+0Ah]       
+008 0011E1 8B560C              MOV            dx, [bp+0Ch]       
+009 0011E4 8B5E0E              MOV            bx, [bp+0Eh]       
+010 0011E7 8B4E10              MOV            cx, [bp+10h]       
+011 0011EA 0BC9                OR             cx, cx             
+012 0011EC 7508                JNE            L13                
+013 0011EE 0BD2                OR             dx, dx             
+014 0011F0 7469                JE             L14                
+015 0011F2 0BDB                OR             bx, bx             
+016 0011F4 7465                JE             L14                
+
+017 0011F6 F7C70100       L13: TEST           di, 1              
+018 0011FA 751C                JNE            L15                
+019 0011FC 0BD2                OR             dx, dx             
+020 0011FE 790A                JNS            L16                
+021 001200 F7DA                NEG            dx                 
+022 001202 F7D8                NEG            ax                 
+023 001204 83DA00              SBB            dx, 0              
+024 001207 83CF0C              OR             di, 0Ch            
+
+025 00120A 0BC9           L16: OR             cx, cx             
+026 00120C 790A                JNS            L15                
+027 00120E F7D9                NEG            cx                 
+028 001210 F7DB                NEG            bx                 
+029 001212 83D900              SBB            cx, 0              
+030 001215 83F704              XOR            di, 4              
+
+031 001218 8BE9           L15: MOV            bp, cx             
+032 00121A B92000              MOV            cx, 20h            
+033 00121D 57                  PUSH           di                 
+034 00121E 33FF                XOR            di, di             
+035 001220 33F6                XOR            si, si             
+
+036 001222 D1E0           L17: SHL            ax, 1              
+037 001224 D1D2                RCL            dx, 1              
+038 001226 D1D6                RCL            si, 1              
+039 001228 D1D7                RCL            di, 1              
+040 00122A 3BFD                CMP            di, bp             
+041 00122C 720B                JB             L18                
+042 00122E 7704                JA             L19                
+043 001230 3BF3                CMP            si, bx             
+044 001232 7205                JB             L18                
+
+045 001234 2BF3           L19: SUB            si, bx             
+046 001236 1BFD                SBB            di, bp             
+047 001238 40                  INC            ax                 
+
+048 001239 E2E7           L18: LOOP           L17                
+049 00123B 5B                  POP            bx                 
+050 00123C F7C30200            TEST           bx, 2              
+051 001240 7406                JE             L20                
+052 001242 8BC6                MOV            ax, si             
+053 001244 8BD7                MOV            dx, di             
+054 001246 D1EB                SHR            bx, 1              
+
+055 001248 F7C30400       L20: TEST           bx, 4              
+056 00124C 7407                JE             L21                
+057 00124E F7DA                NEG            dx                 
+058 001250 F7D8                NEG            ax                 
+059 001252 83DA00              SBB            dx, 0              
+
+060 001255 5F             L21: POP            di                 
+061 001256 5E                  POP            si                 
+062 001257 5D                  POP            bp                 
+063 001258 CA0800              RETF           8                  
+
+064                       L14: MOV            tmp, dx:ax         ;Synthetic inst
+065 00125B F7F3                DIV            bx                 
+066                            MOD            bx                 ;Synthetic inst
+067 00125D F7C70200            TEST           di, 2              
+068 001261 7402                JE             L22                
+069 001263 8BC2                MOV            ax, dx             
+
+070 001265 33D2           L22: XOR            dx, dx             
+071 001267 EBEC                JMP            L21                
+
+		LDIV@  ENDP
+
+		LXMUL@  PROC  FAR
+000 0009C3 56                  PUSH           si                 
+001                            MOV            tmp, ax            ;Synthetic inst
+002                            MOV            ax, si             ;Synthetic inst
+003                            MOV            si, tmp            ;Synthetic inst
+004                            MOV            tmp, ax            ;Synthetic inst
+005                            MOV            ax, dx             ;Synthetic inst
+006                            MOV            dx, tmp            ;Synthetic inst
+007 0009C6 85C0                TEST           ax, ax             
+008 0009C8 7402                JE             L23                
+009 0009CA F7E3                MUL            bx                 
+
+010                       L23: MOV            tmp, ax            ;Synthetic inst
+011                            MOV            ax, cx             ;Synthetic inst
+012                            MOV            cx, tmp            ;Synthetic inst
+013 0009CD 85C0                TEST           ax, ax             
+014 0009CF 7404                JE             L24                
+015 0009D1 F7E6                MUL            si                 
+016 0009D3 03C8                ADD            cx, ax             
+
+017                       L24: MOV            tmp, ax            ;Synthetic inst
+018                            MOV            ax, si             ;Synthetic inst
+019                            MOV            si, tmp            ;Synthetic inst
+020 0009D6 F7E3                MUL            bx                 
+021 0009D8 03D1                ADD            dx, cx             
+022 0009DA 5E                  POP            si                 
+023 0009DB CB                  RETF                              
+
+		LXMUL@  ENDP
+
+		main  PROC  NEAR
+000 0002FA 55                  PUSH           bp                 
+001 0002FB 8BEC                MOV            bp, sp             
+002 0002FD 83EC08              SUB            sp, 8              
+003 000300 C746FA0000          MOV            word ptr [bp-6], 0 
+004 000305 C746F8FF00          MOV            word ptr [bp-8], 0FFh
+005 00030A C746FE0000          MOV            word ptr [bp-2], 0 
+006 00030F C746FC8F00          MOV            word ptr [bp-4], 8Fh
+007 000314 8B56FA              MOV            dx, [bp-6]         
+008 000317 8B46F8              MOV            ax, [bp-8]         
+009 00031A 0346FC              ADD            ax, [bp-4]         
+010 00031D 1356FE              ADC            dx, [bp-2]         
+011 000320 8956FE              MOV            [bp-2], dx         
+012 000323 8946FC              MOV            [bp-4], ax         
+013 000326 8B56FA              MOV            dx, [bp-6]         
+014 000329 8B46F8              MOV            ax, [bp-8]         
+015 00032C 2B46FC              SUB            ax, [bp-4]         
+016 00032F 1B56FE              SBB            dx, [bp-2]         
+017 000332 8956FA              MOV            [bp-6], dx         
+018 000335 8946F8              MOV            [bp-8], ax         
+019 000338 8B56FA              MOV            dx, [bp-6]         
+020 00033B 8B46F8              MOV            ax, [bp-8]         
+021 00033E 8B4EFE              MOV            cx, [bp-2]         
+022 000341 8B5EFC              MOV            bx, [bp-4]         
+023 000344 9AC3081000          CALL            far ptr LXMUL@    
+024 000349 8956FA              MOV            [bp-6], dx         
+025 00034C 8946F8              MOV            [bp-8], ax         
+026 00034F FF76FA              PUSH           word ptr [bp-6]    
+027 000352 FF76F8              PUSH           word ptr [bp-8]    
+028 000355 FF76FE              PUSH           word ptr [bp-2]    
+029 000358 FF76FC              PUSH           word ptr [bp-4]    
+030 00035B 9AC6101000          CALL            far ptr LDIV@     
+031 000360 8956FE              MOV            [bp-2], dx         
+032 000363 8946FC              MOV            [bp-4], ax         
+033 000366 FF76FA              PUSH           word ptr [bp-6]    
+034 000369 FF76F8              PUSH           word ptr [bp-8]    
+035 00036C FF76FE              PUSH           word ptr [bp-2]    
+036 00036F FF76FC              PUSH           word ptr [bp-4]    
+037 000372 9ACF101000          CALL            far ptr LMOD@     
+038 000377 8956FE              MOV            [bp-2], dx         
+039 00037A 8946FC              MOV            [bp-4], ax         
+040 00037D 8B56FA              MOV            dx, [bp-6]         
+041 000380 8B46F8              MOV            ax, [bp-8]         
+042 000383 B105                MOV            cl, 5              
+043 000385 9A87111000          CALL            far ptr LXLSH@    
+044 00038A 8956FA              MOV            [bp-6], dx         
+045 00038D 8946F8              MOV            [bp-8], ax         
+046 000390 8B56FE              MOV            dx, [bp-2]         
+047 000393 8B46FC              MOV            ax, [bp-4]         
+048 000396 8A4EF8              MOV            cl, [bp-8]         
+049 000399 9A69111000          CALL            far ptr LXRSH@    
+050 00039E 8956FE              MOV            [bp-2], dx         
+051 0003A1 8946FC              MOV            [bp-4], ax         
+052 0003A4 FF76FE              PUSH           word ptr [bp-2]    
+053 0003A7 FF76FC              PUSH           word ptr [bp-4]    
+054 0003AA FF76FA              PUSH           word ptr [bp-6]    
+055 0003AD FF76F8              PUSH           word ptr [bp-8]    
+056 0003B0 B89401              MOV            ax, 194h           
+057 0003B3 50                  PUSH           ax                 
+058 0003B4 E8C406              CALL           near ptr printf    
+059 0003B7 83C40A              ADD            sp, 0Ah            
+060 0003BA 8BE5                MOV            sp, bp             
+061 0003BC 5D                  POP            bp                 
+062 0003BD C3                  RET                               
+
+		main  ENDP
+

+ 294 - 0
tests/prev_base/LONGOPS.b

@@ -0,0 +1,294 @@
+/*
+ * Input file	: ./tests/inputs/LONGOPS.EXE
+ * File type	: EXE
+ */
+
+#include "dcc.h"
+
+
+long LXMUL@ (long arg0, long arg1)
+/* Uses register arguments:
+ *     arg0 = dx:ax.
+ *     arg1 = cx:bx.
+ * Runtime support routine of the compiler.
+ */
+{
+int loc1;
+int loc2; /* tmp */
+    loc2 = LO(arg0);
+    LO(arg0) = loc1;
+    loc1 = loc2;
+    loc2 = LO(arg0);
+    LO(arg0) = HI(arg0);
+
+    if ((LO(arg0) & LO(arg0)) != 0) {
+    }
+    loc2 = LO(arg0);
+    LO(arg0) = HI(arg1);
+    HI(arg1) = loc2;
+
+    if ((LO(arg0) & LO(arg0)) != 0) {
+        LO(arg0) = (LO(arg0) * loc1);
+        HI(arg1) = (HI(arg1) + LO(arg0));
+    }
+    loc2 = LO(arg0);
+    arg0 = (loc1 * LO(arg1));
+    HI(arg0) = (HI(arg0) + HI(arg1));
+    return (arg0);
+}
+
+
+long LDIV@ (long arg0, int arg3)
+/* Takes 8 bytes of parameters.
+ * Runtime support routine of the compiler.
+ * High-level language prologue code.
+ * Untranslatable routine.  Assembler provided.
+ * Return value in registers dx:ax.
+ * Pascal calling convention.
+ */
+{
+                    XOR            cx, 0              
+                    PUSH           bp                 
+                    PUSH           si                 
+                    PUSH           di                 
+                    MOV            bp, sp             
+                    MOV            di, cx             
+                    MOV            ax, [bp+0Ah]       
+                    MOV            dx, [bp+0Ch]       
+                    MOV            bx, [bp+0Eh]       
+                    MOV            cx, [bp+10h]       
+                    CMP            cx, 0              
+                    JNE            L1                 
+                    OR             dx, dx             
+                    JE             L2                 
+                    OR             bx, bx             
+                    JE             L2                 
+
+               L1:  TEST           di, 1              
+                    JNE            L3                 
+                    OR             dx, dx             
+                    JNS            L4                 
+                    NEG            dx                 
+                    NEG            ax                 
+                    SBB            dx, 0              
+                    OR             di, 0Ch            
+
+               L4:  OR             cx, cx             
+                    JNS            L3                 
+                    NEG            cx                 
+                    NEG            bx                 
+                    SBB            cx, 0              
+                    XOR            di, 4              
+
+               L3:  MOV            bp, cx             
+                    MOV            cx, 20h            
+                    PUSH           di                 
+                    XOR            di, 0              
+                    XOR            si, 0              
+
+               L5:  SHL            ax, 1              
+                    RCL            dx, 1              
+                    RCL            si, 1              
+                    RCL            di, 1              
+                    CMP            di, bp             
+                    JB             L6                 
+                    JA             L7                 
+                    CMP            si, bx             
+                    JB             L6                 
+
+               L7:  SUB            si, bx             
+                    SBB            di, bp             
+                    INC            ax                 
+
+               L6:  LOOP           L5                 
+                    POP            bx                 
+                    TEST           bx, 2              
+                    JE             L8                 
+                    MOV            ax, si             
+                    MOV            dx, di             
+                    SHR            bx, 1              
+
+               L8:  TEST           bx, 4              
+                    JE             L9                 
+                    NEG            dx                 
+                    NEG            ax                 
+                    SBB            dx, 0              
+
+               L9:  POP            di                 
+                    POP            si                 
+                    POP            bp                 
+                    RETF           8                  
+
+               L2:  MOV            tmp, dx:ax         ;Synthetic inst
+                    DIV            bx                 
+                    MOD            bx                 ;Synthetic inst
+                    TEST           di, 2              
+                    JE             L10                
+                    MOV            ax, dx             
+
+               L10: XOR            dx, dx             
+                    JMP            L9                 
+}
+
+
+long LMOD@ (long arg0, int arg3)
+/* Takes 8 bytes of parameters.
+ * Runtime support routine of the compiler.
+ * High-level language prologue code.
+ * Untranslatable routine.  Assembler provided.
+ * Return value in registers dx:ax.
+ * Pascal calling convention.
+ */
+{
+                    MOV            cx, 2              
+                    PUSH           bp                 
+                    PUSH           si                 
+                    PUSH           di                 
+                    MOV            bp, sp             
+                    MOV            di, cx             
+                    MOV            ax, [bp+0Ah]       
+                    MOV            dx, [bp+0Ch]       
+                    MOV            bx, [bp+0Eh]       
+                    MOV            cx, [bp+10h]       
+                    CMP            cx, 0              
+                    JNE            L1                 
+                    OR             dx, dx             
+                    JE             L2                 
+                    OR             bx, bx             
+                    JE             L2                 
+
+               L1:  TEST           di, 1              
+                    JNE            L3                 
+                    OR             dx, dx             
+                    JNS            L4                 
+                    NEG            dx                 
+                    NEG            ax                 
+                    SBB            dx, 0              
+                    OR             di, 0Ch            
+
+               L4:  OR             cx, cx             
+                    JNS            L3                 
+                    NEG            cx                 
+                    NEG            bx                 
+                    SBB            cx, 0              
+                    XOR            di, 4              
+
+               L3:  MOV            bp, cx             
+                    MOV            cx, 20h            
+                    PUSH           di                 
+                    XOR            di, 0              
+                    XOR            si, 0              
+
+               L5:  SHL            ax, 1              
+                    RCL            dx, 1              
+                    RCL            si, 1              
+                    RCL            di, 1              
+                    CMP            di, bp             
+                    JB             L6                 
+                    JA             L7                 
+                    CMP            si, bx             
+                    JB             L6                 
+
+               L7:  SUB            si, bx             
+                    SBB            di, bp             
+                    INC            ax                 
+
+               L6:  LOOP           L5                 
+                    POP            bx                 
+                    TEST           bx, 2              
+                    JE             L8                 
+                    MOV            ax, si             
+                    MOV            dx, di             
+                    SHR            bx, 1              
+
+               L8:  TEST           bx, 4              
+                    JE             L9                 
+                    NEG            dx                 
+                    NEG            ax                 
+                    SBB            dx, 0              
+
+               L9:  POP            di                 
+                    POP            si                 
+                    POP            bp                 
+                    RETF           8                  
+
+               L2:  MOV            tmp, dx:ax         ;Synthetic inst
+                    DIV            bx                 
+                    MOD            bx                 ;Synthetic inst
+                    TEST           di, 2              
+                    JE             L10                
+                    MOV            ax, dx             
+
+               L10: XOR            dx, dx             
+                    JMP            L9                 
+}
+
+
+long LXLSH@ (long arg0, char arg1)
+/* Uses register arguments:
+ *     arg0 = dx:ax.
+ *     arg1 = cl.
+ * Runtime support routine of the compiler.
+ */
+{
+int loc1; /* bx */
+
+    if (arg1 < 16) {
+        loc1 = LO(arg0);
+        LO(arg0) = (LO(arg0) << arg1);
+        HI(arg0) = (HI(arg0) << arg1);
+        HI(arg0) = (HI(arg0) | (loc1 >> (!arg1 + 16)));
+        return (arg0);
+    }
+    else {
+        HI(arg0) = LO(arg0);
+        LO(arg0) = 0;
+        HI(arg0) = (HI(arg0) << (arg1 - 16));
+        return (arg0);
+    }
+}
+
+
+long LXRSH@ (long arg0, char arg1)
+/* Uses register arguments:
+ *     arg0 = dx:ax.
+ *     arg1 = cl.
+ * Runtime support routine of the compiler.
+ */
+{
+int loc1; /* bx */
+
+    if (arg1 < 16) {
+        loc1 = HI(arg0);
+        LO(arg0) = (LO(arg0) >> arg1);
+        HI(arg0) = (HI(arg0) >> arg1);
+        LO(arg0) = (LO(arg0) | (loc1 << (!arg1 + 16)));
+        return (arg0);
+    }
+    else {
+        arg0 = HI(arg0);
+        LO(arg0) = (LO(arg0) >> (arg1 - 16));
+        return (arg0);
+    }
+}
+
+
+void main ()
+/* Takes no parameters.
+ * High-level language prologue code.
+ */
+{
+long loc1;
+long loc2;
+    loc2 = 255;
+    loc1 = 143;
+    loc1 = (loc2 + loc1);
+    loc2 = (loc2 - loc1);
+    loc2 = LXMUL@ (loc2, loc1);
+    loc1 = LDIV@ (loc1, loc2);
+    loc1 = LMOD@ (loc1, loc2);
+    loc2 = LXLSH@ (loc2, 5);
+    loc1 = LXRSH@ (loc1, loc1);
+    printf ("a = %ld, b = %ld\n", loc2, loc1);
+}
+

+ 98 - 0
tests/prev_base/MATRIXMU.EXE.a1

@@ -0,0 +1,98 @@
+		main  PROC  NEAR
+000 000383 55                  PUSH           bp                 
+001 000384 8BEC                MOV            bp, sp             
+002 000386 83EC78              SUB            sp, 78h            
+003 000389 8D46D8              LEA            ax, [bp-28h]       
+004 00038C 50                  PUSH           ax                 
+005 00038D 8D46B0              LEA            ax, [bp-50h]       
+006 000390 50                  PUSH           ax                 
+007 000391 8D4688              LEA            ax, [bp-78h]       
+008 000394 50                  PUSH           ax                 
+009 000395 E862FF              CALL           near ptr proc_1    
+010 000398 83C406              ADD            sp, 6              
+011 00039B 8BE5                MOV            sp, bp             
+012 00039D 5D                  POP            bp                 
+013 00039E C3                  RET                               
+
+		main  ENDP
+
+		proc_1  PROC  NEAR
+000 0002FA 55                  PUSH           bp                 
+001 0002FB 8BEC                MOV            bp, sp             
+002 0002FD 83EC02              SUB            sp, 2              
+003 000300 56                  PUSH           si                 
+004 000301 57                  PUSH           di                 
+005 000302 33F6                XOR            si, si             
+006 000304 EB72                JMP            L1                 
+
+007 000378 83FE05         L1:  CMP            si, 5              
+008 00037B 7C89                JL             L2                 
+009 00037D 5F                  POP            di                 
+010 00037E 5E                  POP            si                 
+011 00037F 8BE5                MOV            sp, bp             
+012 000381 5D                  POP            bp                 
+013 000382 C3                  RET                               
+
+014 000306 33FF           L2:  XOR            di, di             
+015 000308 EB68                JMP            L3                 
+
+016 000372 83FF04         L3:  CMP            di, 4              
+017 000375 7C93                JL             L4                 
+018 000377 46                  INC            si                 
+019                            JMP            L1                 ;Synthetic inst
+
+020 00030A C746FE0000     L4:  MOV            word ptr [bp-2], 0 
+021 00030F EB5A                JMP            L5                 
+
+022 00036B 837EFE04       L5:  CMP            word ptr [bp-2], 4 
+023 00036F 7CA0                JL             L6                 
+024 000371 47                  INC            di                 
+025                            JMP            L3                 ;Synthetic inst
+
+026 000311 8BDE           L6:  MOV            bx, si             
+027 000313 D1E3                SHL            bx, 1              
+028 000315 D1E3                SHL            bx, 1              
+029 000317 D1E3                SHL            bx, 1              
+030 000319 035E04              ADD            bx, [bp+4]         
+031 00031C 8B46FE              MOV            ax, [bp-2]         
+032 00031F D1E0                SHL            ax, 1              
+033 000321 03D8                ADD            bx, ax             
+034 000323 8B07                MOV            ax, [bx]           
+035 000325 50                  PUSH           ax                 
+036 000326 8B46FE              MOV            ax, [bp-2]         
+037 000329 BA0A00              MOV            dx, 0Ah            
+038 00032C F7E2                MUL            dx                 
+039 00032E 8BD8                MOV            bx, ax             
+040 000330 035E06              ADD            bx, [bp+6]         
+041 000333 8BC7                MOV            ax, di             
+042 000335 D1E0                SHL            ax, 1              
+043 000337 03D8                ADD            bx, ax             
+044 000339 58                  POP            ax                 
+045 00033A F727                MUL            word ptr [bx]      
+046 00033C 50                  PUSH           ax                 
+047 00033D 8BC6                MOV            ax, si             
+048 00033F BA0A00              MOV            dx, 0Ah            
+049 000342 F7E2                MUL            dx                 
+050 000344 8BD8                MOV            bx, ax             
+051 000346 035E08              ADD            bx, [bp+8]         
+052 000349 8BC7                MOV            ax, di             
+053 00034B D1E0                SHL            ax, 1              
+054 00034D 03D8                ADD            bx, ax             
+055 00034F 58                  POP            ax                 
+056 000350 0307                ADD            ax, [bx]           
+057 000352 50                  PUSH           ax                 
+058 000353 8BC6                MOV            ax, si             
+059 000355 BA0A00              MOV            dx, 0Ah            
+060 000358 F7E2                MUL            dx                 
+061 00035A 8BD8                MOV            bx, ax             
+062 00035C 035E08              ADD            bx, [bp+8]         
+063 00035F 8BC7                MOV            ax, di             
+064 000361 D1E0                SHL            ax, 1              
+065 000363 03D8                ADD            bx, ax             
+066 000365 58                  POP            ax                 
+067 000366 8907                MOV            [bx], ax           
+068 000368 FF46FE              INC            word ptr [bp-2]    
+069                            JMP            L5                 ;Synthetic inst
+
+		proc_1  ENDP
+

+ 95 - 0
tests/prev_base/MATRIXMU.EXE.a2

@@ -0,0 +1,95 @@
+		proc_1  PROC  NEAR
+000 0002FA 55                  PUSH           bp                 
+001 0002FB 8BEC                MOV            bp, sp             
+002 0002FD 83EC02              SUB            sp, 2              
+003 000300 56                  PUSH           si                 
+004 000301 57                  PUSH           di                 
+005 000302 33F6                XOR            si, si             
+
+007 000378 83FE05         L1:  CMP            si, 5              
+008 00037B 7C89                JL             L2                 
+009 00037D 5F                  POP            di                 
+010 00037E 5E                  POP            si                 
+011 00037F 8BE5                MOV            sp, bp             
+012 000381 5D                  POP            bp                 
+013 000382 C3                  RET                               
+
+014 000306 33FF           L2:  XOR            di, di             
+
+016 000372 83FF04         L3:  CMP            di, 4              
+017 000375 7C93                JL             L4                 
+018 000377 46                  INC            si                 
+019                            JMP            L1                 ;Synthetic inst
+
+020 00030A C746FE0000     L4:  MOV            word ptr [bp-2], 0 
+
+022 00036B 837EFE04       L5:  CMP            word ptr [bp-2], 4 
+023 00036F 7CA0                JL             L6                 
+024 000371 47                  INC            di                 
+025                            JMP            L3                 ;Synthetic inst
+
+026 000311 8BDE           L6:  MOV            bx, si             
+027 000313 D1E3                SHL            bx, 1              
+028 000315 D1E3                SHL            bx, 1              
+029 000317 D1E3                SHL            bx, 1              
+030 000319 035E04              ADD            bx, [bp+4]         
+031 00031C 8B46FE              MOV            ax, [bp-2]         
+032 00031F D1E0                SHL            ax, 1              
+033 000321 03D8                ADD            bx, ax             
+034 000323 8B07                MOV            ax, [bx]           
+035 000325 50                  PUSH           ax                 
+036 000326 8B46FE              MOV            ax, [bp-2]         
+037 000329 BA0A00              MOV            dx, 0Ah            
+038 00032C F7E2                MUL            dx                 
+039 00032E 8BD8                MOV            bx, ax             
+040 000330 035E06              ADD            bx, [bp+6]         
+041 000333 8BC7                MOV            ax, di             
+042 000335 D1E0                SHL            ax, 1              
+043 000337 03D8                ADD            bx, ax             
+044 000339 58                  POP            ax                 
+045 00033A F727                MUL            word ptr [bx]      
+046 00033C 50                  PUSH           ax                 
+047 00033D 8BC6                MOV            ax, si             
+048 00033F BA0A00              MOV            dx, 0Ah            
+049 000342 F7E2                MUL            dx                 
+050 000344 8BD8                MOV            bx, ax             
+051 000346 035E08              ADD            bx, [bp+8]         
+052 000349 8BC7                MOV            ax, di             
+053 00034B D1E0                SHL            ax, 1              
+054 00034D 03D8                ADD            bx, ax             
+055 00034F 58                  POP            ax                 
+056 000350 0307                ADD            ax, [bx]           
+057 000352 50                  PUSH           ax                 
+058 000353 8BC6                MOV            ax, si             
+059 000355 BA0A00              MOV            dx, 0Ah            
+060 000358 F7E2                MUL            dx                 
+061 00035A 8BD8                MOV            bx, ax             
+062 00035C 035E08              ADD            bx, [bp+8]         
+063 00035F 8BC7                MOV            ax, di             
+064 000361 D1E0                SHL            ax, 1              
+065 000363 03D8                ADD            bx, ax             
+066 000365 58                  POP            ax                 
+067 000366 8907                MOV            [bx], ax           
+068 000368 FF46FE              INC            word ptr [bp-2]    
+069                            JMP            L5                 ;Synthetic inst
+
+		proc_1  ENDP
+
+		main  PROC  NEAR
+000 000383 55                  PUSH           bp                 
+001 000384 8BEC                MOV            bp, sp             
+002 000386 83EC78              SUB            sp, 78h            
+003 000389 8D46D8              LEA            ax, [bp-28h]       
+004 00038C 50                  PUSH           ax                 
+005 00038D 8D46B0              LEA            ax, [bp-50h]       
+006 000390 50                  PUSH           ax                 
+007 000391 8D4688              LEA            ax, [bp-78h]       
+008 000394 50                  PUSH           ax                 
+009 000395 E862FF              CALL           near ptr proc_1    
+010 000398 83C406              ADD            sp, 6              
+011 00039B 8BE5                MOV            sp, bp             
+012 00039D 5D                  POP            bp                 
+013 00039E C3                  RET                               
+
+		main  ENDP
+

+ 47 - 0
tests/prev_base/MATRIXMU.b

@@ -0,0 +1,47 @@
+/*
+ * Input file	: ./tests/inputs/MATRIXMU.EXE
+ * File type	: EXE
+ */
+
+#include "dcc.h"
+
+
+void proc_1 (int arg0, int arg1, int arg2)
+/* Takes 6 bytes of parameters.
+ * High-level language prologue code.
+ * C calling convention.
+ */
+{
+int loc1;
+int loc2;
+int loc3;
+    loc2 = 0;
+
+    while ((loc2 < 5)) {
+        loc3 = 0;
+
+        while ((loc3 < 4)) {
+            loc1 = 0;
+
+            while ((loc1 < 4)) {
+                *((((loc2 * 10) + arg2) + (loc3 << 1))) = ((*(((((loc2 << 3) << 1) + arg0) + (loc1 << 1))) * *((((loc1 * 10) + arg1) + (loc3 << 1)))) + *((((loc2 * 10) + arg2) + (loc3 << 1))));
+                loc1 = (loc1 + 1);
+            }	/* end of while */
+            loc3 = (loc3 + 1);
+        }	/* end of while */
+        loc2 = (loc2 + 1);
+    }	/* end of while */
+}
+
+
+void main ()
+/* Takes no parameters.
+ * High-level language prologue code.
+ */
+{
+int loc1;
+int loc2;
+int loc3;
+    proc_1 (&loc3, &loc2, &loc1);
+}
+

+ 54 - 0
tests/prev_base/MAX.EXE.a1

@@ -0,0 +1,54 @@
+		main  PROC  NEAR
+000 0002FA 55                  PUSH           bp                 
+001 0002FB 8BEC                MOV            bp, sp             
+002 0002FD 83EC04              SUB            sp, 4              
+003 000300 B89401              MOV            ax, 194h           
+004 000303 50                  PUSH           ax                 
+005 000304 E8D10B              CALL           near ptr printf    
+006 000307 59                  POP            cx                 
+007 000308 8D46FE              LEA            ax, [bp-2]         
+008 00030B 50                  PUSH           ax                 
+009 00030C 8D46FC              LEA            ax, [bp-4]         
+010 00030F 50                  PUSH           ax                 
+011 000310 B8A601              MOV            ax, 1A6h           
+012 000313 50                  PUSH           ax                 
+013 000314 E84A14              CALL           near ptr scanf     
+014 000317 83C406              ADD            sp, 6              
+015 00031A 8B46FC              MOV            ax, [bp-4]         
+016 00031D 3B46FE              CMP            ax, [bp-2]         
+017 000320 7415                JE             L1                 
+018 000322 FF76FE              PUSH           word ptr [bp-2]    
+019 000325 FF76FC              PUSH           word ptr [bp-4]    
+020 000328 E81000              CALL           near ptr proc_1    
+021 00032B 59                  POP            cx                 
+022 00032C 59                  POP            cx                 
+023 00032D 50                  PUSH           ax                 
+024 00032E B8AC01              MOV            ax, 1ACh           
+025 000331 50                  PUSH           ax                 
+026 000332 E8A30B              CALL           near ptr printf    
+027 000335 59                  POP            cx                 
+028 000336 59                  POP            cx                 
+
+029 000337 8BE5           L1:  MOV            sp, bp             
+030 000339 5D                  POP            bp                 
+031 00033A C3                  RET                               
+
+		main  ENDP
+
+		proc_1  PROC  NEAR
+000 00033B 55                  PUSH           bp                 
+001 00033C 8BEC                MOV            bp, sp             
+002 00033E 8B4604              MOV            ax, [bp+4]         
+003 000341 3B4606              CMP            ax, [bp+6]         
+004 000344 7E05                JLE            L2                 
+005 000346 8B4604              MOV            ax, [bp+4]         
+006 000349 EB05                JMP            L3                 
+
+007 000350 5D             L3:  POP            bp                 
+008 000351 C3                  RET                               
+
+009 00034B 8B4606         L2:  MOV            ax, [bp+6]         
+010 00034E EB00                JMP            L3                 
+
+		proc_1  ENDP
+

+ 53 - 0
tests/prev_base/MAX.EXE.a2

@@ -0,0 +1,53 @@
+		proc_1  PROC  NEAR
+000 00033B 55                  PUSH           bp                 
+001 00033C 8BEC                MOV            bp, sp             
+002 00033E 8B4604              MOV            ax, [bp+4]         
+003 000341 3B4606              CMP            ax, [bp+6]         
+004 000344 7E05                JLE            L1                 
+005 000346 8B4604              MOV            ax, [bp+4]         
+
+007 000350 5D             L2:  POP            bp                 
+008 000351 C3                  RET                               
+
+009 00034B 8B4606         L1:  MOV            ax, [bp+6]         
+010 00034E EB00                JMP            L2                 
+
+		proc_1  ENDP
+
+		main  PROC  NEAR
+000 0002FA 55                  PUSH           bp                 
+001 0002FB 8BEC                MOV            bp, sp             
+002 0002FD 83EC04              SUB            sp, 4              
+003 000300 B89401              MOV            ax, 194h           
+004 000303 50                  PUSH           ax                 
+005 000304 E8D10B              CALL           near ptr printf    
+006 000307 59                  POP            cx                 
+007 000308 8D46FE              LEA            ax, [bp-2]         
+008 00030B 50                  PUSH           ax                 
+009 00030C 8D46FC              LEA            ax, [bp-4]         
+010 00030F 50                  PUSH           ax                 
+011 000310 B8A601              MOV            ax, 1A6h           
+012 000313 50                  PUSH           ax                 
+013 000314 E84A14              CALL           near ptr scanf     
+014 000317 83C406              ADD            sp, 6              
+015 00031A 8B46FC              MOV            ax, [bp-4]         
+016 00031D 3B46FE              CMP            ax, [bp-2]         
+017 000320 7415                JE             L3                 
+018 000322 FF76FE              PUSH           word ptr [bp-2]    
+019 000325 FF76FC              PUSH           word ptr [bp-4]    
+020 000328 E81000              CALL           near ptr proc_1    
+021 00032B 59                  POP            cx                 
+022 00032C 59                  POP            cx                 
+023 00032D 50                  PUSH           ax                 
+024 00032E B8AC01              MOV            ax, 1ACh           
+025 000331 50                  PUSH           ax                 
+026 000332 E8A30B              CALL           near ptr printf    
+027 000335 59                  POP            cx                 
+028 000336 59                  POP            cx                 
+
+029 000337 8BE5           L3:  MOV            sp, bp             
+030 000339 5D                  POP            bp                 
+031 00033A C3                  RET                               
+
+		main  ENDP
+

+ 41 - 0
tests/prev_base/MAX.b

@@ -0,0 +1,41 @@
+/*
+ * Input file	: ./tests/inputs/MAX.EXE
+ * File type	: EXE
+ */
+
+#include "dcc.h"
+
+
+int proc_1 (int arg0, int arg1)
+/* Takes 4 bytes of parameters.
+ * High-level language prologue code.
+ * C calling convention.
+ */
+{
+int loc1; /* ax */
+
+    if (arg0 > arg1) {
+        loc1 = arg0;
+    }
+    else {
+        loc1 = arg1;
+    }
+    return (loc1);
+}
+
+
+void main ()
+/* Takes no parameters.
+ * High-level language prologue code.
+ */
+{
+int loc1;
+int loc2;
+    printf ("Enter 2 numbers: ");
+    scanf ("%d %d", &loc2, &loc1);
+
+    if (loc2 != loc1) {
+        printf ("Maximum: %d\n", proc_1 (loc2, loc1));
+    }
+}
+

+ 0 - 1
tests/prev_base/MIN.b

@@ -14,7 +14,6 @@ void start ()
 int loc1;
 int loc2; /* ax */
 int loc3; /* bx */
-
     loc1 = 0;
     loc2 = loc1;
 

+ 34 - 0
tests/prev_base/STRLEN.EXE.a1

@@ -0,0 +1,34 @@
+		main  PROC  NEAR
+000 0002FA 56                  PUSH           si                 
+001 0002FB BE9401              MOV            si, 194h           
+002 0002FE 56                  PUSH           si                 
+003 0002FF E80300              CALL           near ptr proc_1    
+004 000302 59                  POP            cx                 
+005 000303 5E                  POP            si                 
+006 000304 C3                  RET                               
+
+		main  ENDP
+
+		proc_1  PROC  NEAR
+000 000305 55                  PUSH           bp                 
+001 000306 8BEC                MOV            bp, sp             
+002 000308 56                  PUSH           si                 
+003 000309 33F6                XOR            si, si             
+004 00030B EB01                JMP            L1                 
+
+005 00030E 8B5E04         L1:  MOV            bx, [bp+4]         
+006 000311 FF4604              INC            word ptr [bp+4]    
+007 000314 803F00              CMP            byte ptr [bx], 0   
+008 000317 75F4                JNE            L2                 
+009 000319 8BC6                MOV            ax, si             
+010 00031B EB00                JMP            L3                 
+
+011 00031D 5E             L3:  POP            si                 
+012 00031E 5D                  POP            bp                 
+013 00031F C3                  RET                               
+
+014 00030D 46             L2:  INC            si                 
+015                            JMP            L1                 ;Synthetic inst
+
+		proc_1  ENDP
+

+ 31 - 0
tests/prev_base/STRLEN.EXE.a2

@@ -0,0 +1,31 @@
+		proc_1  PROC  NEAR
+000 000305 55                  PUSH           bp                 
+001 000306 8BEC                MOV            bp, sp             
+002 000308 56                  PUSH           si                 
+003 000309 33F6                XOR            si, si             
+
+005 00030E 8B5E04         L1:  MOV            bx, [bp+4]         
+006 000311 FF4604              INC            word ptr [bp+4]    
+007 000314 803F00              CMP            byte ptr [bx], 0   
+008 000317 75F4                JNE            L2                 
+009 000319 8BC6                MOV            ax, si             
+011 00031D 5E                  POP            si                 
+012 00031E 5D                  POP            bp                 
+013 00031F C3                  RET                               
+
+014 00030D 46             L2:  INC            si                 
+015                            JMP            L1                 ;Synthetic inst
+
+		proc_1  ENDP
+
+		main  PROC  NEAR
+000 0002FA 56                  PUSH           si                 
+001 0002FB BE9401              MOV            si, 194h           
+002 0002FE 56                  PUSH           si                 
+003 0002FF E80300              CALL           near ptr proc_1    
+004 000302 59                  POP            cx                 
+005 000303 5E                  POP            si                 
+006 000304 C3                  RET                               
+
+		main  ENDP
+

+ 34 - 0
tests/prev_base/STRLEN.b

@@ -0,0 +1,34 @@
+/*
+ * Input file	: ./tests/inputs/STRLEN.EXE
+ * File type	: EXE
+ */
+
+#include "dcc.h"
+
+
+void proc_1 (int arg0)
+/* Takes 2 bytes of parameters.
+ * High-level language prologue code.
+ * C calling convention.
+ */
+{
+int loc1; /* si */
+    loc1 = 0;
+    arg0 = (arg0 + 1);
+
+    while ((*arg0 != 0)) {
+        loc1 = (loc1 + 1);
+        arg0 = (arg0 + 1);
+    }	/* end of while */
+}
+
+
+void main ()
+/* Takes no parameters.
+ */
+{
+int loc1;
+    loc1 = 404;
+    proc_1 (loc1);
+}
+

+ 40 - 0
tests/prev_base/TESTLONG.EXE.a1

@@ -0,0 +1,40 @@
+		main  PROC  NEAR
+000 0002FA 55                  PUSH           bp                 
+001 0002FB 8BEC                MOV            bp, sp             
+002 0002FD 83EC08              SUB            sp, 8              
+003 000300 8D46FC              LEA            ax, [bp-4]         
+004 000303 50                  PUSH           ax                 
+005 000304 B89401              MOV            ax, 194h           
+006 000307 50                  PUSH           ax                 
+007 000308 E84A14              CALL           near ptr scanf     
+008 00030B 59                  POP            cx                 
+009 00030C 59                  POP            cx                 
+010 00030D 8D46F8              LEA            ax, [bp-8]         
+011 000310 50                  PUSH           ax                 
+012 000311 B89701              MOV            ax, 197h           
+013 000314 50                  PUSH           ax                 
+014 000315 E83D14              CALL           near ptr scanf     
+015 000318 59                  POP            cx                 
+016 000319 59                  POP            cx                 
+017 00031A 8D46FC              LEA            ax, [bp-4]         
+018 00031D 50                  PUSH           ax                 
+019 00031E 8D46F8              LEA            ax, [bp-8]         
+020 000321 50                  PUSH           ax                 
+021 000322 B89A01              MOV            ax, 19Ah           
+022 000325 50                  PUSH           ax                 
+023 000326 E82C14              CALL           near ptr scanf     
+024 000329 83C406              ADD            sp, 6              
+025 00032C FF76FE              PUSH           word ptr [bp-2]    
+026 00032F FF76FC              PUSH           word ptr [bp-4]    
+027 000332 FF76FA              PUSH           word ptr [bp-6]    
+028 000335 FF76F8              PUSH           word ptr [bp-8]    
+029 000338 B8A001              MOV            ax, 1A0h           
+030 00033B 50                  PUSH           ax                 
+031 00033C E88D0B              CALL           near ptr printf    
+032 00033F 83C40A              ADD            sp, 0Ah            
+033 000342 8BE5                MOV            sp, bp             
+034 000344 5D                  POP            bp                 
+035 000345 C3                  RET                               
+
+		main  ENDP
+

+ 40 - 0
tests/prev_base/TESTLONG.EXE.a2

@@ -0,0 +1,40 @@
+		main  PROC  NEAR
+000 0002FA 55                  PUSH           bp                 
+001 0002FB 8BEC                MOV            bp, sp             
+002 0002FD 83EC08              SUB            sp, 8              
+003 000300 8D46FC              LEA            ax, [bp-4]         
+004 000303 50                  PUSH           ax                 
+005 000304 B89401              MOV            ax, 194h           
+006 000307 50                  PUSH           ax                 
+007 000308 E84A14              CALL           near ptr scanf     
+008 00030B 59                  POP            cx                 
+009 00030C 59                  POP            cx                 
+010 00030D 8D46F8              LEA            ax, [bp-8]         
+011 000310 50                  PUSH           ax                 
+012 000311 B89701              MOV            ax, 197h           
+013 000314 50                  PUSH           ax                 
+014 000315 E83D14              CALL           near ptr scanf     
+015 000318 59                  POP            cx                 
+016 000319 59                  POP            cx                 
+017 00031A 8D46FC              LEA            ax, [bp-4]         
+018 00031D 50                  PUSH           ax                 
+019 00031E 8D46F8              LEA            ax, [bp-8]         
+020 000321 50                  PUSH           ax                 
+021 000322 B89A01              MOV            ax, 19Ah           
+022 000325 50                  PUSH           ax                 
+023 000326 E82C14              CALL           near ptr scanf     
+024 000329 83C406              ADD            sp, 6              
+025 00032C FF76FE              PUSH           word ptr [bp-2]    
+026 00032F FF76FC              PUSH           word ptr [bp-4]    
+027 000332 FF76FA              PUSH           word ptr [bp-6]    
+028 000335 FF76F8              PUSH           word ptr [bp-8]    
+029 000338 B8A001              MOV            ax, 1A0h           
+030 00033B 50                  PUSH           ax                 
+031 00033C E88D0B              CALL           near ptr printf    
+032 00033F 83C40A              ADD            sp, 0Ah            
+033 000342 8BE5                MOV            sp, bp             
+034 000344 5D                  POP            bp                 
+035 000345 C3                  RET                               
+
+		main  ENDP
+

+ 23 - 0
tests/prev_base/TESTLONG.b

@@ -0,0 +1,23 @@
+/*
+ * Input file	: ./tests/inputs/TESTLONG.EXE
+ * File type	: EXE
+ */
+
+#include "dcc.h"
+
+
+void main ()
+/* Takes no parameters.
+ * High-level language prologue code.
+ */
+{
+int loc1;
+int loc2;
+int loc3;
+int loc4;
+    scanf ("%d", &loc1);
+    scanf ("%d", &loc2);
+    scanf ("%d %d", &loc2, &loc1);
+    printf ("%ld %ld", loc2, loc4, loc1, loc3);
+}
+