// File: /workspace/github_cpp_makefile_star2_O1/JainamS1996[P]Btree_DataStructure/final.cpp
// Function: splitNode(Node*)
void splitNode(Node *curNode) {
    if (curNode->isleaf) {
        Node *rNode = new Node();
        //curNode->next = rNode;
        rNode->prev = curNode;
        if (curNode->next == NULL) {
            curNode->next = rNode;
        }
        else {
            rNode->next = curNode->next;
            rNode->next->prev = rNode;
            curNode->next = rNode;
        }
        int x = order/2;
        //cout<< x << endl;
        //cout << curNode->record.size() << endl;
        for (int i = curNode->record.size()/2; i<curNode->record.size(); i++)
            rNode->record.push_back(curNode->record.at(i));
        rNode->nNodes = rNode->record.size();
        //cout << rNode->record.size() << endl;
        int z = curNode->record.size() - curNode->record.size()/2;
        curNode->record.erase(curNode->record.begin() + curNode->record.size()/2, curNode->record.end());
        curNode->nNodes = curNode->record.size();
        //cout << curNode->record.size() <<endl;    
        
        // sort(rNode->record.begin(),rNode->record.end());
        // cout << get<0>(rNode->record.at(0));
        if (curNode->parentNode == NULL) {
            Node *pNode = new Node(false);
            pNode->children.push_back(curNode);
            pNode->children.push_back(rNode);
            curNode->parentNode = pNode;
            rNode->parentNode = pNode;
            pNode->keys.push_back(get<0>(rNode->record.at(0)));
            curNode->parentNode->nNodes++;
            //cout<< pNode->keys.at(0)<<endl;
            rootNode = pNode;
            //cout<< rootNode->keys.at(0)<<endl;
            
        }
        else {
            //cout << "hello this is else";
            rNode->parentNode = curNode->parentNode;
           
            curNode->parentNode->keys.push_back(get<0>(rNode->record.at(0)));
            
            sort(curNode->parentNode->keys.begin(),curNode->parentNode->keys.end());
            // for (int i = 0; i< curNode->parentNode->keys.size(); i++)
            //         cout<<curNode->parentNode->keys.at(i)<<endl;
            
            // cout<< "Rnode pkeys :";
            // for (int x = 0; x < rNode->parentNode->keys.size(); x++)
            //         cout<<rNode->parentNode->keys.at(x)<<endl;
                
            curNode->parentNode->children.push_back(rNode);
            //cout<< "ye hua?"<<endl;
            // for (int i = 0; i<curNode->parentNode->children.size();i++)
            //  cout<<get<0>(curNode->parentNode->children.at(i)->record.at(0))<<endl;

            sort(curNode->parentNode->children.begin(),curNode->parentNode->children.end(),childSort);
            curNode->parentNode->nNodes++;
        

                

            if (curNode->parentNode->keys.size() > order-1) {
                
                //cout<<"aa bhi raha hai idhar?     "<<curNode->parentNode->keys.size()<<endl;
                curNode->parentNode->nNodes--;
                // for (int i = 0; i< curNode->parentNode->keys.size(); i++)
                //     cout<<curNode->parentNode->keys.at(i)<<endl;
                splitNode(curNode->parentNode);
             }
            // else {
            //     cout<< "Poora nahi hua" << curNode->parentNode->keys.size() <<endl;
            // }
            
        }
    
    }
    else {                  //INTERNAL NODES 
        Node *rNode = new Node(false);
        //cout << "hello this is the internalnode style"<<endl;
        int x = order/2;
        //cout<< x << endl;
        //cout << curNode->keys.size() << endl;
        for (int i = curNode->keys.size()/2; i<curNode->keys.size(); i++)
            rNode->keys.push_back(curNode->keys.at(i));
        
        //int z = curNode->keys.size() - curNode->keys.size()/2;
        curNode->keys.erase(curNode->keys.begin() + curNode->keys.size()/2, curNode->keys.end());
        // cout << curNode->keys.size() << endl;
        // cout << rNode->keys.size() << endl;
        rNode->nNodes = rNode->record.size();
        curNode->nNodes = curNode->record.size();

        // DISTRIBUTING THE CHILDREN TOO
        if (curNode->children.size()%2) {
            for (int i = curNode->children.size()/2+1; i<curNode->children.size();i++) {
                rNode->children.push_back(curNode->children.at(i));
                curNode->children.at(i)->parentNode = rNode;
            }
                curNode->children.erase(curNode->children.begin() + curNode->children.size()/2 + 1, curNode->children.end());
            // cout<< "BACCHO KA SIZE KE BAAER ME BHI TOH SOCHO" <<endl;
            // cout << curNode->children.size() << endl;
            // cout << rNode->children.size() << endl;
        }
        else {
            for (int i = curNode->children.size()/2; i<curNode->children.size();i++) {
                rNode->children.push_back(curNode->children.at(i));
                curNode->children.at(i)->parentNode = rNode;
            }
            curNode->children.erase(curNode->children.begin() + curNode->children.size()/2, curNode->children.end());
            // cout<< "BACCHO KA PAPA KE BAAER ME BHI TOH SOCHO" <<endl;
            // cout << curNode->children.size() << endl;
            // cout << rNode->children.size() << endl;
        }
        //CHILDREN HAVE BEEN DISTRIBUTED

        if (curNode->parentNode == NULL) {
            Node *pNode = new Node(false);
            pNode->children.push_back(curNode);
            pNode->children.push_back(rNode);
            curNode->parentNode = pNode;
            rNode->parentNode = pNode;
            pNode->keys.push_back(rNode->keys.at(0));
            rNode->keys.erase(rNode->keys.begin());
            rNode->nNodes--;
            curNode->parentNode->nNodes++;
            //cout<< pNode->keys.at(0)<<endl;
            rootNode = pNode;
        }
        else {
            rNode->parentNode = curNode->parentNode;
            curNode->parentNode->keys.push_back(rNode->keys.at(0));
            rNode->keys.erase(rNode->keys.begin());
            sort(curNode->parentNode->keys.begin(),curNode->parentNode->keys.end());
            curNode->parentNode->children.push_back(rNode);
            curNode->parentNode->nNodes++;

            sort(curNode->parentNode->children.begin(),curNode->parentNode->children.end(),keySort);

           
            if (curNode->parentNode->keys.size()>order-1) {
                curNode->parentNode->nNodes--;
                splitNode(curNode->parentNode);
            }
        }
        
    
    }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, -0x20(%rbp)
cmpb $0x1, 0x88(%rdi)
jne 0x26ab
movl $0x90, %edi
callq 0x21a0
movq %rax, %rbx
movq %rax, %rdi
movl $0x1, %esi
callq 0x42a2
movq %rbx, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq %rax, 0x38(%rbx)
movq 0x30(%rax), %rcx
testq %rcx, %rcx
je 0x2587
movq %rcx, 0x30(%rbx)
movq %rbx, 0x38(%rcx)
movq %rbx, 0x30(%rax)
movq 0x48(%rax), %rcx
subq 0x40(%rax), %rcx
shrq $0x3, %rcx
movabsq $-0x3333333333333333, %r15 # imm = 0xCCCCCCCCCCCCCCCD
imulq %r15, %rcx
shrq %rcx
movslq %ecx, %rbx
movq -0x20(%rbp), %rdi
movq 0x40(%rdi), %rsi
movq 0x48(%rdi), %rdx
subq %rsi, %rdx
movq %rdx, %rax
sarq $0x3, %rax
imulq %r15, %rax
cmpq %rbx, %rax
jbe 0x260c
leaq (,%rbx,8), %rax
leaq (%rax,%rax,4), %r14
movq -0x28(%rbp), %rdi
addq $0x40, %rdi
addq %r14, %rsi
callq 0x434e
incq %rbx
movq -0x20(%rbp), %rdi
movq 0x40(%rdi), %rsi
movq 0x48(%rdi), %rdx
subq %rsi, %rdx
movq %rdx, %rax
sarq $0x3, %rax
imulq %r15, %rax
addq $0x28, %r14
cmpq %rbx, %rax
ja 0x25d6
movq -0x28(%rbp), %rcx
movq 0x48(%rcx), %r8
subq 0x40(%rcx), %r8
addq $0x40, %rdi
shrq $0x3, %r8
imull $0xcccccccd, %r8d, %r8d # imm = 0xCCCCCCCD
movl %r8d, 0x20(%rcx)
shrq %rax
leaq (%rax,%rax,4), %rax
leaq (%rsi,%rax,8), %rax
addq %rsi, %rdx
movq %rax, %rsi
callq 0x4736
movq -0x20(%rbp), %rcx
movq 0x28(%rcx), %rax
movq 0x48(%rcx), %rdx
subq 0x40(%rcx), %rdx
shrq $0x3, %rdx
imull $0xcccccccd, %edx, %edx # imm = 0xCCCCCCCD
movl %edx, 0x20(%rcx)
testq %rax, %rax
je 0x295e
movq -0x28(%rbp), %rsi
movq %rax, 0x28(%rsi)
movq 0x40(%rsi), %rdx
movq 0x48(%rsi), %rax
subq %rdx, %rax
je 0x2d55
movq 0x28(%rcx), %rdi
addq $0x20, %rdx
movq 0x60(%rdi), %rsi
cmpq 0x68(%rdi), %rsi
je 0x29d8
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x60(%rdi)
jmp 0x29e1
movl $0x90, %edi
callq 0x21a0
movq %rax, %rbx
movq %rax, %rdi
xorl %esi, %esi
callq 0x42a2
movq %rbx, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x58(%rax), %rdx
movq 0x60(%rax), %rcx
movq %rcx, %rsi
subq %rdx, %rsi
movq %rsi, %rdi
shrq $0x4, %rdi
movslq %edi, %rbx
sarq $0x3, %rsi
cmpq %rbx, %rsi
jbe 0x2741
leaq (,%rbx,8), %r14
movq -0x28(%rbp), %rdi
addq %r14, %rdx
movq 0x60(%rdi), %rsi
cmpq 0x68(%rdi), %rsi
je 0x2716
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x60(%rdi)
jmp 0x271f
addq $0x58, %rdi
callq 0x492e
incq %rbx
movq -0x20(%rbp), %rax
movq 0x58(%rax), %rdx
movq 0x60(%rax), %rcx
movq %rcx, %rsi
subq %rdx, %rsi
sarq $0x3, %rsi
addq $0x8, %r14
cmpq %rbx, %rsi
ja 0x26f3
andq $-0x2, %rsi
leaq (%rdx,%rsi,4), %rdx
cmpq %rcx, %rdx
je 0x2764
movq 0x60(%rax), %rsi
movq %rsi, %rdi
subq %rcx, %rdi
addq %rdi, %rdx
cmpq %rdx, %rsi
je 0x2764
movq %rdx, 0x60(%rax)
movq -0x28(%rbp), %rax
movq 0x48(%rax), %rcx
subq 0x40(%rax), %rcx
shrq $0x3, %rcx
imull $0xcccccccd, %ecx, %ecx # imm = 0xCCCCCCCD
movl %ecx, 0x20(%rax)
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rcx
movq 0x78(%rax), %r14
subq 0x40(%rax), %rcx
shrq $0x3, %rcx
imull $0xcccccccd, %ecx, %ecx # imm = 0xCCCCCCCD
movl %ecx, 0x20(%rax)
subq 0x70(%rax), %r14
testb $0x8, %r14b
jne 0x284e
shrq $0x4, %r14
movslq %r14d, %rbx
movq -0x20(%rbp), %rax
movq 0x70(%rax), %rcx
movq 0x78(%rax), %rdx
movq %rdx, %rsi
subq %rcx, %rsi
sarq $0x3, %rsi
cmpq %rbx, %rsi
jbe 0x2841
movslq %r14d, %r14
movq -0x28(%rbp), %rdi
leaq (%rcx,%rbx,8), %rdx
movq 0x78(%rdi), %rsi
cmpq 0x80(%rdi), %rsi
je 0x27ef
movq (%rdx), %rax
movq %rax, (%rsi)
addq $0x8, 0x78(%rdi)
jmp 0x27f8
addq $0x70, %rdi
callq 0x47f4
movq -0x20(%rbp), %rcx
movq 0x70(%rcx), %rax
movq 0x78(%rcx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %rbx, %rdx
jbe 0x2d44
movq -0x28(%rbp), %rcx
movq (%rax,%rbx,8), %rax
movq %rcx, 0x28(%rax)
incq %r14
movq -0x20(%rbp), %rax
movq 0x70(%rax), %rcx
movq 0x78(%rax), %rdx
movq %rdx, %rsi
subq %rcx, %rsi
sarq $0x3, %rsi
movq %r14, %rbx
cmpq %r14, %rsi
ja 0x27cd
andq $-0x2, %rsi
leaq (%rcx,%rsi,4), %rcx
jmp 0x28f9
shrq $0x4, %r14
leal 0x1(%r14), %eax
movslq %eax, %rbx
movq -0x20(%rbp), %rax
movq 0x70(%rax), %rcx
movq 0x78(%rax), %rdx
movq %rdx, %rsi
subq %rcx, %rsi
sarq $0x3, %rsi
cmpq %rbx, %rsi
jbe 0x28ed
addl $0x2, %r14d
movq -0x28(%rbp), %rdi
leaq (%rcx,%rbx,8), %rdx
movq 0x78(%rdi), %rsi
cmpq 0x80(%rdi), %rsi
je 0x289a
movq (%rdx), %rax
movq %rax, (%rsi)
addq $0x8, 0x78(%rdi)
jmp 0x28a3
addq $0x70, %rdi
callq 0x47f4
movq -0x20(%rbp), %rcx
movq 0x70(%rcx), %rax
movq 0x78(%rcx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %rbx, %rdx
jbe 0x2d44
movq -0x28(%rbp), %rcx
movq (%rax,%rbx,8), %rax
movq %rcx, 0x28(%rax)
movslq %r14d, %rbx
movq -0x20(%rbp), %rax
movq 0x70(%rax), %rcx
movq 0x78(%rax), %rdx
movq %rdx, %rsi
subq %rcx, %rsi
sarq $0x3, %rsi
leal 0x1(%rbx), %r14d
cmpq %rbx, %rsi
ja 0x2878
andq $-0x2, %rsi
leaq (%rcx,%rsi,4), %rcx
addq $0x8, %rcx
cmpq %rdx, %rcx
je 0x2914
movq 0x78(%rax), %rsi
movq %rsi, %rdi
subq %rdx, %rdi
addq %rdi, %rcx
cmpq %rcx, %rsi
je 0x2914
movq %rcx, 0x78(%rax)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rcx
testq %rcx, %rcx
je 0x299b
movq -0x28(%rbp), %rsi
movq %rcx, 0x28(%rsi)
movq 0x58(%rsi), %rdx
cmpq %rdx, 0x60(%rsi)
je 0x2d6b
movq 0x28(%rax), %rdi
movq 0x60(%rdi), %rsi
cmpq 0x68(%rdi), %rsi
je 0x2ada
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x60(%rdi)
jmp 0x2ae3
movl $0x90, %edi
callq 0x21a0
movq %rax, %rbx
movq %rax, %rdi
xorl %esi, %esi
callq 0x42a2
leaq 0x70(%rbx), %r14
movq 0x78(%rbx), %rsi
cmpq 0x80(%rbx), %rsi
je 0x2bfd
movq -0x20(%rbp), %rax
movq %rax, (%rsi)
addq $0x8, 0x78(%rbx)
jmp 0x2c09
movl $0x90, %edi
callq 0x21a0
movq %rax, %rbx
movq %rax, %rdi
xorl %esi, %esi
callq 0x42a2
leaq 0x70(%rbx), %r14
movq 0x78(%rbx), %rsi
cmpq 0x80(%rbx), %rsi
je 0x2c85
movq -0x20(%rbp), %rax
movq %rax, (%rsi)
addq $0x8, 0x78(%rbx)
jmp 0x2c91
addq $0x58, %rdi
callq 0x492e
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x58(%rax), %rbx
movq 0x60(%rax), %r14
cmpq %r14, %rbx
je 0x2a23
movq %r14, %rax
subq %rbx, %rax
sarq $0x3, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4a6a
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4b56
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rdi
movq 0x78(%rdi), %rsi
cmpq 0x80(%rdi), %rsi
je 0x2a46
movq -0x28(%rbp), %rax
movq %rax, (%rsi)
addq $0x8, 0x78(%rdi)
jmp 0x2a53
addq $0x70, %rdi
leaq -0x28(%rbp), %rdx
callq 0x47f4
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x70(%rax), %rbx
movq 0x78(%rax), %r14
cmpq %r14, %rbx
je 0x2aa2
movq %r14, %rax
subq %rbx, %rax
sarq $0x3, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
leaq -0x5da(%rip), %r15      # 0x24ac
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rcx
callq 0x4e59
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x4f84
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rdi
movl 0x20(%rdi), %eax
leal 0x1(%rax), %ecx
movl %ecx, 0x20(%rdi)
movq 0x60(%rdi), %rcx
subq 0x58(%rdi), %rcx
sarq $0x3, %rcx
movslq 0x76ca(%rip), %rdx      # 0xa190
decq %rdx
cmpq %rdx, %rcx
jbe 0x2d39
movl %eax, 0x20(%rdi)
jmp 0x2bf3
addq $0x58, %rdi
callq 0x492e
movq -0x28(%rbp), %rbx
movq 0x58(%rbx), %rdi
movq 0x60(%rbx), %rdx
leaq 0x8(%rdi), %rsi
cmpq %rdx, %rsi
je 0x2b00
subq %rsi, %rdx
callq 0x2290
addq $-0x8, 0x60(%rbx)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x58(%rax), %rbx
movq 0x60(%rax), %r14
cmpq %r14, %rbx
je 0x2b47
movq %r14, %rax
subq %rbx, %rax
sarq $0x3, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4a6a
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4b56
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rdi
movq 0x78(%rdi), %rsi
cmpq 0x80(%rdi), %rsi
je 0x2b6a
movq -0x28(%rbp), %rax
movq %rax, (%rsi)
addq $0x8, 0x78(%rdi)
jmp 0x2b77
addq $0x70, %rdi
leaq -0x28(%rbp), %rdx
callq 0x47f4
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
incl 0x20(%rax)
movq 0x70(%rax), %rbx
movq 0x78(%rax), %r14
cmpq %r14, %rbx
je 0x2bc9
movq %r14, %rax
subq %rbx, %rax
sarq $0x3, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
leaq -0x6b2(%rip), %r15      # 0x24fb
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rcx
callq 0x4e59
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x4f84
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rdi
movq 0x60(%rdi), %rax
subq 0x58(%rdi), %rax
sarq $0x3, %rax
movslq 0x75ac(%rip), %rcx      # 0xa190
decq %rcx
cmpq %rcx, %rax
jbe 0x2d39
decl 0x20(%rdi)
callq 0x2532
jmp 0x2d39
leaq -0x20(%rbp), %rdx
movq %r14, %rdi
callq 0x47f4
movq 0x78(%rbx), %rsi
cmpq 0x80(%rbx), %rsi
je 0x2c24
movq -0x28(%rbp), %rax
movq %rax, (%rsi)
addq $0x8, 0x78(%rbx)
jmp 0x2c30
leaq -0x28(%rbp), %rdx
movq %r14, %rdi
callq 0x47f4
movq -0x20(%rbp), %rax
movq %rbx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq %rbx, 0x28(%rax)
movq 0x40(%rax), %rdx
movq 0x48(%rax), %rax
subq %rdx, %rax
je 0x2d55
addq $0x20, %rdx
movq 0x60(%rbx), %rsi
cmpq 0x68(%rbx), %rsi
je 0x2c74
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x60(%rbx)
jmp 0x2d27
movq %rbx, %rdi
addq $0x58, %rdi
callq 0x492e
jmp 0x2d27
leaq -0x20(%rbp), %rdx
movq %r14, %rdi
callq 0x47f4
movq 0x78(%rbx), %rsi
cmpq 0x80(%rbx), %rsi
je 0x2cac
movq -0x28(%rbp), %rax
movq %rax, (%rsi)
addq $0x8, 0x78(%rbx)
jmp 0x2cb8
leaq -0x28(%rbp), %rdx
movq %r14, %rdi
callq 0x47f4
movq -0x20(%rbp), %rax
movq %rbx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq %rbx, 0x28(%rax)
movq 0x58(%rax), %rdx
cmpq %rdx, 0x60(%rax)
je 0x2d6b
movq 0x60(%rbx), %rsi
cmpq 0x68(%rbx), %rsi
je 0x2cf2
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x60(%rbx)
jmp 0x2cfe
movq %rbx, %rdi
addq $0x58, %rdi
callq 0x492e
movq -0x28(%rbp), %r14
movq 0x58(%r14), %rdi
movq 0x60(%r14), %rdx
leaq 0x8(%rdi), %rsi
cmpq %rdx, %rsi
je 0x2d1b
subq %rsi, %rdx
callq 0x2290
addq $-0x8, 0x60(%r14)
movq -0x28(%rbp), %rax
decl 0x20(%rax)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
incl 0x20(%rax)
movq %rbx, 0x7477(%rip)      # 0xa1b0
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x432a(%rip), %rdi      # 0x7075
movq %rbx, %rsi
xorl %eax, %eax
callq 0x2250
sarq $0x3, %rax
imulq %r15, %rax
leaq 0x4311(%rip), %rdi      # 0x7075
xorl %esi, %esi
movq %rax, %rdx
jmp 0x2d4e
leaq 0x4303(%rip), %rdi      # 0x7075
xorl %esi, %esi
xorl %edx, %edx
jmp 0x2d4e
jmp 0x2d7e
jmp 0x2d7e
jmp 0x2d7e
movq %rax, %r14
movq %rbx, %rdi
callq 0x2180
movq %r14, %rdi
callq 0x22c0