// File: /workspace/github_c_makefile_star2_O0/hfiguiere[P]exifprobe/process.c
// Function: process_gps_ifd
unsigned long
process_gps_ifd(FILE *inptr,unsigned short byteorder,
                    unsigned long gps_offset,unsigned long fileoffset_base,
                    unsigned long max_offset,struct image_summary *summary_entry,
                    char *parent_name,int ifdnum,int indent)
{
    struct ifd_entry *entry_ptr;
    unsigned long max_value_offset = 0L;
    unsigned long next_ifd_offset,current_offset,max_gps_offset;
    unsigned long start_entry_offset,entry_offset,value_offset;
    int entry_num,num_entries,value_is_offset,use_second_pass;
    int chpr = 0;
    char *fulldirname = CNULL;

    if(inptr == (FILE *)0)
    {
        fprintf(stderr,"%s: no open file pointer to read GPS IFD\n",
                Progname);
        return(0L);
    }

    PUSHCOLOR(GPS_COLOR);
    /* If the gps segment appears to be beyond the start of the       */
    /* parent ifd, mark the start address funny.                      */
    if(max_offset && (gps_offset > max_offset))
        print_tag_address(SECTION,gps_offset + fileoffset_base,indent,"^");
    else
        print_tag_address(SECTION,gps_offset + fileoffset_base,indent,"@");
    if(PRINT_SECTION)
        chpr += printf("<GPS IFD> (in IFD %d)",ifdnum);

    num_entries = read_ushort(inptr,byteorder,gps_offset + fileoffset_base);
    if(ferror(inptr) || feof(inptr))
        goto blewit;
    current_offset = entry_offset = start_entry_offset = ftell(inptr);
    if(PRINT_SECTION)
    {
        chpr += printf(" %d entries ",num_entries);
        chpr += printf("starting at file offset %#lx=%lu",
                                        current_offset,current_offset);
        chpr = newline(chpr);
    }
    use_second_pass = value_is_offset = 0;
    fulldirname = splice(parent_name,".","Gps");

    indent += SMALLINDENT;
    /* The direct entries                                             */
    for(entry_num = 0; entry_num < num_entries; ++entry_num)
    {
        print_tag_address(ENTRY,entry_offset,indent,"@");
        entry_ptr = read_ifd_entry(inptr,byteorder,entry_offset);
        if((entry_ptr->value_type == 0) || (entry_ptr->value_type > DOUBLE) ||
            ferror(inptr) || feof(inptr))
        {
            print_tag_address(ENTRY,entry_offset,indent,"@");
            chpr += printf(" INVALID (%lu)",entry_ptr->value);
            chpr = newline(chpr);
            /* ###%%% replace with check code from process_tiff_ifd() */
            goto blewit;
        }
        entry_offset = current_offset = ftell(inptr);
        value_offset = print_entry(inptr,byteorder,entry_ptr,fileoffset_base,
                                            summary_entry,fulldirname,GPS_IFD,
                                            ifdnum,-1,SMALLINDENT);
        if(value_offset == 0UL)
            value_offset = entry_offset;
        if(value_offset > max_value_offset)
            max_value_offset = value_offset;
        if((PRINT_VALUE_AT_OFFSET) && (is_offset(entry_ptr)))
            ++use_second_pass;
    }

    next_ifd_offset = read_ulong(inptr,byteorder,current_offset);

    /* offsets found in the next pass should be within the bounds of  */
    /* the ifd. The following helps to detect chunks that are written */
    /* "out of place".                                                */
    if(next_ifd_offset > 0L)
    {
        if((PRINT_VALUE) && (PRINT_SECTION) && (PRINT_VALUE_AT_OFFSET))
        {
            print_tag_address(SECTION,current_offset,indent,"@");
            chpr += printf("**** next IFD offset %lu  ",next_ifd_offset);
            next_ifd_offset += fileoffset_base;
            if(next_ifd_offset < ftell(inptr))
            {
                printred("BAD NEXT IFD OFFSET");
                next_ifd_offset = 0L;
            }
            else
                chpr += printf("(+ %lu = %#lx/%lu)",fileoffset_base,
                            next_ifd_offset,next_ifd_offset);
            chpr = newline(chpr);
        }
        else
            next_ifd_offset += fileoffset_base;
        /* This should never happen                                   */
        max_gps_offset = next_ifd_offset;
        if(max_offset && (max_gps_offset > max_offset))
            max_gps_offset = max_offset;
    }
    else
    {
        max_gps_offset = max_offset;    
        if((PRINT_VALUE) && (PRINT_SECTION) && (PRINT_VALUE_AT_OFFSET))
        {
            print_tag_address(SECTION,current_offset,indent,"@");
            chpr += printf("**** next IFD offset 0");
            chpr = newline(chpr);
        }
    }

    if(ferror(inptr) || feof(inptr))
    {
        chpr += printf(" READ NEXT IFD OFFSET FAILED ");
        chpr = newline(chpr);
        why(stdout);
        clearerr(inptr);    /* keep going...                          */
    }
    else
        current_offset = ftell(inptr);

    value_offset = current_offset;

    /* Make a second pass to print offset values.                     */
    if(use_second_pass)
    {
        if((PRINT_VALUE) && (PRINT_SECTION) && (PRINT_VALUE_AT_OFFSET))
        {
            print_tag_address(SECTION,value_offset,indent,"@");
            chpr += printf("============= VALUES, GPS IFD ============");
            chpr = newline(chpr);
        }

        /* Second pass, to evaluate entries which are stored          */
        /* indirectly (the value requires more than 4 bytes).         */
        entry_offset = start_entry_offset;
        for(entry_num = 0; entry_num < num_entries; ++entry_num)
        {
            entry_ptr = read_ifd_entry(inptr,byteorder,entry_offset);
            if((entry_ptr->value_type == 0) || (entry_ptr->value_type > DOUBLE) ||
                ferror(inptr) || feof(inptr))
            {
                print_tag_address(ENTRY,entry_offset,indent,"@");
                chpr += printf(" INVALID (%lu)",entry_ptr->value);
                chpr = newline(chpr);
                goto blewit;
            }
            current_offset = entry_offset = ftell(inptr);
            switch(entry_ptr->tag)
            {
                default:
                    if((PRINT_VALUE) && ((PRINT_VALUE_AT_OFFSET) && is_offset(entry_ptr)))
                    {
                        print_tag_address(ENTRY,fileoffset_base + entry_ptr->value,
                                            indent,"@");
                        print_tagid(entry_ptr,SMALLINDENT,GPS_IFD);
                        value_offset =
                                    print_offset_value(inptr,byteorder,entry_ptr,
                                                    fileoffset_base,fulldirname,
                                                    GPS_IFD,indent,1);
                    }
                    break;
            }
            if(value_offset > max_value_offset)
                max_value_offset = value_offset;
        }
    }
    else if(current_offset > max_value_offset)
        max_value_offset = current_offset;

    indent -= SMALLINDENT;
    if(max_offset && (gps_offset > max_offset))
    {
        print_tag_address(SECTION,max_value_offset - 1,indent,">");
        max_value_offset = 0L;  /* let the caller know.               */
    }
    else
        print_tag_address(SECTION,max_value_offset - 1,indent,"-");
    if(PRINT_SECTION)
    {
        chpr += printf("</GPS IFD>");
        chpr = newline(chpr);
    }
    POPCOLOR();
    if(next_ifd_offset)
    {
        printred("#========= WARNING! CHAINING NEXT IFD FROM GPS IFD =========");
        chpr = newline(1);
        value_offset = process_tiff_ifd(inptr,byteorder,next_ifd_offset,
                                fileoffset_base,max_offset,NULL,fulldirname,
                                GPS_IFD,-1,-1,indent);
        if(value_offset > max_value_offset)
            max_value_offset = value_offset;
    }
    if(fulldirname)
        free(fulldirname);
    return(max_value_offset);
blewit:
    clearerr(inptr);
    current_offset = ftell(inptr);
    print_tag_address(SECTION,current_offset - 1,indent,"-");
    if(PRINT_SECTION)
    {
        chpr += printf("</GPS IFD>");
        chpr = newline(chpr);
    }
    if(fulldirname)
        free(fulldirname);
    POPCOLOR();
    return(0L);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movw %si, %ax
movl 0x20(%rbp), %esi
movl 0x18(%rbp), %esi
movq 0x10(%rbp), %rsi
movq %rdi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movq $0x0, -0x48(%rbp)
movl $0x0, -0x8c(%rbp)
movq $0x0, -0x98(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x16b03
movq 0x6051d(%rip), %rax     # 0x76ff8
movq (%rax), %rdi
leaq 0x61983(%rip), %rax     # 0x78468
movq (%rax), %rdx
leaq 0x50899(%rip), %rsi     # 0x67388
movb $0x0, %al
callq 0x3170
movq $0x0, -0x8(%rbp)
jmp 0x17460
cmpq $0x0, -0x30(%rbp)
je 0x16b32
movq -0x20(%rbp), %rax
cmpq -0x30(%rbp), %rax
jbe 0x16b32
movq -0x20(%rbp), %rsi
addq -0x28(%rbp), %rsi
movl 0x20(%rbp), %edx
movl $0x40000, %edi          # imm = 0x40000
leaq 0x50887(%rip), %rcx     # 0x673b2
callq 0x5ed0
jmp 0x16b4e
movq -0x20(%rbp), %rsi
addq -0x28(%rbp), %rsi
movl 0x20(%rbp), %edx
movl $0x40000, %edi          # imm = 0x40000
leaq 0x4d593(%rip), %rcx     # 0x640dc
callq 0x5ed0
leaq 0x6062b(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x40000, %rax          # imm = 0x40000
cmpq $0x0, %rax
je 0x16b81
movl 0x18(%rbp), %esi
leaq 0x50846(%rip), %rdi     # 0x673b4
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movq -0x10(%rbp), %rdi
movw -0x12(%rbp), %ax
movq -0x20(%rbp), %rdx
addq -0x28(%rbp), %rdx
movzwl %ax, %esi
callq 0x4480
movzwl %ax, %eax
movl %eax, -0x80(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30a0
cmpl $0x0, %eax
jne 0x16bbb
movq -0x10(%rbp), %rdi
callq 0x3190
cmpl $0x0, %eax
je 0x16bc0
jmp 0x173cf
movq -0x10(%rbp), %rdi
callq 0x3180
movq %rax, -0x68(%rbp)
movq %rax, -0x70(%rbp)
movq %rax, -0x58(%rbp)
leaq 0x605a4(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x40000, %rax          # imm = 0x40000
cmpq $0x0, %rax
je 0x16c3b
movl -0x80(%rbp), %esi
leaq 0x4df75(%rip), %rdi     # 0x64b6a
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movq -0x58(%rbp), %rsi
movq -0x58(%rbp), %rdx
leaq 0x4df60(%rip), %rdi     # 0x64b77
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %edi
callq 0x1ef50
movl %eax, -0x8c(%rbp)
movl $0x0, -0x84(%rbp)
movl $0x0, -0x88(%rbp)
movq 0x10(%rbp), %rdi
leaq 0x4dd08(%rip), %rsi     # 0x64962
leaq 0x4fd52(%rip), %rdx     # 0x669b3
callq 0x20960
movq %rax, -0x98(%rbp)
movl 0x20(%rbp), %eax
addl $0x2, %eax
movl %eax, 0x20(%rbp)
movl $0x0, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
cmpl -0x80(%rbp), %eax
jge 0x16df9
movq -0x70(%rbp), %rsi
movl 0x20(%rbp), %edx
movl $0x4003333, %edi        # imm = 0x4003333
leaq 0x4d440(%rip), %rcx     # 0x640dc
callq 0x5ed0
movq -0x10(%rbp), %rdi
movw -0x12(%rbp), %ax
movq -0x70(%rbp), %rdx
movzwl %ax, %esi
callq 0x4c60
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movzwl 0x2(%rax), %eax
cmpl $0x0, %eax
je 0x16cef
movq -0x40(%rbp), %rax
movzwl 0x2(%rax), %eax
cmpl $0xc, %eax
jg 0x16cef
movq -0x10(%rbp), %rdi
callq 0x30a0
cmpl $0x0, %eax
jne 0x16cef
movq -0x10(%rbp), %rdi
callq 0x3190
cmpl $0x0, %eax
je 0x16d3f
movq -0x70(%rbp), %rsi
movl 0x20(%rbp), %edx
movl $0x4003333, %edi        # imm = 0x4003333
leaq 0x4d3da(%rip), %rcx     # 0x640dc
callq 0x5ed0
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rsi
leaq 0x506b4(%rip), %rdi     # 0x673ca
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %edi
callq 0x1ef50
movl %eax, -0x8c(%rbp)
jmp 0x173cf
movq -0x10(%rbp), %rdi
callq 0x3180
movq %rax, -0x58(%rbp)
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rdi
movw -0x12(%rbp), %si
movq -0x40(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x98(%rbp), %r9
movl 0x18(%rbp), %eax
movzwl %si, %esi
movl $0x4, (%rsp)
movl %eax, 0x8(%rsp)
movl $0xffffffff, 0x10(%rsp) # imm = 0xFFFFFFFF
movl $0x2, 0x18(%rsp)
callq 0x6130
movq %rax, -0x78(%rbp)
cmpq $0x0, -0x78(%rbp)
jne 0x16da4
movq -0x70(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x48(%rbp), %rax
jbe 0x16db6
movq -0x78(%rbp), %rax
movq %rax, -0x48(%rbp)
leaq 0x603c3(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x1000000, %rax        # imm = 0x1000000
cmpq $0x0, %rax
je 0x16de9
movq -0x40(%rbp), %rdi
callq 0x158d0
cmpl $0x0, %eax
je 0x16de9
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
jmp 0x16deb
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x16c7d
movq -0x10(%rbp), %rdi
movw -0x12(%rbp), %ax
movq -0x58(%rbp), %rdx
movzwl %ax, %esi
callq 0x4610
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
jbe 0x16f4e
leaq 0x6035d(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x30, %rax
cmpq $0x0, %rax
je 0x16f1c
leaq 0x60345(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x40000, %rax          # imm = 0x40000
cmpq $0x0, %rax
je 0x16f1c
leaq 0x6032b(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x1000000, %rax        # imm = 0x1000000
cmpq $0x0, %rax
je 0x16f1c
movq -0x58(%rbp), %rsi
movl 0x20(%rbp), %edx
movl $0x40000, %edi          # imm = 0x40000
leaq 0x4d261(%rip), %rcx     # 0x640dc
callq 0x5ed0
movq -0x50(%rbp), %rsi
leaq 0x4dd33(%rip), %rdi     # 0x64bbe
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movq -0x28(%rbp), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3180
movq %rax, %rcx
movq -0xa0(%rbp), %rax
cmpq %rcx, %rax
jae 0x16ee3
leaq 0x52d04(%rip), %rdi     # 0x69bd8
callq 0x6860
movq $0x0, -0x50(%rbp)
jmp 0x16f09
movq -0x28(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq -0x50(%rbp), %rcx
leaq 0x50a60(%rip), %rdi     # 0x67956
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %edi
callq 0x1ef50
movl %eax, -0x8c(%rbp)
jmp 0x16f28
movq -0x28(%rbp), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x16f49
movq -0x60(%rbp), %rax
cmpq -0x30(%rbp), %rax
jbe 0x16f49
movq -0x30(%rbp), %rax
movq %rax, -0x60(%rbp)
jmp 0x16fdb
movq -0x30(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq 0x60223(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x30, %rax
cmpq $0x0, %rax
je 0x16fd9
leaq 0x6020f(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x40000, %rax          # imm = 0x40000
cmpq $0x0, %rax
je 0x16fd9
leaq 0x601f9(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x1000000, %rax        # imm = 0x1000000
cmpq $0x0, %rax
je 0x16fd9
movq -0x58(%rbp), %rsi
movl 0x20(%rbp), %edx
movl $0x40000, %edi          # imm = 0x40000
leaq 0x4d133(%rip), %rcx     # 0x640dc
callq 0x5ed0
leaq 0x4dc24(%rip), %rdi     # 0x64bd9
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %edi
callq 0x1ef50
movl %eax, -0x8c(%rbp)
jmp 0x16fdb
movq -0x10(%rbp), %rdi
callq 0x30a0
cmpl $0x0, %eax
jne 0x16ff7
movq -0x10(%rbp), %rdi
callq 0x3190
cmpl $0x0, %eax
je 0x1703c
leaq 0x4dbf2(%rip), %rdi     # 0x64bf0
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %edi
callq 0x1ef50
movl %eax, -0x8c(%rbp)
movq 0x5ff9f(%rip), %rax     # 0x76fc8
movq (%rax), %rdi
callq 0x20840
movq -0x10(%rbp), %rdi
callq 0x31a0
jmp 0x17049
movq -0x10(%rbp), %rdi
callq 0x3180
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x78(%rbp)
cmpl $0x0, -0x88(%rbp)
je 0x17277
leaq 0x6011b(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x30, %rax
cmpq $0x0, %rax
je 0x170e1
leaq 0x60107(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x40000, %rax          # imm = 0x40000
cmpq $0x0, %rax
je 0x170e1
leaq 0x600f1(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x1000000, %rax        # imm = 0x1000000
cmpq $0x0, %rax
je 0x170e1
movq -0x78(%rbp), %rsi
movl 0x20(%rbp), %edx
movl $0x40000, %edi          # imm = 0x40000
leaq 0x4d02b(%rip), %rcx     # 0x640dc
callq 0x5ed0
leaq 0x5031c(%rip), %rdi     # 0x673d9
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %edi
callq 0x1ef50
movl %eax, -0x8c(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x70(%rbp)
movl $0x0, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
cmpl -0x80(%rbp), %eax
jge 0x17275
movq -0x10(%rbp), %rdi
movw -0x12(%rbp), %ax
movq -0x70(%rbp), %rdx
movzwl %ax, %esi
callq 0x4c60
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movzwl 0x2(%rax), %eax
cmpl $0x0, %eax
je 0x1714a
movq -0x40(%rbp), %rax
movzwl 0x2(%rax), %eax
cmpl $0xc, %eax
jg 0x1714a
movq -0x10(%rbp), %rdi
callq 0x30a0
cmpl $0x0, %eax
jne 0x1714a
movq -0x10(%rbp), %rdi
callq 0x3190
cmpl $0x0, %eax
je 0x1719a
movq -0x70(%rbp), %rsi
movl 0x20(%rbp), %edx
movl $0x4003333, %edi        # imm = 0x4003333
leaq 0x4cf7f(%rip), %rcx     # 0x640dc
callq 0x5ed0
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rsi
leaq 0x50259(%rip), %rdi     # 0x673ca
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %edi
callq 0x1ef50
movl %eax, -0x8c(%rbp)
jmp 0x173cf
movq -0x10(%rbp), %rdi
callq 0x3180
movq %rax, -0x70(%rbp)
movq %rax, -0x58(%rbp)
leaq 0x5ffce(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x30, %rax
cmpq $0x0, %rax
je 0x17251
leaq 0x5ffb6(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x1000000, %rax        # imm = 0x1000000
cmpq $0x0, %rax
je 0x17251
movq -0x40(%rbp), %rdi
callq 0x158d0
cmpl $0x0, %eax
je 0x17251
movq -0x28(%rbp), %rsi
movq -0x40(%rbp), %rax
addq 0x10(%rax), %rsi
movl 0x20(%rbp), %edx
movl $0x4003333, %edi        # imm = 0x4003333
leaq 0x4ceda(%rip), %rcx     # 0x640dc
callq 0x5ed0
movq -0x40(%rbp), %rdi
movl $0x2, %esi
movl $0x4, %edx
callq 0x7ae0
movq -0x10(%rbp), %rdi
movw -0x12(%rbp), %si
movq -0x40(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x98(%rbp), %r8
movl 0x20(%rbp), %eax
movl $0x4, %r9d
movzwl %si, %esi
movl %eax, (%rsp)
movl $0x1, 0x8(%rsp)
callq 0x68a0
movq %rax, -0x78(%rbp)
jmp 0x17253
movq -0x78(%rbp), %rax
cmpq -0x48(%rbp), %rax
jbe 0x17265
movq -0x78(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x17267
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x170f0
jmp 0x1728b
movq -0x58(%rbp), %rax
cmpq -0x48(%rbp), %rax
jbe 0x17289
movq -0x58(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x1728b
movl 0x20(%rbp), %eax
subl $0x2, %eax
movl %eax, 0x20(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x172cb
movq -0x20(%rbp), %rax
cmpq -0x30(%rbp), %rax
jbe 0x172cb
movq -0x48(%rbp), %rsi
subq $0x1, %rsi
movl 0x20(%rbp), %edx
movl $0x40000, %edi          # imm = 0x40000
leaq 0x54d7c(%rip), %rcx     # 0x6c038
callq 0x5ed0
movq $0x0, -0x48(%rbp)
jmp 0x172e7
movq -0x48(%rbp), %rsi
subq $0x1, %rsi
movl 0x20(%rbp), %edx
movl $0x40000, %edi          # imm = 0x40000
leaq 0x4ce17(%rip), %rcx     # 0x640f9
callq 0x5ed0
leaq 0x5fe92(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x40000, %rax          # imm = 0x40000
cmpq $0x0, %rax
je 0x17328
leaq 0x50100(%rip), %rdi     # 0x67404
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %edi
callq 0x1ef50
movl %eax, -0x8c(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0x173ac
leaq 0x500d9(%rip), %rdi     # 0x6740f
callq 0x6860
movl $0x1, %edi
callq 0x1ef50
movl %eax, -0x8c(%rbp)
movq -0x10(%rbp), %rdi
movw -0x12(%rbp), %si
movq -0x50(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x98(%rbp), %r10
movl 0x20(%rbp), %eax
xorl %r9d, %r9d
movzwl %si, %esi
movq %r10, (%rsp)
movl $0x4, 0x8(%rsp)
movl $0xffffffff, 0x10(%rsp) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x18(%rsp) # imm = 0xFFFFFFFF
movl %eax, 0x20(%rsp)
callq 0x112e0
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x48(%rbp), %rax
jbe 0x173aa
movq -0x78(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x173ac
cmpq $0x0, -0x98(%rbp)
je 0x173c2
movq -0x98(%rbp), %rdi
callq 0x3040
movq -0x48(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x17460
movq -0x10(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rdi
callq 0x3180
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rsi
subq $0x1, %rsi
movl 0x20(%rbp), %edx
movl $0x40000, %edi          # imm = 0x40000
leaq 0x4ccfd(%rip), %rcx     # 0x640f9
callq 0x5ed0
leaq 0x5fd78(%rip), %rax     # 0x77180
movq (%rax), %rax
andq $0x40000, %rax          # imm = 0x40000
cmpq $0x0, %rax
je 0x17442
leaq 0x4ffe6(%rip), %rdi     # 0x67404
movb $0x0, %al
callq 0x3110
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %edi
callq 0x1ef50
movl %eax, -0x8c(%rbp)
cmpq $0x0, -0x98(%rbp)
je 0x17458
movq -0x98(%rbp), %rdi
callq 0x3040
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xd0, %rsp
popq %rbp
retq
nopl (%rax)