// File: /workspace/github_cpp_makefile_star2_O3/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 0x202c1
movl %edi, %eax
leaq 0x262ea(%rip), %rcx     # 0x46280
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x60(%rbp), %rdi
movq $0x0, (%rdi)
callq 0x10e00
movq -0x60(%rbp), %rdi
jmp 0x200d6
leaq -0x80(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0xb0f0
leaq 0x26a37(%rip), %rsi     # 0x46a03
leaq -0x80(%rbp), %rdi
callq 0xb530
leaq -0x40(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x200fc
movq %rdx, -0x50(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x40(%rbp)
jmp 0x20103
leaq -0x80(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0xb0f0
leaq 0x26a03(%rip), %rsi     # 0x46a17
leaq -0x80(%rbp), %rdi
callq 0xb530
leaq -0x40(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x201cf
movq %rdx, -0x50(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x40(%rbp)
jmp 0x201d6
movq 0x3bf61(%rip), %rbx     # 0x5bfb0
leaq 0x26995(%rip), %rsi     # 0x469eb
movl $0x17, %edx
movq %rbx, %rdi
callq 0xb320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xb2a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xb030
movq %rax, %rdi
callq 0xb1a0
movl $0x58, %edi
callq 0xb2c0
movq %rbx, 0x10(%rax)
leaq 0x3a639(%rip), %rcx     # 0x5a6d8
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 -0x58(%rbp), %rdi
movq %rax, (%rdi)
movl $0x1, 0x8(%rax)
callq 0x10e00
movq -0x58(%rbp), %rdi
testq %rdi, %rdi
je 0x202c1
movl 0x8(%rdi), %eax
cmpl $0x1, %eax
ja 0x200f2
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x202c1
decl %eax
movl %eax, 0x8(%rdi)
jmp 0x202c1
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x48(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2012c
callq 0xb280
movq 0x3be7d(%rip), %rdi     # 0x5bfb0
leaq 0x268d0(%rip), %rsi     # 0x46a0a
movl $0xc, %edx
callq 0xb320
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq 0x3be5d(%rip), %rdi     # 0x5bfb0
callq 0xb320
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xb2a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xb030
movq %rax, %rdi
callq 0xb1a0
movl $0x258, %edi            # imm = 0x258
callq 0xb2c0
movq %rax, %r14
movq -0x50(%rbp), %rsi
movq %rax, %rdi
callq 0x2385c
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
incl 0x8(%r14)
callq 0x10e00
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x202b3
movl 0x8(%rdi), %eax
cmpl $0x1, %eax
ja 0x20297
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2029c
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x48(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x201ff
callq 0xb280
movq 0x3bdaa(%rip), %rdi     # 0x5bfb0
leaq 0x267fd(%rip), %rsi     # 0x46a0a
movl $0xc, %edx
callq 0xb320
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq 0x3bd8a(%rip), %rdi     # 0x5bfb0
callq 0xb320
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xb2a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xb030
movq %rax, %rdi
callq 0xb1a0
movl $0x270, %edi            # imm = 0x270
callq 0xb2c0
movq %rax, %r14
movq -0x50(%rbp), %rsi
movq %rax, %rdi
callq 0x238be
leaq -0x28(%rbp), %rdi
movq %r14, (%rdi)
incl 0x8(%r14)
callq 0x10e00
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x202b3
movl 0x8(%rdi), %eax
cmpl $0x1, %eax
ja 0x202a6
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x202ab
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x30(%rbp)
jmp 0x202b3
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x28(%rbp)
movq -0x50(%rbp), %rdi
cmpq %r15, %rdi
je 0x202c1
callq 0xb280
addq $0x68, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x20355
leaq -0x28(%rbp), %rsi
callq 0xb606
jmp 0x20355
movq %rax, %rbx
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x20355
leaq -0x30(%rbp), %rsi
callq 0xb62f
jmp 0x20355
jmp 0x202fc
movq %rax, %rbx
movq %r14, %rdi
callq 0xb280
jmp 0x20355
jmp 0x2030b
movq %rax, %rbx
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x2035e
jmp 0x20363
movq %rax, %rbx
movq -0x58(%rbp), %rdi
jmp 0x2032d
movq %rax, %rbx
movq -0x60(%rbp), %rdi
testq %rdi, %rdi
je 0x20363
movl 0x8(%rdi), %eax
cmpl $0x1, %eax
ja 0x20342
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x20363
decl %eax
movl %eax, 0x8(%rdi)
jmp 0x20363
jmp 0x2034b
movq %rax, %rbx
jmp 0x20363
jmp 0x20352
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r15, %rdi
je 0x20363
callq 0xb280
movq %rbx, %rdi
callq 0xb4e0