// File: /workspace/github_cpp_makefile_star2_O3/besm6[P]pascal-re/pascompl.cc
// Function: initOptions(int, char**)
void initOptions(int argc, char **argv)
{
    PASINFOR.startOffset -= 040000;
    commentModeCH = ' ';
    lineNesting = 0;
    maxLineLen = 120;
    CH = ' ';
    linePos = 0;
    prevErrPos = 0;
    errsInLine = 0;
    lineCnt = 1;
    checkFortran = false;
    bool110z = false;
    int93z = 1;
    int92z = 1;
    moduleOffset = 16384;
    lineStartOffset = 16384;
    int94z = 1;
    parsingParam = false;
    dataCheck = false;
    heapSize = 100;
    bool49z = true;
    atEOL = false;
    doPMD = true; // not (42 in curVal.m);
    checkTypes = true;
    fixMult = true;
    fuzzReals = true;
    pseudoZ = true;
    checkBounds = true; // not (44 in curVal.m);
    declExternal = false;
    errors = false;
    allowCompat = false;
    fileBufSize = 1;
    charEncoding = 2;
    chain = NULL;
    longSymCnt = 0;
    extSymAdornment = 0;
    symTabCnt = 0;
    stdArrayFmt = false;

    // Get base name of the program.
    progname = strrchr(argv[0], '/');
    progname = progname ? progname+1 : argv[0];

    for (;;) {
        switch (getopt(argc, argv, "vVhPe:p:t:c:r:m:y:u:f:a:d:k:b:s:l:")) {
        case EOF:
            break;
        case 'a':
            charEncoding = strtoul(optarg, 0, 0);
            if (charEncoding > 2) {
                fprintf(stderr, "%s: Bad option -a\n", progname);
                exit(-1);
            }
            continue;
        case 'b':
            fileBufSize = strtoul(optarg, 0, 0);
            if (fileBufSize > 4) {
                fprintf(stderr, "%s: Bad option -b\n", progname);
                exit(-1);
            }
            continue;
        case 'c':
            checkTypes = (optarg[0] == '+');
            continue;
        case 'd':
            curVal.i = strtoul(optarg, 0, 0);
            if (curVal.i > 15) {
                fprintf(stderr, "%s: Bad option -d\n", progname);
                exit(-1);
            }
            optSflags.m = optSflags.m * BitRange(0, 40) + curVal.m * BitRange(41, 47);
            continue;
        case 'e':
            declExternal = (optarg[0] == '+');
            continue;
        case 'f':
            checkFortran = (optarg[0] == '+');
            continue;
        case 'k':
            heapSize = strtoul(optarg, 0, 0);
            if (heapSize > 23) {
                fprintf(stderr, "%s: Bad option -k\n", progname);
                exit(-1);
            }
            continue;
        case 'l':
            PASINFOR.listMode = strtoul(optarg, 0, 0);
            if (PASINFOR.listMode > 3) {
                fprintf(stderr, "%s: Bad option -l\n", progname);
                exit(-1);
            }
            continue;
        case 'm':
            fixMult = (optarg[0] == '+');
            continue;
        case 'P':
            stdArrayFmt = true;
            continue;
        case 'p':
            doPMD = (optarg[0] == '+');
            continue;
        case 'r':
            fuzzReals = (optarg[0] == '+');
            continue;
        case 's':
            curVal.i = strtoul(optarg, 0, 0);
            if (curVal.i > 9) {
                fprintf(stderr, "%s: Bad option -s\n", progname);
                exit(-1);
            }
            if (curVal.i == 3) {
                lineCnt = 1;
            } else if (4 <= curVal.i && curVal.i <= 9) {
                optSflags.m = optSflags.m + Bits(curVal.i - 3);
            } else {
                extSymAdornment = curVal.i;
            }
            continue;
        case 't':
            checkBounds = (optarg[0] == '+');
            continue;
        case 'u':
            maxLineLen = (optarg[0] == '+') ? 72 : 120;
            continue;
        case 'y':
            allowCompat = (optarg[0] == '+');
            continue;
        case 'v':
            printf("%s\n", boilerplate);
            exit(0);
        case 'V':
            ++verbose;
            continue;
        default:
            usage();
        }
        break;
    }
    argc -= optind;
    argv += optind;
    if (argc < 1 || argc > 2)
        usage();

    // Open input file on stdin.
    if (strcmp(argv[0], "-") != 0) {
        if (freopen(argv[0], "r", stdin) == NULL) {
            fprintf(stderr, "%s: Cannot open input file\n", progname);
            perror(argv[0]);
            exit(-1);
        }
    }

    // Open output file on stdout.
    if (argc > 1) {
        outFileName = argv[1];
        unlink(outFileName);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
addq $-0x4000, 0xa8412(%rip) # imm = 0xC000
movq %rsi, %r14
movl %edi, %ebx
movb $0x20, %cl
movb %cl, 0x4f9b5(%rip)      # 0x64918
xorl %eax, %eax
movq %rax, 0x4f9bc(%rip)     # 0x64928
movq $0x78, 0x4f8f1(%rip) # 0x64868
movb %cl, 0x4f99c(%rip)      # 0x64919
movq %rax, 0x4f8ec(%rip)     # 0x64870
movq %rax, 0x4f8ed(%rip)     # 0x64878
movq %rax, 0x4f8ee(%rip)     # 0x64880
movl $0x1, %ecx
movq %rcx, 0x4f912(%rip)     # 0x648b0
movb %al, 0x4f9dc(%rip)      # 0x64980
movb %al, 0x4f9d3(%rip)      # 0x6497d
movq %rcx, 0x4f997(%rip)     # 0x64948
movq %rcx, 0x4f988(%rip)     # 0x64940
movl $0x4000, %edx           # imm = 0x4000
movq %rdx, 0x4f8c4(%rip)     # 0x64888
movq %rdx, 0x4f8c5(%rip)     # 0x64890
movq %rcx, 0x4f97e(%rip)     # 0x64950
movb %al, 0x4f820(%rip)      # 0x647f8
movb %al, 0x4f81d(%rip)      # 0x647fb
movq $0x64, 0x4f8e7(%rip) # 0x648d0
movb $0x1, %dl
movb %dl, 0x4f809(%rip)      # 0x647fa
movb %al, 0x4f97a(%rip)      # 0x64971
movb %dl, 0x4f97c(%rip)      # 0x64979
movb %dl, 0x4f96f(%rip)      # 0x64972
movb %dl, 0x4f973(%rip)      # 0x6497c
movb %dl, 0x4f96c(%rip)      # 0x6497b
movb %dl, 0x4f969(%rip)      # 0x6497e
movb %dl, 0x4f95f(%rip)      # 0x6497a
movb %al, 0x4f956(%rip)      # 0x64977
movb %al, 0x4f94f(%rip)      # 0x64976
movb %al, 0x4f952(%rip)      # 0x6497f
movq %rcx, 0x4f814(%rip)     # 0x64848
movq $0x2, 0x4f921(%rip) # 0x64960
movq %rax, 0x4f9da(%rip)     # 0x64a20
movq %rax, 0x95ca3(%rip)     # 0xaacf0
movq %rax, 0x4fa74(%rip)     # 0x64ac8
movq %rax, 0x4faad(%rip)     # 0x64b08
movb %al, 0x4f90f(%rip)      # 0x64970
movq (%rsi), %rdi
movl $0x2f, %esi
callq 0x32a0
movq %rax, 0xa8313(%rip)     # 0xbd388
testq %rax, %rax
je 0x1507f
incq %rax
jmp 0x15082
movq (%r14), %rax
movabsq $0xffffffffff80, %rcx   # imm = 0xFFFFFFFFFF80
movq %rax, 0xa82f5(%rip)     # 0xbd388
leaq 0x845d(%rip), %r15      # 0x1d4f7
leaq 0x771b(%rip), %rbp      # 0x1c7bc
movq 0xeef8(%rip), %r13      # 0x23fa0
leaq 0x4f981(%rip), %r12     # 0x64a30
leaq 0x7f(%rcx), %rax
movq %rax, (%rsp)
movl %ebx, %edi
movq %r14, %rsi
movq %r15, %rdx
callq 0x3060
leal -0x50(%rax), %ecx
cmpl $0x29, %ecx
ja 0x15301
movslq (%rbp,%rcx,4), %rax
addq %rbp, %rax
jmpq *%rax
movb $0x1, 0x4f88f(%rip)     # 0x64970
jmp 0x150b7
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4f888(%rip)           # 0x64979
jmp 0x150b7
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %rax, 0xa8259(%rip)     # 0xbd360
cmpq $0x4, %rax
jl 0x150b7
jmp 0x15383
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4f85b(%rip)           # 0x6497b
jmp 0x150b7
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4f84c(%rip)           # 0x6497c
jmp 0x150b7
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %rax, 0x4f78a(%rip)     # 0x648d0
cmpq $0x18, %rax
jl 0x150b7
jmp 0x1537e
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %r12, %rdi
movq %rax, %rsi
callq 0x3c48
movq 0x4f8bc(%rip), %rcx     # 0x64a30
shlq $0x17, %rcx
movq %rcx, %rax
sarq $0x17, %rax
cmpq $0xa, %rax
jge 0x15388
cmpq $0x1800000, %rcx        # imm = 0x1800000
jne 0x152d0
movq $0x1, 0x4f70f(%rip) # 0x648b0
jmp 0x150b7
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4f7cb(%rip)           # 0x6497f
jmp 0x150b7
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4f7b3(%rip)           # 0x6497a
jmp 0x150b7
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4f798(%rip)           # 0x64972
jmp 0x150b7
movq (%r13), %rax
cmpb $0x2b, (%rax)
movl $0x78, %eax
movl $0x48, %ecx
cmoveq %rcx, %rax
movq %rax, 0x4f66d(%rip)     # 0x64868
jmp 0x150b7
incl 0x4f77e(%rip)           # 0x64984
jmp 0x150b7
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %r12, %rdi
movq %rax, %rsi
callq 0x3c48
movq 0x4f806(%rip), %rax     # 0x64a30
movq %rax, %rcx
shlq $0x17, %rcx
cmpq $0x7800000, %rcx        # imm = 0x7800000
jg 0x15397
andl $0x7f, %eax
movq 0x4f828(%rip), %rcx     # 0x64a70
movabsq $0xffffffffff80, %rdx   # imm = 0xFFFFFFFFFF80
andq %rdx, %rcx
orq %rax, %rcx
movq %rcx, 0x4f811(%rip)     # 0x64a70
jmp 0x150b7
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %rax, 0x4f6e8(%rip)     # 0x64960
cmpq $0x3, %rax
jl 0x150b7
jmp 0x1538d
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4f6eb(%rip)           # 0x64980
jmp 0x150b7
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %rax, 0x4f59a(%rip)     # 0x64848
cmpq $0x5, %rax
jl 0x150b7
jmp 0x15392
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4f6ac(%rip)           # 0x64977
jmp 0x150b7
cmpq $0x4, %rax
jl 0x152f5
movb $0x32, %cl
subb %al, %cl
movq 0x4f78f(%rip), %rax     # 0x64a70
andq (%rsp), %rax
btsq %rcx, %rax
movq %rax, 0x4f780(%rip)     # 0x64a70
jmp 0x150b7
movq %rax, 0x4f7cc(%rip)     # 0x64ac8
jmp 0x150b7
cmpl $-0x1, %eax
jne 0x15379
movq 0xecd3(%rip), %rax      # 0x23fe0
movslq (%rax), %rax
subl %eax, %ebx
leal -0x3(%rbx), %ecx
cmpl $-0x3, %ecx
jbe 0x15379
leaq (%r14,%rax,8), %r14
movq (%r14), %rdi
cmpb $0x2d, (%rdi)
jne 0x1532c
cmpb $0x0, 0x1(%rdi)
je 0x15347
movq 0xec85(%rip), %rax      # 0x23fb8
movq (%rax), %rdx
leaq 0x7e01(%rip), %rsi      # 0x1d13e
callq 0x3290
testq %rax, %rax
je 0x153af
cmpl $0x2, %ebx
jb 0x1536a
movq 0x8(%r14), %rdi
movq %rdi, 0xef09(%rip)      # 0x24260
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3100
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x14d37
callq 0x368f
callq 0x3667
callq 0x363f
callq 0x3707
callq 0x36df
callq 0x36b7
movq 0xeec5(%rip), %rdi      # 0x24268
callq 0x3370
xorl %edi, %edi
callq 0x32f0
movq %r14, %rdi
callq 0x372f