// File: /workspace/github_c_makefile_star2_O0/cogbee[P]vmir-latest/src/vmir_bitcode_parser.c
// Function: paramattr_rec_handler
static void
paramattr_rec_handler(ir_unit_t *iu, int op,
                      unsigned int argc, const int64_t *argv)
{
  int off;
  const char *ctx = "paramattr";

  switch(op) {
  case 2:
    off = VECTOR_LEN(&iu->iu_attrsets);
    VECTOR_RESIZE(&iu->iu_attrsets, off + 1);
    ir_attrset_t *ias = &VECTOR_ITEM(&iu->iu_attrsets, off);
    ias->ias_list = malloc(argc * sizeof(const ir_attr_t *));
    ias->ias_size = argc;
    for(int i = 0; i < argc; i++) {
      const ir_attr_t *ia;
      LIST_FOREACH(ia, &iu->iu_attribute_groups, ia_link) {
        if(ia->ia_group_id == argv[i])
          break;
      }

      if(ia == NULL)
        parser_error(iu, "%s: Group %d not found",
                            ctx, (int)argv[i]);

      ias->ias_list[i] = ia;
    }
    break;

  default:
    parser_error(iu, "Unknown op %d in paramattr", op);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
leaq 0xcb4a(%rip), %rax      # 0x40a37
movq %rax, -0x28(%rbp)
movl -0xc(%rbp), %eax
subl $0x2, %eax
jne 0x34068
jmp 0x33eff
movq -0x8(%rbp), %rax
movq 0x158(%rax), %rax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
cltq
movq -0x8(%rbp), %rcx
cmpq 0x160(%rcx), %rax
jbe 0x33f6d
movl -0x1c(%rbp), %eax
addl $0x1, %eax
shll %eax
movslq %eax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x160(%rax)
movq -0x8(%rbp), %rax
movq 0x160(%rax), %rax
shlq $0x4, %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq 0x150(%rax), %rdi
movq -0x30(%rbp), %rsi
callq 0x3390
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x150(%rax)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x158(%rax)
movq -0x8(%rbp), %rax
movq 0x150(%rax), %rax
movslq -0x1c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movl -0x10(%rbp), %eax
movl %eax, %edi
shlq $0x3, %rdi
callq 0x3360
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x8(%rax)
movl -0x10(%rbp), %ecx
movq -0x38(%rbp), %rax
movl %ecx, (%rax)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x10(%rbp), %eax
jae 0x34066
movq -0x8(%rbp), %rax
movq 0x148(%rax), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x3400c
movq -0x48(%rbp), %rax
movl 0x10(%rax), %eax
movq -0x18(%rbp), %rcx
movslq -0x3c(%rbp), %rdx
cmpq (%rcx,%rdx,8), %rax
jne 0x33ffd
jmp 0x3400c
jmp 0x33fff
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0x33fdf
cmpq $0x0, -0x48(%rbp)
jne 0x34044
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %r8
movq -0x18(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %r9d
leaq 0xc833(%rip), %rsi      # 0x40864
movl $0x16b, %edx            # imm = 0x16B
leaq 0xc9d2(%rip), %rcx      # 0x40a0f
movb $0x0, %al
callq 0x18220
movq -0x48(%rbp), %rdx
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x3c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x33fc4
jmp 0x3408a
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %r8d
leaq 0xc7ed(%rip), %rsi      # 0x40864
movl $0x172, %edx            # imm = 0x172
leaq 0xc9a3(%rip), %rcx      # 0x40a26
movb $0x0, %al
callq 0x18220
addq $0x50, %rsp
popq %rbp
retq