// File: /workspace/github_cpp_makefile_star2_O2/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 $0x218, %rsp            # imm = 0x218
movq %rsi, %rbx
movl %edi, %ebp
xorl %edi, %edi
callq 0x3d092
movl %ebp, %edi
movq %rbx, %rsi
callq 0x3cd9c
movq $0x2710, 0xc8(%rsp) # imm = 0x2710
leaq 0x150(%rsp), %rdi
callq 0x261d4
leaq 0x128(%rsp), %rdi
callq 0x261d4
leaq 0x100(%rsp), %rdi
callq 0x261d4
leaq 0xd8(%rsp), %rdi
callq 0x261d4
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
leaq 0x320e4(%rip), %rsi     # 0x3e1a0
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xb180
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x21642
leaq 0x50(%rsp), %rdi
callq 0xb1d0
leaq 0x320dd(%rip), %rsi     # 0x3e1c8
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xb180
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x21642
leaq 0x50(%rsp), %rdi
callq 0xb1d0
leaq 0x320d6(%rip), %rsi     # 0x3e1f0
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xb180
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x21642
leaq 0x50(%rsp), %rdi
callq 0xb1d0
leaq 0x320cf(%rip), %rsi     # 0x3e218
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xb180
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x21642
leaq 0x50(%rsp), %rdi
callq 0xb1d0
leaq 0x320c8(%rip), %rsi     # 0x3e240
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xb180
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x21642
leaq 0x50(%rsp), %rdi
callq 0xb1d0
leaq 0x320c1(%rip), %rsi     # 0x3e268
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xb180
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x21642
leaq 0x50(%rsp), %rdi
callq 0xb1d0
leaq 0x320ba(%rip), %rsi     # 0x3e290
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xb180
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x21642
leaq 0x50(%rsp), %rdi
callq 0xb1d0
leaq 0x320b3(%rip), %rsi     # 0x3e2b8
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xb180
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x21642
leaq 0x50(%rsp), %rdi
callq 0xb1d0
leaq 0x320ac(%rip), %rsi     # 0x3e2e0
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xb180
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x21642
leaq 0x50(%rsp), %rdi
callq 0xb1d0
leaq 0x50(%rsp), %rdi
callq 0x12b86
leaq 0x50(%rsp), %rdi
pushq $0x2
popq %rdx
movl $0xfb, %esi
callq 0x1244e
leaq 0x32089(%rip), %rsi     # 0x3e308
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb180
leaq 0xc8(%rsp), %rdi
pushq $0x2
popq %rdx
leaq 0x30(%rsp), %rcx
leaq 0x100(%rsp), %r8
leaq 0xd8(%rsp), %r9
movl $0xfb, %esi
callq 0x1271e
leaq 0x30(%rsp), %rdi
callq 0xb1d0
movq 0x10(%rsp), %rbx
movq 0x18(%rsp), %rax
movq %rax, 0xc0(%rsp)
leaq 0x150(%rsp), %r13
leaq 0x1f0(%rsp), %rbp
leaq 0x1c8(%rsp), %r14
leaq 0x1a0(%rsp), %r15
leaq 0x178(%rsp), %r12
cmpq 0xc0(%rsp), %rbx
je 0xc3a7
movl $0xfb, %esi
leaq 0xc8(%rsp), %rdi
pushq $0x2
popq %rdx
movq %rbx, %rcx
movq %r13, %r8
leaq 0x128(%rsp), %r9
callq 0x1271e
movq %rbp, %rdi
movq %r13, %rsi
callq 0x12ae4
movq %r14, %rdi
leaq 0x128(%rsp), %rsi
callq 0x12ae4
movq %r15, %rdi
leaq 0x100(%rsp), %rsi
callq 0x12ae4
movq %r12, %rdi
leaq 0xd8(%rsp), %rsi
callq 0x12ae4
leaq 0x50(%rsp), %rdi
movq %rbp, %rsi
movq %r14, %rdx
movq %r15, %rcx
movq %r12, %r8
callq 0x12a9e
movq %r12, %rdi
callq 0x263fe
movq %r15, %rdi
callq 0x263fe
movq %r14, %rdi
callq 0x263fe
movq %rbp, %rdi
callq 0x263fe
addq $0x20, %rbx
jmp 0xc2fc
leaq 0x50(%rsp), %rdi
callq 0x13486
leaq 0x10(%rsp), %rdi
callq 0x12b3e
leaq 0xd8(%rsp), %rdi
callq 0x263fe
leaq 0x100(%rsp), %rdi
callq 0x263fe
leaq 0x128(%rsp), %rdi
callq 0x263fe
leaq 0x150(%rsp), %rdi
callq 0x263fe
xorl %eax, %eax
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xb1d0
jmp 0xc4b5
jmp 0xc4b2
jmp 0xc4b2
jmp 0xc450
jmp 0xc441
jmp 0xc450
jmp 0xc441
jmp 0xc450
jmp 0xc441
jmp 0xc450
jmp 0xc441
jmp 0xc450
jmp 0xc441
jmp 0xc450
jmp 0xc441
jmp 0xc450
jmp 0xc441
jmp 0xc450
jmp 0xc441
jmp 0xc450
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb1d0
jmp 0xc4bf
movq %rax, %rbx
jmp 0xc4bf
movq %rax, %rbx
jmp 0xc4d6
movq %rax, %rbx
jmp 0xc4e3
movq %rax, %rbx
jmp 0xc4f0
movq %rax, %rbx
jmp 0xc4a3
movq %rax, %rbx
jmp 0xc496
movq %rax, %rbx
jmp 0xc489
movq %rax, %rbx
leaq 0x178(%rsp), %rdi
callq 0x263fe
leaq 0x1a0(%rsp), %rdi
callq 0x263fe
leaq 0x1c8(%rsp), %rdi
callq 0x263fe
leaq 0x1f0(%rsp), %rdi
callq 0x263fe
jmp 0xc4b5
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x13486
leaq 0x10(%rsp), %rdi
callq 0x12b3e
leaq 0xd8(%rsp), %rdi
callq 0x263fe
leaq 0x100(%rsp), %rdi
callq 0x263fe
leaq 0x128(%rsp), %rdi
callq 0x263fe
leaq 0x150(%rsp), %rdi
callq 0x263fe
movq %rbx, %rdi
callq 0xb7b0
nop