def process_file()

in scripts/symcryptasm_processor.py [0:0]


def process_file(assembler, architecture, calling_convention, infilename, outfilename):
    normal_calling_convention = None

    if assembler == "masm":
        if architecture == "amd64" and calling_convention == "msft":
            normal_calling_convention = CALLING_CONVENTION_AMD64_MSFT
            mul_calling_convention = CALLING_CONVENTION_AMD64_MSFT_MUL
            nested_calling_convention = CALLING_CONVENTION_AMD64_MSFT_NESTED
    elif assembler == "gas":
        if architecture == "amd64" and calling_convention == "systemv":
            normal_calling_convention = CALLING_CONVENTION_AMD64_SYSTEMV
            mul_calling_convention = CALLING_CONVENTION_AMD64_SYSTEMV_MUL
            nested_calling_convention = CALLING_CONVENTION_AMD64_SYSTEMV_NESTED
        elif architecture == "arm64" and calling_convention == "aapcs64":
            normal_calling_convention = CALLING_CONVENTION_ARM64_AAPCS64
            mul_calling_convention = None
            nested_calling_convention = None
    elif assembler == "armasm64":
        if architecture == "arm64" and calling_convention == "aapcs64":
            normal_calling_convention = CALLING_CONVENTION_ARM64_AAPCS64
            mul_calling_convention = None
            nested_calling_convention = None
        elif architecture == "arm64" and calling_convention == "arm64ec":
            normal_calling_convention = CALLING_CONVENTION_ARM64EC_MSFT
            mul_calling_convention = None
            nested_calling_convention = None
    else:
        logging.error("Unhandled assembler (%s) in process_file" % assembler)
        exit(1)

    if normal_calling_convention is None:
        logging.error("Unhandled combination (%s + %s + %s) in process_file"
            % (assembler, architecture, calling_convention))
        exit(1)

    # iterate through file line by line in one pass
    file_processing_state = ProcessingStateMachine(
        assembler, normal_calling_convention, mul_calling_convention, nested_calling_convention)

    with open(infilename) as infile:
        with open(outfilename, "w") as outfile:
            for line_num, line in enumerate(infile):
                processed_line = file_processing_state.process_line(line, line_num)
                outfile.write(processed_line)