// File: /workspace/github_cpp_makefile_star2_O1/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, 0xa87c3(%rip) # imm = 0xC000
movq %rsi, %r14
movl %edi, %ebx
movb $0x20, %cl
movb %cl, 0x4fd66(%rip)      # 0x64928
xorl %eax, %eax
movq %rax, 0x4fd6d(%rip)     # 0x64938
movq $0x78, 0x4fca2(%rip) # 0x64878
movb %cl, 0x4fd4d(%rip)      # 0x64929
movq %rax, 0x4fc9d(%rip)     # 0x64880
movq %rax, 0x4fc9e(%rip)     # 0x64888
movq %rax, 0x4fc9f(%rip)     # 0x64890
movl $0x1, %ecx
movq %rcx, 0x4fcc3(%rip)     # 0x648c0
movb %al, 0x4fd8d(%rip)      # 0x64990
movb %al, 0x4fd84(%rip)      # 0x6498d
movq %rcx, 0x4fd48(%rip)     # 0x64958
movq %rcx, 0x4fd39(%rip)     # 0x64950
movl $0x4000, %edx           # imm = 0x4000
movq %rdx, 0x4fc75(%rip)     # 0x64898
movq %rdx, 0x4fc76(%rip)     # 0x648a0
movq %rcx, 0x4fd2f(%rip)     # 0x64960
movb %al, 0x4fbd1(%rip)      # 0x64808
movb %al, 0x4fbce(%rip)      # 0x6480b
movq $0x64, 0x4fc98(%rip) # 0x648e0
movb $0x1, %dl
movb %dl, 0x4fbba(%rip)      # 0x6480a
movb %al, 0x4fd2b(%rip)      # 0x64981
movb %dl, 0x4fd2d(%rip)      # 0x64989
movb %dl, 0x4fd20(%rip)      # 0x64982
movb %dl, 0x4fd24(%rip)      # 0x6498c
movb %dl, 0x4fd1d(%rip)      # 0x6498b
movb %dl, 0x4fd1a(%rip)      # 0x6498e
movb %dl, 0x4fd10(%rip)      # 0x6498a
movb %al, 0x4fd07(%rip)      # 0x64987
movb %al, 0x4fd00(%rip)      # 0x64986
movb %al, 0x4fd03(%rip)      # 0x6498f
movq %rcx, 0x4fbc5(%rip)     # 0x64858
movq $0x2, 0x4fcd2(%rip) # 0x64970
movq %rax, 0x4fd8b(%rip)     # 0x64a30
movq %rax, 0x96054(%rip)     # 0xaad00
movq %rax, 0x4fe25(%rip)     # 0x64ad8
movq %rax, 0x4fe5e(%rip)     # 0x64b18
movb %al, 0x4fcc0(%rip)      # 0x64980
movq (%rsi), %rdi
movl $0x2f, %esi
callq 0x32a0
movq %rax, 0xa86c4(%rip)     # 0xbd398
testq %rax, %rax
je 0x14cde
incq %rax
jmp 0x14ce1
movq (%r14), %rax
movabsq $0xffffffffff80, %rcx   # imm = 0xFFFFFFFFFF80
movq %rax, 0xa86a6(%rip)     # 0xbd398
leaq 0x873e(%rip), %r15      # 0x1d437
leaq 0x7994(%rip), %rbp      # 0x1c694
movq 0xf299(%rip), %r13      # 0x23fa0
leaq 0x4fd32(%rip), %r12     # 0x64a40
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 0x14f60
movslq (%rbp,%rcx,4), %rax
addq %rbp, %rax
jmpq *%rax
movb $0x1, 0x4fc40(%rip)     # 0x64980
jmp 0x14d16
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4fc39(%rip)           # 0x64989
jmp 0x14d16
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %rax, 0xa860a(%rip)     # 0xbd370
cmpq $0x4, %rax
jl 0x14d16
jmp 0x14fed
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4fc0c(%rip)           # 0x6498b
jmp 0x14d16
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4fbfd(%rip)           # 0x6498c
jmp 0x14d16
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %rax, 0x4fb3b(%rip)     # 0x648e0
cmpq $0x18, %rax
jl 0x14d16
jmp 0x14fe8
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %r12, %rdi
movq %rax, %rsi
callq 0x3bf2
movq 0x4fc6d(%rip), %rcx     # 0x64a40
shlq $0x17, %rcx
movq %rcx, %rax
sarq $0x17, %rax
cmpq $0xa, %rax
jge 0x14ff2
cmpq $0x1800000, %rcx        # imm = 0x1800000
jne 0x14f2f
movq $0x1, 0x4fac0(%rip) # 0x648c0
jmp 0x14d16
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4fb7c(%rip)           # 0x6498f
jmp 0x14d16
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4fb64(%rip)           # 0x6498a
jmp 0x14d16
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4fb49(%rip)           # 0x64982
jmp 0x14d16
movq (%r13), %rax
cmpb $0x2b, (%rax)
movl $0x78, %eax
movl $0x48, %ecx
cmoveq %rcx, %rax
movq %rax, 0x4fa1e(%rip)     # 0x64878
jmp 0x14d16
incl 0x4fb2f(%rip)           # 0x64994
jmp 0x14d16
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %r12, %rdi
movq %rax, %rsi
callq 0x3bf2
movq 0x4fbb7(%rip), %rax     # 0x64a40
movq %rax, %rcx
shlq $0x17, %rcx
cmpq $0x7800001, %rcx        # imm = 0x7800001
jge 0x15001
andl $0x7f, %eax
movq 0x4fbd9(%rip), %rcx     # 0x64a80
movabsq $0xffffffffff80, %rdx   # imm = 0xFFFFFFFFFF80
andq %rdx, %rcx
orq %rax, %rcx
movq %rcx, 0x4fbc2(%rip)     # 0x64a80
jmp 0x14d16
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %rax, 0x4fa99(%rip)     # 0x64970
cmpq $0x3, %rax
jl 0x14d16
jmp 0x14ff7
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4fa9c(%rip)           # 0x64990
jmp 0x14d16
movq (%r13), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3090
movq %rax, 0x4f94b(%rip)     # 0x64858
cmpq $0x5, %rax
jl 0x14d16
jmp 0x14ffc
movq (%r13), %rax
cmpb $0x2b, (%rax)
sete 0x4fa5d(%rip)           # 0x64987
jmp 0x14d16
cmpq $0x4, %rax
jl 0x14f54
movb $0x32, %cl
subb %al, %cl
movq 0x4fb40(%rip), %rax     # 0x64a80
btsq %rcx, %rax
andq (%rsp), %rax
movq %rax, 0x4fb31(%rip)     # 0x64a80
jmp 0x14d16
movq %rax, 0x4fb7d(%rip)     # 0x64ad8
jmp 0x14d16
cmpl $-0x1, %eax
jne 0x14fe3
movq 0xf074(%rip), %rax      # 0x23fe0
movslq (%rax), %rax
subl %eax, %ebx
leal -0x3(%rbx), %ecx
cmpl $-0x3, %ecx
jbe 0x14fe3
leaq (%r14,%rax,8), %r14
movq (%r14), %r15
leaq 0x7d4a(%rip), %rsi      # 0x1ccd1
movq %r15, %rdi
callq 0x3340
testl %eax, %eax
je 0x14fb1
movq 0xf01e(%rip), %rax      # 0x23fb8
movq (%rax), %rdx
leaq 0x80da(%rip), %rsi      # 0x1d07e
movq %r15, %rdi
callq 0x3290
testq %rax, %rax
je 0x15019
cmpl $0x2, %ebx
jl 0x14fd4
movq 0x8(%r14), %rdi
movq %rdi, 0xf2af(%rip)      # 0x24270
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 0x14996
callq 0x36fb
callq 0x36d3
callq 0x36ab
callq 0x3773
callq 0x374b
callq 0x3723
movq 0xf26b(%rip), %rdi      # 0x24278
callq 0x3380
xorl %edi, %edi
callq 0x32f0
movq %r14, %rdi
callq 0x379b