// File: /workspace/github_c_makefile_star2_O3/sasairc[P]yasuna/src/subset.c
// Function: parse_dict_file
int parse_dict_file(FILE* fp, polyaness_t** pt)
{
    int     i       = 0,
            status  = 0;

    if (parse_polyaness(fp, 0, pt) < 0) {
        status = -1; goto ERR;
    }

    /*
     * 1. polyaness dict
     * 2. plain dict
     */
    if (strcmp_lite("polyaness_dict",
                get_polyaness("filetype", 0, pt)) == 0) {
        /* release header */
        release_polyaness_cell(&(*(*pt)->record));

        /* shift record */
        i = 0;
        while (i < (*pt)->recs &&
                (*((*pt)->record + i) = *((*pt)->record + (i + 1))))
            i++;
        (*pt)->recs--;
    } else {
        if (plain_dict_to_polyaness(fp, pt) < 0) {
            status = -2; goto ERR;
        }
    }

    return 0;

ERR:
    switch (status) {
        case    -1:
            fprintf(stderr, "%s: parse_polyaness() failure\n",
                    PROGNAME);
            break;
        case    -2:
            fprintf(stderr, "%s: plain_dict_to_polyaness() failure\n",
                    PROGNAME);
            break;
    }

    return status;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rsi, %rbx
movq %rdi, %r14
xorl %esi, %esi
movq %rbx, %rdx
callq 0x9ec1
testl %eax, %eax
js 0xa867
leaq 0x1eb0(%rip), %rdi      # 0xc5be
xorl %esi, %esi
movq %rbx, %rdx
callq 0xa22c
leaq 0x1e90(%rip), %rdi      # 0xc5af
movq %rax, %rsi
callq 0x60dc
testl %eax, %eax
je 0xa824
leaq 0x8(%rsp), %r15
movq $0x0, (%r15)
movq %r14, %rdi
callq 0x2270
movl $0x400, %esi            # imm = 0x400
movl $0x280, %edx            # imm = 0x280
movq %r15, %rdi
movq %r14, %rcx
callq 0x3c44
testl %eax, %eax
js 0xa873
movl $0x6, %edi
callq 0x20e0
testq %rax, %rax
je 0xa87a
movw $0x65, 0x4(%rax)
movl $0x746f7571, (%rax)     # imm = 0x746F7571
movq (%rbx), %rdi
movslq (%rdi), %rcx
testq %rcx, %rcx
jle 0xa818
decq %rcx
movl $0x1, %esi
movl $0x1, %edx
movq 0x8(%rdi), %rdi
movq -0x8(%rdi,%rsi,8), %r8
movl %edx, (%r8)
movq (%rdi,%rcx,8), %rdi
movl %edx, (%rdi)
movq 0x8(%r8), %rdi
movq %rax, (%rdi)
movq 0x8(%rsp), %rdi
movq -0x8(%rdi,%rsi,8), %rdi
movq (%rbx), %r8
movq 0x8(%r8), %r8
movq -0x8(%r8,%rsi,8), %r8
movq 0x10(%r8), %r8
movq %rdi, (%r8)
movq (%rbx), %rdi
movq 0x8(%rdi), %rdi
movq (%rdi,%rcx,8), %rdi
movq 0x8(%rdi), %rdi
movq %rax, (%rdi)
movq 0x8(%rsp), %rdi
movq (%rdi,%rcx,8), %rdi
movq (%rbx), %r8
movq 0x8(%r8), %r8
movq (%r8,%rcx,8), %r8
movq 0x10(%r8), %r8
movq %rdi, (%r8)
cmpq %rcx, %rsi
jge 0xa818
movq (%rbx), %rdi
movslq (%rdi), %r8
leaq 0x1(%rsi), %r9
decq %rcx
cmpq %r8, %rsi
movq %r9, %rsi
jl 0xa79b
movq 0x8(%rsp), %rdi
callq 0x2190
jmp 0xa85b
movq (%rbx), %rax
movq 0x8(%rax), %rdi
callq 0xa3d9
xorl %ecx, %ecx
movq (%rbx), %rax
movslq (%rax), %rdx
cmpq %rdx, %rcx
jge 0xa857
movq 0x8(%rax), %rax
movq 0x8(%rax,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
incq %rcx
testq %rdx, %rdx
jne 0xa832
movq (%rbx), %rax
movl (%rax), %edx
decl %edx
movl %edx, (%rax)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
callq 0x27bc
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0xa85d
callq 0x2788
jmp 0xa887
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2734
movq 0x675a(%rip), %rax      # 0x10fe8
movq (%rax), %rdi
leaq 0x1d4e(%rip), %rsi      # 0xc5e6
leaq 0x19b3(%rip), %rdx      # 0xc252
xorl %eax, %eax
callq 0x2400
movl $0xfffffffe, %eax       # imm = 0xFFFFFFFE
jmp 0xa85d