// File: /workspace/github_cpp_makefile_star2_O1/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 %r15
pushq %r14
pushq %rbx
subq $0x68, %rsp
cmpl $0x3, %edi
ja 0x21a01
movl %edi, %eax
leaq 0x26bd4(%rip), %rcx     # 0x48270
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x40(%rbp), %rdi
movq $0x0, (%rdi)
callq 0x12190
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x21a01
movl 0x8(%rdi), %eax
cmpl $0x1, %eax
ja 0x219b9
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x219be
leaq -0x80(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0xc0f0
leaq 0x27306(%rip), %rsi     # 0x489f3
leaq -0x80(%rbp), %rdi
callq 0xc530
leaq -0x50(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2181e
movq %rdx, -0x60(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x50(%rbp)
jmp 0x21825
leaq -0x80(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0xc0f0
leaq 0x272d2(%rip), %rsi     # 0x48a07
leaq -0x80(%rbp), %rdi
callq 0xc530
leaq -0x50(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x218f1
movq %rdx, -0x60(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x50(%rbp)
jmp 0x218f8
movq 0x3d838(%rip), %rbx     # 0x5efa8
leaq 0x27264(%rip), %rsi     # 0x489db
movl $0x17, %edx
movq %rbx, %rdi
callq 0xc320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xc2a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xc030
movq %rax, %rdi
callq 0xc1a0
movl $0x58, %edi
callq 0xc2c0
movl $0x0, 0x8(%rax)
movq %rbx, 0x10(%rax)
leaq 0x3b289(%rip), %rcx     # 0x5ca50
movq %rcx, (%rax)
movw $0xff, 0x18(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x30(%rax)
movups %xmm0, 0x40(%rax)
movq $0x0, 0x50(%rax)
leaq -0x38(%rbp), %rdi
movq %rax, (%rdi)
movl $0x1, 0x8(%rax)
callq 0x12190
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x21a01
movl 0x8(%rdi), %eax
cmpl $0x1, %eax
ja 0x219c8
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x219cd
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x58(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2184e
callq 0xc280
movq 0x3d753(%rip), %rdi     # 0x5efa8
leaq 0x2719e(%rip), %rsi     # 0x489fa
movl $0xc, %edx
callq 0xc320
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq 0x3d733(%rip), %rdi     # 0x5efa8
callq 0xc320
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xc2a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xc030
movq %rax, %rdi
callq 0xc1a0
movl $0x258, %edi            # imm = 0x258
callq 0xc2c0
movq %rax, %r14
movq -0x60(%rbp), %rsi
movq %rax, %rdi
callq 0x24fa6
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
incl 0x8(%r14)
callq 0x12190
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x219f3
movl 0x8(%rdi), %eax
cmpl $0x1, %eax
ja 0x219d7
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x219dc
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x58(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x21921
callq 0xc280
movq 0x3d680(%rip), %rdi     # 0x5efa8
leaq 0x270cb(%rip), %rsi     # 0x489fa
movl $0xc, %edx
callq 0xc320
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq 0x3d660(%rip), %rdi     # 0x5efa8
callq 0xc320
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xc2a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xc030
movq %rax, %rdi
callq 0xc1a0
movl $0x270, %edi            # imm = 0x270
callq 0xc2c0
movq %rax, %r14
movq -0x60(%rbp), %rsi
movq %rax, %rdi
callq 0x25008
leaq -0x28(%rbp), %rdi
movq %r14, (%rdi)
incl 0x8(%r14)
callq 0x12190
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x219f3
movl 0x8(%rdi), %eax
cmpl $0x1, %eax
ja 0x219e6
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x219eb
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x40(%rbp)
jmp 0x21a01
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x38(%rbp)
jmp 0x21a01
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x30(%rbp)
jmp 0x219f3
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x28(%rbp)
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
je 0x21a01
callq 0xc280
addq $0x68, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x21a97
leaq -0x28(%rbp), %rsi
callq 0xc75a
jmp 0x21a97
movq %rax, %rbx
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x21a97
leaq -0x30(%rbp), %rsi
callq 0xc783
jmp 0x21a97
jmp 0x21a3c
movq %rax, %rbx
movq %r14, %rdi
callq 0xc280
jmp 0x21a97
jmp 0x21a4b
movq %rax, %rbx
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x21aa0
jmp 0x21aa5
movq %rax, %rbx
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x21aa5
leaq -0x38(%rbp), %rsi
callq 0xc7ac
jmp 0x21aa5
movq %rax, %rbx
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x21aa5
leaq -0x40(%rbp), %rsi
callq 0xc7d5
jmp 0x21aa5
jmp 0x21a8d
movq %rax, %rbx
jmp 0x21aa5
jmp 0x21a94
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
je 0x21aa5
callq 0xc280
movq %rbx, %rdi
callq 0xc4e0