// File: /workspace/github_c_makefile_star2_O0/pali[P]bmfdec/bmf2mof.c
// Function: print_classes
static void print_classes(FILE *fout, struct mof_class *classes, uint32_t count) {
  char *direction;
  uint32_t i, j, k;
  int print_namespace = 0;
  int print_classflags = 0;
  for (i = 0; i < count; ++i) {
    if (!classes[i].name)
      continue;
    if (classes[i].namespace && strcmp(classes[i].namespace, "root\\default") != 0)
      print_namespace = 1;
    if (classes[i].classflags)
      print_classflags = 1;
  }
  for (i = 0; i < count; ++i) {
    if (!classes[i].name)
      continue;
    if (print_namespace) {
      fprintf(fout, "#pragma namespace(\"");
      if (classes[i].namespace)
        print_string(fout, classes[i].namespace);
      else
        print_string(fout, "root\\default");
      fprintf(fout, "\")\n");
    }
    if (print_classflags) {
      fprintf(fout, "#pragma classflags(");
      if (classes[i].classflags == 1)
        fprintf(fout, "\"updateonly\"");
      else if (classes[i].classflags == 2)
        fprintf(fout, "\"createonly\"");
      else if (classes[i].classflags == 32)
        fprintf(fout, "\"safeupdate\"");
      else if (classes[i].classflags == 33)
        fprintf(fout, "\"updateonly\", \"safeupdate\"");
      else if (classes[i].classflags == 64)
        fprintf(fout, "\"forceupdate\"");
      else if (classes[i].classflags == 65)
        fprintf(fout, "\"updateonly\", \"forceupdate\"");
      else
        fprintf(fout, "%d", (int)classes[i].classflags);
      fprintf(fout, ")\n");
    }
    if (classes[i].qualifiers_count > 0) {
      print_qualifiers(fout, classes[i].qualifiers, classes[i].qualifiers_count, NULL);
      fprintf(fout, "\n");
    }
    fprintf(fout, "class ");
    print_string(fout, classes[i].name);
    fprintf(fout, " ");
    if (classes[i].superclassname) {
      fprintf(fout, ": ");
      print_string(fout, classes[i].superclassname);
      fprintf(fout, " ");
    }
    fprintf(fout, "{\n");
    for (j = 0; j < classes[i].variables_count; ++j) {
      fprintf(fout, "  ");
      print_variable(fout, &classes[i].variables[j], NULL);
      fprintf(fout, ";\n");
    }
    if (classes[i].variables_count && classes[i].methods_count)
      fprintf(fout, "\n");
    for (j = 0; j < classes[i].methods_count; ++j) {
      fprintf(fout, "  ");
      if (classes[i].methods[j].qualifiers_count > 0) {
        print_qualifiers(fout, classes[i].methods[j].qualifiers, classes[i].methods[j].qualifiers_count, NULL);
        fprintf(fout, " ");
      }
      if (classes[i].methods[j].return_value.variable_type)
        print_variable_type(fout, &classes[i].methods[j].return_value);
      else
        fprintf(fout, "void");
      fprintf(fout, " ");
      print_string(fout, classes[i].methods[j].name);
      fprintf(fout, "(");
      for (k = 0; k < classes[i].methods[j].parameters_count; ++k) {
        switch (classes[i].methods[j].parameters_direction[k]) {
        case MOF_PARAMETER_IN:
          direction = "in";
          break;
        case MOF_PARAMETER_OUT:
          direction = "out";
          break;
        case MOF_PARAMETER_IN_OUT:
          direction = "in, out";
          break;
        default:
          direction = NULL;
          break;
        }
        print_variable(fout, &classes[i].methods[j].parameters[k], direction);
        if (k != classes[i].methods[j].parameters_count-1)
          fprintf(fout, ", ");
      }
      fprintf(fout, ");\n");
    }
    fprintf(fout, "};\n");
    if (i != count-1)
      fprintf(fout, "\n");
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl $0x0, -0x30(%rbp)
movl $0x0, -0x34(%rbp)
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x14(%rbp), %eax
jae 0x2424
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
jne 0x23ba
jmp 0x2416
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, 0x8(%rax)
je 0x23f9
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
leaq 0x6691(%rip), %rsi      # 0x8a79
callq 0x10f0
cmpl $0x0, %eax
je 0x23f9
movl $0x1, -0x30(%rbp)
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x18(%rax)
je 0x2414
movl $0x1, -0x34(%rbp)
jmp 0x2416
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x2398
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x14(%rbp), %eax
jae 0x2a9b
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
jne 0x2450
jmp 0x2a8d
cmpl $0x0, -0x30(%rbp)
je 0x24bc
movq -0x8(%rbp), %rdi
leaq 0x6625(%rip), %rsi      # 0x8a86
movb $0x0, %al
callq 0x1100
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, 0x8(%rax)
je 0x249a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rsi
callq 0x70b0
jmp 0x24aa
movq -0x8(%rbp), %rdi
leaq 0x65d4(%rip), %rsi      # 0x8a79
callq 0x70b0
movq -0x8(%rbp), %rdi
leaq 0x65e5(%rip), %rsi      # 0x8a9a
movb $0x0, %al
callq 0x1100
cmpl $0x0, -0x34(%rbp)
je 0x2610
movq -0x8(%rbp), %rdi
leaq 0x65cd(%rip), %rsi      # 0x8a9e
movb $0x0, %al
callq 0x1100
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpl $0x1, 0x18(%rax)
jne 0x2503
movq -0x8(%rbp), %rdi
leaq 0x65bb(%rip), %rsi      # 0x8ab2
movb $0x0, %al
callq 0x1100
jmp 0x25fe
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpl $0x2, 0x18(%rax)
jne 0x252e
movq -0x8(%rbp), %rdi
leaq 0x659d(%rip), %rsi      # 0x8abf
movb $0x0, %al
callq 0x1100
jmp 0x25fc
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpl $0x20, 0x18(%rax)
jne 0x2559
movq -0x8(%rbp), %rdi
leaq 0x658d(%rip), %rsi      # 0x8ada
movb $0x0, %al
callq 0x1100
jmp 0x25fa
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpl $0x21, 0x18(%rax)
jne 0x2581
movq -0x8(%rbp), %rdi
leaq 0x6554(%rip), %rsi      # 0x8acc
movb $0x0, %al
callq 0x1100
jmp 0x25f8
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpl $0x40, 0x18(%rax)
jne 0x25a9
movq -0x8(%rbp), %rdi
leaq 0x6555(%rip), %rsi      # 0x8af5
movb $0x0, %al
callq 0x1100
jmp 0x25f6
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpl $0x41, 0x18(%rax)
jne 0x25d1
movq -0x8(%rbp), %rdi
leaq 0x651f(%rip), %rsi      # 0x8ae7
movb $0x0, %al
callq 0x1100
jmp 0x25f4
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movl 0x18(%rax), %edx
leaq 0x6516(%rip), %rsi      # 0x8b03
movb $0x0, %al
callq 0x1100
jmp 0x25f6
jmp 0x25f8
jmp 0x25fa
jmp 0x25fc
jmp 0x25fe
movq -0x8(%rbp), %rdi
leaq 0x6492(%rip), %rsi      # 0x8a9b
movb $0x0, %al
callq 0x1100
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x1c(%rax)
jbe 0x2666
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rsi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0x7140
movq -0x8(%rbp), %rdi
leaq 0x643d(%rip), %rsi      # 0x8a9c
movb $0x0, %al
callq 0x1100
movq -0x8(%rbp), %rdi
leaq 0x6495(%rip), %rsi      # 0x8b06
movb $0x0, %al
callq 0x1100
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rsi
callq 0x70b0
movq -0x8(%rbp), %rdi
leaq 0x6099(%rip), %rsi      # 0x8736
movb $0x0, %al
callq 0x1100
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, 0x10(%rax)
je 0x26f8
movq -0x8(%rbp), %rdi
leaq 0x6449(%rip), %rsi      # 0x8b0d
movb $0x0, %al
callq 0x1100
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rsi
callq 0x70b0
movq -0x8(%rbp), %rdi
leaq 0x6045(%rip), %rsi      # 0x8736
movb $0x0, %al
callq 0x1100
movq -0x8(%rbp), %rdi
leaq 0x640d(%rip), %rsi      # 0x8b10
movb $0x0, %al
callq 0x1100
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x10(%rbp), %rcx
movl -0x24(%rbp), %edx
imulq $0x48, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x28(%rcx), %eax
jae 0x277f
movq -0x8(%rbp), %rdi
leaq 0x6003(%rip), %rsi      # 0x8735
movb $0x0, %al
callq 0x1100
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x30(%rax), %rsi
movl -0x28(%rbp), %eax
imulq $0x30, %rax, %rax
addq %rax, %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x7470
movq -0x8(%rbp), %rdi
leaq 0x63b7(%rip), %rsi      # 0x8b24
movb $0x0, %al
callq 0x1100
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x2711
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x28(%rax)
je 0x27b9
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x38(%rax)
je 0x27b9
movq -0x8(%rbp), %rdi
leaq 0x62ea(%rip), %rsi      # 0x8a9c
movb $0x0, %al
callq 0x1100
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x10(%rbp), %rcx
movl -0x24(%rbp), %edx
imulq $0x48, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x38(%rcx), %eax
jae 0x2a5a
movq -0x8(%rbp), %rdi
leaq 0x5f50(%rip), %rsi      # 0x8735
movb $0x0, %al
callq 0x1100
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rax
movl -0x28(%rbp), %ecx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, (%rax)
jbe 0x286a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rax
movl -0x28(%rbp), %ecx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rsi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rax
movl -0x28(%rbp), %ecx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0x7140
movq -0x8(%rbp), %rdi
leaq 0x5ed3(%rip), %rsi      # 0x8736
movb $0x0, %al
callq 0x1100
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rax
movl -0x28(%rbp), %ecx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x48(%rax)
je 0x28b7
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rsi
movl -0x28(%rbp), %eax
imulq $0x60, %rax, %rax
addq %rax, %rsi
addq $0x30, %rsi
callq 0x7560
jmp 0x28c9
movq -0x8(%rbp), %rdi
leaq 0x6251(%rip), %rsi      # 0x8b13
movb $0x0, %al
callq 0x1100
movq -0x8(%rbp), %rdi
leaq 0x5e62(%rip), %rsi      # 0x8736
movb $0x0, %al
callq 0x1100
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rax
movl -0x28(%rbp), %ecx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rsi
callq 0x70b0
movq -0x8(%rbp), %rdi
leaq 0x61a1(%rip), %rsi      # 0x8ab0
movb $0x0, %al
callq 0x1100
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x10(%rbp), %rcx
movl -0x24(%rbp), %edx
imulq $0x48, %rdx, %rdx
addq %rdx, %rcx
movq 0x40(%rcx), %rcx
movl -0x28(%rbp), %edx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x18(%rcx), %eax
jae 0x2a3a
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
leaq (%rcx,%rcx,8), %rcx
movq 0x40(%rax,%rcx,8), %rax
movl -0x28(%rbp), %ecx
leaq (%rcx,%rcx,2), %rcx
shlq $0x5, %rcx
movq 0x28(%rax,%rcx), %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx,4), %eax
movl %eax, -0x38(%rbp)
subl $0x1, %eax
je 0x2989
jmp 0x2975
movl -0x38(%rbp), %eax
subl $0x2, %eax
je 0x2996
jmp 0x297f
movl -0x38(%rbp), %eax
subl $0x3, %eax
je 0x29a3
jmp 0x29b0
leaq 0x60ad(%rip), %rax      # 0x8a3d
movq %rax, -0x20(%rbp)
jmp 0x29b8
leaq 0x617f(%rip), %rax      # 0x8b1c
movq %rax, -0x20(%rbp)
jmp 0x29b8
leaq 0x616e(%rip), %rax      # 0x8b18
movq %rax, -0x20(%rbp)
jmp 0x29b8
movq $0x0, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rax
movl -0x28(%rbp), %ecx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rsi
movl -0x2c(%rbp), %eax
imulq $0x30, %rax, %rax
addq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0x7470
movl -0x2c(%rbp), %eax
movq -0x10(%rbp), %rcx
movl -0x24(%rbp), %edx
imulq $0x48, %rdx, %rdx
addq %rdx, %rcx
movq 0x40(%rcx), %rcx
movl -0x28(%rbp), %edx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
movl 0x18(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x2a2a
movq -0x8(%rbp), %rdi
leaq 0x60fd(%rip), %rsi      # 0x8b20
movb $0x0, %al
callq 0x1100
jmp 0x2a2c
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x291d
movq -0x8(%rbp), %rdi
leaq 0x60de(%rip), %rsi      # 0x8b23
movb $0x0, %al
callq 0x1100
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x27c0
movq -0x8(%rbp), %rdi
leaq 0x60c2(%rip), %rsi      # 0x8b27
movb $0x0, %al
callq 0x1100
movl -0x24(%rbp), %eax
movl -0x14(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x2a8b
movq -0x8(%rbp), %rdi
leaq 0x6018(%rip), %rsi      # 0x8a9c
movb $0x0, %al
callq 0x1100
jmp 0x2a8d
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x242b
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)