// File: hanhwi[P]SimPoint/analysiscode/SimpointOptions.cpp
// Function: SimpointOptions::validateOptions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
bool SimpointOptions::validateOptions(string *errMsg) {
    // exactly one of loadVectorsTxtFmt or loadVectorsBinFmt or loadFVFile must be specified
    int numLoadOptions = (loadVectorsTxtFmtName != "") +
        (loadVectorsBinFmtName != "") + (frequencyVectorFileName != "");
    if ((numLoadOptions == 0) || (numLoadOptions > 1)) {
        *errMsg = "Exactly one of -loadVectorsTxtFmt, -loadVectorsBinFmt, or "
            "-loadFVFile must be specified";
        return false;
    }

    // check that the user has not specified an initial set of centers or labels
    // and also specified -k
    if ((loadInitialLabelsName != "") || (loadInitialCentersName != "")) {
        if (cmdLineParser.findOption("k")->isSpecified()) {
            *errMsg = "Cannot specify -k when loading initial centers or labels; "
                      "the k value comes from the loaded file";
            return false;
        }

        if (cmdLineParser.findOption("numInitSeeds")->isSpecified()) {
            *errMsg = "Cannot specify -numInitSeeds when loading initial "
                "centers or labels; only the given initialization is used";
            return false;
        }

        if (cmdLineParser.findOption("seedkm")->isSpecified()) {
            *errMsg = "Cannot specify -seedkm when loading initial "
                "centers or labels; only the given initialization is used";
            return false;
        }

        if (cmdLineParser.findOption("initkm")->isSpecified()) {
            *errMsg = "Cannot specify -initkm when loading initial "
                "centers or labels; only the given initialization is used";
            return false;
        }

        if (cmdLineParser.findOption("maxK")->isSpecified()) {
            *errMsg = "Cannot specify -maxK when loading initial "
                "centers or labels; only the given initialization is used";
            return false;
        }

        if (cmdLineParser.findOption("bicThreshold")->isSpecified()) {
            *errMsg = "Should not specify -bicThreshold when loading initial "
                "centers or labels, as only the given centers are used (no "
                "search is performed)";
            return false;
        }

        // if the user did specify an initialization, find the k value from the
        // user-provided file
        learnKFromFile = true;
        useBinarySearch = false;

        numInitSeeds = 1;
    }


    // if using binary search, maxK must be specified
    if (useBinarySearch && (! cmdLineParser.findOption("maxK")->isSpecified())) {
        *errMsg = "When -k \"search\" is used, -maxK must also be specified";
        return false;
    }

    // if not using binary search, maxK has no effect
    if ((! useBinarySearch) && cmdLineParser.findOption("maxK")->isSpecified()) {
        *errMsg = "When specific values are given for -k, -maxK has no effect "
            "and should not be specified";
        return false;
    }

    // if loading from projected data and specifying -dim, -dim has no effect
    bool preProjected = (loadVectorsTxtFmtName != "") || (loadVectorsBinFmtName != "");
    if (preProjected) {
        if (cmdLineParser.findOption("dim")->isSpecified()) {
            *errMsg = "When loading pre-projected data with -loadVectorsTxtFmt or "
                      "-loadVectorsBinFmt, -dim has no effect and should not be specified";
            return false;
        }

    }

    if (cmdLineParser.findOption("seedproj")->isSpecified()) {
        if (preProjected) {
            *errMsg = "When loading pre-projected data with -loadVectorsTxtFmt or "
                      "-loadVectorsBinFmt, -seedproj has no effect and should "
                      "not be specified";
            return false;
        }

        if ((loadProjMatrixTxtFmtName != "") || (loadProjMatrixBinFmtName != "")) {
            *errMsg = "Loading a projection matrix and specifying a projection "
                "seed are incompatible options";
            return false;
        }
    }


    // noProject has no effect with seedproj and loading pre-projected data
    if (useNoProjection) {
        if ((saveProjMatrixTxtFmtName != "") || (saveProjMatrixBinFmtName != "")) {
            *errMsg = "No projection matrix is used when using -dim noProject; "
                "-saveProjMatrixTxtFmt and -saveProjMatrixBinFmt have no effect";
            return false;
        }

        if (cmdLineParser.findOption("seedproj")->isSpecified()) {
            *errMsg = "No projection matrix is used when using -dim noProject; "
                "-seedproj has no effect";
            return false;
        }
    }

    // if loading simpoint-vector data, no projection matrix is used
    if (((loadProjMatrixTxtFmtName != "") || (loadProjMatrixBinFmtName != "") ||
         (saveProjMatrixTxtFmtName != "") || (saveProjMatrixBinFmtName != "")) &&
        ((loadVectorsTxtFmtName != "") || (loadVectorsBinFmtName != ""))) {
        *errMsg = "Cannot load or save a projection matrix when vectors are "
            "loaded with -loadVectorsTxtFmt or -loadVectorsBinFmt";
        return false;
    }


    // -FVDim and -numFVs must be specified together, and only with -loadFVFile
    bool fvd_spec = cmdLineParser.findOption("FVDim")->isSpecified();
    bool nfv_spec = cmdLineParser.findOption("numFVs")->isSpecified();
    if ((fvd_spec || nfv_spec) && preProjected) {
        *errMsg = "When loading with -loadVectorsTxtFmt or -loadVectorsBinFmt,"
                  "-numFVs and -FVDim have no effect and should not be specified";
        return false;
    }
    if ((fvd_spec && (! nfv_spec)) || ((! fvd_spec) && nfv_spec)) {
        *errMsg = "Both -numFVs and -FVDim must be specified together";
        return false;
    }

    // check that the user has not specified two projection matrices
    if ((loadProjMatrixTxtFmtName != "") && (loadProjMatrixBinFmtName != "")) {
        *errMsg = "Only one of -loadProjMatrixTxtFmt and -loadProjMatrixBinFmt "
            "may be specified";
        return false;
    }

    // check that the user has not specified a projection matrix with
    // pre-projected data
    if (preProjected && ((loadProjMatrixTxtFmtName != "") ||
                (loadProjMatrixBinFmtName != ""))) {
        *errMsg = "Loading a projection matrix has no effect on data loaded with "
                  "-loadVectorsTxtFmt or -loadVectorsBinFmt";
        return false;
    }

    // check that the user has not specified the k-means initialization type and
    // an initial set of labels
    if (cmdLineParser.findOption("initkm")->isSpecified() &&
        ((loadInitialLabelsName != "") || (loadInitialCentersName != ""))) {
        *errMsg = "Loading initial labels or centers is incompatible with "
                  "specifying the k-means initialization method";
        return false;
    }

    // loading initial centers and labels is incompatible
    if ((loadInitialLabelsName != "") && (loadInitialCentersName != "")) {
        *errMsg = "Cannot specify both -loadInitCtrs and -loadInitLabels";
        return false;
    }

    // fixed length vectors setting should be consistent with loading data from
    // pre-projected data files, which may have non-uniform weights
    if ((! cmdLineParser.findOption("fixedLength")->isSpecified()) && preProjected) {
        *errMsg = "You should specify the -fixedLength option (on or off) "
                  "explicitly when using -loadVectorsTxtFmt or -loadVectorsBinFmt";
        return false;
    }

    // assume that if the user provides weights, they want fixed-length = off
    if (loadVectorWeightsName != "") {
        fixedLength = "off";
    }

    // fixedLength and loadVectorWeights are incompatible
    if ((fixedLength == "on") && 
            cmdLineParser.findOption("loadVectorWeights")->isSpecified()) {
        *errMsg = "Fixed-length vectors (-fixedLength on) is incompatible "
                  "with -loadVectorWeights";
        return false;
    }

    // check that if the user specifies a sample seed, he also specifies the
    // sample size
    if (cmdLineParser.findOption("seedsample")->isSpecified() &&
            (! cmdLineParser.findOption("sampleSize")->isSpecified())) {
        *errMsg = "When specifying -seedsample, you must also specify -sampleSize";
        return false;
    }

    // coveragePct only has an effect on two options
    if (cmdLineParser.findOption("coveragePct")->isSpecified() &&
        ((saveSimpointWeightsName == "") && (saveSimpointsName == ""))) {
        *errMsg = "When specifying -coveragePct, you must also specify "
            "-saveSimpoints and/or -saveSimpointWeights";
        return false;
    }

    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5a0, %rsp            # imm = 0x5A0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x338(%rbp)
addq $0x248, %rdi            # imm = 0x248
leaq 0xa2f3(%rip), %rsi      # 0x331ff
callq 0x7b70
movq -0x338(%rbp), %rdi
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x32c(%rbp)
addq $0x268, %rdi            # imm = 0x268
leaq 0xa2ce(%rip), %rsi      # 0x331ff
callq 0x7b70
movq -0x338(%rbp), %rdi
movb %al, %cl
movl -0x32c(%rbp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
addl %ecx, %eax
movl %eax, -0x328(%rbp)
leaq 0xa2a5(%rip), %rsi      # 0x331ff
callq 0x7b70
movb %al, %cl
movl -0x328(%rbp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
addl %ecx, %eax
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x1c(%rbp)
je 0x28f7e
cmpl $0x1, -0x1c(%rbp)
jle 0x28f97
movq -0x18(%rbp), %rdi
leaq 0xc8b2(%rip), %rsi      # 0x3583b
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq -0x338(%rbp), %rdi
addq $0x228, %rdi            # imm = 0x228
leaq 0xa253(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x28fd8
movq -0x338(%rbp), %rdi
addq $0x208, %rdi            # imm = 0x208
leaq 0xa235(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x28fd8
jmp 0x2952e
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x348(%rbp)
leaq -0x41(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq 0x56a0
movq -0x340(%rbp), %rdx
leaq 0xb0d0(%rip), %rsi      # 0x340da
leaq -0x40(%rbp), %rdi
callq 0x74e0
jmp 0x29015
movq -0x348(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x75d0
movq %rax, -0x350(%rbp)
jmp 0x2902e
movq -0x350(%rbp), %rdi
callq 0x2c020
movb %al, -0x351(%rbp)
jmp 0x29042
leaq -0x40(%rbp), %rdi
callq 0x5788
leaq -0x41(%rbp), %rdi
callq 0x53e0
movb -0x351(%rbp), %al
testb $0x1, %al
jne 0x29060
jmp 0x290aa
movq -0x18(%rbp), %rdi
leaq 0xc828(%rip), %rsi      # 0x35893
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2909c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5788
leaq -0x41(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x368(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0x360(%rbp)
callq 0x56a0
movq -0x360(%rbp), %rdx
leaq 0xb384(%rip), %rsi      # 0x34460
leaq -0x78(%rbp), %rdi
callq 0x74e0
jmp 0x290e7
movq -0x368(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x75d0
movq %rax, -0x370(%rbp)
jmp 0x29100
movq -0x370(%rbp), %rdi
callq 0x2c020
movb %al, -0x371(%rbp)
jmp 0x29114
leaq -0x78(%rbp), %rdi
callq 0x5788
leaq -0x79(%rbp), %rdi
callq 0x53e0
movb -0x371(%rbp), %al
testb $0x1, %al
jne 0x29132
jmp 0x2917c
movq -0x18(%rbp), %rdi
leaq 0xc7b7(%rip), %rsi      # 0x358f4
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2916e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x5788
leaq -0x79(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x388(%rbp)
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x56a0
movq -0x380(%rbp), %rdx
leaq 0xc4bc(%rip), %rsi      # 0x3566d
leaq -0xa0(%rbp), %rdi
callq 0x74e0
jmp 0x291bf
movq -0x388(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x75d0
movq %rax, -0x390(%rbp)
jmp 0x291db
movq -0x390(%rbp), %rdi
callq 0x2c020
movb %al, -0x391(%rbp)
jmp 0x291ef
leaq -0xa0(%rbp), %rdi
callq 0x5788
leaq -0xa1(%rbp), %rdi
callq 0x53e0
movb -0x391(%rbp), %al
testb $0x1, %al
jne 0x29213
jmp 0x29263
movq -0x18(%rbp), %rdi
leaq 0xc741(%rip), %rsi      # 0x3595f
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29252
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5788
leaq -0xa1(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x3a8(%rbp)
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x56a0
movq -0x3a0(%rbp), %rdx
leaq 0xb5fe(%rip), %rsi      # 0x34896
leaq -0xc8(%rbp), %rdi
callq 0x74e0
jmp 0x292a6
movq -0x3a8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x75d0
movq %rax, -0x3b0(%rbp)
jmp 0x292c2
movq -0x3b0(%rbp), %rdi
callq 0x2c020
movb %al, -0x3b1(%rbp)
jmp 0x292d6
leaq -0xc8(%rbp), %rdi
callq 0x5788
leaq -0xc9(%rbp), %rdi
callq 0x53e0
movb -0x3b1(%rbp), %al
testb $0x1, %al
jne 0x292fa
jmp 0x2934a
movq -0x18(%rbp), %rdi
leaq 0xc6bf(%rip), %rsi      # 0x359c4
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29339
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x5788
leaq -0xc9(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x3c8(%rbp)
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0x56a0
movq -0x3c0(%rbp), %rdx
leaq 0xb056(%rip), %rsi      # 0x343d5
leaq -0xf0(%rbp), %rdi
callq 0x74e0
jmp 0x2938d
movq -0x3c8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x75d0
movq %rax, -0x3d0(%rbp)
jmp 0x293a9
movq -0x3d0(%rbp), %rdi
callq 0x2c020
movb %al, -0x3d1(%rbp)
jmp 0x293bd
leaq -0xf0(%rbp), %rdi
callq 0x5788
leaq -0xf1(%rbp), %rdi
callq 0x53e0
movb -0x3d1(%rbp), %al
testb $0x1, %al
jne 0x293e1
jmp 0x29431
movq -0x18(%rbp), %rdi
leaq 0xc63d(%rip), %rsi      # 0x35a29
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29420
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x5788
leaq -0xf1(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x3e8(%rbp)
leaq -0x119(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x56a0
movq -0x3e0(%rbp), %rdx
leaq 0xb237(%rip), %rsi      # 0x3469d
leaq -0x118(%rbp), %rdi
callq 0x74e0
jmp 0x29474
movq -0x3e8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x75d0
movq %rax, -0x3f0(%rbp)
jmp 0x29490
movq -0x3f0(%rbp), %rdi
callq 0x2c020
movb %al, -0x3f1(%rbp)
jmp 0x294a4
leaq -0x118(%rbp), %rdi
callq 0x5788
leaq -0x119(%rbp), %rdi
callq 0x53e0
movb -0x3f1(%rbp), %al
testb $0x1, %al
jne 0x294c8
jmp 0x29518
movq -0x18(%rbp), %rdi
leaq 0xc5b9(%rip), %rsi      # 0x35a8c
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29507
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x5788
leaq -0x119(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rax
movb $0x1, 0x31(%rax)
movb $0x0, 0x30(%rax)
movl $0x1, 0x6c(%rax)
movq -0x338(%rbp), %rax
movb 0x30(%rax), %cl
movb $0x0, -0x142(%rbp)
movb $0x0, -0x143(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x3f2(%rbp)
je 0x295e6
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x408(%rbp)
leaq -0x141(%rbp), %rdi
movq %rdi, -0x400(%rbp)
callq 0x56a0
movq -0x400(%rbp), %rdx
movb $0x1, -0x142(%rbp)
leaq 0xae42(%rip), %rsi      # 0x343d5
leaq -0x140(%rbp), %rdi
callq 0x74e0
jmp 0x295a1
movq -0x408(%rbp), %rdi
movb $0x1, -0x143(%rbp)
leaq -0x140(%rbp), %rsi
callq 0x75d0
movq %rax, -0x410(%rbp)
jmp 0x295c4
movq -0x410(%rbp), %rdi
callq 0x2c020
movb %al, -0x411(%rbp)
jmp 0x295d8
movb -0x411(%rbp), %al
xorb $-0x1, %al
movb %al, -0x3f2(%rbp)
movb -0x3f2(%rbp), %al
movb %al, -0x412(%rbp)
testb $0x1, -0x143(%rbp)
jne 0x295fd
jmp 0x29609
leaq -0x140(%rbp), %rdi
callq 0x5788
testb $0x1, -0x142(%rbp)
jne 0x29614
jmp 0x29620
leaq -0x141(%rbp), %rdi
callq 0x53e0
movb -0x412(%rbp), %al
testb $0x1, %al
jne 0x2962c
jmp 0x29694
movq -0x18(%rbp), %rdi
leaq 0xc4da(%rip), %rsi      # 0x35b11
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29678
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
testb $0x1, -0x143(%rbp)
jne 0x2966a
jmp 0x29676
leaq -0x140(%rbp), %rdi
callq 0x5788
jmp 0x29678
testb $0x1, -0x142(%rbp)
jne 0x29683
jmp 0x2968f
leaq -0x141(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rax
movb 0x30(%rax), %cl
movb $0x0, -0x16a(%rbp)
movb $0x0, -0x16b(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x413(%rbp)
jne 0x2974c
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x428(%rbp)
leaq -0x169(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x56a0
movq -0x420(%rbp), %rdx
movb $0x1, -0x16a(%rbp)
leaq 0xacdc(%rip), %rsi      # 0x343d5
leaq -0x168(%rbp), %rdi
callq 0x74e0
jmp 0x29707
movq -0x428(%rbp), %rdi
movb $0x1, -0x16b(%rbp)
leaq -0x168(%rbp), %rsi
callq 0x75d0
movq %rax, -0x430(%rbp)
jmp 0x2972a
movq -0x430(%rbp), %rdi
callq 0x2c020
movb %al, -0x431(%rbp)
jmp 0x2973e
movb -0x431(%rbp), %al
movb %al, -0x413(%rbp)
jmp 0x2974c
movb -0x413(%rbp), %al
movb %al, -0x432(%rbp)
testb $0x1, -0x16b(%rbp)
jne 0x29763
jmp 0x2976f
leaq -0x168(%rbp), %rdi
callq 0x5788
testb $0x1, -0x16a(%rbp)
jne 0x2977a
jmp 0x29786
leaq -0x169(%rbp), %rdi
callq 0x53e0
movb -0x432(%rbp), %al
testb $0x1, %al
jne 0x29792
jmp 0x297fa
movq -0x18(%rbp), %rdi
leaq 0xc3ab(%rip), %rsi      # 0x35b48
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x297de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
testb $0x1, -0x16b(%rbp)
jne 0x297d0
jmp 0x297dc
leaq -0x168(%rbp), %rdi
callq 0x5788
jmp 0x297de
testb $0x1, -0x16a(%rbp)
jne 0x297e9
jmp 0x297f5
leaq -0x169(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rdi
addq $0x248, %rdi            # imm = 0x248
leaq 0x99f0(%rip), %rsi      # 0x331ff
callq 0x7b70
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x433(%rbp)
jne 0x29843
movq -0x338(%rbp), %rdi
addq $0x268, %rdi            # imm = 0x268
leaq 0x99c7(%rip), %rsi      # 0x331ff
callq 0x7b70
movb %al, -0x433(%rbp)
movb -0x433(%rbp), %al
andb $0x1, %al
movb %al, -0x16c(%rbp)
testb $0x1, -0x16c(%rbp)
je 0x29947
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x448(%rbp)
leaq -0x191(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0x56a0
movq -0x440(%rbp), %rdx
leaq 0xaa12(%rip), %rsi      # 0x342a5
leaq -0x190(%rbp), %rdi
callq 0x74e0
jmp 0x298a1
movq -0x448(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x75d0
movq %rax, -0x450(%rbp)
jmp 0x298bd
movq -0x450(%rbp), %rdi
callq 0x2c020
movb %al, -0x451(%rbp)
jmp 0x298d1
leaq -0x190(%rbp), %rdi
callq 0x5788
leaq -0x191(%rbp), %rdi
callq 0x53e0
movb -0x451(%rbp), %al
testb $0x1, %al
jne 0x298f5
jmp 0x29945
movq -0x18(%rbp), %rdi
leaq 0xc29f(%rip), %rsi      # 0x35b9f
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29934
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x5788
leaq -0x191(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
jmp 0x29947
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x468(%rbp)
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0x460(%rbp)
callq 0x56a0
movq -0x460(%rbp), %rdx
leaq 0xbd54(%rip), %rsi      # 0x356d0
leaq -0x1b8(%rbp), %rdi
callq 0x74e0
jmp 0x2998a
movq -0x468(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x75d0
movq %rax, -0x470(%rbp)
jmp 0x299a6
movq -0x470(%rbp), %rdi
callq 0x2c020
movb %al, -0x471(%rbp)
jmp 0x299ba
leaq -0x1b8(%rbp), %rdi
callq 0x5788
leaq -0x1b9(%rbp), %rdi
callq 0x53e0
movb -0x471(%rbp), %al
testb $0x1, %al
jne 0x299e1
jmp 0x29a93
testb $0x1, -0x16c(%rbp)
je 0x29a3a
movq -0x18(%rbp), %rdi
leaq 0xc228(%rip), %rsi      # 0x35c1d
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29a29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x5788
leaq -0x1b9(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rdi
addq $0x2a8, %rdi            # imm = 0x2A8
leaq 0x97b0(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29a78
movq -0x338(%rbp), %rdi
addq $0x288, %rdi            # imm = 0x288
leaq 0x9792(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29a78
jmp 0x29a91
movq -0x18(%rbp), %rdi
leaq 0xc21d(%rip), %rsi      # 0x35ca0
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
jmp 0x29a93
movq -0x338(%rbp), %rax
testb $0x1, 0x28(%rax)
je 0x29be4
movq -0x338(%rbp), %rdi
addq $0x1c8, %rdi            # imm = 0x1C8
leaq 0x9746(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29ae2
movq -0x338(%rbp), %rdi
addq $0x1e8, %rdi            # imm = 0x1E8
leaq 0x9728(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29ae2
jmp 0x29afb
movq -0x18(%rbp), %rdi
leaq 0xc209(%rip), %rsi      # 0x35cf6
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x488(%rbp)
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x480(%rbp)
callq 0x56a0
movq -0x480(%rbp), %rdx
leaq 0xbba0(%rip), %rsi      # 0x356d0
leaq -0x1e0(%rbp), %rdi
callq 0x74e0
jmp 0x29b3e
movq -0x488(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x75d0
movq %rax, -0x490(%rbp)
jmp 0x29b5a
movq -0x490(%rbp), %rdi
callq 0x2c020
movb %al, -0x491(%rbp)
jmp 0x29b6e
leaq -0x1e0(%rbp), %rdi
callq 0x5788
leaq -0x1e1(%rbp), %rdi
callq 0x53e0
movb -0x491(%rbp), %al
testb $0x1, %al
jne 0x29b92
jmp 0x29be2
movq -0x18(%rbp), %rdi
leaq 0xc1d0(%rip), %rsi      # 0x35d6d
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29bd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x5788
leaq -0x1e1(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
jmp 0x29be4
movq -0x338(%rbp), %rdi
addq $0x2a8, %rdi            # imm = 0x2A8
leaq 0x9606(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29c5e
movq -0x338(%rbp), %rdi
addq $0x288, %rdi            # imm = 0x288
leaq 0x95e8(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29c5e
movq -0x338(%rbp), %rdi
addq $0x1c8, %rdi            # imm = 0x1C8
leaq 0x95ca(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29c5e
movq -0x338(%rbp), %rdi
addq $0x1e8, %rdi            # imm = 0x1E8
leaq 0x95ac(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29c5e
jmp 0x29cb5
movq -0x338(%rbp), %rdi
addq $0x248, %rdi            # imm = 0x248
leaq 0x958c(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29c9c
movq -0x338(%rbp), %rdi
addq $0x268, %rdi            # imm = 0x268
leaq 0x956e(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29c9c
jmp 0x29cb5
movq -0x18(%rbp), %rdi
leaq 0xc116(%rip), %rsi      # 0x35dbd
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x4a8(%rbp)
leaq -0x209(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
callq 0x56a0
movq -0x4a0(%rbp), %rdx
leaq 0xb8a1(%rip), %rsi      # 0x3558b
leaq -0x208(%rbp), %rdi
callq 0x74e0
jmp 0x29cf8
movq -0x4a8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x75d0
movq %rax, -0x4b0(%rbp)
jmp 0x29d14
movq -0x4b0(%rbp), %rdi
callq 0x2c020
movb %al, -0x4b1(%rbp)
jmp 0x29d28
leaq -0x208(%rbp), %rdi
callq 0x5788
leaq -0x209(%rbp), %rdi
callq 0x53e0
movb -0x4b1(%rbp), %cl
movq -0x338(%rbp), %rax
andb $0x1, %cl
movb %cl, -0x1e2(%rbp)
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x4c8(%rbp)
leaq -0x231(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0x56a0
movq -0x4c0(%rbp), %rdx
leaq 0xb78e(%rip), %rsi      # 0x35512
leaq -0x230(%rbp), %rdi
callq 0x74e0
jmp 0x29d92
movq -0x4c8(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x75d0
movq %rax, -0x4d0(%rbp)
jmp 0x29dae
movq -0x4d0(%rbp), %rdi
callq 0x2c020
movb %al, -0x4d1(%rbp)
jmp 0x29dc2
leaq -0x230(%rbp), %rdi
callq 0x5788
leaq -0x231(%rbp), %rdi
callq 0x53e0
movb -0x4d1(%rbp), %al
andb $0x1, %al
movb %al, -0x20a(%rbp)
testb $0x1, -0x1e2(%rbp)
jne 0x29dfe
testb $0x1, -0x20a(%rbp)
je 0x29e92
testb $0x1, -0x16c(%rbp)
je 0x29e92
movq -0x18(%rbp), %rdi
leaq 0xc015(%rip), %rsi      # 0x35e2b
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29e4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x5788
leaq -0x209(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29e81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x5788
leaq -0x231(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
testb $0x1, -0x1e2(%rbp)
je 0x29ea4
testb $0x1, -0x20a(%rbp)
je 0x29eb6
testb $0x1, -0x1e2(%rbp)
jne 0x29ecf
testb $0x1, -0x20a(%rbp)
je 0x29ecf
movq -0x18(%rbp), %rdi
leaq 0xbfe3(%rip), %rsi      # 0x35ea4
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq -0x338(%rbp), %rdi
addq $0x2a8, %rdi            # imm = 0x2A8
leaq 0x931b(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29eef
jmp 0x29f28
movq -0x338(%rbp), %rdi
addq $0x288, %rdi            # imm = 0x288
leaq 0x92fb(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29f0f
jmp 0x29f28
movq -0x18(%rbp), %rdi
leaq 0xbfbd(%rip), %rsi      # 0x35ed7
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
testb $0x1, -0x16c(%rbp)
je 0x29f88
movq -0x338(%rbp), %rdi
addq $0x2a8, %rdi            # imm = 0x2A8
leaq 0x92b9(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29f6f
movq -0x338(%rbp), %rdi
addq $0x288, %rdi            # imm = 0x288
leaq 0x929b(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x29f6f
jmp 0x29f88
movq -0x18(%rbp), %rdi
leaq 0xbfaa(%rip), %rsi      # 0x35f24
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x4e8(%rbp)
leaq -0x259(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x56a0
movq -0x4e0(%rbp), %rdx
leaq 0xa8d9(%rip), %rsi      # 0x34896
leaq -0x258(%rbp), %rdi
callq 0x74e0
jmp 0x29fcb
movq -0x4e8(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x75d0
movq %rax, -0x4f0(%rbp)
jmp 0x29fe7
movq -0x4f0(%rbp), %rdi
callq 0x2c020
movb %al, -0x4f1(%rbp)
jmp 0x29ffb
movb -0x4f1(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x4f2(%rbp)
jne 0x2a010
jmp 0x2a083
movq -0x338(%rbp), %rdi
addq $0x228, %rdi            # imm = 0x228
leaq 0x91da(%rip), %rsi      # 0x331ff
callq 0x7b70
movb %al, -0x4f3(%rbp)
jmp 0x2a032
movb -0x4f3(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x4f4(%rbp)
jne 0x2a077
jmp 0x2a047
movq -0x338(%rbp), %rdi
addq $0x208, %rdi            # imm = 0x208
leaq 0x91a3(%rip), %rsi      # 0x331ff
callq 0x7b70
movb %al, -0x4f5(%rbp)
jmp 0x2a069
movb -0x4f5(%rbp), %al
movb %al, -0x4f4(%rbp)
jmp 0x2a077
movb -0x4f4(%rbp), %al
movb %al, -0x4f2(%rbp)
movb -0x4f2(%rbp), %al
movb %al, -0x4f6(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x5788
leaq -0x259(%rbp), %rdi
callq 0x53e0
movb -0x4f6(%rbp), %al
testb $0x1, %al
jne 0x2a0b3
jmp 0x2a103
movq -0x18(%rbp), %rdi
leaq 0xbecd(%rip), %rsi      # 0x35f8b
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2a0f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x5788
leaq -0x259(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rdi
addq $0x228, %rdi            # imm = 0x228
leaq 0x90e7(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x2a123
jmp 0x2a15c
movq -0x338(%rbp), %rdi
addq $0x208, %rdi            # imm = 0x208
leaq 0x90c7(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x2a143
jmp 0x2a15c
movq -0x18(%rbp), %rdi
leaq 0xbea1(%rip), %rsi      # 0x35fef
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x508(%rbp)
leaq -0x281(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0x56a0
movq -0x500(%rbp), %rdx
leaq 0xb260(%rip), %rsi      # 0x353f1
leaq -0x280(%rbp), %rdi
callq 0x74e0
jmp 0x2a19f
movq -0x508(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x75d0
movq %rax, -0x510(%rbp)
jmp 0x2a1bb
movq -0x510(%rbp), %rdi
callq 0x2c020
movb %al, -0x511(%rbp)
jmp 0x2a1cf
movb -0x511(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x512(%rbp)
jne 0x2a1f0
jmp 0x2a1e4
movb -0x16c(%rbp), %al
movb %al, -0x512(%rbp)
movb -0x512(%rbp), %al
movb %al, -0x513(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x5788
leaq -0x281(%rbp), %rdi
callq 0x53e0
movb -0x513(%rbp), %al
testb $0x1, %al
jne 0x2a220
jmp 0x2a270
movq -0x18(%rbp), %rdi
leaq 0xbdfa(%rip), %rsi      # 0x36025
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2a25f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x5788
leaq -0x281(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rdi
addq $0x2c8, %rdi            # imm = 0x2C8
leaq 0x8f7a(%rip), %rsi      # 0x331ff
callq 0x7b70
testb $0x1, %al
jne 0x2a290
jmp 0x2a2aa
movq -0x338(%rbp), %rdi
addq $0xa8, %rdi
leaq 0xb148(%rip), %rsi      # 0x353ed
callq 0x5530
movq -0x338(%rbp), %rdi
addq $0xa8, %rdi
leaq 0x953a(%rip), %rsi      # 0x337f9
callq 0x7b40
movb %al, %cl
movb $0x0, -0x2aa(%rbp)
movb $0x0, -0x2ab(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x514(%rbp)
jne 0x2a2e6
jmp 0x2a375
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x528(%rbp)
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x56a0
movq -0x520(%rbp), %rdx
movb $0x1, -0x2aa(%rbp)
leaq 0xbdb6(%rip), %rsi      # 0x360d8
leaq -0x2a8(%rbp), %rdi
callq 0x74e0
jmp 0x2a330
movq -0x528(%rbp), %rdi
movb $0x1, -0x2ab(%rbp)
leaq -0x2a8(%rbp), %rsi
callq 0x75d0
movq %rax, -0x530(%rbp)
jmp 0x2a353
movq -0x530(%rbp), %rdi
callq 0x2c020
movb %al, -0x531(%rbp)
jmp 0x2a367
movb -0x531(%rbp), %al
movb %al, -0x514(%rbp)
jmp 0x2a375
movb -0x514(%rbp), %al
movb %al, -0x532(%rbp)
testb $0x1, -0x2ab(%rbp)
jne 0x2a38c
jmp 0x2a398
leaq -0x2a8(%rbp), %rdi
callq 0x5788
testb $0x1, -0x2aa(%rbp)
jne 0x2a3a3
jmp 0x2a3af
leaq -0x2a9(%rbp), %rdi
callq 0x53e0
movb -0x532(%rbp), %al
testb $0x1, %al
jne 0x2a3bb
jmp 0x2a423
movq -0x18(%rbp), %rdi
leaq 0xbcd5(%rip), %rsi      # 0x3609b
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2a407
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
testb $0x1, -0x2ab(%rbp)
jne 0x2a3f9
jmp 0x2a405
leaq -0x2a8(%rbp), %rdi
callq 0x5788
jmp 0x2a407
testb $0x1, -0x2aa(%rbp)
jne 0x2a412
jmp 0x2a41e
leaq -0x2a9(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x548(%rbp)
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0x56a0
movq -0x540(%rbp), %rdx
movb $0x0, -0x2fa(%rbp)
movb $0x0, -0x2fb(%rbp)
leaq 0xb2c2(%rip), %rsi      # 0x35728
leaq -0x2d0(%rbp), %rdi
callq 0x74e0
jmp 0x2a474
movq -0x548(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x75d0
movq %rax, -0x550(%rbp)
jmp 0x2a490
movq -0x550(%rbp), %rdi
callq 0x2c020
movb %al, -0x551(%rbp)
jmp 0x2a4a4
movb -0x551(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x552(%rbp)
jne 0x2a4bc
jmp 0x2a54b
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x568(%rbp)
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x560(%rbp)
callq 0x56a0
movq -0x560(%rbp), %rdx
movb $0x1, -0x2fa(%rbp)
leaq 0xbc26(%rip), %rsi      # 0x3611e
leaq -0x2f8(%rbp), %rdi
callq 0x74e0
jmp 0x2a506
movq -0x568(%rbp), %rdi
movb $0x1, -0x2fb(%rbp)
leaq -0x2f8(%rbp), %rsi
callq 0x75d0
movq %rax, -0x570(%rbp)
jmp 0x2a529
movq -0x570(%rbp), %rdi
callq 0x2c020
movb %al, -0x571(%rbp)
jmp 0x2a53d
movb -0x571(%rbp), %al
xorb $-0x1, %al
movb %al, -0x552(%rbp)
movb -0x552(%rbp), %al
movb %al, -0x572(%rbp)
testb $0x1, -0x2fb(%rbp)
jne 0x2a562
jmp 0x2a56e
leaq -0x2f8(%rbp), %rdi
callq 0x5788
testb $0x1, -0x2fa(%rbp)
jne 0x2a579
jmp 0x2a585
leaq -0x2f9(%rbp), %rdi
callq 0x53e0
leaq -0x2d0(%rbp), %rdi
callq 0x5788
leaq -0x2d1(%rbp), %rdi
callq 0x53e0
movb -0x572(%rbp), %al
testb $0x1, %al
jne 0x2a5ac
jmp 0x2a64a
movq -0x18(%rbp), %rdi
leaq 0xbb33(%rip), %rsi      # 0x360ea
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2a639
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2a62d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2a614
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
testb $0x1, -0x2fb(%rbp)
jne 0x2a606
jmp 0x2a612
leaq -0x2f8(%rbp), %rdi
callq 0x5788
jmp 0x2a614
testb $0x1, -0x2fa(%rbp)
jne 0x2a61f
jmp 0x2a62b
leaq -0x2f9(%rbp), %rdi
callq 0x53e0
jmp 0x2a62d
leaq -0x2d0(%rbp), %rdi
callq 0x5788
leaq -0x2d1(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movq -0x338(%rbp), %rax
addq $0x2e8, %rax            # imm = 0x2E8
movq %rax, -0x588(%rbp)
leaq -0x321(%rbp), %rdi
movq %rdi, -0x580(%rbp)
callq 0x56a0
movq -0x580(%rbp), %rdx
leaq 0x9e81(%rip), %rsi      # 0x34500
leaq -0x320(%rbp), %rdi
callq 0x74e0
jmp 0x2a68d
movq -0x588(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x75d0
movq %rax, -0x590(%rbp)
jmp 0x2a6a9
movq -0x590(%rbp), %rdi
callq 0x2c020
movb %al, -0x591(%rbp)
jmp 0x2a6bd
movb -0x591(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x592(%rbp)
jne 0x2a6d2
jmp 0x2a745
movq -0x338(%rbp), %rdi
addq $0xe8, %rdi
leaq 0x8b18(%rip), %rsi      # 0x331ff
callq 0x7b40
movb %al, -0x593(%rbp)
jmp 0x2a6f4
movb -0x593(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x594(%rbp)
jne 0x2a709
jmp 0x2a739
movq -0x338(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
leaq 0x8ae1(%rip), %rsi      # 0x331ff
callq 0x7b40
movb %al, -0x595(%rbp)
jmp 0x2a72b
movb -0x595(%rbp), %al
movb %al, -0x594(%rbp)
jmp 0x2a739
movb -0x594(%rbp), %al
movb %al, -0x592(%rbp)
movb -0x592(%rbp), %al
movb %al, -0x596(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x5788
leaq -0x321(%rbp), %rdi
callq 0x53e0
movb -0x596(%rbp), %al
testb $0x1, %al
jne 0x2a775
jmp 0x2a7bf
movq -0x18(%rbp), %rdi
leaq 0xb9a9(%rip), %rsi      # 0x36129
callq 0x5530
movb $0x0, -0x1(%rbp)
jmp 0x2a7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2a7b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x5788
leaq -0x321(%rbp), %rdi
callq 0x53e0
jmp 0x2a7d1
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x5a0, %rsp            # imm = 0x5A0
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x5690
nopw (%rax,%rax)