// File: /workspace/github_cpp_makefile_star2_O2/vsklad[P]cgen/commands.cpp
// Function: trace_setup(CGenTraceFormat, char const*)
void trace_setup(const CGenTraceFormat trace_format, const char* const output_file_name) {
    switch(trace_format) {
        case tfNone:
            bal::set_cnf_tracer(nullptr);
            break;
        case tfNativeStdOut:
            std::cout << "Trace output: std::cout" << std::endl;
            bal::set_cnf_tracer(new bal::CnfNativeTracer(std::cout));
            break;
        case tfNativeFile: {
            const std::string trace_file_name = std::string(output_file_name) + ".trace";
            std::cout << "Trace file: " << trace_file_name << std::endl;
            bal::set_cnf_tracer(new bal::CnfFileTracer<bal::CnfNativeTracer>(trace_file_name.c_str()));
            break;
        };
        case tfCnfVIGGEXF: {
            const std::string trace_file_name = std::string(output_file_name) + ".trace.gexf";
            std::cout << "Trace file: " << trace_file_name << std::endl;
            bal::set_cnf_tracer(new bal::CnfFileTracer<bal::CnfGexfTracer>(trace_file_name.c_str()));
            break;
        };
    };
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x70, %rsp
cmpl $0x3, %edi
ja 0x1b81f
movl %edi, %eax
leaq 0x1cb38(%rip), %rcx     # 0x381c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x38(%rbp), %rdi
andq $0x0, (%rdi)
callq 0x10250
leaq -0x38(%rbp), %rdi
jmp 0x1b81a
leaq -0x78(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xc0e0
leaq 0x1d288(%rip), %rdx     # 0x38943
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x1d816
leaq -0x78(%rbp), %rdi
callq 0xc110
movq 0x358d8(%rip), %rdi     # 0x50fb0
leaq 0x1d26b(%rip), %rsi     # 0x3894a
callq 0xc290
leaq -0x58(%rbp), %rsi
movq %rax, %rdi
callq 0xc230
movq %rax, %rdi
callq 0xc120
movl $0x258, %edi            # imm = 0x258
callq 0xc2a0
movq %rax, %r14
movq -0x58(%rbp), %rsi
movq %rax, %rdi
callq 0x1d840
leaq -0x28(%rbp), %rdi
movq %r14, (%rdi)
incl 0x8(%r14)
callq 0x10250
leaq -0x28(%rbp), %rdi
jmp 0x1b7a5
leaq -0x78(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xc0e0
leaq 0x1d21c(%rip), %rdx     # 0x38957
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x1d816
leaq -0x78(%rbp), %rdi
callq 0xc110
movq 0x35858(%rip), %rdi     # 0x50fb0
leaq 0x1d1eb(%rip), %rsi     # 0x3894a
callq 0xc290
leaq -0x58(%rbp), %rsi
movq %rax, %rdi
callq 0xc230
movq %rax, %rdi
callq 0xc120
movl $0x270, %edi            # imm = 0x270
callq 0xc2a0
movq %rax, %r14
movq -0x58(%rbp), %rsi
movq %rax, %rdi
callq 0x1d89a
leaq -0x20(%rbp), %rdi
movq %r14, (%rdi)
incl 0x8(%r14)
callq 0x10250
leaq -0x20(%rbp), %rdi
callq 0x10620
leaq -0x58(%rbp), %rdi
callq 0xc110
jmp 0x1b81f
movq 0x357f4(%rip), %rbx     # 0x50fb0
leaq 0x1d168(%rip), %rsi     # 0x3892b
movq %rbx, %rdi
callq 0xc290
movq %rax, %rdi
callq 0xc120
pushq $0x58
popq %rdi
callq 0xc2a0
movq %rbx, 0x10(%rax)
leaq 0x33672(%rip), %rcx     # 0x4ee58
movq %rcx, (%rax)
movw $0xff, 0x18(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x30(%rax)
andq $0x0, 0x50(%rax)
movups %xmm0, 0x40(%rax)
leaq -0x30(%rbp), %rdi
movq %rax, (%rdi)
movl $0x1, 0x8(%rax)
callq 0x10250
leaq -0x30(%rbp), %rdi
callq 0x10620
addq $0x70, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
leaq -0x20(%rbp), %rdi
jmp 0x1b838
movq %rax, %rbx
leaq -0x28(%rbp), %rdi
callq 0x10620
jmp 0x1b87c
jmp 0x1b841
movq %rax, %rbx
movq %r14, %rdi
callq 0xc260
jmp 0x1b87c
jmp 0x1b850
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
jmp 0x1b880
movq %rax, %rbx
leaq -0x30(%rbp), %rdi
jmp 0x1b869
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
callq 0x10620
jmp 0x1b885
jmp 0x1b872
movq %rax, %rbx
jmp 0x1b885
jmp 0x1b879
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xc110
movq %rbx, %rdi
callq 0xc4c0