// File: /workspace/github_cpp_makefile_star2_O3/btbujiangjun[P]abcdl/example/sessionq.cpp
// Function: main
int main(int argc, char** argv){
    abcdl::utils::log::set_min_log_level(abcdl::utils::log::INFO);
    abcdl::utils::log::initialize_log(argc, argv);

    abcdl::utils::LibsvmHelper<real> helper;
    abcdl::algebra::Mat train_data;
    abcdl::algebra::Mat train_label;
    abcdl::algebra::Mat test_data;
    abcdl::algebra::Mat test_label;
    size_t feature_dim = 251;
    size_t label_dim = 2;
    
    std::vector<std::string> paths;
    paths.push_back("./data/sessionq/sessionq.train.libsvmaa");
    paths.push_back("./data/sessionq/sessionq.train.libsvmab");
    paths.push_back("./data/sessionq/sessionq.train.libsvmac");
    paths.push_back("./data/sessionq/sessionq.train.libsvmad");
    paths.push_back("./data/sessionq/sessionq.train.libsvmae");
    paths.push_back("./data/sessionq/sessionq.train.libsvmaf");
    paths.push_back("./data/sessionq/sessionq.train.libsvmag");
    paths.push_back("./data/sessionq/sessionq.train.libsvmah");
    paths.push_back("./data/sessionq/sessionq.train.libsvmai");
    
    SessionQ sessionq;
    sessionq.init(feature_dim, label_dim);
    
    helper.read_data(feature_dim, label_dim, "./data/sessionq/sessionq.train.libsvmaj", &test_data, &test_label);
    for(auto& path : paths){
        helper.read_data(feature_dim, label_dim, path, &train_data, &train_label);
        sessionq.pass(train_data, train_label, test_data, test_label);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
movq %rsi, %rbx
movl %edi, %ebp
xorl %edi, %edi
callq 0x4834c
movl %ebp, %edi
movq %rbx, %rsi
callq 0x47ee8
movq $0x2710, 0x98(%rsp) # imm = 0x2710
leaq 0x120(%rsp), %rdi
callq 0x293c8
leaq 0xf8(%rsp), %rdi
callq 0x293c8
leaq 0xd0(%rsp), %rdi
callq 0x293c8
leaq 0xa8(%rsp), %rdi
callq 0x293c8
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
leaq 0x30(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3cc33(%rip), %rsi     # 0x491a0
leaq 0x3cc53(%rip), %rdx     # 0x491c7
leaq 0x20(%rsp), %rdi
callq 0x15f3e
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x23e7e
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0xc59a
callq 0xb440
leaq 0x20(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x3cc1f(%rip), %rsi     # 0x491c8
leaq 0x3cc3f(%rip), %rdx     # 0x491ef
callq 0x15f3e
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x23e7e
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0xc5d1
callq 0xb440
leaq 0x20(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x3cc10(%rip), %rsi     # 0x491f0
leaq 0x3cc30(%rip), %rdx     # 0x49217
callq 0x15f3e
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x23e7e
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0xc608
callq 0xb440
leaq 0x20(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x3cc01(%rip), %rsi     # 0x49218
leaq 0x3cc21(%rip), %rdx     # 0x4923f
callq 0x15f3e
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x23e7e
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0xc63f
callq 0xb440
leaq 0x20(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x3cbf2(%rip), %rsi     # 0x49240
leaq 0x3cc12(%rip), %rdx     # 0x49267
callq 0x15f3e
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x23e7e
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0xc676
callq 0xb440
leaq 0x20(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x3cbe3(%rip), %rsi     # 0x49268
leaq 0x3cc03(%rip), %rdx     # 0x4928f
callq 0x15f3e
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x23e7e
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0xc6ad
callq 0xb440
leaq 0x20(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x3cbd4(%rip), %rsi     # 0x49290
leaq 0x3cbf4(%rip), %rdx     # 0x492b7
callq 0x15f3e
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x23e7e
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0xc6e4
callq 0xb440
leaq 0x20(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x3cbc5(%rip), %rsi     # 0x492b8
leaq 0x3cbe5(%rip), %rdx     # 0x492df
callq 0x15f3e
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x23e7e
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0xc71b
callq 0xb440
leaq 0x20(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x3cbb6(%rip), %rsi     # 0x492e0
leaq 0x3cbd6(%rip), %rdx     # 0x49307
callq 0x15f3e
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x23e7e
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0xc752
callq 0xb440
leaq 0x20(%rsp), %rdi
callq 0x1387e
leaq 0x20(%rsp), %rdi
movl $0xfb, %esi
movl $0x2, %edx
callq 0x12f90
leaq 0x158(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3cb85(%rip), %rsi     # 0x49308
leaq 0x3cba5(%rip), %rdx     # 0x4932f
leaq 0x148(%rsp), %rdi
callq 0x15f3e
leaq 0x98(%rsp), %rdi
leaq 0x148(%rsp), %rcx
leaq 0xd0(%rsp), %r8
leaq 0xa8(%rsp), %r9
movl $0xfb, %esi
movl $0x2, %edx
callq 0x13312
movq 0x148(%rsp), %rdi
cmpq %r14, %rdi
je 0xc7d8
callq 0xb440
movq (%rsp), %rbx
movq 0x8(%rsp), %rax
movq %rax, 0x90(%rsp)
cmpq %rax, %rbx
je 0xca2e
movabsq $0x3fffffffffffffff, %rbp # imm = 0x3FFFFFFFFFFFFFFF
movq $-0x1, %r13
leaq 0x1e0(%rsp), %r12
movq %r12, %r14
movl $0xfb, %esi
movl $0x2, %edx
leaq 0x98(%rsp), %rdi
movq %rbx, %rcx
leaq 0x120(%rsp), %r8
leaq 0xf8(%rsp), %r9
callq 0x13312
leaq 0x1f8(%rsp), %rdi
callq 0xe464
movq 0x120(%rsp), %rax
movq 0x128(%rsp), %rcx
movq %rax, 0x1e0(%rsp)
movq %rcx, 0x1e8(%rsp)
imulq %rax, %rcx
leaq (,%rcx,4), %r12
cmpq %rbp, %rcx
movq %r12, %rdi
cmovaq %r13, %rdi
callq 0xb030
movq %rax, 0x1f0(%rsp)
movq 0x130(%rsp), %rsi
movq %rax, %rdi
movq %r12, %rdx
callq 0xb3a0
leaq 0x1d0(%rsp), %rdi
callq 0xe464
movq 0xf8(%rsp), %rax
movq 0x100(%rsp), %rcx
movq %rax, 0x1b8(%rsp)
movq %rcx, 0x1c0(%rsp)
imulq %rax, %rcx
leaq (,%rcx,4), %r12
cmpq %rbp, %rcx
movq %r12, %rdi
cmovaq %r13, %rdi
callq 0xb030
movq %rax, 0x1c8(%rsp)
movq 0x108(%rsp), %rsi
movq %rax, %rdi
movq %r12, %rdx
callq 0xb3a0
leaq 0x1a8(%rsp), %rdi
callq 0xe464
movq 0xd0(%rsp), %rax
movq 0xd8(%rsp), %rcx
movq %rax, 0x190(%rsp)
movq %rcx, 0x198(%rsp)
imulq %rax, %rcx
leaq (,%rcx,4), %r12
cmpq %rbp, %rcx
movq %r12, %rdi
cmovaq %r13, %rdi
callq 0xb030
movq %rax, 0x1a0(%rsp)
movq 0xe0(%rsp), %rsi
movq %rax, %rdi
movq %r12, %rdx
callq 0xb3a0
leaq 0x180(%rsp), %rdi
callq 0xe464
movq 0xa8(%rsp), %rax
movq 0xb0(%rsp), %rcx
movq %rax, 0x168(%rsp)
movq %rcx, 0x170(%rsp)
imulq %rax, %rcx
leaq (,%rcx,4), %r12
cmpq %rbp, %rcx
movq %r12, %rdi
cmovaq %r13, %rdi
callq 0xb030
movq %rax, 0x178(%rsp)
movq 0xb8(%rsp), %rsi
movq %rax, %rdi
movq %r12, %rdx
callq 0xb3a0
leaq 0x20(%rsp), %rdi
movq %r14, %r12
movq %r14, %rsi
leaq 0x1b8(%rsp), %r14
movq %r14, %rdx
leaq 0x190(%rsp), %r15
movq %r15, %rcx
leaq 0x168(%rsp), %r13
movq %r13, %r8
callq 0x137de
movq %r13, %rdi
callq 0x2961e
movq %r15, %rdi
callq 0x2961e
movq %r14, %rdi
callq 0x2961e
movq %r12, %rdi
callq 0x2961e
addq $0x20, %rbx
cmpq 0x90(%rsp), %rbx
movq $-0x1, %r13
jne 0xc80b
leaq 0x20(%rsp), %rdi
callq 0x14112
movq %rsp, %rdi
callq 0x1382a
leaq 0xa8(%rsp), %rdi
callq 0x2961e
leaq 0xd0(%rsp), %rdi
callq 0x2961e
leaq 0xf8(%rsp), %rdi
callq 0x2961e
leaq 0x120(%rsp), %rdi
callq 0x2961e
xorl %eax, %eax
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x148(%rsp), %rdi
cmpq %r14, %rdi
je 0xcb48
callq 0xb440
jmp 0xcb48
jmp 0xcb45
jmp 0xcb45
jmp 0xcae6
jmp 0xcad2
jmp 0xcae6
jmp 0xcad2
jmp 0xcae6
jmp 0xcad2
jmp 0xcae6
jmp 0xcad2
jmp 0xcae6
jmp 0xcad2
jmp 0xcae6
jmp 0xcad2
jmp 0xcae6
jmp 0xcad2
jmp 0xcae6
jmp 0xcad2
jmp 0xcae6
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r14, %rdi
je 0xcb52
callq 0xb440
jmp 0xcb52
movq %rax, %rbx
jmp 0xcb52
movq %rax, %rbx
jmp 0xcb67
movq %rax, %rbx
jmp 0xcb74
movq %rax, %rbx
jmp 0xcb81
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
callq 0x2961e
jmp 0xcb1c
movq %rax, %rbx
jmp 0xcb36
movq %rax, %rbx
jmp 0xcb29
movq %rax, %rbx
leaq 0x190(%rsp), %rdi
callq 0x2961e
leaq 0x1b8(%rsp), %rdi
callq 0x2961e
leaq 0x1e0(%rsp), %rdi
callq 0x2961e
jmp 0xcb48
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x14112
movq %rsp, %rdi
callq 0x1382a
leaq 0xa8(%rsp), %rdi
callq 0x2961e
leaq 0xd0(%rsp), %rdi
callq 0x2961e
leaq 0xf8(%rsp), %rdi
callq 0x2961e
leaq 0x120(%rsp), %rdi
callq 0x2961e
movq %rbx, %rdi
callq 0xb770