// File: /workspace/github_c_makefile_star2_O0/CarlosLunaMota[P]BinaryTrees/main.c
// Function: sp_tree_sequential_test
int sp_tree_sequential_test(int max_size) {

    int i;
    sp_tree *tree  = new_sp_tree(MyComp);
    MyData  *data  = NULL;
    MyData  *found = NULL;

    // It is a sp_tree:
    if (is_sp_tree(tree) == NO) { return FAIL; }

    // It is empty:
    if (sp_tree_is_empty(tree) == NO) { return FAIL; }

    // Insert elements sequentially in the tree:
    for (i=0; i<max_size; i++) {
        
        data = (MyData *) malloc(sizeof(MyData));
        data->key = i;
        found = sp_tree_insert(tree, data);

        // It was not already there:
        if (found != NULL) { return FAIL; }

        // It is a sp_tree:
        if (is_sp_tree(tree) == NO)        { return FAIL; }

        // It is not empty:
        if (sp_tree_is_empty(tree) == YES) { return FAIL; }

    }

    // Check if all elements are there:
    data = (MyData *) malloc(sizeof(MyData));
    for (i=0; i<max_size; i++) {
        data->key = i;
        found = sp_tree_search(tree, data);
        if (found == NULL)            { return FAIL; }
        if (MyComp(data, found) != 0) { return FAIL; }
    }
    free(data);

    // Check if everything is correctly sorted forward...
    found = sp_tree_min(tree);
    if (found == NULL)   { return FAIL; }
    if (found->key != 0) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = sp_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = sp_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

    // ...and backwards.
    found = sp_tree_max(tree);
    if (found == NULL)            { return FAIL; }
    if (found->key != max_size-1) { return FAIL; }    
    while (found != NULL) {
        data  = found;
        found = sp_tree_prev(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) <= 0) { return FAIL; }
        } else { 
            found = sp_tree_min(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break; 
        }
    }

    // Now, clean everything!
    sp_tree_remove_all(tree, free);

    // It is a sp_tree:
    if (is_sp_tree(tree) == NO) { return FAIL; }

    // It is empty:
    if (sp_tree_is_empty(tree) == NO) { return FAIL; }

    // Insert elements sequentially in the tree:
    for (i=max_size; i>0; i--) {
        
        data = (MyData *) malloc(sizeof(MyData));
        data->key = i;
        found = sp_tree_insert(tree, data);

        // It was not already there:
        if (found != NULL) { return FAIL; }

        // It is a sp_tree:
        if (is_sp_tree(tree) == NO)        { return FAIL; }

        // It is not empty:
        if (sp_tree_is_empty(tree) == YES) { return FAIL; }

    }

    // Check if all elements are there:
    data = (MyData *) malloc(sizeof(MyData));
    for (i=max_size; i>0; i--) {
        data->key = i;
        found = sp_tree_search(tree, data);
        if (found == NULL)            { return FAIL; }
        if (MyComp(data, found) != 0) { return FAIL; }
    }
    free(data);

    // Check if everything is correctly sorted forward...
    found = sp_tree_min(tree);
    if (found == NULL)   { return FAIL; }
    if (found->key != 1) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = sp_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = sp_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

    // ...and backwards.
    found = sp_tree_max(tree);
    if (found == NULL)          { return FAIL; }
    if (found->key != max_size) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = sp_tree_prev(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) <= 0) { return FAIL; }
        } else { 
            found = sp_tree_min(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break; 
        }
    }

    // Now, clean everything!
    sp_tree_remove_all(tree, free);

    // It is a sp_tree:
    if (is_sp_tree(tree) == NO) { return FAIL; }

    // It is empty:
    if (sp_tree_is_empty(tree) == NO) { return FAIL; }

    // Insert elements sequentially in the tree:
    for (i=1; i<=max_size; i++) {
        
        data = (MyData *) malloc(sizeof(MyData));
        data->key = i;
        found = sp_tree_insert(tree, data);

        // It was not already there:
        if (found != NULL) { return FAIL; }

        // It is a sp_tree:
        if (is_sp_tree(tree) == NO)        { return FAIL; }

        // It is not empty:
        if (sp_tree_is_empty(tree) == YES) { return FAIL; }

        data = (MyData *) malloc(sizeof(MyData));
        data->key = -i;
        found = sp_tree_insert(tree, data);

        // It was not already there:
        if (found != NULL) { return FAIL; }

        // It is a sp_tree:
        if (is_sp_tree(tree) == NO)        { return FAIL; }

        // It is not empty:
        if (sp_tree_is_empty(tree) == YES) { return FAIL; }

    }

    // Check if all elements are there:
    data = (MyData *) malloc(sizeof(MyData));
    for (i=1; i<=max_size; i++) {
        data->key = i;
        found = sp_tree_search(tree, data);
        if (found == NULL)            { return FAIL; }
        if (MyComp(data, found) != 0) { return FAIL; }
        data->key = -i;
        found = sp_tree_search(tree, data);
        if (found == NULL)            { return FAIL; }
        if (MyComp(data, found) != 0) { return FAIL; }
    }
    free(data);

    // Check if everything is correctly sorted forward...
    found = sp_tree_min(tree);
    if (found == NULL)           { return FAIL; }
    if (found->key != -max_size) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = sp_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = sp_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

    // ...and backwards.
    found = sp_tree_max(tree);
    if (found == NULL)          { return FAIL; }
    if (found->key != max_size) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = sp_tree_prev(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) <= 0) { return FAIL; }
        } else { 
            found = sp_tree_min(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break; 
        }
    }

    // Now, clean everything!
    sp_tree_remove_all(tree, free);

    // It is a sp_tree:
    if (is_sp_tree(tree) == NO) { return FAIL; }

    // It is empty:
    if (sp_tree_is_empty(tree) == NO) { return FAIL; }

    free(tree);
    
    return PASS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x8(%rbp)
