LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/zgimbutas[P]mwrap/src/mwrap-cgen.cc
// Function: print_mex_stub(_IO_FILE*, Func*)
void print_mex_stub(FILE* fp, Func* f)
{
    print_c_comment(fp, f);
    fprintf(fp,
            "static const char* stubids%d_ = \"%s\";\n\n"
            "void mexStub%d(int nlhs, mxArray* plhs[],\n"
            "              int nrhs, const mxArray* prhs[])\n"
            "{\n"
            "    const char* mw_err_txt_ = 0;\n",
            f->id, id_string(f).c_str(), f->id);

    mex_declare_args(fp, f);
    mex_unpack_dims(fp, f);
    mex_check_dims(fp, f);
    mex_unpack_inputs(fp, f);
    mex_check_inputs(fp, f);
    mex_alloc_output(fp, f);
    mex_record_call(fp, f);
    mex_make_stmt(fp, f);
    mex_marshal_results(fp, f);
    fprintf(fp, "\nmw_err_label:\n");
    mex_dealloc(fp, f);
    fprintf(fp,
            "    if (mw_err_txt_)\n"
            "        mexErrMsgTxt(mw_err_txt_);\n"
            "}\n\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x20, %rsp
movq %rsi, %r14
movq %rdi, %rbx
callq 0x9ee8
movl 0x28(%r14), %r15d
leaq -0x40(%rbp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x5cde
movq (%r12), %rcx
movl 0x28(%r14), %r8d
leaq 0xb22c(%rip), %rsi      # 0x151cb
movq %rbx, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0x32b0
movq %r12, %rdi
callq 0x33c8
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8849
movq %rbx, %rdi
movq %r14, %rsi
callq 0x89b0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8a93
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8ecd
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8f52
movq %rbx, %rdi
movq %r14, %rsi
callq 0x91a4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x91de
movq %rbx, %rdi
movq %r14, %rsi
callq 0x9398
movq %rbx, %rdi
movq %r14, %rsi
callq 0x9cf7
leaq 0xb251(%rip), %rdi      # 0x1526f
pushq $0xf
popq %rsi
pushq $0x1
popq %r15
movq %r15, %rdx
movq %rbx, %rcx
callq 0x33a0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x9eae
leaq 0xb23d(%rip), %rdi      # 0x1527f
pushq $0x3b
popq %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x33a0
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/zgimbutas[P]mwrap/src/mwrap-cgen.cc
// Function: make_profile_output(_IO_FILE*, Func*, char const*)
void make_profile_output(FILE* fp, Func* f, const char* printfunc)
{
    fprintf(fp,
            "        if (!mexprofrecord_)\n"
            "            %s\"Profiler inactive\\n\");\n",
            printfunc);
    for (; f; f = f->next) {
        fprintf(fp, "        %s\"%%d calls to %s:%d",
                printfunc, f->fname.c_str(), f->line);
        for (Func* fsame = f->same_next; fsame; fsame = fsame->next)
            fprintf(fp, " (%s:%d)", fsame->fname.c_str(), fsame->line);
        fprintf(fp, "\\n\", mexprofrecord_[%d]);\n", f->id);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
leaq 0xb240(%rip), %rsi      # 0x152bb
xorl %eax, %eax
callq 0x32b0
leaq 0xb294(%rip), %r12      # 0x1531d
testq %r14, %r14
je 0xa0ec
movq (%r14), %rcx
movl 0x20(%r14), %r8d
movq %r15, %rdi
leaq 0xb260(%rip), %rsi      # 0x152ff
movq %rbx, %rdx
xorl %eax, %eax
callq 0x32b0
leaq 0x60(%r14), %r13
movq (%r13), %r13
testq %r13, %r13
je 0xa0d1
movq (%r13), %rdx
movl 0x20(%r13), %ecx
movq %r15, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0x32b0
addq $0x58, %r13
jmp 0xa0ad
movl 0x28(%r14), %edx
movq %r15, %rdi
leaq 0xb247(%rip), %rsi      # 0x15326
xorl %eax, %eax
callq 0x32b0
movq 0x58(%r14), %r14
jmp 0xa089
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/zgimbutas[P]mwrap/src/mwrap-cgen.cc
// Function: print_mex_else_cases(_IO_FILE*, Func*)
void print_mex_else_cases(FILE* fp, Func* f)
{
    for (Func* fcall = f; fcall; fcall = fcall->next)
        fprintf(fp,
                "    else if (strcmp(id, stubids%d_) == 0)\n"
                "        mexStub%d(nlhs,plhs, nrhs-1,prhs+1);\n",
                fcall->id, fcall->id);

    int maxid = max_routine_id(f);

    fprintf(fp,
            "    else if (strcmp(id, \"*profile on*\") == 0) {\n"
            "        if (!mexprofrecord_) {\n"
            "            mexprofrecord_ = (int*) malloc(%d * sizeof(int));\n"
            "            mexLock();\n"
            "        }\n"
            "        memset(mexprofrecord_, 0, %d * sizeof(int));\n"
            "    } else if (strcmp(id, \"*profile off*\") == 0) {\n"
            "        if (mexprofrecord_) {\n"
            "            free(mexprofrecord_);\n"
            "            mexUnlock();\n"
            "        }\n"
            "        mexprofrecord_ = NULL;\n"
            "    } else if (strcmp(id, \"*profile report*\") == 0) {\n",
            maxid+1, maxid+1);

    make_profile_output(fp, f, "mexPrintf(");

    fprintf(fp,
            "    } else if (strcmp(id, \"*profile log*\") == 0) {\n"
            "        FILE* logfp;\n"
            "        if (nrhs != 2 || mxGetString(prhs[1], id, sizeof(id)) != 0)\n"
            "            mexErrMsgTxt(\"Must have two string arguments\");\n"
            "        logfp = fopen(id, \"w+\");\n"
            "        if (!logfp)\n"
            "            mexErrMsgTxt(\"Cannot open log for output\");\n");

    make_profile_output(fp, f, "fprintf(logfp, ");

    fprintf(fp, "        fclose(logfp);\n");

    fprintf(fp,
            "    } else\n"
            "        mexErrMsgTxt(\"Unknown identifier\");\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
leaq 0xb206(%rip), %r15      # 0x15341
movq %rsi, %r12
testq %r12, %r12
je 0xa15e
movl 0x28(%r12), %ecx
movq %rbx, %rdi
movq %r15, %rsi
movl %ecx, %edx
xorl %eax, %eax
callq 0x32b0
movq 0x58(%r12), %r12
jmp 0xa13e
movq %r14, %rdi
callq 0x7709
leal 0x1(%rax), %ecx
leaq 0xb229(%rip), %rsi      # 0x15399
movq %rbx, %rdi
movl %ecx, %edx
xorl %eax, %eax
callq 0x32b0
leaq 0xb3e5(%rip), %rdx      # 0x15568
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa05d
leaq 0xb3de(%rip), %rdi      # 0x15573
pushq $0x1
popq %r15
movl $0x135, %esi            # imm = 0x135
movq %r15, %rdx
movq %rbx, %rcx
callq 0x33a0
leaq 0xb4f9(%rip), %rdx      # 0x156a9
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa05d
leaq 0xb4f7(%rip), %rdi      # 0x156b9
pushq $0x17
popq %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x33a0
leaq 0xb4fa(%rip), %rdi      # 0x156d1
pushq $0x37
popq %rsi
movq %r15, %rdx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x33a0
// File: /workspace/github_cpp_makefile_star2_O2/zgimbutas[P]mwrap/src/mwrap-cgen.cc
// Function: print_mex_init(_IO_FILE*)
void print_mex_init(FILE* fp)
{

    fprintf(fp, "%s", mwrap_banner);
    fprintf(fp, "%s", mex_header);

    fprintf(fp, "\n");
    if (mw_use_gpu)
        mex_use_gpu(fp);
    if (mw_use_c99_complex)
        mex_c99_complex(fp);
    else if (mw_use_cpp_complex)
      {
        mex_cpp_complex(fp);
	if (mw_use_gpu)
	  mex_gpucpp_complex(fp);
      }

    //    fprintf(fp, "\n");
    //    fprintf(fp, "%s", mwrap_compat_type_support);
    //    fprintf(fp, "\n");
	
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0x11012(%rip), %rdi     # 0x1b210
movq %rbx, %rsi
callq 0x3200
movq 0x10ffb(%rip), %rdi     # 0x1b208
movq %rbx, %rsi
callq 0x3200
pushq $0xa
popq %rdi
movq %rbx, %rsi
callq 0x3250
leaq 0x11029(%rip), %r14     # 0x1b250
cmpb $0x1, (%r14)
jne 0xa235
movq %rbx, %rdi
callq 0x7724
leaq 0x11017(%rip), %rax     # 0x1b253
cmpb $0x1, (%rax)
jne 0xa24d
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x7797
leaq 0x10ffe(%rip), %rax     # 0x1b252
cmpb $0x1, (%rax)
jne 0xa273
movq %rbx, %rdi
callq 0x774c
cmpb $0x1, (%r14)
jne 0xa273
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x776f
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/zgimbutas[P]mwrap/src/mwrap-cgen.cc
// Function: print_mex_file(_IO_FILE*, Func*)
void print_mex_file(FILE* fp, Func* f)
{

    mex_define_copiers(fp);
    mex_casting_getters(fp);

    if (has_fortran(f)) {
        mex_define_fnames(fp, f);
        mex_fortran_decls(fp, f);
    }

    print_mex_stubs(fp, f);
    fprintf(fp, "%s", mexBase);
    fprintf(fp, "\n");
    if (mw_use_gpu)
        fprintf(fp, "    mxInitGPU();\n");
    fprintf(fp, "\n");
    fprintf(fp, "%s", mexBaseIf);
    print_mex_else_cases(fp, f);
    fprintf(fp, "}\n\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
callq 0x7a38
movq %rbx, %rdi
callq 0x83c0
movq %r14, %rdi
callq 0x76d4
testb %al, %al
je 0xa2b4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x804f
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8208
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa0fb
movq 0x10f52(%rip), %rdi     # 0x1b218
movq %rbx, %rsi
callq 0x3200
pushq $0xa
popq %rdi
movq %rbx, %rsi
callq 0x3250
leaq 0x10f70(%rip), %rax     # 0x1b250
cmpb $0x1, (%rax)
jne 0xa2fa
leaq 0xb6f9(%rip), %rdi      # 0x159e5
pushq $0x11
popq %rsi
pushq $0x1
popq %rdx
movq %rbx, %rcx
callq 0x33a0
pushq $0xa
popq %rdi
movq %rbx, %rsi
callq 0x3250
movq 0x10f14(%rip), %rdi     # 0x1b220
movq %rbx, %rsi
callq 0x3200
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa123
leaq 0xaf91(%rip), %rdi      # 0x152b7
pushq $0x3
popq %rsi
pushq $0x1
popq %rdx
movq %rbx, %rcx
popq %rbx
popq %r14
popq %rbp
jmp 0x33a0
// File: /workspace/github_cpp_makefile_star2_O2/statgen[P]statgen/lib/tclap-1.2.0/examples/test5.cpp
// Function: main
int main(int argc, char** argv)
{

	parseOptions(argc,argv);

	cout << "for A OR B we got : " << _orTest<< endl
		 << "for string C we got : " << _testc << endl
		 << "for string D we got : " << _testd << endl
		 << "for E or F or G we got: " << _orTest2 << endl;

}

// Assembly:
pushq %rax
callq 0x3592
movq 0xbad7(%rip), %rdi      # 0xefd0
leaq 0x6b22(%rip), %rsi      # 0xa022
callq 0x3170
leaq 0xbccc(%rip), %rsi      # 0xf1d8
movq %rax, %rdi
callq 0x3160
movq %rax, %rdi
callq 0x30c0
leaq 0x6b14(%rip), %rsi      # 0xa037
movq %rax, %rdi
callq 0x3170
leaq 0xbce6(%rip), %rsi      # 0xf218
movq %rax, %rdi
callq 0x3160
movq %rax, %rdi
callq 0x30c0
leaq 0x6b05(%rip), %rsi      # 0xa04e
movq %rax, %rdi
callq 0x3170
movzbl 0xbce0(%rip), %esi      # 0xf238
movq %rax, %rdi
callq 0x3270
movq %rax, %rdi
callq 0x30c0
leaq 0x6af6(%rip), %rsi      # 0xa065
movq %rax, %rdi
callq 0x3170
leaq 0xbc7a(%rip), %rsi      # 0xf1f8
movq %rax, %rdi
callq 0x3160
movq %rax, %rdi
callq 0x30c0
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_cpp_makefile_star2_O2/ridgelab[P]Kmer-SSR/test/src/outputFile.cpp
// Function: main
int main()
{
	//OutputFile of();
	
	//string fn = "b";
	string fn = "/dev/null";
	OutputFile of(fn);

	of << 'a' << '\n';
	of << "a" << '\n';
	of << "apple" << '\n';
	of << 7 << '\n';
	of << -6 << '\n';
	of << '\t' << '\n';
	string temp_str = "banana";
	of << temp_str << '\n';
	stringstream strm;
	strm << "cherries";
	of << strm << '\n';

	//cout << "\nThe outputFile test has not yet been implemented." << endl;
	
	cout << "\n\033[0;34mOutputFile Test: ";

	bool pass = true;

	if (pass)
	{
		cout << "\033[0;32mOK\033[0m" << endl;
	}
	else
	{
		cout << "\033[0;31mFAIL\033[0m" << endl;
	}

	return 0;
}

// Assembly:
pushq %rbx
subq $0x3f0, %rsp            # imm = 0x3F0
leaq 0xc99(%rip), %rsi       # 0x3004
leaq 0x28(%rsp), %rbx
leaq 0x48(%rsp), %rdx
movq %rbx, %rdi
callq 0x2542
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x2638
leaq 0x48(%rsp), %rdi
pushq $0x61
popq %rsi
callq 0x2a0a
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x2a0a
leaq 0xc70(%rip), %rsi       # 0x3019
leaq 0x48(%rsp), %rdi
callq 0x2a36
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x2a0a
leaq 0xc49(%rip), %rsi       # 0x300e
leaq 0x48(%rsp), %rdi
callq 0x2a36
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x2a0a
leaq 0x48(%rsp), %rdi
pushq $0x7
popq %rsi
callq 0x2a18
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x2a0a
leaq 0x48(%rsp), %rdi
pushq $-0x6
popq %rsi
callq 0x2a18
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x2a0a
leaq 0x48(%rsp), %rdi
pushq $0x9
popq %rsi
callq 0x2a0a
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x2a0a
leaq 0xbeb(%rip), %rsi       # 0x3014
leaq 0x8(%rsp), %rdi
leaq 0x268(%rsp), %rdx
callq 0x2542
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2a44
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x2a0a
leaq 0x268(%rsp), %rdi
callq 0x20d0
leaq 0x278(%rsp), %rdi
leaq 0xbaa(%rip), %rsi       # 0x301b
callq 0x2140
leaq 0x48(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x2a58
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x2a0a
movq 0x2b3e(%rip), %rdi      # 0x4fd8
leaq 0xb83(%rip), %rsi       # 0x3024
callq 0x2140
movq 0x2b2b(%rip), %rdi      # 0x4fd8
leaq 0xb8a(%rip), %rsi       # 0x303e
callq 0x2140
movq %rax, %rdi
callq 0x20a0
leaq 0x268(%rsp), %rdi
callq 0x20f0
leaq 0x8(%rsp), %rdi
callq 0x2090
leaq 0x48(%rsp), %rdi
callq 0x285a
leaq 0x28(%rsp), %rdi
callq 0x2090
xorl %eax, %eax
addq $0x3f0, %rsp            # imm = 0x3F0
popq %rbx
retq
jmp 0x2502
jmp 0x2523
movq %rax, %rbx
jmp 0x2530
jmp 0x2507
movq %rax, %rbx
jmp 0x2517
movq %rax, %rbx
leaq 0x268(%rsp), %rdi
callq 0x20f0
leaq 0x8(%rsp), %rdi
callq 0x2090
jmp 0x2526
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x285a
leaq 0x28(%rsp), %rdi
callq 0x2090
movq %rbx, %rdi
callq 0x21f0
// File: /workspace/github_cpp_makefile_star2_O2/wx-csy[P]librmq/prep.cpp
// Function: perm_to_preorder(std::array<unsigned char, 8ul>)
preorder_t perm_to_preorder(perm_t perm) {
    preorder_t result;
    int ptr = 0;
    std::stack<std::pair<int, int>> stk; stk.emplace(0, SEG_LENGTH);
    while (stk.size()) {
        int l, r; std::tie(l, r) = stk.top(); stk.pop();
        if (l == r) continue;
        int m = std::min_element(perm.begin() + l, perm.begin() + r) - perm.begin();
        result[ptr++] = m;
        stk.emplace(l, m);
        stk.emplace(m + 1, r);
    }
    return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rdi, 0x10(%rsp)
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x1960
leaq 0x4(%rsp), %rsi
andl $0x0, (%rsi)
leaq 0x1c55(%rip), %rdx      # 0x3020
movq %rbx, %rdi
callq 0x21d0
xorl %ebp, %ebp
leaq 0x28(%rsp), %rbx
leaq 0x4(%rsp), %r14
leaq 0x8(%rsp), %r15
leaq 0x1c(%rsp), %r12
leaq 0xc(%rsp), %r13
movq %rbx, %rdi
callq 0x227a
testq %rax, %rax
je 0x1495
movq 0x58(%rsp), %rax
cmpq 0x60(%rsp), %rax
jne 0x141c
movq 0x70(%rsp), %rax
movq -0x8(%rax), %rax
movl $0x200, %ecx            # imm = 0x200
addq %rcx, %rax
movl -0x8(%rax), %ecx
movl %ecx, 0x4(%rsp)
movl -0x4(%rax), %eax
movl %eax, 0xc(%rsp)
movq %rbx, %rdi
callq 0x2412
movslq 0x4(%rsp), %rax
movslq 0xc(%rsp), %rcx
cmpl %ecx, %eax
je 0x13ee
leaq (%rsp,%rax), %rdi
addq $0x10, %rdi
leaq (%rsp,%rcx), %rsi
addq $0x10, %rsi
callq 0x1cbf
leaq 0x10(%rsp), %rcx
subq %rcx, %rax
movl %eax, 0x8(%rsp)
movslq %ebp, %rcx
movb %al, 0x20(%rsp,%rcx)
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x2468
movl 0x8(%rsp), %eax
incl %eax
movl %eax, 0x1c(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x2512
incl %ebp
jmp 0x13ee
leaq 0x28(%rsp), %rdi
callq 0x1ce8
movq 0x20(%rsp), %rax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x14b7
jmp 0x14b7
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x1ce8
movq %rbx, %rdi
callq 0x1180
// File: /workspace/github_cpp_makefile_star2_O2/wx-csy[P]librmq/prep.cpp
// Function: print_lookup(std::array<unsigned char, 8ul>)
void print_lookup(perm_t perm) {
    int result[SEG_LENGTH][SEG_LENGTH];
    memset(result, -1, sizeof result);
    for (int i = 1; i <= SEG_LENGTH; i++) {
        for (int j = 0; j < i; j++) {
            result[j][i-1] = std::min_element(perm.begin() + j, perm.begin() + i) - perm.begin();
        }
    }
    putchar('{');
    for (int i = 0; i < SEG_LENGTH; i++)
        for (int j = 0; j < SEG_LENGTH; j++)
            printf("%d,", result[i][j]);
    printf("},\n");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
leaq 0x8(%rsp), %r12
movq %rdi, (%r12)
leaq 0x10(%rsp), %rbx
movl $0x100, %edx            # imm = 0x100
movq %rbx, %rdi
movl $0xff, %esi
callq 0x10a0
pushq $0x1
popq %rax
pushq $0x20
popq %rbp
cmpq $0x9, %rax
je 0x154c
movq %rax, (%rsp)
leaq (%rsp,%rax), %r14
addq $0x8, %r14
movq %r12, %r15
xorl %r13d, %r13d
cmpq %r13, %rbp
je 0x153b
movq %r15, %rdi
movq %r14, %rsi
callq 0x1cbf
subl %r12d, %eax
movl %eax, (%rbx,%r13)
addq $0x20, %r13
incq %r15
jmp 0x151b
movq (%rsp), %rax
incq %rax
addq $0x20, %rbp
addq $0x4, %rbx
jmp 0x1503
pushq $0x7b
popq %rdi
callq 0x1110
leaq 0x10(%rsp), %r14
leaq 0x1ac9(%rip), %rbx      # 0x3029
xorl %r15d, %r15d
cmpq $0x8, %r15
je 0x158e
xorl %r12d, %r12d
cmpq $0x8, %r12
je 0x1585
movl (%r14,%r12,4), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1030
incq %r12
jmp 0x156c
incq %r15
addq $0x20, %r14
jmp 0x1563
leaq 0x1c96(%rip), %rdi      # 0x322b
callq 0x1150
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/wx-csy[P]librmq/prep.cpp
// Function: print_lookup_pref(std::array<unsigned char, 8ul>)
void print_lookup_pref(perm_t perm) {
    putchar('{');
    for (int i = 1; i <= SEG_LENGTH; i++) {
        int value = std::min_element(perm.begin(), perm.begin() + i) - perm.begin(); 
        printf("%d,", value);
    }
    printf("},\n");
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
leaq 0x8(%rsp), %rbx
movq %rdi, (%rbx)
pushq $0x7b
popq %rdi
callq 0x1110
pushq $0x1
popq %r15
leaq 0x1a59(%rip), %r14      # 0x3029
cmpq $0x9, %r15
je 0x15f9
leaq (%rsp,%r15), %rsi
addq $0x8, %rsi
movq %rbx, %rdi
callq 0x1cbf
subl %ebx, %eax
movq %r14, %rdi
movl %eax, %esi
xorl %eax, %eax
callq 0x1030
incq %r15
jmp 0x15d0
leaq 0x1c2b(%rip), %rdi      # 0x322b
callq 0x1150
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O2/wx-csy[P]librmq/prep.cpp
// Function: print_lookup_suf(std::array<unsigned char, 8ul>)
void print_lookup_suf(perm_t perm) {
    putchar('{');
    for (int i = 0; i < SEG_LENGTH; i++) {
        int value = std::min_element(perm.begin() + i, perm.end()) - perm.begin(); 
        printf("%d,", value);
    }
    printf("},\n");
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
leaq 0x8(%rsp), %rbx
movq %rdi, -0x8(%rbx)
pushq $0x7b
popq %rdi
callq 0x1110
movq %rsp, %r15
leaq 0x19f7(%rip), %r14      # 0x3029
xorl %r12d, %r12d
cmpq $0x8, %r12
je 0x165b
leaq (%rsp,%r12), %rdi
movq %rbx, %rsi
callq 0x1cbf
subl %r15d, %eax
movq %r14, %rdi
movl %eax, %esi
xorl %eax, %eax
callq 0x1030
incq %r12
jmp 0x1635
leaq 0x1bc9(%rip), %rdi      # 0x322b
callq 0x1150
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O2/wx-csy[P]librmq/prep.cpp
// Function: work()
void work() {
    perm_t perm; std::iota(perm.begin(), perm.end(), 0);
    do {
        preorder_t preorder = perm_to_preorder(perm);
        int id = tree_id.emplace(preorder, tree_id.size()).first->second;
        if (id == trees.size()) {
            trees.emplace_back(preorder);
            tree_sample.emplace(preorder, perm);
        }
        instances.emplace_back(perm, instances.size(), id);
    } while (std::next_permutation(perm.begin(), perm.end()));
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
xorl %eax, %eax
cmpq $0x8, %rax
je 0x1692
movb %al, 0x8(%rsp,%rax)
incq %rax
jmp 0x1683
leaq 0x4a6f(%rip), %r14      # 0x6108
leaq 0x20(%rsp), %r15
leaq 0x18(%rsp), %r12
leaq 0x8(%rsp), %r13
leaq 0x4ac1(%rip), %rbp      # 0x6170
leaq 0x14(%rsp), %rbx
movq 0x8(%rsp), %rdi
callq 0x139c
movq %rax, 0x20(%rsp)
movq 0x4a66(%rip), %rax      # 0x6130
movq %rax, 0x18(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x25bc
movslq 0x28(%rax), %rax
movl %eax, 0x14(%rsp)
movq 0x4a0c(%rip), %rcx      # 0x60f8
subq 0x49fd(%rip), %rcx      # 0x60f0
sarq $0x3, %rcx
cmpq %rax, %rcx
jne 0x171d
leaq 0x49ed(%rip), %rdi      # 0x60f0
movq %r15, %rsi
callq 0x197c
leaq 0x4a26(%rip), %rdi      # 0x6138
movq %r15, %rsi
movq %r13, %rdx
callq 0x292e
movq 0x4a54(%rip), %rax      # 0x6178
subq 0x4a45(%rip), %rax      # 0x6170
sarq $0x4, %rax
movq %rax, 0x18(%rsp)
movq %rbp, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x199a
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0x2cc9
testb %al, %al
jne 0x16b4
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/wx-csy[P]librmq/prep.cpp
// Function: decision_tree_node::decision_tree_node(std::vector<instance, std::allocator<instance>> const&, int)
decision_tree_node(const std::vector<instance>& instances, int dep) {
        id = next_node_id++;
        tree_id = should_stop(instances);
        if (tree_id >= 0) {
            crit = -1;
        } else {
            crit = select_criterion(instances);
            std::vector<instance> subtree_inst[2];
            for (auto& inst : instances) 
                subtree_inst[inst.bs[crit]].push_back(inst);
            for (int i = 0; i < 2; i++)
                subtree[i] = new decision_tree_node(subtree_inst[i], dep + 1);
        }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movl %edx, %ebx
movq %rsi, %r12
movq %rdi, %r14
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rdi)
movl 0x477b(%rip), %eax      # 0x6168
leal 0x1(%rax), %ecx
movl %ecx, 0x4772(%rip)      # 0x6168
movl %eax, (%rdi)
movq %rsi, %rdi
callq 0x1d40
movl %eax, 0x8(%r14)
testl %eax, %eax
js 0x1a12
orl $-0x1, 0x4(%r14)
jmp 0x1ab4
leaq 0x10(%r14), %r13
movq %r12, %rdi
callq 0x1d62
movl %eax, 0x4(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movaps %xmm0, 0x10(%rsp)
movaps %xmm0, (%rsp)
movq (%r12), %r15
movq 0x8(%r12), %r12
cmpq %r12, %r15
je 0x1a67
movq (%r15), %rax
movl 0x4(%r14), %ecx
xorl %edx, %edx
btq %rcx, %rax
setb %dl
imulq $0x18, %rdx, %rax
leaq (%rsp,%rax), %rdi
movq %r15, %rsi
callq 0x1dfe
addq $0x10, %r15
jmp 0x1a3c
incl %ebx
movq %rsp, %r14
xorl %ebp, %ebp
pushq $0x20
popq %r15
cmpq $0x2, %rbp
je 0x1a9e
movq %r15, %rdi
callq 0x10e0
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl %ebx, %edx
callq 0x19ca
movq %r12, (%r13,%rbp,8)
incq %rbp
addq $0x18, %r14
jmp 0x1a72
pushq $0x18
popq %rbx
leaq (%rsp,%rbx), %rdi
callq 0x1fd4
addq $-0x18, %rbx
cmpq $-0x18, %rbx
jne 0x1aa1
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1ad5
movq %rax, %rbx
pushq $0x20
popq %rsi
movq %r12, %rdi
callq 0x10f0
jmp 0x1ad8
movq %rax, %rbx
pushq $0x18
popq %r14
leaq (%rsp,%r14), %rdi
callq 0x1fd4
addq $-0x18, %r14
cmpq $-0x18, %r14
jne 0x1adc
movq %rbx, %rdi
callq 0x1180
nop
// File: /workspace/github_cpp_makefile_star2_O2/wx-csy[P]librmq/prep.cpp
// Function: decision_tree_node::serialize()
void serialize() {
        if (crit < 0) {
            printf("    {-1, %d, -1, -1},\n", tree_id);
        } else {
            printf("    {%d, -1, %d, %d},\n", 
                crit, subtree[0]->id, subtree[1]->id);
        }
        if (subtree[0]) subtree[0]->serialize();
        if (subtree[1]) subtree[1]->serialize();
    }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x16c6(%rip), %r14      # 0x31cd
leaq 0x16d6(%rip), %r15      # 0x31e4
movl 0x4(%rbx), %esi
testl %esi, %esi
js 0x1b2d
movq 0x10(%rbx), %rax
movq 0x18(%rbx), %rcx
movl (%rax), %edx
movl (%rcx), %ecx
movq %r15, %rdi
xorl %eax, %eax
callq 0x1030
jmp 0x1b3a
movl 0x8(%rbx), %esi
movq %r14, %rdi
xorl %eax, %eax
callq 0x1030
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
je 0x1b48
callq 0x1af8
movq 0x18(%rbx), %rbx
testq %rbx, %rbx
jne 0x1b0e
popq %rbx
popq %r14
popq %r15
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/wx-csy[P]librmq/prep.cpp
// Function: decision_tree_node::select_criterion(std::vector<instance, std::allocator<instance>> const&)
static int select_criterion(const std::vector<instance>& instances) {
        // balance rule
        int cnt[SEG_LENGTH * SEG_LENGTH] = {0};
        for (int i = 0; i < SEG_LENGTH * SEG_LENGTH; i++) {
            for (auto& inst : instances) if (inst.bs[i]) cnt[i]++;
            cnt[i] = std::min(cnt[i], (int)instances.size() - cnt[i]);
        }
        return std::max_element(std::begin(cnt), std::end(cnt)) - cnt;
    }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x100, %rsp            # imm = 0x100
movq %rdi, %r15
movq %rsp, %rbx
xorl %r14d, %r14d
movl $0x100, %edx            # imm = 0x100
movq %rbx, %rdi
xorl %esi, %esi
callq 0x10a0
movq (%r15), %rax
movq 0x8(%r15), %rdx
movq %rdx, %rsi
subq %rax, %rsi
shrq $0x4, %rsi
pushq $0x1
popq %rdi
cmpq $0x40, %r14
je 0x1dda
movq %rdi, %r8
movl %r14d, %ecx
shlq %cl, %r8
movq %rax, %rcx
cmpq %rdx, %rcx
je 0x1dc0
testq %r8, (%rcx)
je 0x1dba
incl (%rsp,%r14,4)
addq $0x10, %rcx
jmp 0x1dac
movl (%rsp,%r14,4), %ecx
movl %esi, %r8d
subl %ecx, %r8d
cmpl %ecx, %r8d
cmovgel %ecx, %r8d
movl %r8d, (%rsp,%r14,4)
incq %r14
jmp 0x1d9a
leaq 0x100(%rsp), %rsi
movq %rbx, %rdi
callq 0x1e1b
subq %rbx, %rax
shrq $0x2, %rax
addq $0x100, %rsp            # imm = 0x100
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O2/wx-csy[P]librmq/prep.cpp
// Function: instance::instance(std::array<unsigned char, 8ul>, int, int)
instance(perm_t perm, int perm_id, int tree_id) :
            perm_id(perm_id), tree_id(tree_id) {
        std::memset(&bs, 0, sizeof bs);
        for (int i = 0; i < SEG_LENGTH; i++)
            for (int j = 0; j < i; j++)
                bs[j * SEG_LENGTH + i] = (perm[j] < perm[i]);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq %rsp, %rax
movq %rsi, (%rax)
movl %edx, 0x8(%rdi)
movl %ecx, 0xc(%rdi)
andq $0x0, (%rdi)
xorl %r12d, %r12d
leaq 0x8(%rsp), %r14
xorl %r13d, %r13d
cmpq $0x8, %r13
je 0x2c99
movq %rsp, %rbp
xorl %r15d, %r15d
cmpq %r15, %r12
je 0x2c90
movb (%rbp), %al
xorl %esi, %esi
cmpb (%rsp,%r13), %al
setb %sil
movq %rbx, 0x8(%rsp)
movl %r15d, %eax
andl $0x38, %eax
orq %r13, %rax
movq %rax, 0x10(%rsp)
movq %r14, %rdi
callq 0x2ca8
addq $0x8, %r15
incq %rbp
jmp 0x2c5a
incq %r13
addq $0x8, %r12
jmp 0x2c4e
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnjrnl.cpp
// Function: UsnJrnl::GetAllUsnOffset()
int UsnJrnl::GetAllUsnOffset() {
  int result;
  uint64_t progress = file_size / 10; 
  offset = 0;  
    
  while(offset <= file_size-sizeof(USN_RECORD_V2)) {
    
    if(offset >= progress) {
      printf(".");
      progress += file_size / 10;
    }

    UsnRecord* ur = new UsnRecord(fp_in);
    result = ur->IsValidRecord(offset);

    if(result == NOT_RECORD) {
      offset += 8;
      delete ur;
      continue;
    } else if(result == V2_RECORD) {
	    usn_set.push_back(ur->usn_record.Usn);
	    usn_table[ur->usn_record.Usn] = offset;
	  } else if(result == CORRUPT_RECORD) {
      corrupt_offset_set.push_back(offset);
    } else if (result == V3_RECORD) {
      printf("USN_RECORD_V3 found at offset %lld, skip\n", offset);
	  } else if (result == V4_RECORD) {
      printf("USN_RECORD_V4 found at offset %lld, skip\n", offset);
	  } 
	  offset += ur->usn_record.RecordLength;
    delete ur;
  }
  printf("Done\n");
  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq (%rdi), %rcx
pushq $0xa
popq %r12
movq %rcx, %rax
xorl %edx, %edx
divq %r12
movq %rax, %r14
andq $0x0, 0x8(%rdi)
leaq 0x8(%rdi), %r15
leaq 0x38(%rdi), %rax
movq %rax, 0x10(%rsp)
leaq 0x20(%rdi), %rax
movq %rax, 0x8(%rsp)
leaq 0x68(%rdi), %rax
movq %rax, (%rsp)
pushq $0x8
popq %rbp
xorl %eax, %eax
addq $-0x3c, %rcx
cmpq %rcx, %rax
ja 0x3a8a
cmpq %r14, %rax
jb 0x39c6
pushq $0x2e
popq %rdi
callq 0x3370
movq (%rbx), %rax
xorl %edx, %edx
divq %r12
addq %rax, %r14
movl $0x80, %edi
callq 0x3260
movq %rax, %r13
movq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0x9ad4
movq (%r15), %rsi
movq %r13, %rdi
callq 0x9aea
addl $0x2, %eax
cmpl $0x6, %eax
ja 0x3a5d
leaq 0x860b(%rip), %rdx      # 0xc004
movslq (%rdx,%rax,4), %rcx
addq %rdx, %rcx
movq %rbp, %rax
jmpq *%rcx
movq 0x10(%rsp), %rdi
movq %r15, %rsi
callq 0x70ae
jmp 0x3a5d
leaq 0x28(%r13), %rbp
movq 0x8(%rsp), %rdi
movq %rbp, %rsi
callq 0x70ae
movq (%r15), %r12
movq (%rsp), %rdi
movq %rbp, %rsi
pushq $0x8
popq %rbp
callq 0x70ce
movq %r12, (%rax)
pushq $0xa
popq %r12
jmp 0x3a5d
movq (%r15), %rsi
leaq 0x864e(%rip), %rdi      # 0xc098
jmp 0x3a56
movq (%r15), %rsi
leaq 0x866c(%rip), %rdi      # 0xc0c2
xorl %eax, %eax
callq 0x3040
movl 0x10(%r13), %eax
addq %rax, 0x8(%rbx)
movq %r13, %rdi
addq $0x60, %rdi
callq 0x3100
movl $0x80, %esi
movq %r13, %rdi
callq 0x3270
movq (%rbx), %rcx
movq 0x8(%rbx), %rax
jmp 0x39a1
leaq 0x8b9f(%rip), %rdi      # 0xc630
callq 0x33f0
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movl $0x80, %esi
movq %r13, %rdi
callq 0x3270
movq %rbx, %rdi
callq 0x3480
nop
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnjrnl.cpp
// Function: UsnJrnl::PreProcess()
int UsnJrnl::PreProcess() {
  uint64_t usn_num = usn_set.size();

  printf("%8lu corrupt records skipped\n", corrupt_offset_set.size());
  printf("%8llu records found\n", usn_num);
  fprintf(fp_ofreport, "%8lu corrupt records skipped\n", corrupt_offset_set.size());
  fprintf(fp_ofreport, "%8llu records\n", usn_num);   

  // USN Sort & Deduplication
  sort(usn_set.begin(), usn_set.end());
  usn_set.erase(std::unique(usn_set.begin(), usn_set.end()), usn_set.end());
  
  if (usn_num != usn_set.size()) {
    printf("%8llu duplicate records found\n", usn_num - usn_set.size()); 
    printf("%8lu unique records found\n", usn_set.size()); 
    fprintf(fp_ofreport, "%8llu duplicate records\n", usn_num - usn_set.size()); 
    fprintf(fp_ofreport, "%8lu unique records\n", usn_set.size()); 
  }
  
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x20(%rdi), %r15
movq 0x28(%rdi), %r14
movq 0x40(%rdi), %rsi
subq 0x20(%rdi), %r14
sarq $0x3, %r14
subq 0x38(%rdi), %rsi
sarq $0x3, %rsi
leaq 0x85fe(%rip), %r12      # 0xc0ec
movq %r12, %rdi
xorl %eax, %eax
callq 0x3040
leaq 0x860b(%rip), %rdi      # 0xc10a
movq %r14, %rsi
xorl %eax, %eax
callq 0x3040
movq 0x18(%rbx), %rdi
movq 0x40(%rbx), %rdx
subq 0x38(%rbx), %rdx
sarq $0x3, %rdx
movq %r12, %rsi
xorl %eax, %eax
callq 0x3380
movq 0x18(%rbx), %rdi
leaq 0x85f1(%rip), %rsi      # 0xc11f
movq %r14, %rdx
xorl %eax, %eax
callq 0x3380
movq 0x20(%rbx), %rdi
movq 0x28(%rbx), %rsi
callq 0x7e03
movq 0x20(%rbx), %rdi
movq 0x28(%rbx), %rsi
callq 0x8229
movq 0x28(%rbx), %rdx
movq %r15, %rdi
movq %rax, %rsi
callq 0x711e
movq 0x28(%rbx), %rax
subq 0x20(%rbx), %rax
sarq $0x3, %rax
movq %r14, %rsi
subq %rax, %rsi
je 0x3bdf
leaq 0x85b2(%rip), %rdi      # 0xc12e
xorl %eax, %eax
callq 0x3040
movq 0x28(%rbx), %rsi
subq 0x20(%rbx), %rsi
sarq $0x3, %rsi
leaq 0x85b7(%rip), %rdi      # 0xc14d
xorl %eax, %eax
callq 0x3040
movq 0x18(%rbx), %rdi
movq 0x28(%rbx), %rax
subq 0x20(%rbx), %rax
sarq $0x3, %rax
subq %rax, %r14
leaq 0x85b1(%rip), %rsi      # 0xc168
movq %r14, %rdx
xorl %eax, %eax
callq 0x3380
movq 0x18(%rbx), %rdi
movq 0x28(%rbx), %rdx
subq 0x20(%rbx), %rdx
sarq $0x3, %rdx
leaq 0x85a9(%rip), %rsi      # 0xc181
xorl %eax, %eax
callq 0x3380
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnjrnl.cpp
// Function: UsnJrnl::WriteBundledHeader(_IO_FILE*, bool)
int UsnJrnl::WriteBundledHeader(FILE *fp, bool lt) {
  string tzstr;
  tzstr = get_timezone_str(lt);

  fprintf(fp, "\"Usn\"\t");
  fprintf(fp, "\"Records\"\t");
  fprintf(fp, "\"TimeStamp(%s)\"\t", tzstr.c_str());
  fprintf(fp, "\"TimeTaken\"\t");
  fprintf(fp, "\"FileName\"\t");
  fprintf(fp, "\"Reason\"\t");
  fprintf(fp, "\"FileAttr\"\t");
  fprintf(fp, "\"FileID\"\t");
  fprintf(fp, "\"ParentID\"\t");
  fprintf(fp, "\"Path\"");
  fprintf(fp, "\n");
  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x28(%rsp), %rdi
movl %edx, %esi
callq 0xb712
leaq 0x8(%rsp), %r14
leaq 0x28(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x3320
movq %r15, %rdi
callq 0x3100
leaq 0x710f(%rip), %rdi      # 0xc2f9
pushq $0x6
popq %r15
pushq $0x1
popq %r12
movq %r15, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x70f9(%rip), %rdi      # 0xc300
pushq $0xa
popq %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x34d0
movq (%r14), %rdx
leaq 0x70ec(%rip), %rsi      # 0xc30b
movq %rbx, %rdi
xorl %eax, %eax
callq 0x3380
leaq 0x70ec(%rip), %rdi      # 0xc31c
pushq $0xc
popq %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x70e4(%rip), %rdi      # 0xc329
pushq $0xb
popq %r13
movq %r13, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x70d7(%rip), %rdi      # 0xc335
pushq $0x9
popq %rbp
movq %rbp, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x70c9(%rip), %rdi      # 0xc33f
movq %r13, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x70c0(%rip), %rdi      # 0xc34b
movq %rbp, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x70b5(%rip), %rdi      # 0xc355
movq %r13, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x70ac(%rip), %rdi      # 0xc361
movq %r15, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x34d0
pushq $0xa
popq %rdi
movq %rbx, %rsi
callq 0x3330
movq %r14, %rdi
callq 0x3100
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3100
movq %rbx, %rdi
callq 0x3480
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnjrnl.cpp
// Function: UsnJrnl::WriteExecutedHeader(_IO_FILE*, bool)
int UsnJrnl::WriteExecutedHeader(FILE *fp, bool lt) {
  string tzstr;
  tzstr = get_timezone_str(lt);

  fprintf(fp, "\"Usn\"\t");
  fprintf(fp, "\"TimeStamp(%s)\"\t", tzstr.c_str());
  fprintf(fp, "\"ExeName\"\t");
  fprintf(fp, "\"ExeCount\"\t");
  fprintf(fp, "\"FileName\"\t");
  fprintf(fp, "\"Reason\"\t");
  fprintf(fp, "\"Records\"\t");
  fprintf(fp, "\"TimeTaken\"\t");
  fprintf(fp, "\"FileID\"");
  fprintf(fp, "\n");
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x40, %rsp
movq %rsi, %rbx
leaq 0x10(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x20(%rsp), %rdi
movl %edx, %esi
callq 0xb712
movq %rsp, %r14
leaq 0x20(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x3320
movq %r15, %rdi
callq 0x3100
leaq 0x6d18(%rip), %rdi      # 0xc2f9
pushq $0x6
popq %rsi
pushq $0x1
popq %r15
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
movq (%r14), %rdx
leaq 0x6d0e(%rip), %rsi      # 0xc30b
movq %rbx, %rdi
xorl %eax, %eax
callq 0x3380
leaq 0x6d8b(%rip), %rdi      # 0xc399
pushq $0xa
popq %r12
movq %r12, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x6d7d(%rip), %rdi      # 0xc3a4
pushq $0xb
popq %r13
movq %r13, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x6ce9(%rip), %rdi      # 0xc329
movq %r13, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x6ce0(%rip), %rdi      # 0xc335
pushq $0x9
popq %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x6c96(%rip), %rdi      # 0xc300
movq %r12, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x6c9d(%rip), %rdi      # 0xc31c
pushq $0xc
popq %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x6d1c(%rip), %rdi      # 0xc3b0
pushq $0x8
popq %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
pushq $0xa
popq %rdi
movq %rbx, %rsi
callq 0x3330
movq %r14, %rdi
callq 0x3100
xorl %eax, %eax
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x3100
movq %rbx, %rdi
callq 0x3480
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnjrnl.cpp
// Function: UsnJrnl::WriteOpenedHeader(_IO_FILE*, bool)
int UsnJrnl::WriteOpenedHeader(FILE *fp, bool lt) {
  string tzstr;
  tzstr = get_timezone_str(lt);

  fprintf(fp, "\"Usn\"\t");
  fprintf(fp, "\"TimeStamp(%s)\"\t", tzstr.c_str());
  fprintf(fp, "\"Path\"\t");
  fprintf(fp, "\"FileName\"\t");
  fprintf(fp, "\"Reason\"\t");
  fprintf(fp, "\"Records\"\t");
  fprintf(fp, "\"TimeTaken\"\t");
  fprintf(fp, "\"FileID\"\t");
  fprintf(fp, "\"ParentID\"");
  fprintf(fp, "\n");
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x40, %rsp
movq %rsi, %rbx
leaq 0x10(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x20(%rsp), %rdi
movl %edx, %esi
callq 0xb712
movq %rsp, %r14
leaq 0x20(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x3320
movq %r15, %rdi
callq 0x3100
leaq 0x6788(%rip), %rdi      # 0xc2f9
pushq $0x6
popq %rsi
pushq $0x1
popq %r15
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
movq (%r14), %rdx
leaq 0x677e(%rip), %rsi      # 0xc30b
movq %rbx, %rdi
xorl %eax, %eax
callq 0x3380
leaq 0x686e(%rip), %rdi      # 0xc40c
pushq $0x7
popq %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x6776(%rip), %rdi      # 0xc329
pushq $0xb
popq %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x676d(%rip), %rdi      # 0xc335
pushq $0x9
popq %r12
movq %r12, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x671f(%rip), %rdi      # 0xc300
pushq $0xa
popq %r13
movq %r13, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x6722(%rip), %rdi      # 0xc31c
pushq $0xc
popq %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x673c(%rip), %rdi      # 0xc34b
movq %r12, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
leaq 0x67f0(%rip), %rdi      # 0xc414
movq %r13, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x34d0
pushq $0xa
popq %rdi
movq %rbx, %rsi
callq 0x3330
movq %r14, %rdi
callq 0x3100
xorl %eax, %eax
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x3100
movq %rbx, %rdi
callq 0x3480
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnjrnl.cpp
// Function: UsnJrnl::WriteFileNameList(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, unsigned short, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, unsigned short>>>*)
void UsnJrnl::WriteFileNameList(string name, map<string, uint16_t> *table){
  fprintf(fp_ofreport, "\n[%s] %lu files (name, count)\n", name.c_str(), (*table).size());
  int i=0;
  for(auto x: (*table)) {
    fprintf(fp_ofreport, "%s, %d\n", x.first.c_str(), x.second);
    i++;
    if(i > 1024) {
      fprintf(fp_ofreport, "reached 1024 files...skip the rest\n");
      break;
    }      
  }
  return;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %rbx
movq %rdi, %r14
movq 0x18(%rdi), %rdi
movq (%rsi), %rdx
movq 0x28(%rbx), %rcx
leaq 0x5b36(%rip), %rsi      # 0xc58c
xorl %eax, %eax
callq 0x3380
movq 0x18(%rbx), %r15
addq $0x8, %rbx
movl $0x400, %ebp            # imm = 0x400
movq %rsp, %r12
leaq 0x5975(%rip), %r13      # 0xc3e9
cmpq %rbx, %r15
je 0x6ad4
leaq 0x20(%r15), %rsi
movq %r12, %rdi
callq 0x735e
movq 0x18(%r14), %rdi
movq (%rsp), %rdx
movzwl 0x20(%rsp), %ecx
movq %r13, %rsi
xorl %eax, %eax
callq 0x3380
subl $0x1, %ebp
jb 0x6ab6
movq %r12, %rdi
callq 0x3100
movq %r15, %rdi
callq 0x3180
movq %rax, %r15
jmp 0x6a74
movq 0x18(%r14), %rcx
leaq 0x5989(%rip), %rdi      # 0xc44a
pushq $0x23
popq %rsi
pushq $0x1
popq %rdx
callq 0x34d0
movq %rsp, %rdi
callq 0x3100
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnrecord.cpp
// Function: UsnRecord::IsValidRecord(unsigned long)
int UsnRecord::IsValidRecord(uint64_t _offset) {

  UsnRecord::ReadRecord(_offset);

  // validation check
  if(usn_record.RecordLength < 64 || usn_record.RecordLength > 576 || usn_record.RecordLength % 8 != 0)
    return NOT_RECORD;
      
  if(usn_record.MinorVersion != 0)
    return NOT_RECORD;
  
  if(usn_record.MajorVersion == 2) {
    if(usn_record.FileNameOffset != 60)
      return NOT_RECORD;
	  if(is_valid_ts(usn_record.TimeStamp) && is_valid_usn(usn_record.Usn)
      && usn_record.Reason != 0 && usn_record.FileNameLength < 512 && usn_record.FileNameLength % 2 == 0)
		  return V2_RECORD;
	  else
		  return CORRUPT_RECORD;
  }
  else if(usn_record.MajorVersion == 3)
    return V3_RECORD;
  else if(usn_record.MajorVersion == 4)
    return V4_RECORD;
  else
    return NOT_RECORD;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x9b66
movl 0x10(%rbx), %ecx
leal -0x40(%rcx), %edx
pushq $-0x1
popq %rax
cmpl $0x200, %edx            # imm = 0x200
ja 0x9b5f
andl $0x7, %ecx
jne 0x9b5f
cmpw $0x0, 0x16(%rbx)
jne 0x9b5f
movzwl 0x14(%rbx), %ecx
cmpl $0x4, %ecx
je 0x9b5c
cmpl $0x3, %ecx
je 0x9b58
cmpl $0x2, %ecx
jne 0x9b5f
cmpw $0x3c, 0x4a(%rbx)
jne 0x9b5f
movq 0x30(%rbx), %rdi
callq 0xa738
testb %al, %al
je 0x9b54
movq 0x28(%rbx), %rdi
callq 0xa727
testb %al, %al
je 0x9b54
cmpl $0x0, 0x38(%rbx)
je 0x9b54
movzwl 0x48(%rbx), %eax
testw $0xfe01, %ax            # imm = 0xFE01
je 0x9b61
pushq $-0x2
jmp 0x9b5e
movl %ecx, %eax
jmp 0x9b5f
pushq $0x4
popq %rax
popq %rbx
retq
pushq $0x2
jmp 0x9b5e
nop
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnrecord.cpp
// Function: UsnRecord::ReadRecord(unsigned long)
int UsnRecord::ReadRecord(uint64_t _offset) {
  
  offset = _offset;
  data = (unsigned char*)malloc(sizeof(USN_RECORD_V2));

  fseeko64(fp_in, offset, SEEK_SET);

  if(fread(data, 1, sizeof(USN_RECORD_V2), fp_in) != sizeof(USN_RECORD_V2)) {
    free(data);
    return -1;
  }

  memcpy(&(usn_record), data, sizeof(USN_RECORD_V2));
    
  free(data);
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r15
movq %rdi, %r14
movq %rsi, 0x4c(%rdi)
pushq $0x3c
popq %r12
movq %r12, %rdi
callq 0x3350
movq %rax, 0x8(%r14)
movq (%r14), %rdi
xorl %ebx, %ebx
movq %r15, %rsi
xorl %edx, %edx
callq 0x3450
movq (%r14), %rcx
movq 0x8(%r14), %rdi
pushq $0x1
popq %rsi
movq %r12, %rdx
callq 0x33b0
cmpq $0x3c, %rax
jne 0x9bd8
movq 0x8(%r14), %rdi
movups (%rdi), %xmm0
movups 0x10(%rdi), %xmm1
movups 0x20(%rdi), %xmm2
movups 0x2c(%rdi), %xmm3
movups %xmm0, 0x10(%r14)
movups %xmm1, 0x20(%r14)
movups %xmm2, 0x30(%r14)
movups %xmm3, 0x3c(%r14)
jmp 0x9bdf
movq 0x8(%r14), %rdi
pushq $-0x1
popq %rbx
callq 0x3300
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnrecord.cpp
// Function: UsnRecord::ParseRecord()
int UsnRecord::ParseRecord() {
  
  cid = uint32_t(usn_record.FileReferenceNumber & 0x0000FFFFFFFFFFFF);
  cid_seq = uint16_t(usn_record.FileReferenceNumber >> 48);
  pid = uint32_t(usn_record.ParentFileReferenceNumber & 0x0000FFFFFFFFFFFF);
  pid_seq = uint16_t(usn_record.ParentFileReferenceNumber >> 48);
  UsnRecord::GetFileName();

  return 0;
}

// Assembly:
pushq %rax
movq 0x18(%rdi), %rax
movq 0x20(%rdi), %rcx
movl %eax, 0x54(%rdi)
shrq $0x30, %rax
movw %ax, 0x58(%rdi)
movl %ecx, 0x5a(%rdi)
shrq $0x30, %rcx
movw %cx, 0x5e(%rdi)
callq 0x9c1a
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnrecord.cpp
// Function: UsnRecord::GetFileName()
int UsnRecord::GetFileName() {

  data = (unsigned char*)malloc(usn_record.FileNameLength);
  fseeko64(fp_in, offset + usn_record.FileNameOffset, SEEK_SET);
  if(fread(data, 1, usn_record.FileNameLength, fp_in) != usn_record.FileNameLength) {
    free(data);
    return -1;
  }

  file_name = UTF16toUTF8((char16_t*)(data), usn_record.FileNameLength/2);

  // remove illegal characer
  size_t pos;
  while((pos = file_name.find_first_of("/:*?\"<>|\\\t\r\n")) != string::npos)
    file_name.erase(pos, 1);
  
  if (usn_record.FileAttributes & FOLDER)
    file_name += "\\";
  
  free(data);
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movzwl 0x48(%rdi), %edi
callq 0x3350
movq %rax, 0x8(%rbx)
movq (%rbx), %rdi
movzwl 0x4a(%rbx), %esi
addq 0x4c(%rbx), %rsi
xorl %edx, %edx
callq 0x3450
movq (%rbx), %rcx
movq 0x8(%rbx), %rdi
movzwl 0x48(%rbx), %edx
pushq $0x1
popq %rsi
callq 0x33b0
movzwl 0x48(%rbx), %edx
cmpq %rdx, %rax
jne 0x9cbb
movq 0x8(%rbx), %rsi
shrl %edx
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0xb4e5
leaq 0x60(%rbx), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x3320
movq %r15, %rdi
callq 0x3100
leaq 0x2a76(%rip), %r15      # 0xc70a
pushq $0x1
popq %r12
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x3130
cmpq $-0x1, %rax
je 0x9cc9
movq %r14, %rdi
movq %rax, %rsi
movq %r12, %rdx
callq 0x3080
jmp 0x9c98
movq 0x8(%rbx), %rdi
callq 0x3300
pushq $-0x1
popq %rax
jmp 0x9ce9
testb $0x10, 0x44(%rbx)
je 0x9cde
leaq 0x24c8(%rip), %rsi      # 0xc19e
movq %r14, %rdi
callq 0x34b0
movq 0x8(%rbx), %rdi
callq 0x3300
xorl %eax, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnrecord.cpp
// Function: UsnRecord::ReadParseWriteRecord(_IO_FILE*, unsigned long)
int UsnRecord::ReadParseWriteRecord(FILE* fp, uint64_t offset) {
  UsnRecord::ReadRecord(offset);
  UsnRecord::ParseRecord();
  UsnRecord::WriteRecord(fp);
  return 0;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq %rdx, %rsi
callq 0x9b66
movq %r14, %rdi
callq 0x9bf2
movq %r14, %rdi
movq %rbx, %rsi
callq 0x9d0c
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnrecord.cpp
// Function: UsnMain::StoreRecord(UsnRecord*)
int UsnMain::StoreRecord(UsnRecord* ur) {
  usn = ur->usn_record.Usn;
  timestamp_i = ur->usn_record.TimeStamp;
  timestamp_s = parse_datetimemicro(ur->usn_record.TimeStamp, lt);
  file_name = ur->file_name;
  reasons_i = ur->usn_record.Reason;
  parse_reason(ur->usn_record.Reason, &(reasons_s));
  attrs_i = ur->usn_record.FileAttributes;
  parse_file_attr(ur->usn_record.FileAttributes, &(attrs_s)); 
  cid = ur->cid;
  pid = ur->pid;
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq 0x28(%rsi), %rax
movq %rax, (%rdi)
movq 0x30(%rsi), %rsi
movq %rsi, 0xa(%rdi)
leaq 0x826d(%rip), %rax      # 0x12298
movzbl (%rax), %edx
movq %rsp, %r15
movq %r15, %rdi
callq 0xa840
leaq 0x12(%rbx), %rdi
movq %r15, %rsi
callq 0x3320
movq %r15, %rdi
callq 0x3100
leaq 0x60(%r14), %rsi
leaq 0x3a(%rbx), %rdi
callq 0x3150
movl 0x38(%r14), %edi
movl %edi, 0x5a(%rbx)
leaq 0x5e(%rbx), %rsi
callq 0xaecf
movl 0x44(%r14), %edi
movl %edi, 0x7e(%rbx)
leaq 0x82(%rbx), %rsi
callq 0xaa46
movl 0x54(%r14), %eax
movl %eax, 0xa2(%rbx)
movl 0x5a(%r14), %eax
movl %eax, 0xa6(%rbx)
xorl %eax, %eax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/4n6ist[P]usn_analytics/lib/usnrecord.cpp
// Function: UsnMain::StoreRecord(UsnRecord*, unsigned short, double)
int UsnMain::StoreRecord(UsnRecord* ur, uint16_t _rec_cnt, double _time_taken) {
  usn = ur->usn_record.Usn;
  rec_cnt = _rec_cnt;
  timestamp_i = ur->usn_record.TimeStamp;
  timestamp_s = parse_datetimemicro(ur->usn_record.TimeStamp, lt);
  time_taken = _time_taken;
  file_name = ur->file_name;
  reasons_i = ur->usn_record.Reason;
  parse_reason(ur->usn_record.Reason, &(reasons_s));
  attrs_i = ur->usn_record.FileAttributes;
  parse_file_attr(ur->usn_record.FileAttributes, &(attrs_s)); 
  cid = ur->cid;
  pid = ur->pid;
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x30, %rsp
movsd %xmm0, 0x8(%rsp)
movq %rsi, %r14
movq %rdi, %rbx
movq 0x28(%rsi), %rax
movq %rax, (%rdi)
movw %dx, 0x8(%rdi)
movq 0x30(%rsi), %rsi
movq %rsi, 0xa(%rdi)
leaq 0x81cb(%rip), %rax      # 0x12298
movzbl (%rax), %edx
leaq 0x10(%rsp), %r15
movq %r15, %rdi
callq 0xa840
leaq 0x12(%rbx), %rdi
movq %r15, %rsi
callq 0x3320
movq %r15, %rdi
callq 0x3100
movsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x32(%rbx)
leaq 0x60(%r14), %rsi
leaq 0x3a(%rbx), %rdi
callq 0x3150
movl 0x38(%r14), %edi
movl %edi, 0x5a(%rbx)
leaq 0x5e(%rbx), %rsi
callq 0xaecf
movl 0x44(%r14), %edi
movl %edi, 0x7e(%rbx)
leaq 0x82(%rbx), %rsi
callq 0xaa46
movl 0x54(%r14), %eax
movl %eax, 0xa2(%rbx)
movl 0x5a(%r14), %eax
movl %eax, 0xa6(%rbx)
xorl %eax, %eax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %r15
retq