// File: /workspace/github_c_makefile_star2_O0/Cyan4973[P]FiniteStateEntropy/programs/fileio.c
// Function: FIO_decompressFilename
unsigned long long FIO_decompressFilename(const char* output_filename, const char* input_filename)
{
    FILE* finput, *foutput;
    U64   filesize = 0;
    BYTE* in_buff;
    BYTE* out_buff;
    BYTE* ip;
    U32   blockSize;
    XXH32_state_t xxhState;
    typedef size_t (*decompressor_t) (void* dst, size_t dstSize, const void* src, size_t srcSize);
    decompressor_t decompressor = FSE_decompress;

    /* Init */
    XXH32_reset(&xxhState, FSE_CHECKSUM_SEED);
    get_fileHandle(input_filename, output_filename, &finput, &foutput);

    /* check header */
    {   BYTE header[FIO_FRAMEHEADERSIZE];

        { size_t const sizeCheck = fread(header, (size_t)1, FIO_FRAMEHEADERSIZE, finput);
          if (sizeCheck != FIO_FRAMEHEADERSIZE) EXM_THROW(30, "Read error : cannot read header\n"); }

        switch(FIO_readLE32(header))   /* magic number */
        {
        case FIO_magicNumber_fse:
            DISPLAYLEVEL(5, "compressed with fse \n");
            decompressor = FSE_decompress;
            break;
        case FIO_magicNumber_huf:
            DISPLAYLEVEL(5, "compressed with huff0 \n");
            decompressor = HUF_decompress;
            break;
        case FIO_magicNumber_zlibh:
            DISPLAYLEVEL(5, "compressed with zlib's huffman \n");
            decompressor = FIO_ZLIBH_decompress;
            break;
        default :
            EXM_THROW(31, "Wrong file type : unknown header\n");
        }

        {   U32 const blockSizeId = header[4];
            if (blockSizeId > FIO_maxBlockSizeID)
                EXM_THROW(32, "Wrong version : unknown header flags\n");
            blockSize = FIO_blockID_to_blockSize(blockSizeId);
    }   }

    /* Allocate Memory */
    in_buff  = (BYTE*)malloc(blockSize + FIO_maxBlockHeaderSize);
    out_buff = (BYTE*)malloc(blockSize);
    if (!in_buff || !out_buff) EXM_THROW(33, "Allocation error : not enough memory");

    /* read first block header */
    { size_t const sizeCheck = fread(in_buff, 1, 1, finput);
      if (sizeCheck != 1) EXM_THROW(34, "Read error : cannot read header\n");
      ip = in_buff;
    }

    /* Main Loop */
    while (1) {
        size_t rSize=blockSize, cSize;

        /* Decode header */
        int const bType = (ip[0] & (BIT7+BIT6)) >> 6;
        DISPLAYLEVEL(6, "next block type == %i \n", bType);
        DISPLAYLEVEL(7, "read block descriptor : %u \n", ip[0]);
        if (bType == bt_crc) break;   /* end - frame content CRC */

        {   int const fullBlock = ip[0] & BIT5;
            DISPLAYLEVEL(6, "next block is full ? ==> %i \n", !!fullBlock);
            if (!fullBlock) {
                size_t const sizeCheck = fread(in_buff, 1, 2, finput);
                if (sizeCheck != 2) EXM_THROW(35, "Read error : cannot read header\n");
                rSize = (in_buff[0]<<8) + in_buff[1];
        }   }

        switch(bType)
        {
          case bt_compressed :
            {   size_t const sizeCheck = fread(in_buff, 1, 2, finput);
                if (sizeCheck != 2) EXM_THROW(36, "Read error : cannot read header\n");
                cSize = (in_buff[0]<<8) + in_buff[1];
                break;
            }
          case bt_raw :
            cSize = rSize;
            break;
          case bt_rle :
            cSize = 1;
            break;
          default :
          case bt_crc :
            cSize = 0;
            assert(0);   /* supposed already eliminated at this stage */
        }

        DISPLAYLEVEL(6, "next block has a compressed size of %zu, and an original size of %zu \n",
                        cSize, rSize);

        /* Fill input buffer */
        {   size_t const toReadSize = cSize + 1;
            size_t const readSize = fread(in_buff, 1, toReadSize, finput);
            if (readSize != toReadSize) EXM_THROW(38, "Read error");
            ip = in_buff + cSize;   /* end - 1 */
        }

        /* Decode block */
        switch(bType)
        {
          case bt_compressed :
            rSize = decompressor(out_buff, rSize, in_buff, cSize);
            if (FSE_isError(rSize))
                EXM_THROW(39, "Decoding error : %s", FSE_getErrorName(rSize));
            break;
          case bt_raw :
            /* will read directly from in_buff, so no need to memcpy */
            break;
          case bt_rle :
            memset(out_buff, in_buff[0], rSize);
            break;
          default :
          case bt_crc :
            assert(0);   /* supposed already eliminated at this stage */
        }

        /* Write block */
        switch(bType)
        {
          case bt_compressed :
          case bt_rle :
            { size_t const writeSizeCheck = fwrite(out_buff, 1, rSize, foutput);
              if (writeSizeCheck != rSize) EXM_THROW(41, "Write error : unable to write data block to destination file"); }
            XXH32_update(&xxhState, out_buff, rSize);
            filesize += rSize;
            break;
          case bt_raw :
            { size_t const writeSizeCheck = fwrite(in_buff, 1, cSize, foutput);
              if (writeSizeCheck != cSize) EXM_THROW(42, "Write error : unable to write data block to destination file"); }
            XXH32_update(&xxhState, in_buff, cSize);
            filesize += cSize;
            break;
          default :
          case bt_crc :
            assert(0);   /* supposed already eliminated at this stage */
        }
    }

    /* CRC verification */
    { size_t const sizeCheck = fread(ip+1, 1, 2, finput);
      if (sizeCheck != 2) EXM_THROW(43, "Read error"); }
    {   U32 const CRCsaved = ip[2] + (ip[1]<<8) + ((ip[0] & _6BITS) << 16);
        U32 const CRCcalculated = (XXH32_digest(&xxhState) >> 5) & ((1U<<22)-1);
        if (CRCsaved != CRCcalculated) EXM_THROW(44, "CRC error : wrong checksum, corrupted data");
    }

    DISPLAYLEVEL(2, "\r%79s\r", "");
    DISPLAYLEVEL(2, "Decoded %llu bytes\n", (long long unsigned)filesize);

    /* clean */
    free(in_buff);
    free(out_buff);
    fclose(finput);
    fclose(foutput);

    return filesize;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x28(%rbp)
leaq 0xb3ce(%rip), %rax      # 0x10500
movq %rax, -0x80(%rbp)
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
callq 0x7e30
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rsi
leaq -0x18(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x4ca0
leaq -0x85(%rbp), %rdi
movq -0x18(%rbp), %rcx
movl $0x1, %esi
movl $0x5, %edx
callq 0x1060
movq %rax, -0x90(%rbp)
cmpq $0x5, -0x90(%rbp)
je 0x51f3
cmpl $0x1, 0x26f64(%rip)     # 0x2c0ec
jl 0x51a7
movq 0x26e67(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x2083a(%rip), %rsi     # 0x259d5
movl $0x1e, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26f3e(%rip)     # 0x2c0ec
jl 0x51c8
movq 0x26e41(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x20a56(%rip), %rsi     # 0x25c17
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26f1d(%rip)     # 0x2c0ec
jl 0x51e9
movq 0x26e20(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x202c2(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x1e, %edi
callq 0x1170
leaq -0x85(%rbp), %rdi
callq 0x5db0
movl %eax, %ecx
movl %ecx, -0xfc(%rbp)
subl $0x183e2309, %eax       # imm = 0x183E2309
je 0x5231
jmp 0x5210
movl -0xfc(%rbp), %eax
subl $0x183e3309, %eax       # imm = 0x183E3309
je 0x5262
jmp 0x521f
movl -0xfc(%rbp), %eax
subl $0x183e4309, %eax       # imm = 0x183E4309
je 0x5293
jmp 0x52c1
cmpl $0x5, 0x26eb4(%rip)     # 0x2c0ec
jl 0x5252
movq 0x26db7(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x209ed(%rip), %rsi     # 0x25c38
movb $0x0, %al
callq 0x1100
leaq 0xb2a7(%rip), %rax      # 0x10500
movq %rax, -0x80(%rbp)
jmp 0x5333
cmpl $0x5, 0x26e83(%rip)     # 0x2c0ec
jl 0x5283
movq 0x26d86(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x209d2(%rip), %rsi     # 0x25c4e
movb $0x0, %al
callq 0x1100
leaq 0x13d46(%rip), %rax     # 0x18fd0
movq %rax, -0x80(%rbp)
jmp 0x5333
cmpl $0x5, 0x26e52(%rip)     # 0x2c0ec
jl 0x52b4
movq 0x26d55(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x209b9(%rip), %rsi     # 0x25c66
movb $0x0, %al
callq 0x1100
leaq -0x1db(%rip), %rax      # 0x50e0
movq %rax, -0x80(%rbp)
jmp 0x5333
cmpl $0x1, 0x26e24(%rip)     # 0x2c0ec
jl 0x52e7
movq 0x26d27(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x206fa(%rip), %rsi     # 0x259d5
movl $0x1f, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26dfe(%rip)     # 0x2c0ec
jl 0x5308
movq 0x26d01(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x20986(%rip), %rsi     # 0x25c87
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26ddd(%rip)     # 0x2c0ec
jl 0x5329
movq 0x26ce0(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x20182(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x1f, %edi
callq 0x1170
movzbl -0x81(%rbp), %eax
movl %eax, -0x94(%rbp)
cmpl $0x6, -0x94(%rbp)
jbe 0x53bb
cmpl $0x1, 0x26d9c(%rip)     # 0x2c0ec
jl 0x536f
movq 0x26c9f(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x20672(%rip), %rsi     # 0x259d5
movl $0x20, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26d76(%rip)     # 0x2c0ec
jl 0x5390
movq 0x26c79(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x20920(%rip), %rsi     # 0x25ca9
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26d55(%rip)     # 0x2c0ec
jl 0x53b1
movq 0x26c58(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x200fa(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x20, %edi
callq 0x1170
movl -0x94(%rbp), %edi
callq 0x4c80
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
addl $0x5, %eax
movl %eax, %eax
movl %eax, %edi
callq 0x1140
movq %rax, -0x30(%rbp)
movl -0x44(%rbp), %eax
movl %eax, %edi
callq 0x1140
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x53f8
cmpq $0x0, -0x38(%rbp)
jne 0x546a
cmpl $0x1, 0x26ced(%rip)     # 0x2c0ec
jl 0x541e
movq 0x26bf0(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x205c3(%rip), %rsi     # 0x259d5
movl $0x21, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26cc7(%rip)     # 0x2c0ec
jl 0x543f
movq 0x26bca(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x205a9(%rip), %rsi     # 0x259e1
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26ca6(%rip)     # 0x2c0ec
jl 0x5460
movq 0x26ba9(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x2004b(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x21, %edi
callq 0x1170
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rcx
movl $0x1, %edx
movq %rdx, %rsi
callq 0x1060
movq %rax, -0xa0(%rbp)
cmpq $0x1, -0xa0(%rbp)
je 0x5502
cmpl $0x1, 0x26c55(%rip)     # 0x2c0ec
jl 0x54b6
movq 0x26b58(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x2052b(%rip), %rsi     # 0x259d5
movl $0x22, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26c2f(%rip)     # 0x2c0ec
jl 0x54d7
movq 0x26b32(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x20747(%rip), %rsi     # 0x25c17
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26c0e(%rip)     # 0x2c0ec
jl 0x54f8
movq 0x26b11(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1ffb3(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x22, %edi
callq 0x1170
movq -0x30(%rbp), %rax
movq %rax, -0x40(%rbp)
movl -0x44(%rbp), %eax
movq %rax, -0xa8(%rbp)
movq -0x40(%rbp), %rax
movzbl (%rax), %eax
andl $0xc0, %eax
sarl $0x6, %eax
movl %eax, -0xb4(%rbp)
cmpl $0x6, 0x26bbc(%rip)     # 0x2c0ec
jl 0x5550
movq 0x26abf(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
movl -0xb4(%rbp), %edx
leaq 0x20786(%rip), %rsi     # 0x25ccf
movb $0x0, %al
callq 0x1100
cmpl $0x7, 0x26b95(%rip)     # 0x2c0ec
jl 0x5578
movq 0x26a98(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
movq -0x40(%rbp), %rax
movzbl (%rax), %edx
leaq 0x20776(%rip), %rsi     # 0x25ce7
movb $0x0, %al
callq 0x1100
cmpl $0x3, -0xb4(%rbp)
jne 0x5586
jmp 0x5bce
movq -0x40(%rbp), %rax
movzbl (%rax), %eax
andl $0x20, %eax
movl %eax, -0xb8(%rbp)
cmpl $0x6, 0x26b4f(%rip)     # 0x2c0ec
jl 0x55ca
movq 0x26a52(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
cmpl $0x0, -0xb8(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %edx
leaq 0x20741(%rip), %rsi     # 0x25d04
movb $0x0, %al
callq 0x1100
cmpl $0x0, -0xb8(%rbp)
jne 0x568e
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rcx
movl $0x1, %esi
movl $0x2, %edx
callq 0x1060
movq %rax, -0xc0(%rbp)
cmpq $0x2, -0xc0(%rbp)
je 0x5671
cmpl $0x1, 0x26ae6(%rip)     # 0x2c0ec
jl 0x5625
movq 0x269e9(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x203bc(%rip), %rsi     # 0x259d5
movl $0x23, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26ac0(%rip)     # 0x2c0ec
jl 0x5646
movq 0x269c3(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x205d8(%rip), %rsi     # 0x25c17
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26a9f(%rip)     # 0x2c0ec
jl 0x5667
movq 0x269a2(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1fe44(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x23, %edi
callq 0x1170
movq -0x30(%rbp), %rax
movzbl (%rax), %eax
shll $0x8, %eax
movq -0x30(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
addl %ecx, %eax
cltq
movq %rax, -0xa8(%rbp)
movl -0xb4(%rbp), %eax
movq %rax, -0x108(%rbp)
subq $0x3, %rax
ja 0x5792
movq -0x108(%rbp), %rax
leaq 0x202e5(%rip), %rcx     # 0x25998
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rcx
movl $0x1, %esi
movl $0x2, %edx
callq 0x1060
movq %rax, -0xc8(%rbp)
cmpq $0x2, -0xc8(%rbp)
je 0x5756
cmpl $0x1, 0x26a01(%rip)     # 0x2c0ec
jl 0x570a
movq 0x26904(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x202d7(%rip), %rsi     # 0x259d5
movl $0x24, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x269db(%rip)     # 0x2c0ec
jl 0x572b
movq 0x268de(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x204f3(%rip), %rsi     # 0x25c17
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x269ba(%rip)     # 0x2c0ec
jl 0x574c
movq 0x268bd(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1fd5f(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x24, %edi
callq 0x1170
movq -0x30(%rbp), %rax
movzbl (%rax), %eax
shll $0x8, %eax
movq -0x30(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
addl %ecx, %eax
cltq
movq %rax, -0xb0(%rbp)
jmp 0x57be
movq -0xa8(%rbp), %rax
movq %rax, -0xb0(%rbp)
jmp 0x57be
movq $0x1, -0xb0(%rbp)
jmp 0x57be
jmp 0x5794
movq $0x0, -0xb0(%rbp)
leaq 0x1face(%rip), %rdi     # 0x25274
leaq 0x20575(%rip), %rsi     # 0x25d22
movl $0x22a, %edx            # imm = 0x22A
leaq 0x20572(%rip), %rcx     # 0x25d2b
callq 0x10b0
cmpl $0x6, 0x26927(%rip)     # 0x2c0ec
jl 0x57ed
movq 0x2682a(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
movq -0xb0(%rbp), %rdx
movq -0xa8(%rbp), %rcx
leaq 0x2058b(%rip), %rsi     # 0x25d71
movb $0x0, %al
callq 0x1100
movq -0xb0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd0(%rbp)
movq -0x30(%rbp), %rdi
movq -0xd0(%rbp), %rdx
movq -0x18(%rbp), %rcx
movl $0x1, %esi
callq 0x1060
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
cmpq -0xd0(%rbp), %rax
je 0x58a1
cmpl $0x1, 0x268b6(%rip)     # 0x2c0ec
jl 0x5855
movq 0x267b9(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x2018c(%rip), %rsi     # 0x259d5
movl $0x26, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26890(%rip)     # 0x2c0ec
jl 0x5876
movq 0x26793(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x20549(%rip), %rsi     # 0x25db8
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x2686f(%rip)     # 0x2c0ec
jl 0x5897
movq 0x26772(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1fc14(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x26, %edi
callq 0x1170
movq -0x30(%rbp), %rax
movq -0xb0(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl -0xb4(%rbp), %eax
movq %rax, -0x110(%rbp)
subq $0x3, %rax
ja 0x59c8
movq -0x110(%rbp), %rax
leaq 0x200d0(%rip), %rcx     # 0x259a8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x80(%rbp), %rax
movq -0x38(%rbp), %rdi
movq -0xa8(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq -0xb0(%rbp), %rcx
callq *%rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rdi
callq 0xe390
cmpl $0x0, %eax
je 0x59a8
cmpl $0x1, 0x267cc(%rip)     # 0x2c0ec
jl 0x593f
movq 0x266cf(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x200a2(%rip), %rsi     # 0x259d5
movl $0x27, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x267a6(%rip)     # 0x2c0ec
jl 0x597d
movq 0x266a9(%rip), %rax     # 0x2bff8
movq (%rax), %rax
movq %rax, -0x118(%rbp)
movq -0xa8(%rbp), %rdi
callq 0xe3d0
movq -0x118(%rbp), %rdi
movq %rax, %rdx
leaq 0x2044d(%rip), %rsi     # 0x25dc3
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26768(%rip)     # 0x2c0ec
jl 0x599e
movq 0x2666b(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1fb0d(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x27, %edi
callq 0x1170
jmp 0x59e9
jmp 0x59e9
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %rax
movzbl (%rax), %eax
movq -0xa8(%rbp), %rdx
movzbl %al, %esi
callq 0x10c0
jmp 0x59e9
jmp 0x59ca
leaq 0x1f8a3(%rip), %rdi     # 0x25274
leaq 0x2034a(%rip), %rsi     # 0x25d22
movl $0x247, %edx            # imm = 0x247
leaq 0x20347(%rip), %rcx     # 0x25d2b
callq 0x10b0
movl -0xb4(%rbp), %eax
movq %rax, -0x120(%rbp)
subq $0x3, %rax
ja 0x5ba8
movq -0x120(%rbp), %rax
leaq 0x1ffaa(%rip), %rcx     # 0x259b8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x38(%rbp), %rdi
movq -0xa8(%rbp), %rdx
movq -0x20(%rbp), %rcx
movl $0x1, %esi
callq 0x1180
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
cmpq -0xa8(%rbp), %rax
je 0x5ab9
cmpl $0x1, 0x2669e(%rip)     # 0x2c0ec
jl 0x5a6d
movq 0x265a1(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1ff74(%rip), %rsi     # 0x259d5
movl $0x29, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26678(%rip)     # 0x2c0ec
jl 0x5a8e
movq 0x2657b(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x20350(%rip), %rsi     # 0x25dd7
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26657(%rip)     # 0x2c0ec
jl 0x5aaf
movq 0x2655a(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1f9fc(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x29, %edi
callq 0x1170
movq -0x38(%rbp), %rsi
movq -0xa8(%rbp), %rdx
leaq -0x78(%rbp), %rdi
callq 0x7f40
movq -0xa8(%rbp), %rax
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x5bc9
movq -0x30(%rbp), %rdi
movq -0xb0(%rbp), %rdx
movq -0x20(%rbp), %rcx
movl $0x1, %esi
callq 0x1180
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
je 0x5b83
cmpl $0x1, 0x265d4(%rip)     # 0x2c0ec
jl 0x5b37
movq 0x264d7(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1feaa(%rip), %rsi     # 0x259d5
movl $0x2a, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x265ae(%rip)     # 0x2c0ec
jl 0x5b58
movq 0x264b1(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x20286(%rip), %rsi     # 0x25dd7
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x2658d(%rip)     # 0x2c0ec
jl 0x5b79
movq 0x26490(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1f932(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x2a, %edi
callq 0x1170
movq -0x30(%rbp), %rsi
movq -0xb0(%rbp), %rdx
leaq -0x78(%rbp), %rdi
callq 0x7f40
movq -0xb0(%rbp), %rax
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x5bc9
jmp 0x5baa
leaq 0x1f6c3(%rip), %rdi     # 0x25274
leaq 0x2016a(%rip), %rsi     # 0x25d22
movl $0x25c, %edx            # imm = 0x25C
leaq 0x20167(%rip), %rcx     # 0x25d2b
callq 0x10b0
jmp 0x550a
movq -0x40(%rbp), %rdi
addq $0x1, %rdi
movq -0x18(%rbp), %rcx
movl $0x1, %esi
movl $0x2, %edx
callq 0x1060
movq %rax, -0xf0(%rbp)
cmpq $0x2, -0xf0(%rbp)
je 0x5c6c
cmpl $0x1, 0x264eb(%rip)     # 0x2c0ec
jl 0x5c20
movq 0x263ee(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1fdc1(%rip), %rsi     # 0x259d5
movl $0x2b, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x264c5(%rip)     # 0x2c0ec
jl 0x5c41
movq 0x263c8(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x2017e(%rip), %rsi     # 0x25db8
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x264a4(%rip)     # 0x2c0ec
jl 0x5c62
movq 0x263a7(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1f849(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x2b, %edi
callq 0x1170
movq -0x40(%rbp), %rax
movzbl 0x2(%rax), %eax
movq -0x40(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movq -0x40(%rbp), %rcx
movzbl (%rcx), %ecx
andl $0x3f, %ecx
shll $0x10, %ecx
addl %ecx, %eax
movl %eax, -0xf4(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x93d0
shrl $0x5, %eax
andl $0x3fffff, %eax         # imm = 0x3FFFFF
movl %eax, -0xf8(%rbp)
movl -0xf4(%rbp), %eax
cmpl -0xf8(%rbp), %eax
je 0x5d2d
cmpl $0x1, 0x2642a(%rip)     # 0x2c0ec
jl 0x5ce1
movq 0x2632d(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1fd00(%rip), %rsi     # 0x259d5
movl $0x2c, %edx
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x26404(%rip)     # 0x2c0ec
jl 0x5d02
movq 0x26307(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x20119(%rip), %rsi     # 0x25e14
movb $0x0, %al
callq 0x1100
cmpl $0x1, 0x263e3(%rip)     # 0x2c0ec
jl 0x5d23
movq 0x262e6(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1f788(%rip), %rsi     # 0x254a4
movb $0x0, %al
callq 0x1100
movl $0x2c, %edi
callq 0x1170
cmpl $0x2, 0x263b8(%rip)     # 0x2c0ec
jl 0x5d55
movq 0x262bb(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
leaq 0x1f33e(%rip), %rsi     # 0x25085
leaq 0x1f757(%rip), %rdx     # 0x254a5
movb $0x0, %al
callq 0x1100
cmpl $0x2, 0x26390(%rip)     # 0x2c0ec
jl 0x5d7a
movq 0x26293(%rip), %rax     # 0x2bff8
movq (%rax), %rdi
movq -0x28(%rbp), %rdx
leaq 0x200cc(%rip), %rsi     # 0x25e3f
movb $0x0, %al
callq 0x1100
movq -0x30(%rbp), %rdi
callq 0x1030
movq -0x38(%rbp), %rdi
callq 0x1030
movq -0x18(%rbp), %rdi
callq 0x1080
movq -0x20(%rbp), %rdi
callq 0x1080
movq -0x28(%rbp), %rax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopl (%rax,%rax)