// File: thunlp[P]KB2E/CTransR/Train_CTransR.cpp
// Function: Train::bfgs()
void bfgs()
    {
        res=0;
        int nbatches=100;
        int neval = 1000;
        int batchsize = fb_h.size()/nbatches;
        relation_tmp=relation_vec;
        entity_tmp = entity_vec;
        A_tmp = A;
        fb_relation_tmp = fb_relation_vec;
        fb_A_tmp = fb_A;

        for (int eval=0; eval<neval; eval++)
        {

            res=0;
            for (int batch = 0; batch<nbatches; batch++)
            {
                //cout<<batch<<endl;
                for (int kk=0; kk<batchsize; kk++)
                {
                    int i=rand_max(fb_h.size());
                    int j=rand_max(entity_num);
                    int e1 = fb_h[i];
                    int e2 = fb_l[i];
                    int rel = fb_r[i];
                    int fb_rel = cluster2fb[rel];
                    double pr = 1000*right_mean[fb_r[i]]/(right_mean[fb_r[i]]+left_mean[fb_r[i]]);
                    if (method ==0)
                        pr = 500;
                    if (rand()%1000<pr)
                    {
                        while (ok[make_pair(e1,rel)].count(j)>0||ok_fb[make_pair(e1,fb_rel)].count(j)>0)
                            j=rand_max(entity_num);
                        train_kb(e1,fb_l[i],rel,e1,j,rel);
                    }
                    else
                    {
                        while (ok[make_pair(j,rel)].count(fb_l[i])>0||ok_fb[make_pair(j,fb_rel)].count(fb_l[i])>0)
                            j=rand_max(entity_num);
                            train_kb(e1,fb_l[i],rel,j,fb_l[i],rel);
                    }
                    same_rel(rel);
                    norm(relation_tmp[rel]);
                    norm(fb_relation_tmp[fb_rel]);
                    norm(entity_tmp[e1]);
                    norm(entity_tmp[fb_l[i]]);
                    norm(entity_tmp[j]);
                    norm(entity_tmp[e1],A_tmp[fb_rel]);
                    norm(entity_tmp[fb_l[i]],A_tmp[fb_rel]);
                    norm(entity_tmp[j],A_tmp[fb_rel]);

                }
                relation_vec = relation_tmp;
                entity_vec = entity_tmp;
                A = A_tmp;
                fb_relation_tmp = fb_relation_vec;
                fb_A_tmp = fb_A;
            }
            cout<<"eval:"<<eval<<' '<<res<<endl;
            FILE* f1 = fopen(("relation2vec."+version).c_str(),"w");
            FILE* f2 = fopen(("entity2vec."+version).c_str(),"w");
            FILE* f3 = fopen(("A."+version).c_str(),"w");
            for (int i=0; i<relation_num; i++)
            {
                for (int ii=0; ii<m; ii++)
                    fprintf(f1,"%.6lf\t",relation_vec[i][ii]);
                fprintf(f1,"\n");
            }
            for (int i=0; i<entity_num; i++)
            {
                for (int ii=0; ii<n; ii++)
                    fprintf(f2,"%.6lf\t",entity_vec[i][ii]);
                fprintf(f2,"\n");
            }
            for (int i=0; i<fb_relation_num; i++)
            for (int jj=0; jj<n; jj++)
            {
                for (int ii=0; ii<m; ii++)
                {
                    fprintf(f3,"%.6lf\t",A[i][jj][ii]);
                }
                fprintf(f3,"\n");
            }
            fclose(f1);
            fclose(f2);
            fclose(f3);


            FILE* f4 = fopen(("fb_relation2vec."+version).c_str(),"w");
            for (int i=0; i<fb_relation_num; i++)
            {
                for (int ii=0; ii<m; ii++)
                    fprintf(f4,"%.6lf\t",fb_relation_vec[i][ii]);
                fprintf(f4,"\n");
            }
            fclose(f4);
        }
    }

