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

    int i;
    rb_tree *tree  = new_rb_tree(MyComp);
    MyData  *data  = NULL;
    MyData  *found = NULL;

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

    // It is empty:
    if (rb_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 = rb_tree_insert_max(tree, data);

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

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

        // It is not empty:
        if (rb_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 = rb_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 = rb_tree_min(tree);
    if (found == NULL)   { return FAIL; }
    if (found->key != 0) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = rb_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = rb_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

    // ...and backwards.
    found = rb_tree_max(tree);
    if (found == NULL)            { return FAIL; }
    if (found->key != max_size-1) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = rb_tree_prev(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) <= 0) { return FAIL; }
        } else { 
            found = rb_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 = rb_tree_remove_max(tree);

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

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

    // It is empty:
    if (rb_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 = rb_tree_insert_min(tree, data);

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

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

        // It is not empty:
        if (rb_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 = rb_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 = rb_tree_min(tree);
    if (found == NULL)   { return FAIL; }
    if (found->key != 1) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = rb_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = rb_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

    // ...and backwards.
    found = rb_tree_max(tree);
    if (found == NULL)          { return FAIL; }
    if (found->key != max_size) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = rb_tree_prev(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) <= 0) { return FAIL; }
        } else { 
            found = rb_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 = rb_tree_remove_min(tree);

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

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

    // It is empty:
    if (rb_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 = rb_tree_insert_max(tree, data);

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

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

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

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

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

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

        // It is not empty:
        if (rb_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 = rb_tree_search(tree, data);
        if (found == NULL)            { return FAIL; }
        if (MyComp(data, found) != 0) { return FAIL; }
        data->key = -i;
        found = rb_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 = rb_tree_min(tree);
    if (found == NULL)           { return FAIL; }
    if (found->key != -max_size) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = rb_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = rb_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

    // ...and backwards.
    found = rb_tree_max(tree);
    if (found == NULL)          { return FAIL; }
    if (found->key != max_size) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = rb_tree_prev(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) <= 0) { return FAIL; }
        } else { 
            found = rb_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 = rb_tree_remove_max(tree);

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

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

        found = rb_tree_remove_min(tree);

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

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

    // It is empty:
    if (rb_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 -0x4582(%rip), %rdi     # 0x11e0
callq 0xfe40
movq %rax, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5795
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x0, %eax
jne 0x57af
movl $0x1, -0x4(%rbp)
jmp 0x6252
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x583d
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 0x100a0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x57f9
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5813
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x1, %eax
jne 0x582d
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x582f
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x57b6
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x58b2
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10b40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5887
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x58a5
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x58a7
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x5852
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x58db
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
je 0x58f0
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x58f2
cmpq $0x0, -0x28(%rbp)
je 0x5982
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10e70
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x593d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x593b
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x597d
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x595d
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x597b
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5982
jmp 0x58f2
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x59a2
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x59be
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x59c0
cmpq $0x0, -0x28(%rbp)
je 0x5a50
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10d40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x5a0b
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x5a09
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5a4b
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5a2b
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x5a49
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5a50
jmp 0x59c0
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x5aac
movq -0x18(%rbp), %rdi
callq 0x11ba0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5a7c
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5a9f
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5aa1
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x5a56
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5ac6
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x0, %eax
jne 0x5ae0
movl $0x1, -0x4(%rbp)
jmp 0x6252
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x5b6b
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 0x10850
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x5b27
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5b41
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x1, %eax
jne 0x5b5b
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5b5d
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x5ae6
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x5bdd
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10b40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5bb2
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x5bd0
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5bd2
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x5b7f
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5c06
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
je 0x5c1b
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5c1d
cmpq $0x0, -0x28(%rbp)
je 0x5cad
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10e70
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x5c68
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x5c66
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5ca8
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5c88
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x5ca6
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5cad
jmp 0x5c1d
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5ccd
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x5ce4
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5ce6
cmpq $0x0, -0x28(%rbp)
je 0x5d76
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10d40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x5d31
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x5d2f
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5d71
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5d51
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x5d6f
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5d76
jmp 0x5ce6
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x5dd2
movq -0x18(%rbp), %rdi
callq 0x11790
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5da2
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5dc5
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5dc7
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x5d7c
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5dec
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x0, %eax
jne 0x5e06
movl $0x1, -0x4(%rbp)
jmp 0x6252
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x5f09
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 0x100a0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x5e54
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5e6e
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x1, %eax
jne 0x5e88
movl $0x1, -0x4(%rbp)
jmp 0x6252
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 0x10850
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x5ec5
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5edf
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x1, %eax
jne 0x5ef9
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5efb
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x5e0d
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x5fd2
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10b40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5f57
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x5f75
movl $0x1, -0x4(%rbp)
jmp 0x6252
xorl %ecx, %ecx
subl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10b40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5fa4
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x5fc2
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x5fc4
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x5f1e
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5ffb
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x28(%rbp), %rax
movl (%rax), %eax
xorl %ecx, %ecx
subl -0x8(%rbp), %ecx
cmpl %ecx, %eax
je 0x6016
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x6018
cmpq $0x0, -0x28(%rbp)
je 0x60a8
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10e70
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x6063
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x6061
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x60a3
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x6083
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x60a1
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x60a8
jmp 0x6018
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x60c8
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x60df
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x60e1
cmpq $0x0, -0x28(%rbp)
je 0x6171
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10d40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x612c
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x612a
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x616c
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x614c
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x616a
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x6171
jmp 0x60e1
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x6214
movq -0x18(%rbp), %rdi
callq 0x11ba0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x61a4
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x61c7
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x11790
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x61e4
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x6204
movl $0x1, -0x4(%rbp)
jmp 0x6252
jmp 0x6206
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x6178
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x622b
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x0, %eax
jne 0x6242
movl $0x1, -0x4(%rbp)
jmp 0x6252
movq -0x18(%rbp), %rdi
callq 0x10e0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)