// File: /workspace/github_c_makefile_star2_O0/cogbee[P]vmir-latest/src/vmir_function.c
// Function: function_print
static void
function_print(ir_unit_t *iu, ir_function_t *f, const char *what)
{
  printf("\nDump of %s function %s (%s)%s\n", what,
         f->if_name, type_str_index(iu, f->if_type),
         f->if_full_jit ? ", Fully JITed" : "");
  ir_bb_t *ib;
  TAILQ_FOREACH(ib, &f->if_bbs, ib_link) {
    ir_instr_t *ii;
    printf(".%d:%s%s%s%s%s", ib->ib_id,
           ib->ib_name ? " \"" : "",
           ib->ib_name ?: "",
           ib->ib_name ? "\"" : "",
           ib->ib_jit ? " (JIT)" : "",
           ib->ib_only_jit_sucessors ? " (Only JIT succ)" : "");

    ir_bb_edge_t *ibe;
    LIST_FOREACH(ibe, &ib->ib_incoming_edges, ibe_to_link) {
      printf(" pred:%d", ibe->ibe_from->ib_id);
    }
    printf("\n");
    TAILQ_FOREACH(ii, &ib->ib_instrs, ii_link) {
      printf("\t%s\n", instr_str(iu, ii, 0));
    }
    printf("\t\t");
    LIST_FOREACH(ibe, &ib->ib_outgoing_edges, ibe_from_link) {
      printf(" next:%d", ibe->ibe_to->ib_id);
    }
    printf("\n");
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x10(%rax), %esi
callq 0x22560
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq %rax, %rcx
movq -0x10(%rbp), %rax
movsbl 0x2a(%rax), %edi
leaq 0x1cf13(%rip), %r8      # 0x3f0a5
leaq 0x1cec4(%rip), %rax     # 0x3f05d
cmpl $0x0, %edi
cmovneq %rax, %r8
leaq 0x1ce96(%rip), %rdi     # 0x3f03d
movb $0x0, %al
callq 0x3170
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x2237e
movq -0x20(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0x54(%rbp)
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rdx
leaq 0x1cec7(%rip), %rax     # 0x3f0a5
leaq 0x1ce95(%rip), %rcx     # 0x3f07a
cmpq $0x0, %rdx
cmovneq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, %rax
je 0x2220d
movq -0x48(%rbp), %rax
movq %rax, -0x60(%rbp)
jmp 0x2221a
leaq 0x1ce91(%rip), %rax     # 0x3f0a5
movq %rax, -0x60(%rbp)
jmp 0x2221a
movq -0x50(%rbp), %rdx
movl -0x54(%rbp), %esi
movq -0x60(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rdi
leaq 0x1ce71(%rip), %r8      # 0x3f0a5
leaq 0x1ce40(%rip), %rax     # 0x3f07b
cmpq $0x0, %rdi
cmovneq %rax, %r8
movq -0x20(%rbp), %rax
movzbl 0x2d(%rax), %edi
leaq 0x1ce53(%rip), %r9      # 0x3f0a5
leaq 0x1ce24(%rip), %rax     # 0x3f07d
cmpl $0x0, %edi
cmovneq %rax, %r9
movq -0x20(%rbp), %rax
movzbl 0x2e(%rax), %r10d
leaq 0x1ce35(%rip), %rax     # 0x3f0a5
leaq 0x1ce0d(%rip), %rdi     # 0x3f084
cmpl $0x0, %r10d
cmovneq %rdi, %rax
leaq 0x1cde5(%rip), %rdi     # 0x3f06b
movq %rax, (%rsp)
movb $0x0, %al
callq 0x3170
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x222cb
movq -0x30(%rbp), %rax
movq 0x30(%rax), %rax
movl 0x28(%rax), %esi
leaq 0x1cddf(%rip), %rdi     # 0x3f095
movb $0x0, %al
callq 0x3170
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x2229d
leaq 0x1f71f(%rip), %rdi     # 0x419f1
movb $0x0, %al
callq 0x3170
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x22319
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x225c0
movq %rax, %rsi
leaq 0x1cd99(%rip), %rdi     # 0x3f09e
movb $0x0, %al
callq 0x3170
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x222e5
leaq 0x1cd83(%rip), %rdi     # 0x3f0a3
movb $0x0, %al
callq 0x3170
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x22360
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movl 0x28(%rax), %esi
leaq 0x1cd5a(%rip), %rdi     # 0x3f0a6
movb $0x0, %al
callq 0x3170
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x22333
leaq 0x1f68a(%rip), %rdi     # 0x419f1
movb $0x0, %al
callq 0x3170
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
jmp 0x221ba
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)