leaq -0x76a2(%rip), %rdi     # 0x11e0
callq 0x14240
movq %rax, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x88b5
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x0, %eax
jne 0x88cf
movl $0x1, -0x4(%rbp)
jmp 0x923d
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x895d
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14670
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x8919
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x8933
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x1, %eax
jne 0x894d
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x894f
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x88d6
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x89d2
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14e80
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x89a7
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x89c5
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x89c7
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x8972
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x89fb
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
je 0x8a10
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8a12
cmpq $0x0, -0x28(%rbp)
je 0x8aa2
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14530
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x8a5d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x8a5b
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8a9d
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x8a7d
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x8a9b
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8aa2
jmp 0x8a12
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x8ac2
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x8ade
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8ae0
cmpq $0x0, -0x28(%rbp)
je 0x8b70
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14fb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x8b2b
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x8b29
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8b6b
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x8b4b
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x8b69
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8b70
jmp 0x8ae0
movq -0x18(%rbp), %rdi
movq 0x11445(%rip), %rsi     # 0x19fc0
callq 0x15330
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x8b9a
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x0, %eax
jne 0x8bb4
movl $0x1, -0x4(%rbp)
jmp 0x923d
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x8c3f
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14670
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x8bfb
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x8c15
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x1, %eax
jne 0x8c2f
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8c31
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x8bba
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x8cb1
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14e80
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x8c86
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x8ca4
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8ca6
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x8c53
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x8cda
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
je 0x8cef
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8cf1
cmpq $0x0, -0x28(%rbp)
je 0x8d81
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14530
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x8d3c
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x8d3a
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8d7c
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x8d5c
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x8d7a
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8d81
jmp 0x8cf1
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x8da1
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x8db8
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8dba
cmpq $0x0, -0x28(%rbp)
je 0x8e4a
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14fb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x8e05
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x8e03
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8e45
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x8e25
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x8e43
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8e4a
jmp 0x8dba
movq -0x18(%rbp), %rdi
movq 0x1116b(%rip), %rsi     # 0x19fc0
callq 0x15330
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x8e74
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x0, %eax
jne 0x8e8e
movl $0x1, -0x4(%rbp)
jmp 0x923d
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x8f91
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14670
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x8edc
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x8ef6
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x1, %eax
jne 0x8f10
movl $0x1, -0x4(%rbp)
jmp 0x923d
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
xorl %ecx, %ecx
subl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14670
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x8f4d
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x8f67
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x1, %eax
jne 0x8f81
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x8f83
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x8e95
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x905a
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14e80
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x8fdf
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x8ffd
movl $0x1, -0x4(%rbp)
jmp 0x923d
xorl %ecx, %ecx
subl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14e80
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x902c
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x904a
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x904c
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x8fa6
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9083
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x28(%rbp), %rax
movl (%rax), %eax
xorl %ecx, %ecx
subl -0x8(%rbp), %ecx
cmpl %ecx, %eax
je 0x909e
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x90a0
cmpq $0x0, -0x28(%rbp)
je 0x9130
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14530
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x90eb
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x90e9
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x912b
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x910b
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x9129
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x9130
jmp 0x90a0
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9150
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x9167
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x9169
cmpq $0x0, -0x28(%rbp)
je 0x91ef
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x14fb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x91b0
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x91ae
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x91ea
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x91cd
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x91e8
movl $0x1, -0x4(%rbp)
jmp 0x923d
jmp 0x91ef
jmp 0x9169
movq -0x18(%rbp), %rdi
movq 0x10dc6(%rip), %rsi     # 0x19fc0
callq 0x15330
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x9216
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x0, %eax
jne 0x922d
movl $0x1, -0x4(%rbp)
jmp 0x923d
movq -0x18(%rbp), %rdi
callq 0x10e0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)