// Assembly:
subq $0x228, %rsp            # imm = 0x228
movq %rdi, 0x220(%rsp)
movq 0x220(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x78(%rdi)
movl $0x64, 0x21c(%rsp)
movl $0x3e8, 0x218(%rsp) # imm = 0x3E8
addq $0x90, %rdi
callq 0x77a0
movq 0xe8(%rsp), %rdi
movslq 0x21c(%rsp), %rcx
xorl %edx, %edx
divq %rcx
movl %eax, 0x214(%rsp)
movq %rdi, %rsi
addq $0xd8, %rsi
addq $0x120, %rdi            # imm = 0x120
callq 0xbc40
movq 0xe8(%rsp), %rdi
movq %rdi, %rsi
addq $0xf0, %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xbc40
movq 0xe8(%rsp), %rdi
movq %rdi, %rsi
addq $0x168, %rsi            # imm = 0x168
addq $0x180, %rdi            # imm = 0x180
callq 0xbf00
movq 0xe8(%rsp), %rdi
movq %rdi, %rsi
addq $0x108, %rsi            # imm = 0x108
addq $0x150, %rdi            # imm = 0x150
callq 0xbc40
movq 0xe8(%rsp), %rdi
movq %rdi, %rsi
addq $0x198, %rsi            # imm = 0x198
addq $0x1b0, %rdi            # imm = 0x1B0
callq 0xbf00
movl $0x0, 0x210(%rsp)
movl 0x210(%rsp), %eax
cmpl 0x218(%rsp), %eax
jge 0x9dce
movq 0xe8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x78(%rax)
movl $0x0, 0x20c(%rsp)
movl 0x20c(%rsp), %eax
cmpl 0x21c(%rsp), %eax
jge 0x97ae
movl $0x0, 0x208(%rsp)
movl 0x208(%rsp), %eax
cmpl 0x214(%rsp), %eax
jge 0x9702
movq 0xe8(%rsp), %rdi
addq $0x90, %rdi
callq 0x77a0
movq 0xe8(%rsp), %rdi
movl %eax, %esi
callq 0xc1c0
movq 0xe8(%rsp), %rdi
movl %eax, 0x204(%rsp)
movl 0x46fbc(%rip), %esi     # 0x4ffb4
callq 0xc1c0
movq 0xe8(%rsp), %rdi
movl %eax, 0x200(%rsp)
addq $0x90, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq 0xe8(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x1fc(%rsp)
addq $0xa8, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq 0xe8(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x1f8(%rsp)
addq $0xc0, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movl (%rax), %eax
movl %eax, 0x1f4(%rsp)
leaq 0x46f46(%rip), %rdi     # 0x4ffc0
leaq 0x1f4(%rsp), %rsi
callq 0x4680
movq 0xe8(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x1f0(%rsp)
addq $0xc0, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq %rax, %rsi
leaq 0x470ba(%rip), %rdi     # 0x50170
callq 0x49a0
movq 0xe8(%rsp), %rdi
movsd 0xcf75(%rip), %xmm0     # 0x16040
mulsd (%rax), %xmm0
movsd %xmm0, 0xe0(%rsp)
addq $0xc0, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq %rax, %rsi
leaq 0x4707a(%rip), %rdi     # 0x50170
callq 0x49a0
movq 0xe8(%rsp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, 0xd8(%rsp)
addq $0xc0, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq %rax, %rsi
leaq 0x47012(%rip), %rdi     # 0x50140
callq 0x49a0
movsd 0xd8(%rsp), %xmm1
movsd 0xe0(%rsp), %xmm0
movq %rax, %rcx
movq 0xe8(%rsp), %rax
addsd (%rcx), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x1e8(%rsp)
cmpl $0x0, 0x70(%rax)
jne 0x9178
movsd 0xced9(%rip), %xmm0     # 0x16048
movsd %xmm0, 0x1e8(%rsp)
callq 0x2090
movl $0x3e8, %ecx            # imm = 0x3E8
cltd
idivl %ecx
cvtsi2sd %edx, %xmm1
movsd 0x1e8(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x92e8
jmp 0x919e
leaq 0x1fc(%rsp), %rdi
leaq 0x1f4(%rsp), %rsi
callq 0x7310
movq 0xe8(%rsp), %rdi
movq %rax, 0x1e0(%rsp)
leaq 0x1e0(%rsp), %rsi
callq 0x7220
movq %rax, %rdi
leaq 0x200(%rsp), %rsi
callq 0x4770
movq %rax, %rcx
movb $0x1, %al
cmpq $0x0, %rcx
movb %al, 0xd7(%rsp)
ja 0x9256
movq 0xe8(%rsp), %rax
addq $0x30, %rax
movq %rax, 0xc8(%rsp)
leaq 0x1fc(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0x7310
movq 0xc8(%rsp), %rdi
movq %rax, 0x1d8(%rsp)
leaq 0x1d8(%rsp), %rsi
callq 0x7220
movq %rax, %rdi
leaq 0x200(%rsp), %rsi
callq 0x4770
cmpq $0x0, %rax
seta %al
movb %al, 0xd7(%rsp)
movb 0xd7(%rsp), %al
testb $0x1, %al
jne 0x9263
jmp 0x9282
movq 0xe8(%rsp), %rdi
movl 0x46d43(%rip), %esi     # 0x4ffb4
callq 0xc1c0
movl %eax, 0x200(%rsp)
jmp 0x919e
movq 0xe8(%rsp), %rdi
movl 0x1fc(%rsp), %eax
movl %eax, 0xc4(%rsp)
addq $0xa8, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq 0xe8(%rsp), %rdi
movl 0xc4(%rsp), %esi
movl (%rax), %edx
movl 0x1f4(%rsp), %ecx
movl 0x1fc(%rsp), %r8d
movl 0x200(%rsp), %r9d
movl 0x1f4(%rsp), %eax
movl %eax, (%rsp)
callq 0xc230
jmp 0x94bc
jmp 0x92ea
leaq 0x200(%rsp), %rdi
leaq 0x1f4(%rsp), %rsi
callq 0x7310
movq 0xe8(%rsp), %rdi
movq %rax, 0x1d0(%rsp)
leaq 0x1d0(%rsp), %rsi
callq 0x7220
movq 0xe8(%rsp), %rdi
movq %rax, 0xb8(%rsp)
addq $0xa8, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq 0xb8(%rsp), %rdi
movq %rax, %rsi
callq 0x4770
movq %rax, %rcx
movb $0x1, %al
cmpq $0x0, %rcx
movb %al, 0xc3(%rsp)
ja 0x93ee
movq 0xe8(%rsp), %rax
addq $0x30, %rax
movq %rax, 0xa8(%rsp)
leaq 0x200(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0x7310
movq 0xa8(%rsp), %rdi
movq %rax, 0x1c8(%rsp)
leaq 0x1c8(%rsp), %rsi
callq 0x7220
movq 0xe8(%rsp), %rdi
movq %rax, 0xb0(%rsp)
addq $0xa8, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq 0xb0(%rsp), %rdi
movq %rax, %rsi
callq 0x4770
cmpq $0x0, %rax
seta %al
movb %al, 0xc3(%rsp)
movb 0xc3(%rsp), %al
testb $0x1, %al
jne 0x93fb
jmp 0x941a
movq 0xe8(%rsp), %rdi
movl 0x46bab(%rip), %esi     # 0x4ffb4
callq 0xc1c0
movl %eax, 0x200(%rsp)
jmp 0x92ea
movq 0xe8(%rsp), %rdi
movl 0x1fc(%rsp), %eax
movl %eax, 0x98(%rsp)
addq $0xa8, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq 0xe8(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x9c(%rsp)
movl 0x1f4(%rsp), %eax
movl %eax, 0xa0(%rsp)
movl 0x200(%rsp), %eax
movl %eax, 0xa4(%rsp)
addq $0xa8, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq 0xe8(%rsp), %rdi
movl 0x98(%rsp), %esi
movl 0x9c(%rsp), %edx
movl 0xa0(%rsp), %ecx
movl 0xa4(%rsp), %r8d
movl (%rax), %r9d
movl 0x1f4(%rsp), %eax
movl %eax, (%rsp)
callq 0xc230
movq 0xe8(%rsp), %rdi
cvtsi2sdl 0x1f4(%rsp), %xmm0
callq 0xc300
movq 0xe8(%rsp), %rdi
addq $0x120, %rdi            # imm = 0x120
movslq 0x1f4(%rsp), %rsi
callq 0x8ce0
movq 0xe8(%rsp), %rdi
movq %rax, %rsi
callq 0x8dc0
movq 0xe8(%rsp), %rdi
addq $0x150, %rdi            # imm = 0x150
movslq 0x1f0(%rsp), %rsi
callq 0x8ce0
movq 0xe8(%rsp), %rdi
movq %rax, %rsi
callq 0x8dc0
movq 0xe8(%rsp), %rdi
addq $0x138, %rdi            # imm = 0x138
movslq 0x1fc(%rsp), %rsi
callq 0x8ce0
movq 0xe8(%rsp), %rdi
movq %rax, %rsi
callq 0x8dc0
movq 0xe8(%rsp), %rdi
movq %rdi, %rax
addq $0x138, %rax            # imm = 0x138
movq %rax, 0x70(%rsp)
addq $0xa8, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq 0x70(%rsp), %rdi
movslq (%rax), %rsi
callq 0x8ce0
movq 0xe8(%rsp), %rdi
movq %rax, %rsi
callq 0x8dc0
movq 0xe8(%rsp), %rdi
addq $0x138, %rdi            # imm = 0x138
movslq 0x200(%rsp), %rsi
callq 0x8ce0
movq 0xe8(%rsp), %rdi
movq %rax, %rsi
callq 0x8dc0
movq 0xe8(%rsp), %rdi
addq $0x138, %rdi            # imm = 0x138
movslq 0x1fc(%rsp), %rsi
callq 0x8ce0
movq 0xe8(%rsp), %rdi
movq %rax, 0x78(%rsp)
addq $0x180, %rdi            # imm = 0x180
movslq 0x1f0(%rsp), %rsi
callq 0x8c20
movq 0x78(%rsp), %rsi
movq 0xe8(%rsp), %rdi
movq %rax, %rdx
callq 0xc7a0
movq 0xe8(%rsp), %rdi
movq %rdi, %rax
addq $0x138, %rax            # imm = 0x138
movq %rax, 0x80(%rsp)
addq $0xa8, %rdi
movslq 0x204(%rsp), %rsi
callq 0xc210
movq 0x80(%rsp), %rdi
movslq (%rax), %rsi
callq 0x8ce0
movq 0xe8(%rsp), %rdi
movq %rax, 0x88(%rsp)
addq $0x180, %rdi            # imm = 0x180
movslq 0x1f0(%rsp), %rsi
callq 0x8c20
movq 0x88(%rsp), %rsi
movq 0xe8(%rsp), %rdi
movq %rax, %rdx
callq 0xc7a0
movq 0xe8(%rsp), %rdi
addq $0x138, %rdi            # imm = 0x138
movslq 0x200(%rsp), %rsi
callq 0x8ce0
movq 0xe8(%rsp), %rdi
movq %rax, 0x90(%rsp)
addq $0x180, %rdi            # imm = 0x180
movslq 0x1f0(%rsp), %rsi
callq 0x8c20
movq 0xe8(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq %rax, %rdx
callq 0xc7a0
movl 0x208(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x208(%rsp)
jmp 0x8fac
movq 0xe8(%rsp), %rdi
movq %rdi, %rsi
addq $0x120, %rsi            # imm = 0x120
addq $0xd8, %rdi
callq 0xbc40
movq 0xe8(%rsp), %rdi
movq %rdi, %rsi
addq $0x138, %rsi            # imm = 0x138
addq $0xf0, %rdi
callq 0xbc40
movq 0xe8(%rsp), %rdi
movq %rdi, %rsi
addq $0x180, %rsi            # imm = 0x180
addq $0x168, %rdi            # imm = 0x168
callq 0xbf00
movq 0xe8(%rsp), %rdi
movq %rdi, %rsi
addq $0x108, %rsi            # imm = 0x108
addq $0x150, %rdi            # imm = 0x150
callq 0xbc40
movq 0xe8(%rsp), %rdi
movq %rdi, %rsi
addq $0x198, %rsi            # imm = 0x198
addq $0x1b0, %rdi            # imm = 0x1B0
callq 0xbf00
movl 0x20c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x20c(%rsp)
jmp 0x8f8d
movq 0x15823(%rip), %rdi     # 0x1efd8
leaq 0xca3e(%rip), %rsi      # 0x161fa
callq 0x2200
movq %rax, %rdi
movl 0x210(%rsp), %esi
callq 0x2390
movq %rax, %rdi
movl $0x20, %esi
callq 0x22a0
movq %rax, %rdi
movq 0xe8(%rsp), %rax
movsd 0x78(%rax), %xmm0
callq 0x23f0
movq %rax, %rdi
movq 0x157c4(%rip), %rsi     # 0x1efc0
callq 0x2250
leaq 0xca13(%rip), %rsi      # 0x1621b
leaq 0x15a39(%rip), %rdx     # 0x1f248
leaq 0x1a0(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xcae0
movq 0x60(%rsp), %rdi
callq 0x20e0
movq %rax, %rdi
leaq 0xc9cb(%rip), %rsi      # 0x16200
callq 0x22b0
movq %rax, 0x68(%rsp)
jmp 0x9841
leaq 0x1a0(%rsp), %rdi
callq 0x2428
movq 0x68(%rsp), %rax
movq %rax, 0x1c0(%rsp)
leaq 0xc9a0(%rip), %rsi      # 0x16202
leaq 0x159df(%rip), %rdx     # 0x1f248
leaq 0x168(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xcae0
movq 0x50(%rsp), %rdi
callq 0x20e0
movq %rax, %rdi
leaq 0xc971(%rip), %rsi      # 0x16200
callq 0x22b0
movq %rax, 0x58(%rsp)
jmp 0x989b
leaq 0x168(%rsp), %rdi
callq 0x2428
movq 0x58(%rsp), %rax
movq %rax, 0x188(%rsp)
leaq 0xc952(%rip), %rsi      # 0x1620e
leaq 0x15985(%rip), %rdx     # 0x1f248
leaq 0x140(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xcae0
movq 0x40(%rsp), %rdi
callq 0x20e0
movq %rax, %rdi
leaq 0xc917(%rip), %rsi      # 0x16200
callq 0x22b0
movq %rax, 0x48(%rsp)
jmp 0x98f5
leaq 0x140(%rsp), %rdi
callq 0x2428
movq 0x48(%rsp), %rax
movq %rax, 0x160(%rsp)
movl $0x0, 0x13c(%rsp)
movl 0x13c(%rsp), %eax
cmpl 0x46689(%rip), %eax     # 0x4ffb0
jge 0x9a51
movl $0x0, 0x138(%rsp)
movq 0xe8(%rsp), %rcx
movl 0x138(%rsp), %eax
cmpl 0x6c(%rcx), %eax
jge 0x9a25
movq 0xe8(%rsp), %rdi
movq 0x1c0(%rsp), %rax
movq %rax, 0x38(%rsp)
addq $0xd8, %rdi
movslq 0x13c(%rsp), %rsi
callq 0x8ce0
movq %rax, %rdi
movslq 0x138(%rsp), %rsi
callq 0x3fb0
movq 0x38(%rsp), %rdi
movsd (%rax), %xmm0
leaq 0xc878(%rip), %rsi      # 0x16211
movb $0x1, %al
callq 0x2310
movl 0x138(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x138(%rsp)
jmp 0x9938
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0x2428
jmp 0x9dd6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x168(%rsp), %rdi
callq 0x2428
jmp 0x9dd6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x140(%rsp), %rdi
callq 0x2428
jmp 0x9dd6
movq 0x1c0(%rsp), %rdi
leaq 0xc6fe(%rip), %rsi      # 0x16132
movb $0x0, %al
callq 0x2310
movl 0x13c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x13c(%rsp)
jmp 0x991a
movl $0x0, 0x134(%rsp)
movl 0x134(%rsp), %eax
cmpl 0x4654b(%rip), %eax     # 0x4ffb4
jge 0x9b1d
movl $0x0, 0x130(%rsp)
movq 0xe8(%rsp), %rcx
movl 0x130(%rsp), %eax
cmpl 0x68(%rcx), %eax
jge 0x9af1
movq 0xe8(%rsp), %rdi
movq 0x188(%rsp), %rax
movq %rax, 0x30(%rsp)
addq $0xf0, %rdi
movslq 0x134(%rsp), %rsi
callq 0x8ce0
movq %rax, %rdi
movslq 0x130(%rsp), %rsi
callq 0x3fb0
movq 0x30(%rsp), %rdi
movsd (%rax), %xmm0
leaq 0xc73a(%rip), %rsi      # 0x16211
movb $0x1, %al
callq 0x2310
movl 0x130(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x130(%rsp)
jmp 0x9a7a
movq 0x188(%rsp), %rdi
leaq 0xc632(%rip), %rsi      # 0x16132
movb $0x0, %al
callq 0x2310
movl 0x134(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x134(%rsp)
jmp 0x9a5c
movl $0x0, 0x12c(%rsp)
movl 0x12c(%rsp), %eax
cmpl 0x46483(%rip), %eax     # 0x4ffb8
jge 0x9c37
movl $0x0, 0x128(%rsp)
movq 0xe8(%rsp), %rcx
movl 0x128(%rsp), %eax
cmpl 0x68(%rcx), %eax
jge 0x9c1f
movl $0x0, 0x124(%rsp)
movq 0xe8(%rsp), %rcx
movl 0x124(%rsp), %eax
cmpl 0x6c(%rcx), %eax
jge 0x9bf3
movq 0xe8(%rsp), %rdi
movq 0x160(%rsp), %rax
movq %rax, 0x28(%rsp)
addq $0x168, %rdi            # imm = 0x168
movslq 0x12c(%rsp), %rsi
callq 0x8c20
movq %rax, %rdi
movslq 0x128(%rsp), %rsi
callq 0x8ce0
movq %rax, %rdi
movslq 0x124(%rsp), %rsi
callq 0x3fb0
movq 0x28(%rsp), %rdi
movsd (%rax), %xmm0
leaq 0xc63b(%rip), %rsi      # 0x16211
movb $0x1, %al
callq 0x2310
movl 0x124(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x124(%rsp)
jmp 0x9b69
movq 0x160(%rsp), %rdi
leaq 0xc530(%rip), %rsi      # 0x16132
movb $0x0, %al
callq 0x2310
movl 0x128(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x128(%rsp)
jmp 0x9b46
jmp 0x9c21
movl 0x12c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x12c(%rsp)
jmp 0x9b28
movq 0x1c0(%rsp), %rdi
callq 0x2210
movq 0x188(%rsp), %rdi
callq 0x2210
movq 0x160(%rsp), %rdi
callq 0x2210
leaq 0xc5b3(%rip), %rsi      # 0x16218
leaq 0x155dc(%rip), %rdx     # 0x1f248
leaq 0xf8(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xcae0
movq 0x18(%rsp), %rdi
callq 0x20e0
movq %rax, %rdi
leaq 0xc56e(%rip), %rsi      # 0x16200
callq 0x22b0
movq %rax, 0x20(%rsp)
jmp 0x9c9e
leaq 0xf8(%rsp), %rdi
callq 0x2428
movq 0x20(%rsp), %rax
movq %rax, 0x118(%rsp)
movl $0x0, 0xf4(%rsp)
movl 0xf4(%rsp), %eax
cmpl 0x462e8(%rip), %eax     # 0x4ffb8
jge 0x9dab
movl $0x0, 0xf0(%rsp)
movq 0xe8(%rsp), %rcx
movl 0xf0(%rsp), %eax
cmpl 0x6c(%rcx), %eax
jge 0x9d7f
movq 0xe8(%rsp), %rdi
movq 0x118(%rsp), %rax
movq %rax, 0x10(%rsp)
addq $0x108, %rdi            # imm = 0x108
movslq 0xf4(%rsp), %rsi
callq 0x8ce0
movq %rax, %rdi
movslq 0xf0(%rsp), %rsi
callq 0x3fb0
movq 0x10(%rsp), %rdi
movsd (%rax), %xmm0
leaq 0xc4cf(%rip), %rsi      # 0x16211
movb $0x1, %al
callq 0x2310
movl 0xf0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xf0(%rsp)
jmp 0x9ce1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x198(%rsp)
movl %eax, 0x194(%rsp)
leaq 0xf8(%rsp), %rdi
callq 0x2428
jmp 0x9dd6
movq 0x118(%rsp), %rdi
leaq 0xc3a4(%rip), %rsi      # 0x16132
movb $0x0, %al
callq 0x2310
movl 0xf4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xf4(%rsp)
jmp 0x9cc3
movq 0x118(%rsp), %rdi
callq 0x2210
movl 0x210(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x210(%rsp)
jmp 0x8f5e
addq $0x228, %rsp            # imm = 0x228
retq
movq 0x198(%rsp), %rdi
callq 0x23a0
nopw %cs:(%rax,%rax)
nopl (%rax)