// File: /workspace/github_c_makefile_star2_O0/CarlosLunaMota[P]BinaryTrees/main.c
// Function: sp_tree_fast_sequential_test
int sp_tree_fast_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_max(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!
    for (i=max_size; i>0; i--) {
        
        found = sp_tree_remove_max(tree);

        // Not enought elements:
        if (found == NULL) { return FAIL; }
        else               { free(found); }

        // It is a sp_tree:
        if (is_sp_tree(tree) == NO) { return FAIL; }
    }
    
    // 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_min(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!
    for (i=max_size; i>0; i--) {
        
        found = sp_tree_remove_min(tree);

        // Not enought elements:
        if (found == NULL) { return FAIL; }
        else               { free(found); }

        // It is a sp_tree:
        if (is_sp_tree(tree) == NO) { return FAIL; }
    }
    
    // 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_max(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_min(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!
    for (i=1; i<=max_size; i++) {
        
        found = sp_tree_remove_max(tree);

        // Not enought elements:
        if (found == NULL) { return FAIL; }
        else               { free(found); }

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

        found = sp_tree_remove_min(tree);

        // Not enought elements:
        if (found == NULL) { return FAIL; }
        else               { free(found); }

        // It is a sp_tree:
        if (is_sp_tree(tree) == NO) { return FAIL; }
    }
    
    // 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 -0x8082(%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 0x9295
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x0, %eax
jne 0x92af
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x933d
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 0x143e0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x92f9
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x9313
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x1, %eax
jne 0x932d
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x932f
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x92b6
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x93b2
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 0x9387
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x93a5
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x93a7
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x9352
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x93db
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
je 0x93f0
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x93f2
cmpq $0x0, -0x28(%rbp)
je 0x9482
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 0x943d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x943b
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x947d
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x945d
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x947b
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9482
jmp 0x93f2
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x94a2
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x94be
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x94c0
cmpq $0x0, -0x28(%rbp)
je 0x9550
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 0x950b
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x9509
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x954b
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x952b
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x9549
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9550
jmp 0x94c0
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x95ac
movq -0x18(%rbp), %rdi
callq 0x152a0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x957c
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x959f
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x95a1
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x9556
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x95c6
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x0, %eax
jne 0x95e0
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x966b
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 0x14ad0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x9627
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x9641
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x1, %eax
jne 0x965b
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x965d
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x95e6
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x96dd
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 0x96b2
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x96d0
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x96d2
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x967f
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9706
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
je 0x971b
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x971d
cmpq $0x0, -0x28(%rbp)
je 0x97ad
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 0x9768
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x9766
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x97a8
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9788
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x97a6
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x97ad
jmp 0x971d
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x97cd
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x97e4
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x97e6
cmpq $0x0, -0x28(%rbp)
je 0x9876
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 0x9831
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x982f
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9871
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9851
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x986f
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9876
jmp 0x97e6
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x98d2
movq -0x18(%rbp), %rdi
callq 0x15210
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x98a2
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x98c5
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x98c7
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x987c
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x98ec
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x0, %eax
jne 0x9906
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x9a09
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 0x143e0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x9954
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x996e
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x1, %eax
jne 0x9988
movl $0x1, -0x4(%rbp)
jmp 0x9d52
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 0x14ad0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x99c5
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x99df
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x1, %eax
jne 0x99f9
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x99fb
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x990d
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x9ad2
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 0x9a57
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x9a75
movl $0x1, -0x4(%rbp)
jmp 0x9d52
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 0x9aa4
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x9ac2
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9ac4
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x9a1e
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9afb
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x28(%rbp), %rax
movl (%rax), %eax
xorl %ecx, %ecx
subl -0x8(%rbp), %ecx
cmpl %ecx, %eax
je 0x9b16
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9b18
cmpq $0x0, -0x28(%rbp)
je 0x9ba8
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 0x9b63
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x9b61
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9ba3
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9b83
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x9ba1
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9ba8
jmp 0x9b18
movq -0x18(%rbp), %rdi
callq 0x14f40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9bc8
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x9bdf
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9be1
cmpq $0x0, -0x28(%rbp)
je 0x9c71
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 0x9c2c
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x9c2a
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9c6c
movq -0x18(%rbp), %rdi
callq 0x14370
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9c4c
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x9c6a
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9c71
jmp 0x9be1
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x9d14
movq -0x18(%rbp), %rdi
callq 0x152a0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9ca4
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x9cc7
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x15210
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x9ce4
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x9d04
movl $0x1, -0x4(%rbp)
jmp 0x9d52
jmp 0x9d06
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x9c78
movq -0x18(%rbp), %rdi
callq 0x15b10
cmpl $0x0, %eax
jne 0x9d2b
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x14e20
cmpl $0x0, %eax
jne 0x9d42
movl $0x1, -0x4(%rbp)
jmp 0x9d52
movq -0x18(%rbp), %rdi
callq 0x10e0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)