// File: /workspace/github_cpp_makefile_star2_O3/jackz314[P]bars-to-bwav/./bars-to-bwav.cpp
// Function: main
int main(int argc, char const *argv[])
{
    if(argc < 2){
        cout << "Missing file arguments!" << endl;
        displayHelp();
        return -1;
    }

    if(argc == 2 && string(argv[1]) == "-h"){
        displayHelp();
        return 0;
    }

    vector<string> barsFiles;
    if(filesystem::is_directory(argv[1])){// process a directory of bars files
        filesystem::directory_iterator end_itr;
        filesystem::path p(argv[1]);
        cout << "BARS file to be processed in directory " << argv[1] << ':' << endl;
        for(filesystem::directory_iterator itr(p); itr != end_itr; itr++){
            //only deal with bars files
            if (is_regular_file(itr->path()) && itr->path().extension().generic_string() == ".bars") {
                string fileName = itr->path().string();
                barsFiles.push_back(fileName);
                cout << fileName << endl;
            }
        }

    }else{// process single file
        barsFiles.push_back(argv[1]);
        cout << "BARS file to be processed: " << argv[1] << endl;
    }

    string baseOutputDir;
    if(argc > 2){// have output folder or no overwrite
        if(argc == 4 && string(argv[3]) == "--no-overwrite"){ // have no overwrite and output folder
            baseOutputDir = argv[2];
            OVERWRITE = false;
        }
        if(argc == 3 && string(argv[2]) == "--no-overwrite"){ // only no overwrite
            baseOutputDir = "BWAV-Output/";
            OVERWRITE = false;
        }else{ // only out dir
            cout << '['<<argv[2]<<']' << endl;
            baseOutputDir = argv[2];
        }
        if(baseOutputDir.back() != '/' || baseOutputDir.back() != '\\'){
            baseOutputDir += '/';
        }
    }else{
        baseOutputDir = "BWAV-Output/";
    }

    string spliter = "----------------------------------------";
    
    int totalBWAVCount = 0;

    int countB = 0;
    for(string barsFile : barsFiles){
        ifstream inFile(barsFile, ios::binary);
        if(!inFile){
            cout << "Failed to open BARS file " << barsFile << endl;
            return -2;
        }
        inFile.seekg(0, ios::end);
        streamsize barsSize = inFile.tellg();
        inFile.seekg(0,ios::beg);
        
        cout << spliter << '(' << dec << ++countB << '/' << barsFiles.size() << ')' << spliter << endl;
        cout << "Processing BARS file " << barsFile << " size: " << barsSize << endl;

        vector<char> fBuf(barsSize);
        if(!inFile.read(fBuf.data(), barsSize)){
            //read filed
            cout << "Read file failed." << endl;
        }

        vector<string> audioNames;
        vector<streamoff> startOffsets;

        for (streamoff i = 0; i < barsSize - 4; i+=4){
            //Hex representation of BWAV's header start (BWAV: 0x42 0x57 0x41 0x56)
            if(fBuf[i] == 0x42 && fBuf[i+1] == 0x57 && fBuf[i+2] == 0x41 && fBuf[i+3] == 0x56){
                //matched BWAV, send to start offsets
                startOffsets.push_back(i);
               if(VERBOSE) cout << "Found BWAV at offset 0x" << hex << i <<endl;
            }

            //Hex representation of BARS's AMTA header start (AMTA: 0x41 0x4D 0x54 0x41)
            if(fBuf[i] == 0x41 && fBuf[i+1] == 0x4D && fBuf[i+2] == 0x54 && fBuf[i+3] == 0x41){
                //matched AMTA, send to file names
                streamsize nameLen = 0;
                streamoff nameStart = i+0x48;//start of name string offset +0x48 after start of AMTA tag (possibly after a padding)
                if(fBuf[nameStart] == 0x01){
                    //start is 0x01, skip padding (or something else) of 0x8 to the actual file name
                    nameStart += 0x8;
                    /* for(; nameStart < barsSize; nameStart++){
                        if(fBuf[nameStart] != '\0') break; // start of name, not null
                    } */
                }
                //go to file name end
                for(streamoff j = nameStart; j < barsSize; j++, nameLen++){
                    // cout << "CHAR:[" << fBuf[j] << "]. Int: " << int(fBuf[j]) << endl;
                    if(fBuf[j] == -0x3e){ // some files needs to move start idx forward if -c2 is present, inconsistent
                        // cout << "FOUND -3e" << endl; // c2 in signed byte is -3e
                        nameStart = j + 1;
                        nameLen = -1; // so it's 0 when the next iteration begins
                    }
                    if(fBuf[j] == '\0') break; // end of name, null
                }
                string name = string(fBuf.begin() + nameStart, fBuf.begin() + nameStart + nameLen);
                if(find(audioNames.begin(),audioNames.end(), name) != audioNames.end()){//already exists
                    //deal with duplicates with repeat counter
                    int repeatCounter = 1;
                    while(find(audioNames.begin(),audioNames.end(), name + '-' + to_string(repeatCounter)) != audioNames.end()){
                        repeatCounter++;
                    }
                    name += '-' + to_string(repeatCounter);
                }
                audioNames.push_back(name);
                if(VERBOSE) cout << "Found AMTA tag at offset 0x" << hex << i << " Name: " << name << endl;
            }
        }

        cout << endl << "Found all BWAV files. Total count: " << dec << startOffsets.size() << ". Writing bwav files to " << baseOutputDir << endl;
        
        if(!createDirIfNotExist(baseOutputDir)) return -3;

        if(audioNames.size() < startOffsets.size()){
            cout << "BWAV names count is not the same as BWAV counts!" << endl;
            for(size_t i = 1; i < startOffsets.size() - audioNames.size() + 1; i++){
                audioNames.push_back("extra_" + to_string(i));
            }
        }

        //write bwav files
        string onlyBarsFileName = filesystem::path(barsFile).filename().string();
        string outputDir = onlyBarsFileName.substr(0, onlyBarsFileName.size() - 5) + '/';//remove the extension and add directory slash
        cout << "Output subdirectory: " << outputDir << endl;
        if(!createDirIfNotExist(baseOutputDir + outputDir)) return -3;
        int illegal_counter = 0;
        for(size_t i = 0; i < startOffsets.size(); i++){
            streamoff offset = startOffsets[i];
            streamoff nextOffset;
            if(i+1 == startOffsets.size()){
                nextOffset = barsSize;
            }else{
                nextOffset = startOffsets[i+1];            
            }
            streamsize writeSize = nextOffset - offset;
            string fName = audioNames[i] + ".bwav";
            if(VERBOSE) cout << dec << '(' << i+1 << '/' << startOffsets.size() << ") Writing " << fName << " from offset 0x" << hex << offset << endl;
            string oFilePath = baseOutputDir + outputDir + fName;

            //deal with duplicate file names, already dealt with before, here to deal with pre-existing ones
            if(!OVERWRITE && filesystem::exists(oFilePath)){//don't overwrite
                int repeatCounter = 1;
                string newOFilePath = oFilePath.substr(0,oFilePath.size()-5) + '-';
                while(filesystem::exists(newOFilePath + to_string(repeatCounter) + ".bwav")){//already exists, use another name
                    repeatCounter++;
                }
                oFilePath = newOFilePath + to_string(repeatCounter) + ".bwav";
            }

            fstream oFile(oFilePath, ios::out | ios::binary);
            if(!oFile.write(fBuf.data()+offset, writeSize)){// if failed, probably due to illegal name
                ++illegal_counter;
                oFilePath = baseOutputDir + outputDir + "illegal_name_" + to_string(illegal_counter) + ".bwav";
                fstream oFileRetry(oFilePath, ios::out | ios::binary); // try again
                if(!oFileRetry.write(fBuf.data()+offset, writeSize)){ // still failed
                    cout << "Write bwav failed. Path: [" << oFilePath << "] Count: " << dec << i << " Offset: 0x" << hex << offset << endl;
                }else{
                    ++totalBWAVCount;
                }
                oFileRetry.close();
            }else{
                ++totalBWAVCount;
            }
            oFile.close();
        }
    }

    cout << spliter << spliter << endl;
    cout << "Done! Processed " << dec << barsFiles.size() << " BARS files and generated " << totalBWAVCount << " BWAV files in total." << endl;

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x868, %rsp            # imm = 0x868
cmpl $0x1, %edi
jg 0x187e0
leaq 0xf7d6a(%rip), %rbx     # 0x110500
leaq 0xb7967(%rip), %rsi     # 0xd0104
movl $0x17, %edx
movq %rbx, %rdi
callq 0x84f20
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
callq 0x186b2
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x1ab64
movq %rsi, %r12
movl %edi, %r15d
cmpl $0x2, %edi
jne 0x1883d
movq 0x8(%r12), %rsi
leaq -0x448(%rbp), %r14
leaq -0x658(%rbp), %rdx
movq %r14, %rdi
callq 0x1b2fc
leaq 0xb790f(%rip), %rsi     # 0xd011c
movq %r14, %rdi
callq 0x8da30
movl %eax, %ebx
movq (%r14), %rdi
leaq -0x438(%rbp), %rax
cmpq %rax, %rdi
je 0x18835
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
testl %ebx, %ebx
je 0x1897b
xorps %xmm0, %xmm0
movaps %xmm0, -0x1d0(%rbp)
movq $0x0, -0x1c0(%rbp)
leaq 0x8(%r12), %rbx
leaq -0x448(%rbp), %rdi
movq %rbx, %rsi
movl $0x2, %edx
callq 0x1b33a
leaq -0x448(%rbp), %rdi
callq 0xaa940
movq %rax, %r14
leaq -0x448(%rbp), %rdi
callq 0x1b2b4
cmpb $0x2, %r14b
jne 0x188ed
leaq -0x448(%rbp), %rdi
movq %rbx, %rsi
movl $0x2, %edx
callq 0x1b33a
movl %r15d, -0xa0(%rbp)
leaq 0xf7c52(%rip), %r14     # 0x110500
leaq 0xb786a(%rip), %rsi     # 0xd011f
movl $0x27, %edx
movq %r14, %rdi
callq 0x84f20
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x18987
movq %rbx, %rdi
callq 0x13360
leaq 0xf7c23(%rip), %rdi     # 0x110500
movq %rbx, %rsi
movq %rax, %rdx
callq 0x84f20
jmp 0x1899f
movq (%rbx), %rsi
leaq -0x448(%rbp), %rdi
leaq -0x658(%rbp), %rdx
callq 0x1b2fc
leaq -0x1d0(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x1bd74
leaq -0x438(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18935
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
leaq 0xf7bc4(%rip), %r14     # 0x110500
leaq 0xb780a(%rip), %rsi     # 0xd014d
movl $0x1b, %edx
movq %r14, %rdi
callq 0x84f20
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x18bf3
movq %rbx, %rdi
callq 0x13360
leaq 0xf7b95(%rip), %rdi     # 0x110500
movq %rbx, %rsi
movq %rax, %rdx
callq 0x84f20
jmp 0x18c0b
callq 0x186b2
xorl %ebx, %ebx
jmp 0x1ab64
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x65da0
leaq -0x658(%rbp), %rsi
movb $0x3a, (%rsi)
leaq 0xf7b50(%rip), %rdi     # 0x110500
movl $0x1, %edx
callq 0x84f20
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
movq %r12, -0xe8(%rbp)
leaq -0x190(%rbp), %rdi
leaq -0x448(%rbp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0xa75f0
cmpq $0x0, -0x188(%rbp)
je 0x18bd7
leaq -0x190(%rbp), %r15
leaq -0x658(%rbp), %r13
leaq -0x170(%rbp), %rbx
leaq -0x890(%rbp), %r14
movq %r15, %rdi
callq 0xa6950
movq %rax, %rdi
callq 0xaa940
cmpb $0x1, %al
jne 0x18bb4
movq %r15, %rdi
callq 0xa6950
movq %rax, %rdi
callq 0xb4f50
testq %rax, %rax
setne %cl
cmpq $-0x1, %rdx
setne %sil
andb %cl, %sil
cmpb $0x1, %sil
jne 0x18ab8
leaq -0x860(%rbp), %r12
movq %r12, %rdi
movq %rax, %rsi
movq $-0x1, %rcx
callq 0x8e090
movq %r13, %rdi
movq %r12, %rsi
movl $0x2, %edx
callq 0x1b532
movq -0x860(%rbp), %rdi
leaq -0x850(%rbp), %rax
cmpq %rax, %rdi
je 0x18ac0
movq -0x850(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x18ac0
movq %r13, %rdi
callq 0x1b652
movq %rbx, %rdi
movq %r13, %rsi
leaq -0x860(%rbp), %rdx
callq 0x1b67c
movq %rbx, %rdi
leaq 0xb766b(%rip), %rsi     # 0xd0147
callq 0x8da30
movl %eax, %r12d
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x18b06
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq %r13, %rdi
callq 0x1b2b4
testl %r12d, %r12d
jne 0x18bb4
movq %r15, %rdi
callq 0xa6950
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x648(%rbp), %rax
movq %rax, -0x658(%rbp)
movq %r13, %rdi
callq 0x1b854
leaq -0x1d0(%rbp), %rdi
movq %r13, %rsi
callq 0x1b3c2
movq -0x658(%rbp), %rsi
movq -0x650(%rbp), %rdx
leaq 0xf799d(%rip), %rdi     # 0x110500
callq 0x84f20
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %r12, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
movq -0x658(%rbp), %rdi
leaq -0x648(%rbp), %rax
cmpq %rax, %rdi
je 0x18bb4
movq -0x648(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x1b40e
movq %r14, %rdi
callq 0x1b2b4
cmpq $0x0, -0x188(%rbp)
jne 0x18a2c
leaq -0x448(%rbp), %rdi
callq 0x1b2b4
movq -0xe8(%rbp), %r12
movl -0xa0(%rbp), %r15d
jmp 0x18c36
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x65da0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
leaq 0xf78d7(%rip), %rdi     # 0x110500
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
leaq -0x160(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
cmpl $0x2, %r15d
jne 0x18c74
leaq 0xb751f(%rip), %rcx     # 0xd0178
leaq -0x170(%rbp), %rdi
movl $0xc, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x8c470
jmp 0x18e3e
cmpl $0x3, %r15d
je 0x18d12
cmpl $0x4, %r15d
jne 0x18d68
movq 0x18(%r12), %rsi
leaq -0x448(%rbp), %rdi
leaq -0x658(%rbp), %rdx
callq 0x1b2fc
leaq 0xb74c2(%rip), %rsi     # 0xd0169
leaq -0x448(%rbp), %r14
movq %r14, %rdi
callq 0x8da30
movl %eax, %ebx
movq (%r14), %rdi
leaq -0x438(%rbp), %rax
cmpq %rax, %rdi
je 0x18cd6
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
testl %ebx, %ebx
jne 0x18d68
movq 0x10(%r12), %rbx
leaq -0x170(%rbp), %r14
movq 0x8(%r14), %r15
movq %rbx, %rdi
callq 0x13360
movq %r14, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rbx, %rcx
movq %rax, %r8
callq 0x8c470
movb $0x0, 0xf6760(%rip)     # 0x10f470
jmp 0x18d68
movq 0x10(%r12), %rsi
leaq -0x448(%rbp), %rdi
leaq -0x658(%rbp), %rdx
callq 0x1b2fc
leaq 0xb7438(%rip), %rsi     # 0xd0169
leaq -0x448(%rbp), %r14
movq %r14, %rdi
callq 0x8da30
movl %eax, %ebx
movq (%r14), %rdi
leaq -0x438(%rbp), %rax
cmpq %rax, %rdi
je 0x18d60
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
testl %ebx, %ebx
je 0x1ab78
leaq -0x448(%rbp), %rsi
movb $0x5b, (%rsi)
leaq 0xf7787(%rip), %rdi     # 0x110500
movl $0x1, %edx
callq 0x84f20
movq %rax, %rbx
movq 0x10(%r12), %r14
testq %r14, %r14
je 0x18da8
movq %r14, %rdi
callq 0x13360
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x84f20
jmp 0x18dc1
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x65da0
leaq -0x448(%rbp), %rsi
movb $0x5d, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x84f20
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
movq 0x10(%r12), %rbx
leaq -0x170(%rbp), %r14
movq 0x8(%r14), %r15
movq %rbx, %rdi
callq 0x13360
movq %r14, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rbx, %rcx
movq %rax, %r8
callq 0x8c470
leaq -0x170(%rbp), %rdi
movl $0x2f, %esi
callq 0x8beb0
leaq -0x180(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xb7335(%rip), %rsi     # 0xd0185
leaq 0xb7356(%rip), %rdx     # 0xd01ad
leaq -0x190(%rbp), %rdi
callq 0x1b854
movq -0x1d0(%rbp), %r13
movq -0x1c8(%rbp), %rax
movq %rax, -0x238(%rbp)
cmpq %rax, %r13
je 0x1aa02
leaq -0x438(%rbp), %r14
leaq -0x38(%rbp), %r12
leaq -0x210(%rbp), %rbx
movl $0x0, -0x6c(%rbp)
movl $0x0, -0x10c(%rbp)
movl $0x0, -0x70(%rbp)
leaq -0x200(%rbp), %rax
movq %rax, -0x210(%rbp)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x1bab0
leaq -0x860(%rbp), %rdi
movq %rbx, %rsi
movl $0x4, %edx
callq 0x61910
movq -0x860(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x5, -0x840(%rbp,%rax)
je 0x18f64
movl $0x19, %edx
leaq 0xf75ff(%rip), %rdi     # 0x110500
leaq 0xb72a6(%rip), %rsi     # 0xd01ae
callq 0x84f20
movq -0x210(%rbp), %rsi
movq -0x208(%rbp), %rdx
leaq 0xf75de(%rip), %rdi     # 0x110500
callq 0x84f20
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
movl $0xfffffffe, -0x6c(%rbp) # imm = 0xFFFFFFFE
movl $0x0, -0x74(%rbp)
jmp 0x1a9b0
leaq -0x860(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x6ad40
leaq -0x860(%rbp), %rbx
movq %rbx, %rdi
callq 0x6aad0
movq %rax, -0x108(%rbp)
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x6ad40
movq -0x190(%rbp), %rsi
movq -0x188(%rbp), %rdx
leaq 0xf7552(%rip), %rdi     # 0x110500
callq 0x84f20
movb $0x28, -0x448(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0x448(%rbp), %rsi
callq 0x84f20
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
movl -0x10c(%rbp), %esi
incl %esi
movq %rax, %rdi
movl %esi, -0x10c(%rbp)
callq 0x857f0
movb $0x2f, -0x448(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0x448(%rbp), %rsi
callq 0x84f20
movq -0x1c8(%rbp), %rsi
subq -0x1d0(%rbp), %rsi
sarq $0x5, %rsi
movq %rax, %rdi
callq 0x85820
movb $0x29, -0x448(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0x448(%rbp), %rsi
callq 0x84f20
movq -0x190(%rbp), %rsi
movq -0x188(%rbp), %rdx
movq %rax, %rdi
callq 0x84f20
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
movl $0x15, %edx
leaq 0xf746b(%rip), %rdi     # 0x110500
leaq 0xb712c(%rip), %rsi     # 0xd01c8
callq 0x84f20
movq -0x210(%rbp), %rsi
movq -0x208(%rbp), %rdx
leaq 0xf744a(%rip), %rdi     # 0x110500
callq 0x84f20
movq %rax, %rbx
movl $0x7, %edx
movq %rax, %rdi
leaq 0xb7111(%rip), %rsi     # 0xd01de
callq 0x84f20
movq %rbx, %rdi
movq -0x108(%rbp), %rsi
callq 0x85570
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
leaq -0x228(%rbp), %rdi
movq -0x108(%rbp), %rbx
movq %rbx, %rsi
leaq -0x448(%rbp), %rdx
callq 0x1b464
movq %r13, -0x230(%rbp)
movq -0x228(%rbp), %rsi
leaq -0x860(%rbp), %rdi
movq %rbx, %rdx
callq 0x6a480
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
je 0x1919d
movl $0x11, %edx
leaq 0xf73a1(%rip), %rdi     # 0x110500
leaq 0xb7080(%rip), %rsi     # 0xd01e6
callq 0x84f20
leaq 0xf738e(%rip), %rcx     # 0x110500
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
leaq 0xf7370(%rip), %rdi     # 0x110500
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
xorps %xmm0, %xmm0
movaps %xmm0, -0x100(%rbp)
xorl %eax, %eax
movq %rax, -0xf0(%rbp)
movq %rax, -0xb0(%rbp)
movaps %xmm0, -0xc0(%rbp)
movq %rax, -0x150(%rbp)
cmpq $0x5, %rbx
leaq -0xe0(%rbp), %r13
jl 0x197ce
movq -0x108(%rbp), %rax
leaq -0x4(%rax), %r15
negq %rax
movq %rax, -0xa0(%rbp)
xorl %eax, %eax
movq %r15, -0xe8(%rbp)
movq -0x228(%rbp), %rcx
cmpb $0x42, (%rcx,%rax)
jne 0x192cc
cmpb $0x57, 0x1(%rcx,%rax)
jne 0x192cc
cmpb $0x41, 0x2(%rcx,%rax)
jne 0x192cc
cmpb $0x56, 0x3(%rcx,%rax)
jne 0x192cc
movq -0xb8(%rbp), %rsi
cmpq -0xb0(%rbp), %rsi
je 0x19246
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, -0xb8(%rbp)
jmp 0x19259
leaq -0xc0(%rbp), %rdi
leaq -0x150(%rbp), %rdx
callq 0x1bfce
cmpb $0x1, 0xf6382(%rip)     # 0x10f5e2
jne 0x192cc
movl $0x17, %edx
leaq 0xf7292(%rip), %rdi     # 0x110500
leaq 0xb6f83(%rip), %rsi     # 0xd01f8
callq 0x84f20
leaq 0xf727f(%rip), %rdi     # 0x110500
movq (%rdi), %rax
movq -0x18(%rax), %rax
movl 0x18(%rdi,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rdi,%rax)
movq -0x150(%rbp), %rsi
callq 0x85570
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
movq -0x150(%rbp), %rax
movq -0x228(%rbp), %rsi
cmpb $0x41, (%rsi,%rax)
jne 0x197ba
cmpb $0x4d, 0x1(%rsi,%rax)
jne 0x197ba
cmpb $0x54, 0x2(%rsi,%rax)
jne 0x197ba
cmpb $0x41, 0x3(%rsi,%rax)
jne 0x197ba
leaq 0x48(%rax), %rcx
cmpb $0x1, 0x48(%rsi,%rax)
leaq 0x50(%rax), %rax
cmoveq %rax, %rcx
cmpq -0x108(%rbp), %rcx
jge 0x1935d
leaq 0x1(%rcx), %rax
xorl %edx, %edx
movb -0x1(%rsi,%rax), %dil
cmpb $-0x3e, %dil
movq $-0x1, %r8
cmoveq %r8, %rdx
cmoveq %rax, %rcx
testb %dil, %dil
je 0x1935f
incq %rdx
movq -0xa0(%rbp), %rdi
addq %rax, %rdi
incq %rdi
incq %rax
cmpq $0x1, %rdi
jne 0x19325
jmp 0x1935f
xorl %edx, %edx
addq %rcx, %rsi
addq %rsi, %rdx
movq %r14, -0x448(%rbp)
leaq -0x448(%rbp), %rbx
movq %rbx, %rdi
callq 0x1c10e
movq -0x100(%rbp), %rdi
movq -0xf8(%rbp), %rsi
movq %rbx, %rdx
callq 0x1c188
movq -0xf8(%rbp), %r14
cmpq %r14, %rax
je 0x196da
movl $0x1, %ebx
movq -0x100(%rbp), %r15
movq %r12, -0x48(%rbp)
movq -0x448(%rbp), %rsi
movq -0x440(%rbp), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r12
movq %r12, %rdi
callq 0x1bab0
movq -0x40(%rbp), %rsi
movl $0x1, %ecx
movq %r12, %rdi
xorl %edx, %edx
movl $0x2d, %r8d
callq 0x8c160
movl $0x1, %r12d
cmpl $0xa, %ebx
leaq -0xd0(%rbp), %rdx
jb 0x1943f
movl $0x4, %r12d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0x19436
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x1943c
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x1943f
movl %eax, %ecx
movl $0xd1b71759, %esi       # imm = 0xD1B71759
imulq %rsi, %rcx
shrq $0x2d, %rcx
addl $0x4, %r12d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x19401
addl $-0x3, %r12d
jmp 0x1943f
addl $-0x2, %r12d
jmp 0x1943f
decl %r12d
movl %r12d, %esi
movq %rdx, -0xe0(%rbp)
movq %r13, %rdi
movl $0x2d, %edx
callq 0x8b180
movq -0xe0(%rbp), %rdi
movl %r12d, %esi
movl %ebx, %edx
callq 0x1b9be
movq -0x48(%rbp), %rcx
movl $0xf, %edi
leaq -0x38(%rbp), %r12
cmpq %r12, %rcx
je 0x1947d
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %r8
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x194b5
movl $0xf, %edi
leaq -0xd0(%rbp), %r9
cmpq %r9, %rsi
je 0x194b0
movq -0xd0(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x194c0
leaq -0x48(%rbp), %rdi
callq 0x8ce90
jmp 0x194cc
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x8c810
leaq -0x648(%rbp), %rsi
movq %rsi, -0x658(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x194f9
movq %rdx, -0x658(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x648(%rbp)
jmp 0x194ff
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x650(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq %r15, %rdi
movq %r14, %rsi
leaq -0x658(%rbp), %rdx
callq 0x1c188
movq %rax, %r14
movq -0xf8(%rbp), %r15
movq -0x658(%rbp), %rdi
leaq -0x648(%rbp), %rax
cmpq %rax, %rdi
je 0x1955c
movq -0x648(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x1957e
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x19593
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x1c2d0
cmpq %r15, %r14
je 0x195a6
incl %ebx
movq -0xf8(%rbp), %r14
jmp 0x193a6
movl $0x1, %r14d
cmpl $0xa, %ebx
jb 0x195f7
movl $0x4, %r14d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0x195ee
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x195f4
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x195f7
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x195b9
addl $-0x3, %r14d
jmp 0x195f7
addl $-0x2, %r14d
jmp 0x195f7
decl %r14d
movl %r14d, %esi
movq %r12, -0x48(%rbp)
leaq -0x48(%rbp), %r13
movq %r13, %rdi
movl $0x2d, %edx
callq 0x8b180
movq -0xe8(%rbp), %r15
movq -0x48(%rbp), %rdi
movl %r14d, %esi
movl %ebx, %edx
callq 0x1b9be
movl $0x1, %edx
movq %r13, %rdi
xorl %esi, %esi
movl $0x2d, %ecx
callq 0x8c2c0
leaq -0x648(%rbp), %r14
movq %r14, -0x658(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0xe0(%rbp), %r13
je 0x1966f
movq %rdx, -0x658(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x648(%rbp)
jmp 0x19676
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, -0x650(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x658(%rbp), %rsi
movq -0x650(%rbp), %rdx
leaq -0x448(%rbp), %rdi
callq 0x8ce90
movq -0x658(%rbp), %rdi
cmpq %r14, %rdi
je 0x196c5
movq -0x648(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x196da
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x1c2d0
leaq -0x100(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x1b3c2
cmpb $0x1, 0xf5eee(%rip)     # 0x10f5e2
jne 0x19791
movl $0x1b, %edx
leaq 0xf6dfa(%rip), %rdi     # 0x110500
leaq 0xb6b03(%rip), %rsi     # 0xd0210
callq 0x84f20
leaq 0xf6de7(%rip), %rdi     # 0x110500
movq (%rdi), %rax
movq -0x18(%rax), %rax
movl 0x18(%rdi,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rdi,%rax)
movq -0x150(%rbp), %rsi
callq 0x85570
movq %rax, %rbx
movl $0x7, %edx
movq %rax, %rdi
leaq 0xb6ae0(%rip), %rsi     # 0xd022c
callq 0x84f20
movq -0x448(%rbp), %rsi
movq -0x440(%rbp), %rdx
movq %rbx, %rdi
callq 0x84f20
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
movq -0x448(%rbp), %rdi
leaq -0x438(%rbp), %r14
cmpq %r14, %rdi
je 0x197b3
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x150(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x150(%rbp)
cmpq %r15, %rax
jl 0x191f4
leaq 0xf6d2b(%rip), %rcx     # 0x110500
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
leaq 0xf6d0d(%rip), %rdi     # 0x110500
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
movq %rax, %rbx
movl $0x23, %edx
movq %rax, %rdi
leaq 0xb6a22(%rip), %rsi     # 0xd0234
callq 0x84f20
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq -0xb8(%rbp), %rsi
subq -0xc0(%rbp), %rsi
sarq $0x3, %rsi
movq %rbx, %rdi
callq 0x85820
movq %rax, %rbx
movl $0x18, %edx
movq %rax, %rdi
leaq 0xb6a00(%rip), %rsi     # 0xd0258
callq 0x84f20
movq -0x170(%rbp), %rsi
movq -0x168(%rbp), %rdx
movq %rbx, %rdi
callq 0x84f20
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
leaq -0x170(%rbp), %rdi
callq 0x185ec
movq -0xc0(%rbp), %rdi
testb %al, %al
je 0x19b7c
movq -0xf8(%rbp), %rax
subq -0x100(%rbp), %rax
sarq $0x5, %rax
movq -0xb8(%rbp), %rcx
subq %rdi, %rcx
sarq $0x3, %rcx
cmpq %rcx, %rax
jae 0x19add
movl $0x30, %edx
leaq 0xf6c13(%rip), %rdi     # 0x110500
leaq 0xb697d(%rip), %rsi     # 0xd0271
callq 0x84f20
leaq 0xf6c00(%rip), %rcx     # 0x110500
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
leaq 0xf6be2(%rip), %rdi     # 0x110500
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
movq -0xb8(%rbp), %rax
subq -0xc0(%rbp), %rax
sarq $0x3, %rax
movq -0xf8(%rbp), %rcx
subq -0x100(%rbp), %rcx
sarq $0x5, %rcx
subq %rcx, %rax
incq %rax
cmpq $0x2, %rax
jb 0x19add
movl $0x1, %ebx
movl $0x1, %esi
cmpq $0xa, %rbx
jb 0x199be
movl $0x4, %esi
movq %rbx, %rcx
cmpq $0x63, %rcx
jbe 0x199b7
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x199bc
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x199be
movq %rcx, %rax
movabsq $0x346dc5d63886594b, %rdx # imm = 0x346DC5D63886594B
mulq %rdx
shrq $0xb, %rdx
addl $0x4, %esi
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x19977
addl $-0x3, %esi
jmp 0x199be
addl $-0x2, %esi
jmp 0x199be
decl %esi
movl %esi, %esi
leaq -0x648(%rbp), %rax
movq %rax, -0x658(%rbp)
leaq -0x658(%rbp), %r15
movq %r15, %rdi
xorl %edx, %edx
callq 0x8b180
movq -0x658(%rbp), %rdi
movl -0x650(%rbp), %esi
movq %rbx, %rdx
callq 0x1ba30
movl $0x6, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0xb689a(%rip), %rcx     # 0xd02a2
callq 0x8c810
movq %r14, -0x448(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x19a36
movq %rdx, -0x448(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x438(%rbp)
jmp 0x19a3d
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, -0x440(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x100(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x1bd74
movq -0x448(%rbp), %rdi
cmpq %r14, %rdi
je 0x19a85
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x658(%rbp), %rdi
leaq -0x648(%rbp), %rax
cmpq %rax, %rdi
je 0x19aa7
movq -0x648(%rbp), %rsi
incq %rsi
callq 0x1c2d0
incq %rbx
movq -0xb8(%rbp), %rax
subq -0xc0(%rbp), %rax
sarq $0x3, %rax
movq -0xf8(%rbp), %rcx
subq -0x100(%rbp), %rcx
sarq $0x5, %rcx
subq %rcx, %rax
incq %rax
cmpq %rax, %rbx
jb 0x19964
leaq -0x658(%rbp), %rdi
leaq -0x210(%rbp), %rsi
movl $0x2, %edx
callq 0x1b234
movq -0x650(%rbp), %rcx
testq %rcx, %rcx
je 0x19b96
movq -0x638(%rbp), %rax
movl %eax, %edx
notb %dl
leaq -0x658(%rbp), %rsi
testb $0x3, %dl
je 0x19b6e
movl %eax, %edx
andl $0x3, %edx
jne 0x19b96
movq -0x658(%rbp), %rdx
cmpb $0x2f, -0x1(%rdx,%rcx)
je 0x19b96
testb $0x3, %al
jne 0x19b68
leaq -0x638(%rbp), %rbx
movq %rbx, %rdi
callq 0xb4130
movq -0x638(%rbp), %rcx
leaq -0x30(%rax), %rsi
addq $-0x10, %rax
testb $0x3, %cl
leaq -0x658(%rbp), %rcx
cmovneq %rcx, %rsi
cmovneq %rbx, %rax
movq (%rax), %rax
notl %eax
testb $0x3, %al
jne 0x19b96
leaq -0x448(%rbp), %rdi
callq 0x1b8f2
jmp 0x19ba2
movl $0xfffffffd, -0x6c(%rbp) # imm = 0xFFFFFFFD
movl $0x0, -0x74(%rbp)
movq -0x230(%rbp), %r13
jmp 0x1a975
leaq -0x448(%rbp), %rdi
callq 0x1b652
movq -0x448(%rbp), %rsi
movq %r12, -0x48(%rbp)
movq -0x440(%rbp), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r15
movq %r15, %rdi
callq 0x1b854
leaq -0x448(%rbp), %rbx
movq %rbx, %rdi
callq 0x1b2b4
leaq -0x658(%rbp), %rdi
callq 0x1b2b4
movq -0x40(%rbp), %rcx
addq $-0x5, %rcx
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x8e090
movq -0x440(%rbp), %rsi
movl $0x1, %ecx
movq %rbx, %rdi
xorl %edx, %edx
movl $0x2f, %r8d
callq 0x8c160
leaq -0xd0(%rbp), %rsi
movq %rsi, -0xe0(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x19c3f
movq %rdx, -0xe0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd0(%rbp)
jmp 0x19c45
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xd8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x448(%rbp), %rdi
cmpq %r14, %rdi
je 0x19c7a
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movl $0x15, %edx
leaq 0xf687a(%rip), %rdi     # 0x110500
leaq 0xb661c(%rip), %rsi     # 0xd02a9
callq 0x84f20
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
leaq 0xf6859(%rip), %rdi     # 0x110500
callq 0x84f20
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
leaq -0x448(%rbp), %rbx
movq %rbx, %rdi
leaq -0x170(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq 0x1b4ce
movq %rbx, %rdi
callq 0x185ec
movl %eax, -0x74(%rbp)
movq -0x448(%rbp), %rdi
cmpq %r14, %rdi
je 0x19d19
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
cmpb $0x0, -0x74(%rbp)
je 0x1a929
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
subq %rax, %rcx
je 0x1a930
sarq $0x3, %rcx
xorl %r14d, %r14d
movl $0x0, -0x110(%rbp)
leaq 0x1(%r14), %rdx
movq -0x108(%rbp), %r13
cmpq %rcx, %rdx
je 0x19d5f
movq (%rax,%rdx,8), %r13
movq %rdx, -0xe8(%rbp)
movq (%rax,%r14,8), %rax
movq %rax, -0xa0(%rbp)
movq -0x100(%rbp), %rax
movq %r14, %rcx
shlq $0x5, %rcx
leaq -0x140(%rbp), %rdx
movq %rdx, -0x150(%rbp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x150(%rbp), %rbx
movq %rbx, %rdi
callq 0x1bab0
movq %rbx, %rdi
leaq 0xb650d(%rip), %rsi     # 0xd02bf
callq 0x8cfd0
cmpb $0x1, 0xf5824(%rip)     # 0x10f5e2
jne 0x19ece
leaq 0xf6735(%rip), %rdi     # 0x110500
movq (%rdi), %rax
movq -0x18(%rax), %rax
movl 0x18(%rdi,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rdi,%rax)
movb $0x28, -0x448(%rbp)
movl $0x1, %edx
leaq -0x448(%rbp), %rsi
callq 0x84f20
movq %rax, %rdi
movq -0xe8(%rbp), %rsi
callq 0x85820
movb $0x2f, -0x448(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0x448(%rbp), %rsi
callq 0x84f20
movq -0xb8(%rbp), %rsi
subq -0xc0(%rbp), %rsi
sarq $0x3, %rsi
movq %rax, %rdi
callq 0x85820
movq %rax, %rbx
movl $0xa, %edx
movq %rax, %rdi
leaq 0xb6477(%rip), %rsi     # 0xd02c5
callq 0x84f20
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdx
movq %rbx, %rdi
callq 0x84f20
movq %rax, %rbx
movl $0xf, %edx
movq %rax, %rdi
leaq 0xb6455(%rip), %rsi     # 0xd02d0
callq 0x84f20
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq %rbx, %rdi
movq -0xa0(%rbp), %rsi
callq 0x85570
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
leaq -0x448(%rbp), %rbx
movq %rbx, %rdi
leaq -0x170(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq 0x1b4ce
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdx
movq %rbx, %rdi
callq 0x8ce90
leaq -0x120(%rbp), %rsi
movq %rsi, -0x130(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x19f31
movq %rdx, -0x130(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x120(%rbp)
jmp 0x19f37
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x128(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x448(%rbp), %rdi
leaq -0x438(%rbp), %rax
cmpq %rax, %rdi
je 0x19f73
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
cmpb $0x0, 0xf54f6(%rip)     # 0x10f470
jne 0x1a427
leaq -0x448(%rbp), %r15
movq %r15, %rdi
leaq -0x130(%rbp), %rsi
movl $0x2, %edx
callq 0x1b234
movq %r15, %rdi
callq 0xaa940
movq %rax, %rbx
movq %r15, %rdi
callq 0x1b2b4
testb %bl, %bl
je 0x1a427
movzbl %bl, %eax
cmpl $0xff, %eax
je 0x1a427
movq -0x128(%rbp), %rcx
addq $-0x5, %rcx
leaq -0x448(%rbp), %rbx
movq %rbx, %rdi
leaq -0x130(%rbp), %rsi
xorl %edx, %edx
callq 0x8e090
movq -0x440(%rbp), %rsi
movl $0x1, %ecx
movq %rbx, %rdi
xorl %edx, %edx
movl $0x2d, %r8d
callq 0x8c160
leaq -0x648(%rbp), %rsi
movq %rsi, -0x658(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1a033
movq %rdx, -0x658(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x648(%rbp)
jmp 0x1a039
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x650(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x448(%rbp), %rdi
leaq -0x438(%rbp), %rax
cmpq %rax, %rdi
je 0x1a075
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movl $0x1, %r15d
movl $0x1, %ebx
cmpl $0xa, %r15d
jb 0x1a0c8
movl $0x4, %ebx
movl %r15d, %eax
cmpl $0x63, %eax
jbe 0x1a0c1
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x1a0c6
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x1a0c8
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebx
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x1a08e
addl $-0x3, %ebx
jmp 0x1a0c8
addl $-0x2, %ebx
jmp 0x1a0c8
decl %ebx
movl %ebx, %esi
leaq -0x1a0(%rbp), %rax
movq %rax, -0x1b0(%rbp)
leaq -0x1b0(%rbp), %r12
movq %r12, %rdi
movl $0x2d, %edx
callq 0x8b180
movq -0x1b0(%rbp), %rdi
movl %ebx, %esi
movl %r15d, %edx
callq 0x1b9be
movq -0x658(%rbp), %rcx
movq -0x650(%rbp), %r8
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x8c810
leaq -0x88(%rbp), %rsi
movq %rsi, -0x98(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0x98(%rbp), %rdi
je 0x1a14e
movq %rdx, -0x98(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x88(%rbp)
jmp 0x1a154
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x90(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xb614a(%rip), %rsi     # 0xd02bf
callq 0x8cfd0
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1a19e
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x1a1a4
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x448(%rbp), %r12
movq %r12, %rdi
leaq -0x68(%rbp), %rsi
movl $0x2, %edx
callq 0x1b532
movq %r12, %rdi
callq 0xaa940
movq %rax, %rbx
movq %r12, %rdi
callq 0x1b2b4
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1a1ff
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x1a221
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x1a243
movq -0x1a0(%rbp), %rsi
incq %rsi
callq 0x1c2d0
testb %bl, %bl
je 0x1a259
movzbl %bl, %eax
cmpl $0xff, %eax
je 0x1a259
incl %r15d
jmp 0x1a07b
movl $0x1, %ebx
cmpl $0xa, %r15d
jb 0x1a2a6
movl $0x4, %ebx
movl %r15d, %eax
cmpl $0x63, %eax
jbe 0x1a29f
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x1a2a4
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x1a2a6
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebx
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x1a26c
addl $-0x3, %ebx
jmp 0x1a2a6
addl $-0x2, %ebx
jmp 0x1a2a6
decl %ebx
movq %r14, %r12
movl %ebx, %esi
leaq -0x88(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq -0x98(%rbp), %r14
movq %r14, %rdi
movl $0x2d, %edx
callq 0x8b180
movq -0x98(%rbp), %rdi
movl %ebx, %esi
movl %r15d, %edx
callq 0x1b9be
movq -0x658(%rbp), %rcx
movq -0x650(%rbp), %r8
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x8c810
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq %r12, %r14
je 0x1a31f
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x1a325
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x68(%rbp), %rdi
leaq 0xb5f78(%rip), %rsi     # 0xd02bf
callq 0x8cfd0
leaq -0x438(%rbp), %rbx
movq %rbx, -0x448(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1a37c
movq %rdx, -0x448(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x438(%rbp)
jmp 0x1a382
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, -0x440(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x130(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x8b870
movq -0x448(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1a3ca
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1a3e3
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x1a405
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x658(%rbp), %rdi
leaq -0x648(%rbp), %rax
cmpq %rax, %rdi
je 0x1a427
movq -0x648(%rbp), %rsi
incq %rsi
callq 0x1c2d0
leaq -0x448(%rbp), %rdi
leaq -0x130(%rbp), %rsi
movl $0x14, %edx
callq 0x61310
movq -0xa0(%rbp), %rax
subq %rax, %r13
movq -0x228(%rbp), %rsi
addq %rax, %rsi
leaq -0x438(%rbp), %rdi
movq %r13, %r12
movq %r13, %rdx
callq 0x84ba0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
je 0x1a4cf
leaq -0x1b0(%rbp), %rbx
movq %rbx, %rdi
leaq -0x170(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq 0x1b4ce
movq %rbx, %rdi
leaq 0xb5e46(%rip), %rsi     # 0xd02e0
callq 0x8cfd0
leaq -0x88(%rbp), %rsi
movq %rsi, -0x98(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1a4de
movq %rdx, -0x98(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x88(%rbp)
jmp 0x1a4e4
incl -0x70(%rbp)
leaq -0x448(%rbp), %r14
jmp 0x1a89c
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movl -0x110(%rbp), %esi
incl %esi
movq 0x8(%rax), %rdx
movq %rdx, -0x90(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl %esi, %r15d
negl %r15d
cmovsl %esi, %r15d
movl $0x1, %ebx
cmpl $0xa, %r15d
jb 0x1a55d
movl $0x4, %ebx
movl %r15d, %eax
cmpl $0x63, %eax
jbe 0x1a556
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x1a55b
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x1a55d
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebx
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x1a523
addl $-0x3, %ebx
jmp 0x1a55d
addl $-0x2, %ebx
jmp 0x1a55d
decl %ebx
movl %esi, -0x110(%rbp)
movl %esi, %r13d
shrl $0x1f, %r13d
leal (%rbx,%r13), %esi
leaq -0x1e0(%rbp), %rax
movq %rax, -0x1f0(%rbp)
leaq -0x1f0(%rbp), %rdi
movl $0x2d, %edx
callq 0x8b180
movl %r13d, %edi
addq -0x1f0(%rbp), %rdi
movl %ebx, %esi
movl %r15d, %edx
callq 0x1b9be
movq -0x98(%rbp), %rcx
movl $0xf, %edi
leaq -0x88(%rbp), %rax
cmpq %rax, %rcx
je 0x1a5c0
movq -0x88(%rbp), %rdi
movq -0x90(%rbp), %r8
movq -0x1f0(%rbp), %rsi
movq -0x1e8(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
leaq -0x658(%rbp), %r13
jbe 0x1a602
movl $0xf, %edi
leaq -0x1e0(%rbp), %r9
cmpq %r9, %rsi
je 0x1a5fd
movq -0x1e0(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x1a610
leaq -0x98(%rbp), %rdi
callq 0x8ce90
jmp 0x1a620
leaq -0x1f0(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x8c810
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x1a641
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x1a647
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x68(%rbp), %rdi
leaq 0xb5c51(%rip), %rsi     # 0xd02bf
callq 0x8cfd0
leaq -0x648(%rbp), %rbx
movq %rbx, -0x658(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1a6a3
movq %rdx, -0x658(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x648(%rbp)
jmp 0x1a6a9
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, -0x650(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x130(%rbp), %rdi
movq %r13, %rsi
callq 0x8b870
movq -0x658(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1a6ed
movq -0x648(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1a706
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x1f0(%rbp), %rdi
leaq -0x1e0(%rbp), %rax
cmpq %rax, %rdi
je 0x1a728
movq -0x1e0(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x1a74a
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x1a76c
movq -0x1a0(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq %r14, %r15
movq %r13, %rdi
leaq -0x130(%rbp), %rsi
movl $0x14, %edx
callq 0x61310
movq -0x228(%rbp), %rsi
addq -0xa0(%rbp), %rsi
leaq -0x648(%rbp), %rdi
movq %r12, %rdx
callq 0x84ba0
leaq -0x448(%rbp), %r14
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
je 0x1a889
movl $0x1a, %edx
leaq 0xf5d3b(%rip), %rdi     # 0x110500
leaq 0xb5b22(%rip), %rsi     # 0xd02ee
callq 0x84f20
movq -0x130(%rbp), %rsi
movq -0x128(%rbp), %rdx
leaq 0xf5d1a(%rip), %rdi     # 0x110500
callq 0x84f20
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0xb5b0c(%rip), %rsi     # 0xd0309
callq 0x84f20
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x85820
movq %rax, %rbx
movl $0xb, %edx
movq %rax, %rdi
leaq 0xb5adf(%rip), %rsi     # 0xd0313
callq 0x84f20
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq %rbx, %rdi
movq -0xa0(%rbp), %rsi
callq 0x85570
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
jmp 0x1a88c
incl -0x70(%rbp)
movq %r13, %rdi
callq 0x62310
movq %r13, %rdi
callq 0x62ae0
movq %r14, %rdi
callq 0x62310
leaq -0x448(%rbp), %rdi
callq 0x62ae0
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x1a8d2
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
leaq -0x38(%rbp), %r12
je 0x1a8f8
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0xc0(%rbp), %rax
movq -0xb8(%rbp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
movq -0xe8(%rbp), %rdx
movq %rdx, %r14
cmpq %rcx, %rdx
jb 0x19d4b
leaq -0x438(%rbp), %r14
jmp 0x1a930
movl $0xfffffffd, -0x6c(%rbp) # imm = 0xFFFFFFFD
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
movq -0x230(%rbp), %r13
je 0x1a959
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x1a96e
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0xc0(%rbp), %rdi
testq %rdi, %rdi
je 0x1a989
movq -0xb0(%rbp), %rsi
subq %rdi, %rsi
callq 0x1c2d0
leaq -0x100(%rbp), %rdi
callq 0x1b5d6
movq -0x228(%rbp), %rdi
testq %rdi, %rdi
je 0x1a9b0
movq -0x218(%rbp), %rsi
subq %rdi, %rsi
callq 0x1c2d0
leaq -0x860(%rbp), %rdi
callq 0x62640
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x1a9de
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x1c2d0
cmpb $0x0, -0x74(%rbp)
je 0x1ab11
addq $0x20, %r13
cmpq -0x238(%rbp), %r13
leaq -0x210(%rbp), %rbx
jne 0x18eab
jmp 0x1aa09
movl $0x0, -0x70(%rbp)
movq -0x190(%rbp), %rsi
movq -0x188(%rbp), %rdx
leaq 0xf5ae2(%rip), %rdi     # 0x110500
callq 0x84f20
movq -0x190(%rbp), %rsi
movq -0x188(%rbp), %rdx
movq %rax, %rdi
callq 0x84f20
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
movq %rax, %rdi
callq 0x83ff0
leaq 0xf5a96(%rip), %rbx     # 0x110500
leaq 0xb58ae(%rip), %rsi     # 0xd031f
movl $0x10, %edx
movq %rbx, %rdi
callq 0x84f20
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq -0x1c8(%rbp), %rsi
subq -0x1d0(%rbp), %rsi
sarq $0x5, %rsi
movq %rbx, %rdi
callq 0x85820
movq %rax, %rbx
leaq 0xb5879(%rip), %rsi     # 0xd0330
movl $0x1a, %edx
movq %rax, %rdi
callq 0x84f20
movq %rbx, %rdi
movl -0x70(%rbp), %esi
callq 0x857f0
movq %rax, %rbx
leaq 0xb5872(%rip), %rsi     # 0xd034b
movl $0x15, %edx
movq %rax, %rdi
callq 0x84f20
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x66070
movsbl %al, %esi
movq %rbx, %rdi
callq 0x84a20
xorl %ebx, %ebx
movq %rax, %rdi
callq 0x83ff0
jmp 0x1ab14
movl -0x6c(%rbp), %ebx
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rax
cmpq %rax, %rdi
je 0x1ab36
movq -0x180(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x1ab58
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x1c2d0
leaq -0x1d0(%rbp), %rdi
callq 0x1b5d6
movl %ebx, %eax
addq $0x868, %rsp            # imm = 0x868
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0x170(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0xb55ee(%rip), %rcx     # 0xd0178
movl $0xc, %r8d
xorl %esi, %esi
callq 0x8c470
movb $0x0, 0xf48d2(%rip)     # 0x10f470
jmp 0x18e2d
jmp 0x1ad5c
jmp 0x1ad5c
movq %rax, %rbx
jmp 0x1ac5f
jmp 0x1accc
movq %rax, %rbx
leaq -0x438(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1b220
movq -0x438(%rbp), %rsi
jmp 0x1b218
jmp 0x1acc4
jmp 0x1acc4
jmp 0x1ad5c
jmp 0x1accc
jmp 0x1acc4
jmp 0x1af48
jmp 0x1af7a
movq %rax, %rbx
movq -0x448(%rbp), %rdi
cmpq %r14, %rdi
je 0x1af3f
movq -0x438(%rbp), %rsi
jmp 0x1af37
jmp 0x1af15
movq %rax, %rbx
movq -0x448(%rbp), %rdi
cmpq %r14, %rdi
je 0x1ac47
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1ac47
movq %rax, %rbx
leaq -0x38(%rbp), %r12
jmp 0x1b157
movq %rax, %rbx
leaq -0x448(%rbp), %rdi
callq 0x1b2b4
leaq -0x658(%rbp), %rdi
callq 0x1b2b4
jmp 0x1b16c
movq %rax, %rbx
movq -0x658(%rbp), %rdi
cmpq %r14, %rdi
je 0x1b088
movq -0x648(%rbp), %rsi
jmp 0x1b079
jmp 0x1b085
jmp 0x1b0a3
movq %rax, %rbx
movq -0x860(%rbp), %rdi
leaq -0x850(%rbp), %rax
cmpq %rax, %rdi
je 0x1af4b
movq -0x850(%rbp), %rsi
jmp 0x1ad9b
jmp 0x1af48
movq %rax, %rbx
jmp 0x1b220
movq %rax, %rbx
jmp 0x1af5c
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1acf5
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1acf5
movq %rax, %rbx
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x1b002
movq -0x88(%rbp), %rsi
jmp 0x1aff5
jmp 0x1afff
movq %rax, %rbx
movq -0x448(%rbp), %rdi
leaq -0x438(%rbp), %rax
cmpq %rax, %rdi
je 0x1b0e4
movq -0x438(%rbp), %rsi
jmp 0x1b020
jmp 0x1aeda
jmp 0x1b0a3
jmp 0x1af7a
jmp 0x1b02d
jmp 0x1b02d
movq %rax, %rbx
jmp 0x1b1fe
movq %rax, %rbx
leaq -0x658(%rbp), %rdi
callq 0x1b2b4
jmp 0x1af4b
jmp 0x1add1
movq %rax, %rbx
movq -0x658(%rbp), %rdi
leaq -0x648(%rbp), %rax
cmpq %rax, %rdi
je 0x1af4b
movq -0x648(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1af4b
jmp 0x1aeda
movq %rax, %rbx
leaq -0x448(%rbp), %rdi
callq 0x1b2b4
jmp 0x1b0e4
movq %rax, %rbx
jmp 0x1b135
movq %rax, %rbx
jmp 0x1b1ba
movq %rax, %rbx
jmp 0x1b1dc
jmp 0x1af7a
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1ae09
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1ae09
jmp 0x1af72
movq %rax, %rbx
jmp 0x1ae2b
movq %rax, %rbx
movq -0x1f0(%rbp), %rdi
leaq -0x1e0(%rbp), %rax
cmpq %rax, %rdi
je 0x1ae2b
movq -0x1e0(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x1ae57
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1ae57
jmp 0x1af72
movq %rax, %rbx
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x1b0d8
movq -0x1a0(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1b0d8
movq %rax, %rbx
jmp 0x1b193
jmp 0x1af7a
movq %rax, %rbx
movq -0x448(%rbp), %rdi
cmpq %r14, %rdi
je 0x1aeb2
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1aeb2
movq %rax, %rbx
movq -0x658(%rbp), %rdi
leaq -0x648(%rbp), %rax
cmpq %rax, %rdi
je 0x1b16c
movq -0x648(%rbp), %rsi
jmp 0x1b164
jmp 0x1b0a3
movq %rax, %rbx
jmp 0x1b0e4
jmp 0x1b10c
movq %rax, %rbx
movq -0x448(%rbp), %rdi
leaq -0x438(%rbp), %rax
cmpq %rax, %rdi
je 0x1b10f
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1b10f
movq %rax, %rbx
jmp 0x1af3f
movq %rax, %rbx
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x1af3f
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x1c2d0
leaq -0x38(%rbp), %r12
jmp 0x1b135
movq %rax, %rbx
movq -0x188(%rbp), %rdi
testq %rdi, %rdi
je 0x1af5c
callq 0x1b952
leaq -0x448(%rbp), %rdi
callq 0x1b2b4
jmp 0x1b220
jmp 0x1b02d
movq %rax, %rbx
jmp 0x1b0d8
movq %rax, %rbx
jmp 0x1b16c
movq %rax, %rbx
jmp 0x1af9b
movq %rax, %rbx
jmp 0x1afdb
movq %rax, %rbx
leaq -0x448(%rbp), %rdi
callq 0x1b2b4
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1afb9
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1afb9
movq %rax, %rbx
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x1afdb
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x1b002
movq -0x1a0(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1b002
movq %rax, %rbx
movq -0x658(%rbp), %rdi
leaq -0x648(%rbp), %rax
cmpq %rax, %rdi
je 0x1b0e4
movq -0x648(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1b0e4
movq %rax, %rbx
jmp 0x1b1ae
movq %rax, %rbx
jmp 0x1b05f
movq %rax, %rbx
movq -0x658(%rbp), %rdi
leaq -0x648(%rbp), %rax
cmpq %rax, %rdi
je 0x1b05f
movq -0x648(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x1b088
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1b088
jmp 0x1b085
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x1b0a6
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1b0a6
movq %rax, %rbx
leaq -0x438(%rbp), %rax
movq -0x448(%rbp), %rdi
cmpq %rax, %rdi
je 0x1b16c
movq -0x438(%rbp), %rsi
jmp 0x1b164
movq %rax, %rbx
leaq -0x658(%rbp), %rdi
callq 0x62ae0
leaq -0x448(%rbp), %rdi
callq 0x62ae0
leaq -0x38(%rbp), %r12
leaq -0x120(%rbp), %r15
movq -0x130(%rbp), %rdi
cmpq %r15, %rdi
je 0x1b113
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x1c2d0
jmp 0x1b113
movq %rax, %rbx
leaq -0x38(%rbp), %r12
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x1b135
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x1b157
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x1b16c
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0xc0(%rbp), %rdi
testq %rdi, %rdi
je 0x1b187
movq -0xb0(%rbp), %rsi
subq %rdi, %rsi
callq 0x1c2d0
leaq -0x100(%rbp), %rdi
callq 0x1b5d6
movq -0x228(%rbp), %rdi
testq %rdi, %rdi
je 0x1b1ae
movq -0x218(%rbp), %rsi
subq %rdi, %rsi
callq 0x1c2d0
leaq -0x860(%rbp), %rdi
callq 0x62640
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x1b1dc
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rax
cmpq %rax, %rdi
je 0x1b1fe
movq -0x180(%rbp), %rsi
incq %rsi
callq 0x1c2d0
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x1b220
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x1c2d0
leaq -0x1d0(%rbp), %rdi
callq 0x1b5d6
movq %rbx, %rdi
callq 0x137c0