// File: /workspace/github_c_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x48(%rsp), %rdi
xorl %esi, %esi
callq 0x4c8a
leaq 0x40(%rsp), %r15
leaq 0x28(%rsp), %rcx
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x3c9a
movq (%r15), %rcx
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
pushq $0x5
popq %rdx
movq %rcx, (%rsp)
callq 0x1060
cmpq $0x5, %rax
jne 0x46aa
movl 0x8(%rsp), %ecx
movl 0x120ef(%rip), %eax     # 0x160f4
cmpl $0x183e4309, %ecx       # imm = 0x183E4309
je 0x4073
cmpl $0x183e3309, %ecx       # imm = 0x183E3309
je 0x404a
cmpl $0x183e2309, %ecx       # imm = 0x183E2309
jne 0x48ec
leaq 0x3446(%rip), %rcx      # 0x746e
movq %rcx, 0x10(%rsp)
cmpl $0x5, %eax
jl 0x4088
movq 0x11fbf(%rip), %rax     # 0x15ff8
movq (%rax), %rcx
leaq 0xbb38(%rip), %rdi      # 0xfb7b
pushq $0x15
jmp 0x4412
leaq 0x898b(%rip), %rcx      # 0xc9dc
movq %rcx, 0x10(%rsp)
cmpl $0x5, %eax
jl 0x4088
movq 0x11f96(%rip), %rax     # 0x15ff8
movq (%rax), %rcx
leaq 0xbb25(%rip), %rdi      # 0xfb91
pushq $0x17
jmp 0x4412
leaq -0xe5(%rip), %rcx       # 0x3f95
movq %rcx, 0x10(%rsp)
cmpl $0x5, %eax
jge 0x43ff
movzbl 0xc(%rsp), %ecx
cmpq $0x7, %rcx
jae 0x4704
movl $0x400, %ebx            # imm = 0x400
shlq %cl, %rbx
leaq 0x5(%rbx), %rdi
callq 0x1150
movq %rax, %r15
movl %ebx, %edi
movq %rdi, 0x30(%rsp)
callq 0x1150
testq %r15, %r15
je 0x4761
movq %rax, %r12
testq %rax, %rax
je 0x4761
pushq $0x1
popq %rdx
movq %r15, %rdi
movq %rdx, %rsi
movq (%rsp), %rcx
callq 0x1060
cmpq $0x1, %rax
jne 0x47be
movq 0x28(%rsp), %rax
movq %rax, 0x20(%rsp)
movq %r15, %r13
xorl %r14d, %r14d
movq %r12, 0x18(%rsp)
movzbl (%r13), %ebx
shrl $0x6, %ebx
cmpl $0x6, 0x11fe8(%rip)     # 0x160f4
jge 0x429a
cmpb $0x3, %bl
je 0x4329
movq %r14, 0x38(%rsp)
movq %r15, %r14
movzbl (%r13), %r15d
andl $0x20, %r15d
cmpl $0x6, 0x11fc1(%rip)     # 0x160f4
jge 0x42e3
movq 0x30(%rsp), %rbp
testb %r15b, %r15b
movq %r14, %r15
jne 0x416d
movq %r15, %rdi
pushq $0x1
popq %rsi
pushq $0x2
popq %rdx
movq (%rsp), %rcx
callq 0x1060
cmpq $0x2, %rax
jne 0x44f6
movzwl (%r15), %eax
rolw $0x8, %ax
movzwl %ax, %ebp
movzbl %bl, %r12d
cmpb $0x2, %bl
je 0x41a9
movq %rbp, %r13
cmpl $0x1, %r12d
je 0x41ad
movq %r15, %rdi
pushq $0x1
popq %rsi
pushq $0x2
popq %rdx
movq (%rsp), %rcx
callq 0x1060
cmpq $0x2, %rax
jne 0x45d6
movzwl (%r15), %eax
rolw $0x8, %ax
movzwl %ax, %r13d
jmp 0x41ad
pushq $0x1
popq %r13
cmpl $0x6, 0x11f40(%rip)     # 0x160f4
jge 0x4306
leaq 0x1(%r13), %r15
movq %r14, %rdi
pushq $0x1
popq %rsi
movq %r15, %rdx
movq (%rsp), %rcx
callq 0x1060
cmpq %r15, %rax
jne 0x4420
cmpb $0x2, %bl
je 0x421d
cmpl $0x1, %r12d
movq %r14, %r15
jne 0x4236
movq %r15, %rdi
pushq $0x1
popq %rsi
movq %r13, %rdx
movq 0x20(%rsp), %rcx
callq 0x1190
cmpq %r13, %rax
jne 0x463e
leaq 0x48(%rsp), %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x4d0f
movq %r13, %rbp
movq 0x18(%rsp), %r12
jmp 0x428a
movq %r14, %r15
movzbl (%r14), %esi
movq 0x18(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rdx
callq 0x10c0
jmp 0x425e
movq 0x18(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
movq %r13, %rcx
callq *0x10(%rsp)
movq %rax, %rbp
movq %rax, %rdi
callq 0x67fa
testl %eax, %eax
jne 0x4561
movq %r12, %rdi
pushq $0x1
popq %rsi
movq %rbp, %rdx
movq 0x20(%rsp), %rcx
callq 0x1190
cmpq %rbp, %rax
jne 0x448b
leaq 0x48(%rsp), %rdi
movq %r12, %rsi
movq %rbp, %rdx
callq 0x4d0f
addq %r15, %r13
movq 0x38(%rsp), %r14
addq %rbp, %r14
jmp 0x40fd
movq 0x11d57(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb967(%rip), %rsi      # 0xfc12
movl %ebx, %edx
xorl %eax, %eax
callq 0x1110
cmpl $0x7, 0x11e39(%rip)     # 0x160f4
jl 0x4112
movq 0x11d30(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
movzbl (%r13), %edx
leaq 0xb953(%rip), %rsi      # 0xfc2a
xorl %eax, %eax
callq 0x1110
jmp 0x4112
movq 0x11d0e(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
movl %r15d, %edx
shrl $0x5, %edx
leaq 0xb94d(%rip), %rsi      # 0xfc47
xorl %eax, %eax
callq 0x1110
jmp 0x4139
movq 0x11ceb(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb94e(%rip), %rsi      # 0xfc65
movq %r13, %rdx
movq %rbp, %rcx
xorl %eax, %eax
callq 0x1110
jmp 0x41ba
leaq 0x1(%r13), %rdi
pushq $0x1
popq %rsi
pushq $0x2
popq %rdx
movq (%rsp), %rcx
callq 0x1060
cmpq $0x2, %rax
jne 0x481b
movzwl 0x1(%r13), %eax
rolw $0x8, %ax
movzwl %ax, %eax
movzbl (%r13), %ebx
andl $0x3f, %ebx
shll $0x10, %ebx
orl %eax, %ebx
leaq 0x48(%rsp), %rdi
callq 0x4e93
shrl $0x5, %eax
andl $0x3fffff, %eax         # imm = 0x3FFFFF
movl 0x11d7d(%rip), %ecx     # 0x160f4
cmpl %eax, %ebx
jne 0x4886
cmpl $0x2, %ecx
jge 0x43ba
movq %r15, %rdi
callq 0x1030
movq %r12, %rdi
callq 0x1030
movq 0x40(%rsp), %rdi
callq 0x1080
movq 0x28(%rsp), %rdi
callq 0x1080
movq %r14, %rax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x11c37(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xacba(%rip), %rsi      # 0xf085
leaq 0xb0d3(%rip), %rdx      # 0xf4a5
xorl %eax, %eax
callq 0x1110
cmpl $0x2, 0x11d14(%rip)     # 0x160f4
jl 0x4384
movq 0x11c0f(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb940(%rip), %rsi      # 0xfd33
movq %r14, %rdx
xorl %eax, %eax
callq 0x1110
jmp 0x4384
movq 0x11bf2(%rip), %rax     # 0x15ff8
movq (%rax), %rcx
leaq 0xb799(%rip), %rdi      # 0xfba9
pushq $0x20
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
jmp 0x4088
cmpl $0x0, 0x11ccd(%rip)     # 0x160f4
jle 0x4484
movq 0x11bc8(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb4de(%rip), %rsi      # 0xf918
pushq $0x26
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x11ca9(%rip)     # 0x160f4
jle 0x4484
movq 0x11ba4(%rip), %rax     # 0x15ff8
movq (%rax), %rcx
leaq 0xb84e(%rip), %rdi      # 0xfcac
pushq $0xa
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x11c84(%rip)     # 0x160f4
jle 0x4484
movq 0x11b7f(%rip), %rax     # 0x15ff8
movq (%rax), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x26
jmp 0x46a4
cmpl $0x0, 0x11c62(%rip)     # 0x160f4
jle 0x44ef
movq 0x11b5d(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb473(%rip), %rsi      # 0xf918
pushq $0x29
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x11c3e(%rip)     # 0x160f4
jle 0x44ef
movq 0x11b39(%rip), %rax     # 0x15ff8
movq (%rax), %rcx
leaq 0xb802(%rip), %rdi      # 0xfccb
pushq $0x3c
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x11c19(%rip)     # 0x160f4
jle 0x44ef
movq 0x11b14(%rip), %rax     # 0x15ff8
movq (%rax), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x29
jmp 0x46a4
cmpl $0x0, 0x11bf7(%rip)     # 0x160f4
jle 0x455a
movq 0x11af2(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb408(%rip), %rsi      # 0xf918
pushq $0x23
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x11bd3(%rip)     # 0x160f4
jle 0x455a
movq 0x11ace(%rip), %rax     # 0x15ff8
movq (%rax), %rcx
leaq 0xb626(%rip), %rdi      # 0xfb5a
pushq $0x20
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x11bae(%rip)     # 0x160f4
jle 0x455a
movq 0x11aa9(%rip), %rax     # 0x15ff8
movq (%rax), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x23
jmp 0x46a4
cmpl $0x0, 0x11b8c(%rip)     # 0x160f4
jle 0x45cf
movq 0x11a87(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb39d(%rip), %rsi      # 0xf918
pushq $0x27
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x11b68(%rip)     # 0x160f4
jle 0x45cf
movq 0x11a63(%rip), %rax     # 0x15ff8
movq (%rax), %rbx
movq %rbp, %rdi
callq 0x6804
leaq 0xb710(%rip), %rsi      # 0xfcb7
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x11b39(%rip)     # 0x160f4
jle 0x45cf
movq 0x11a34(%rip), %rax     # 0x15ff8
movq (%rax), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x27
jmp 0x46a4
cmpl $0x0, 0x11b17(%rip)     # 0x160f4
jle 0x463a
movq 0x11a12(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb328(%rip), %rsi      # 0xf918
pushq $0x24
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x11af3(%rip)     # 0x160f4
jle 0x463a
movq 0x119ee(%rip), %rax     # 0x15ff8
movq (%rax), %rcx
leaq 0xb546(%rip), %rdi      # 0xfb5a
pushq $0x20
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x11ace(%rip)     # 0x160f4
jle 0x463a
movq 0x119c9(%rip), %rax     # 0x15ff8
movq (%rax), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x24
jmp 0x46a4
cmpl $0x0, 0x11aaf(%rip)     # 0x160f4
jle 0x46a2
movq 0x119aa(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb2c0(%rip), %rsi      # 0xf918
pushq $0x2a
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x11a8b(%rip)     # 0x160f4
jle 0x46a2
movq 0x11986(%rip), %rax     # 0x15ff8
movq (%rax), %rcx
leaq 0xb64f(%rip), %rdi      # 0xfccb
pushq $0x3c
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x11a66(%rip)     # 0x160f4
jle 0x46a2
movq 0x11961(%rip), %rax     # 0x15ff8
movq (%rax), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x2a
popq %rdi
callq 0x1180
cmpl $0x0, 0x11a43(%rip)     # 0x160f4
jle 0x4700
movq 0x1193e(%rip), %rbx     # 0x15ff8
movq (%rbx), %rdi
leaq 0xb254(%rip), %rsi      # 0xf918
pushq $0x1e
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x11a1f(%rip)     # 0x160f4
jle 0x4700
movq (%rbx), %rcx
leaq 0xb479(%rip), %rdi      # 0xfb5a
pushq $0x20
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x11a01(%rip)     # 0x160f4
jle 0x4700
movq (%rbx), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x1e
jmp 0x46a4
cmpl $0x0, 0x119e9(%rip)     # 0x160f4
jle 0x475a
movq 0x118e4(%rip), %rbx     # 0x15ff8
movq (%rbx), %rdi
leaq 0xb1fa(%rip), %rsi      # 0xf918
pushq $0x20
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x119c5(%rip)     # 0x160f4
jle 0x475a
movq (%rbx), %rcx
leaq 0xb4b1(%rip), %rdi      # 0xfbec
pushq $0x25
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x119a7(%rip)     # 0x160f4
jle 0x475a
movq (%rbx), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x20
jmp 0x46a4
cmpl $0x0, 0x1198c(%rip)     # 0x160f4
jle 0x47b7
movq 0x11887(%rip), %rbx     # 0x15ff8
movq (%rbx), %rdi
leaq 0xb19d(%rip), %rsi      # 0xf918
pushq $0x21
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x11968(%rip)     # 0x160f4
jle 0x47b7
movq (%rbx), %rcx
leaq 0xb18c(%rip), %rdi      # 0xf924
pushq $0x24
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x1194a(%rip)     # 0x160f4
jle 0x47b7
movq (%rbx), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x21
jmp 0x46a4
cmpl $0x0, 0x1192f(%rip)     # 0x160f4
jle 0x4814
movq 0x1182a(%rip), %rbx     # 0x15ff8
movq (%rbx), %rdi
leaq 0xb140(%rip), %rsi      # 0xf918
pushq $0x22
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x1190b(%rip)     # 0x160f4
jle 0x4814
movq (%rbx), %rcx
leaq 0xb365(%rip), %rdi      # 0xfb5a
pushq $0x20
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x118ed(%rip)     # 0x160f4
jle 0x4814
movq (%rbx), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x22
jmp 0x46a4
cmpl $0x0, 0x118d2(%rip)     # 0x160f4
jle 0x487f
movq 0x117cd(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb0e3(%rip), %rsi      # 0xf918
pushq $0x2b
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x118ae(%rip)     # 0x160f4
jle 0x487f
movq 0x117a9(%rip), %rax     # 0x15ff8
movq (%rax), %rcx
leaq 0xb453(%rip), %rdi      # 0xfcac
pushq $0xa
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x11889(%rip)     # 0x160f4
jle 0x487f
movq 0x11784(%rip), %rax     # 0x15ff8
movq (%rax), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x2b
jmp 0x46a4
testl %ecx, %ecx
jle 0x48e5
movq 0x11767(%rip), %rax     # 0x15ff8
movq (%rax), %rdi
leaq 0xb07d(%rip), %rsi      # 0xf918
pushq $0x2c
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x11848(%rip)     # 0x160f4
jle 0x48e5
movq 0x11743(%rip), %rax     # 0x15ff8
movq (%rax), %rcx
leaq 0xb449(%rip), %rdi      # 0xfd08
pushq $0x2a
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x11823(%rip)     # 0x160f4
jle 0x48e5
movq 0x1171e(%rip), %rax     # 0x15ff8
movq (%rax), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x2c
jmp 0x46a4
testl %eax, %eax
jle 0x493d
movq 0x11701(%rip), %rbx     # 0x15ff8
movq (%rbx), %rdi
leaq 0xb017(%rip), %rsi      # 0xf918
pushq $0x1f
popq %rdx
xorl %eax, %eax
callq 0x1110
cmpl $0x0, 0x117e2(%rip)     # 0x160f4
jle 0x493d
movq (%rbx), %rcx
leaq 0xb2ac(%rip), %rdi      # 0xfbca
pushq $0x21
popq %rsi
pushq $0x1
popq %rdx
callq 0x1190
cmpl $0x0, 0x117c4(%rip)     # 0x160f4
jle 0x493d
movq (%rbx), %rsi
pushq $0xa
popq %rdi
callq 0x10d0
pushq $0x1f
jmp 0x46a4