// File: /workspace/github_c_makefile_star2_O0/pali[P]bmfdec/./bmfparse.c
// Function: parse_class_method_parameters
static void parse_class_method_parameters(char *buf, uint32_t size, struct mof_method *out, uint32_t offset) {
  struct mof_class *parameters;
  uint32_t *buf2 = (uint32_t *)buf;
  if (size < 16) error("Invalid size");
  if (buf2[1] != 0x1) error("Invalid unknown");
  uint32_t count = buf2[2];
  uint32_t len = buf2[3];
  if (len == 0 || !check_sum(12, len, size)) error("Invalid size");
  if (len+12 != size) error("Invalid size?");
  uint32_t i;
  char *tmp = buf+16;
  parameters = calloc(count, sizeof(*parameters));
  if (!parameters) error("calloc failed");
  for (i=0; i<count; ++i) {
    buf2 = (uint32_t *)tmp;
    if (tmp-buf >= UINT32_MAX) error("Invalid size");
    if (!check_sum(4, tmp-buf, len)) error("Invalid size");
    uint32_t len1 = buf2[0];
    if (!check_sum(tmp-buf, len1, 16+len)) error("Invalid size");
    if (len1 < 20) error("Invalid size");
    if (buf2[1] != 0xFFFFFFFF) error("Invalid unknown");
    if (buf2[2] != 0x0) error("Invalid unknown");
    uint32_t len2 = buf2[3];
    if (len2 >= len || !check_sum(tmp-buf, 20-16, len-len2)) error("Invalid size"); /* if (tmp+len2+20 > buf+16+len) */
    if (buf2[4] != 0x1) error("Invalid unknown");
    parameters[i] = parse_class_data(tmp+20, len2, len2, 0, offset ? offset+tmp+20-buf : 0);
    if (strcmp(parameters[i].name, "__PARAMETERS") != 0) error("Invalid parameters class name");
    tmp += len1;
  }
  uint32_t variables_count = 0;
  for (i=0; i<count; ++i) {
    variables_count += parameters[i].variables_count;
  }
  uint8_t *parameters_map = calloc(variables_count, sizeof(uint8_t));
  if (!parameters_map) error("calloc failed");
  uint32_t j, k;
  for (i=0; i<count; ++i) {
    for (j=0; j<parameters[i].variables_count; ++j) {
      int processed = 0;
      for (k=0; k<parameters[i].variables[j].qualifiers_count; ++k) {
        if (parameters[i].variables[j].qualifiers[k].type != MOF_QUALIFIER_SINT32)
          continue;
        if (strcmp(parameters[i].variables[j].qualifiers[k].name, "ID") != 0)
          continue;
        if (processed) error("parameter has more IDs");
        int32_t id = parameters[i].variables[j].qualifiers[k].value.sint32;
        if (id < 0 || (uint32_t)id >= variables_count) error("invalid parameter ID");
        parameters_map[id] = 1;
        processed = 1;
      }
      int return_value = (strcmp(parameters[i].variables[j].name, "ReturnValue") == 0) ? 1 : 0;
      if (!(processed ^ return_value)) error("variable is not parameter nor return value");
    }
  }
  uint32_t parameters_count = (variables_count && parameters_map[0]) ? 1 : 0;
  for (i=1; i<variables_count; ++i) {
    if (parameters_map[i]) {
      if (!parameters_map[i-1]) error("some parameters are missing");
      parameters_count = i+1;
    }
  }
  out->parameters_count = parameters_count;
  out->parameters = calloc(parameters_count, sizeof(*out->parameters));
  out->parameters_direction = calloc(parameters_count, sizeof(*out->parameters_direction));
  if (!out->parameters) error("calloc failed");
  int has_return_value = 0;
  for (i=0; i<count; ++i) {
    for (j=0; j<parameters[i].variables_count; ++j) {
      int32_t id = -1;
      struct mof_variable variable = parameters[i].variables[j];
      for (k=0; k<variable.qualifiers_count; ++k) {
        if (variable.qualifiers[k].type != MOF_QUALIFIER_SINT32)
          continue;
        if (strcmp(variable.qualifiers[k].name, "ID") != 0)
          continue;
        id = variable.qualifiers[k].value.sint32;
        break;
      }
      if (id != -1) {
        if (parameters_map[id] == 2) {
          if (cmp_variables(&out->parameters[id], &variable) != 0) error("two variables at same position");
          out->parameters[id].qualifiers = realloc(out->parameters[id].qualifiers, (out->parameters[id].qualifiers_count+variable.qualifiers_count-1)*sizeof(*out->parameters[id].qualifiers));
          if (!out->parameters[id].qualifiers) error("realloc failed");
        } else {
          out->parameters[id] = variable;
          out->parameters[id].qualifiers_count = 0;
          out->parameters[id].qualifiers = calloc(variable.qualifiers_count-1, sizeof(*out->parameters[id].qualifiers));
          parameters_map[id] = 2;
          memset(&parameters[i].variables[j], 0, sizeof(parameters[i].variables[j]));
          parameters[i].variables[j].qualifiers_count = variable.qualifiers_count;
          parameters[i].variables[j].qualifiers = variable.qualifiers;
        }
        for (k=0; k<variable.qualifiers_count; ++k) {
          if (variable.qualifiers[k].type == MOF_QUALIFIER_SINT32 &&
              strcmp(variable.qualifiers[k].name, "ID") == 0)
            continue;
          if (variable.qualifiers[k].type == MOF_QUALIFIER_BOOLEAN) {
            if (strcasecmp(variable.qualifiers[k].name, "in") == 0) {
              if (!out->parameters_direction[id])
                out->parameters_direction[id] = MOF_PARAMETER_IN;
              else
                out->parameters_direction[id] = MOF_PARAMETER_IN_OUT;
              continue;
            } else if (strcasecmp(variable.qualifiers[k].name, "out") == 0) {
              if (!out->parameters_direction[id])
                out->parameters_direction[id] = MOF_PARAMETER_OUT;
              else
                out->parameters_direction[id] = MOF_PARAMETER_IN_OUT;
              continue;
            }
          }
          int skip = 0;
          uint32_t l;
          for (l=0; l<out->parameters[id].qualifiers_count; ++l) {
            if (cmp_qualifiers(&out->parameters[id].qualifiers[l], &variable.qualifiers[k]) == 0) {
              skip = 1;
              break;
            }
          }
          if (skip)
            continue;
          out->parameters[id].qualifiers[out->parameters[id].qualifiers_count++] = variable.qualifiers[k];
          memset(&parameters[i].variables[j].qualifiers[k], 0, sizeof(parameters[i].variables[j].qualifiers[k]));
        }
      } else if (strcmp(variable.name, "ReturnValue") == 0) {
        if (has_return_value) error("multiple return values");
        out->return_value = variable;
        has_return_value = 1;
        memset(&parameters[i].variables[j], 0, sizeof(parameters[i].variables[j]));
      } else {
        error("variable is not parameter nor return value");
      }
    }
  }
  free(parameters_map);
  free_classes(parameters, count);
  for (i=0; i<out->parameters_count; ++i) {
    if (out->parameters_direction[i] != MOF_PARAMETER_IN &&
        out->parameters_direction[i] != MOF_PARAMETER_OUT &&
        out->parameters_direction[i] != MOF_PARAMETER_IN_OUT) error("parameter is not input nor output");
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpl $0x10, -0xc(%rbp)
jae 0x5cff
jmp 0x5cc9
movq 0x5328(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x27a1(%rip), %rsi      # 0x847b
leaq 0x27de(%rip), %rdx      # 0x84bf
leaq 0x2c51(%rip), %rcx      # 0x8939
movl $0x1e2, %r8d            # imm = 0x1E2
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x30(%rbp), %rax
cmpl $0x1, 0x4(%rax)
je 0x5d41
jmp 0x5d0b
movq 0x52e6(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x275f(%rip), %rsi      # 0x847b
leaq 0x2829(%rip), %rdx      # 0x854c
leaq 0x2c0f(%rip), %rcx      # 0x8939
movl $0x1e3, %r8d            # imm = 0x1E3
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x30(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x34(%rbp)
movq -0x30(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x38(%rbp)
cmpl $0x0, -0x38(%rbp)
je 0x5d70
movl $0xfffffff3, %eax       # imm = 0xFFFFFFF3
cmpl -0x38(%rbp), %eax
jb 0x5d70
movl -0x38(%rbp), %eax
addl $0xc, %eax
cmpl -0xc(%rbp), %eax
jbe 0x5da8
jmp 0x5d72
movq 0x527f(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x26f8(%rip), %rsi      # 0x847b
leaq 0x2735(%rip), %rdx      # 0x84bf
leaq 0x2ba8(%rip), %rcx      # 0x8939
movl $0x1e6, %r8d            # imm = 0x1E6
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movl -0x38(%rbp), %eax
addl $0xc, %eax
cmpl -0xc(%rbp), %eax
je 0x5deb
jmp 0x5db5
movq 0x523c(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x26b5(%rip), %rsi      # 0x847b
leaq 0x2b8a(%rip), %rdx      # 0x8957
leaq 0x2b65(%rip), %rcx      # 0x8939
movl $0x1e7, %r8d            # imm = 0x1E7
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x8(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x48(%rbp)
movl -0x34(%rbp), %eax
movl %eax, %edi
movl $0x48, %esi
callq 0x10e0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5e49
jmp 0x5e13
movq 0x51de(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x2657(%rip), %rsi      # 0x847b
leaq 0x2731(%rip), %rdx      # 0x855c
leaq 0x2b07(%rip), %rcx      # 0x8939
movl $0x1eb, %r8d            # imm = 0x1EB
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jae 0x6226
movq -0x48(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x48(%rbp), %rax
movq -0x8(%rbp), %rcx
subq %rcx, %rax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
cmpq %rcx, %rax
jl 0x5eb1
jmp 0x5e7b
movq 0x5176(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x25ef(%rip), %rsi      # 0x847b
leaq 0x262c(%rip), %rdx      # 0x84bf
leaq 0x2a9f(%rip), %rcx      # 0x8939
movl $0x1ee, %r8d            # imm = 0x1EE
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x48(%rbp), %rax
movq -0x8(%rbp), %rcx
subq %rcx, %rax
movl %eax, %ecx
movl $0xfffffffb, %eax       # imm = 0xFFFFFFFB
cmpl %ecx, %eax
jb 0x5eda
movq -0x48(%rbp), %rax
movq -0x8(%rbp), %rcx
subq %rcx, %rax
addl $0x4, %eax
cmpl -0x38(%rbp), %eax
jbe 0x5f12
jmp 0x5edc
movq 0x5115(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x258e(%rip), %rsi      # 0x847b
leaq 0x25cb(%rip), %rdx      # 0x84bf
leaq 0x2a3e(%rip), %rcx      # 0x8939
movl $0x1ef, %r8d            # imm = 0x1EF
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x30(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x4c(%rbp)
movq -0x48(%rbp), %rax
movq -0x8(%rbp), %rcx
subq %rcx, %rax
movl %eax, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
subl %ecx, %eax
cmpl -0x4c(%rbp), %eax
jb 0x5f4c
movq -0x48(%rbp), %rax
movq -0x8(%rbp), %rcx
subq %rcx, %rax
addl -0x4c(%rbp), %eax
movl -0x38(%rbp), %ecx
addl $0x10, %ecx
cmpl %ecx, %eax
jbe 0x5f84
jmp 0x5f4e
movq 0x50a3(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x251c(%rip), %rsi      # 0x847b
leaq 0x2559(%rip), %rdx      # 0x84bf
leaq 0x29cc(%rip), %rcx      # 0x8939
movl $0x1f1, %r8d            # imm = 0x1F1
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
cmpl $0x14, -0x4c(%rbp)
jae 0x5fc2
jmp 0x5f8c
movq 0x5065(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x24de(%rip), %rsi      # 0x847b
leaq 0x251b(%rip), %rdx      # 0x84bf
leaq 0x298e(%rip), %rcx      # 0x8939
movl $0x1f2, %r8d            # imm = 0x1F2
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x30(%rbp), %rax
cmpl $-0x1, 0x4(%rax)
je 0x6004
jmp 0x5fce
movq 0x5023(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x249c(%rip), %rsi      # 0x847b
leaq 0x2566(%rip), %rdx      # 0x854c
leaq 0x294c(%rip), %rcx      # 0x8939
movl $0x1f3, %r8d            # imm = 0x1F3
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x30(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x6046
jmp 0x6010
movq 0x4fe1(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x245a(%rip), %rsi      # 0x847b
leaq 0x2524(%rip), %rdx      # 0x854c
leaq 0x290a(%rip), %rcx      # 0x8939
movl $0x1f4, %r8d            # imm = 0x1F4
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x30(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x38(%rbp), %eax
jae 0x6089
movq -0x48(%rbp), %rax
movq -0x8(%rbp), %rcx
subq %rcx, %rax
movl %eax, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
subl %ecx, %eax
cmpl $0x4, %eax
jb 0x6089
movq -0x48(%rbp), %rax
movq -0x8(%rbp), %rcx
subq %rcx, %rax
addl $0x4, %eax
movl -0x38(%rbp), %ecx
subl -0x50(%rbp), %ecx
cmpl %ecx, %eax
jbe 0x60c1
jmp 0x608b
movq 0x4f66(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x23df(%rip), %rsi      # 0x847b
leaq 0x241c(%rip), %rdx      # 0x84bf
leaq 0x288f(%rip), %rcx      # 0x8939
movl $0x1f6, %r8d            # imm = 0x1F6
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x30(%rbp), %rax
cmpl $0x1, 0x10(%rax)
je 0x6103
jmp 0x60cd
movq 0x4f24(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x239d(%rip), %rsi      # 0x847b
leaq 0x2467(%rip), %rdx      # 0x854c
leaq 0x284d(%rip), %rcx      # 0x8939
movl $0x1f7, %r8d            # imm = 0x1F7
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x118(%rbp)
movq -0x48(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x110(%rbp)
movl -0x50(%rbp), %eax
movl %eax, -0x108(%rbp)
movl -0x50(%rbp), %eax
movl %eax, -0x104(%rbp)
cmpl $0x0, -0x1c(%rbp)
je 0x615f
movl -0x1c(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
addq $0x14, %rax
movq -0x8(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x120(%rbp)
jmp 0x616a
xorl %eax, %eax
movq %rax, -0x120(%rbp)
jmp 0x616a
movl -0x104(%rbp), %ecx
movl -0x108(%rbp), %edx
movq -0x110(%rbp), %rsi
movq -0x120(%rbp), %rax
movl %eax, %r9d
leaq -0x98(%rbp), %rdi
xorl %r8d, %r8d
callq 0x3320
movq -0x118(%rbp), %rdi
leaq -0x98(%rbp), %rsi
movl $0x48, %edx
callq 0x1130
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rdi
leaq 0x279f(%rip), %rsi      # 0x8965
callq 0x10f0
cmpl $0x0, %eax
je 0x6208
jmp 0x61d2
movq 0x4e1f(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x2298(%rip), %rsi      # 0x847b
leaq 0x2788(%rip), %rdx      # 0x8972
leaq 0x2748(%rip), %rcx      # 0x8939
movl $0x1f9, %r8d            # imm = 0x1F9
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movl -0x4c(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, %ecx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x5e50
movl $0x0, -0x9c(%rbp)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jae 0x6267
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movl 0x28(%rax), %eax
addl -0x9c(%rbp), %eax
movl %eax, -0x9c(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x6237
movl -0x9c(%rbp), %eax
movl %eax, %edi
movl $0x1, %esi
callq 0x10e0
movq %rax, -0xa8(%rbp)
cmpq $0x0, -0xa8(%rbp)
jne 0x62c2
jmp 0x628c
movq 0x4d65(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x21de(%rip), %rsi      # 0x847b
leaq 0x22b8(%rip), %rdx      # 0x855c
leaq 0x268e(%rip), %rcx      # 0x8939
movl $0x201, %r8d            # imm = 0x201
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jae 0x656d
movl $0x0, -0xac(%rbp)
movl -0xac(%rbp), %eax
movq -0x28(%rbp), %rcx
movl -0x3c(%rbp), %edx
imulq $0x48, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x28(%rcx), %eax
jae 0x655d
movl $0x0, -0xb4(%rbp)
movl $0x0, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
movq -0x28(%rbp), %rcx
movl -0x3c(%rbp), %edx
imulq $0x48, %rdx, %rdx
addq %rdx, %rcx
movq 0x30(%rcx), %rcx
movl -0xac(%rbp), %edx
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
cmpl (%rcx), %eax
jae 0x64ba
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movl -0xac(%rbp), %ecx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
cmpl $0x2, (%rax)
je 0x6377
jmp 0x64a6
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movl -0xac(%rbp), %ecx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
leaq 0x2607(%rip), %rsi      # 0x89b9
callq 0x10f0
cmpl $0x0, %eax
je 0x63c1
jmp 0x64a6
cmpl $0x0, -0xb4(%rbp)
je 0x6402
jmp 0x63cc
movq 0x4c25(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x209e(%rip), %rsi      # 0x847b
leaq 0x25ac(%rip), %rdx      # 0x8990
leaq 0x254e(%rip), %rcx      # 0x8939
movl $0x20b, %r8d            # imm = 0x20B
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movl -0xac(%rbp), %ecx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x18(%rax), %eax
movl %eax, -0xb8(%rbp)
cmpl $0x0, -0xb8(%rbp)
jl 0x6452
movl -0xb8(%rbp), %eax
cmpl -0x9c(%rbp), %eax
jb 0x648a
jmp 0x6454
movq 0x4b9d(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x2016(%rip), %rsi      # 0x847b
leaq 0x253b(%rip), %rdx      # 0x89a7
leaq 0x24c6(%rip), %rcx      # 0x8939
movl $0x20d, %r8d            # imm = 0x20D
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0xa8(%rbp), %rax
movslq -0xb8(%rbp), %rcx
movb $0x1, (%rax,%rcx)
movl $0x1, -0xb4(%rbp)
movl -0xb0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x6310
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movl -0xac(%rbp), %ecx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rdi
leaq 0x24d8(%rip), %rsi      # 0x89bc
callq 0x10f0
movl %eax, %edx
xorl %eax, %eax
movl $0x1, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movl %eax, -0xbc(%rbp)
movl -0xb4(%rbp), %eax
xorl -0xbc(%rbp), %eax
cmpl $0x0, %eax
jne 0x6547
jmp 0x6511
movq 0x4ae0(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x1f59(%rip), %rsi      # 0x847b
leaq 0x249f(%rip), %rdx      # 0x89c8
leaq 0x2409(%rip), %rcx      # 0x8939
movl $0x212, %r8d            # imm = 0x212
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
jmp 0x6549
movl -0xac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
jmp 0x62df
jmp 0x655f
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x62c9
xorl %eax, %eax
cmpl $0x0, -0x9c(%rbp)
movb %al, -0x121(%rbp)
je 0x6594
movq -0xa8(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x121(%rbp)
movb -0x121(%rbp), %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, -0xc0(%rbp)
movl $0x1, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x9c(%rbp), %eax
jae 0x6638
movq -0xa8(%rbp), %rax
movl -0x3c(%rbp), %ecx
cmpb $0x0, (%rax,%rcx)
je 0x6628
movq -0xa8(%rbp), %rax
movl -0x3c(%rbp), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
cmpb $0x0, (%rax,%rcx)
jne 0x661c
jmp 0x65e6
movq 0x4a0b(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x1e84(%rip), %rsi      # 0x847b
leaq 0x23f5(%rip), %rdx      # 0x89f3
leaq 0x2334(%rip), %rcx      # 0x8939
movl $0x218, %r8d            # imm = 0x218
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x662a
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x65b4
movl -0xc0(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0xc0(%rbp), %eax
movl %eax, %edi
movl $0x30, %esi
callq 0x10e0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
movl -0xc0(%rbp), %eax
movl %eax, %edi
movl $0x4, %esi
callq 0x10e0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x66c2
jmp 0x668c
movq 0x4965(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x1dde(%rip), %rsi      # 0x847b
leaq 0x1eb8(%rip), %rdx      # 0x855c
leaq 0x228e(%rip), %rcx      # 0x8939
movl $0x21f, %r8d            # imm = 0x21F
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movl $0x0, -0xc4(%rbp)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jae 0x6e01
movl $0x0, -0xac(%rbp)
movl -0xac(%rbp), %eax
movq -0x28(%rbp), %rcx
movl -0x3c(%rbp), %edx
imulq $0x48, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x28(%rcx), %eax
jae 0x6df1
movl $0xffffffff, -0xc8(%rbp) # imm = 0xFFFFFFFF
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x30(%rax), %rsi
movl -0xac(%rbp), %eax
imulq $0x30, %rax, %rax
addq %rax, %rsi
leaq -0xf8(%rbp), %rdi
movl $0x30, %edx
callq 0x1130
movl $0x0, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
cmpl -0xf8(%rbp), %eax
jae 0x67d1
movq -0xf0(%rbp), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
cmpl $0x2, (%rax)
je 0x6773
jmp 0x67bd
movq -0xf0(%rbp), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
leaq 0x2227(%rip), %rsi      # 0x89b9
callq 0x10f0
cmpl $0x0, %eax
je 0x679e
jmp 0x67bd
movq -0xf0(%rbp), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x18(%rax), %eax
movl %eax, -0xc8(%rbp)
jmp 0x67d1
movl -0xb0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x674a
cmpl $-0x1, -0xc8(%rbp)
je 0x6cf4
movq -0xa8(%rbp), %rax
movslq -0xc8(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x2, %eax
jne 0x6917
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rdi
movslq -0xc8(%rbp), %rax
imulq $0x30, %rax, %rax
addq %rax, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x6eb0
cmpl $0x0, %eax
je 0x6858
jmp 0x6822
movq 0x47cf(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x1c48(%rip), %rsi      # 0x847b
leaq 0x21d5(%rip), %rdx      # 0x8a0f
leaq 0x20f8(%rip), %rcx      # 0x8939
movl $0x22f, %r8d            # imm = 0x22F
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc8(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc8(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
addl -0xf8(%rbp), %eax
subl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
shlq $0x5, %rsi
callq 0x1160
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc8(%rbp), %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc8(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, 0x8(%rax)
jne 0x6912
jmp 0x68dc
movq 0x4715(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x1b8e(%rip), %rsi      # 0x847b
leaq 0x213a(%rip), %rdx      # 0x8a2e
leaq 0x203e(%rip), %rcx      # 0x8939
movl $0x231, %r8d            # imm = 0x231
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
jmp 0x6a1c
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rdi
movslq -0xc8(%rbp), %rax
imulq $0x30, %rax, %rax
addq %rax, %rdi
leaq -0xf8(%rbp), %rsi
movl $0x30, %edx
callq 0x1130
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc8(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl $0x0, (%rax)
movl -0xf8(%rbp), %eax
subl $0x1, %eax
movl %eax, %eax
movl %eax, %edi
movl $0x20, %esi
callq 0x10e0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc8(%rbp), %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq -0xa8(%rbp), %rax
movslq -0xc8(%rbp), %rcx
movb $0x2, (%rax,%rcx)
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x30(%rax), %rdi
movl -0xac(%rbp), %eax
imulq $0x30, %rax, %rax
addq %rax, %rdi
xorl %esi, %esi
movl $0x30, %edx
callq 0x10c0
movl -0xf8(%rbp), %ecx
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %edx
imulq $0x48, %rdx, %rdx
addq %rdx, %rax
movq 0x30(%rax), %rax
movl -0xac(%rbp), %edx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movq -0xf0(%rbp), %rcx
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %edx
imulq $0x48, %rdx, %rdx
addq %rdx, %rax
movq 0x30(%rax), %rax
movl -0xac(%rbp), %edx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movl $0x0, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
cmpl -0xf8(%rbp), %eax
jae 0x6cef
movq -0xf0(%rbp), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
cmpl $0x2, (%rax)
jne 0x6a7f
movq -0xf0(%rbp), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
leaq 0x1f49(%rip), %rsi      # 0x89b9
callq 0x10f0
cmpl $0x0, %eax
jne 0x6a7f
jmp 0x6cdb
movq -0xf0(%rbp), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
cmpl $0x1, (%rax)
jne 0x6b82
movq -0xf0(%rbp), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
leaq 0x1f82(%rip), %rsi      # 0x8a3d
callq 0x1040
cmpl $0x0, %eax
jne 0x6b0d
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0xc8(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x6af2
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0xc8(%rbp), %rcx
movl $0x1, (%rax,%rcx,4)
jmp 0x6b08
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0xc8(%rbp), %rcx
movl $0x3, (%rax,%rcx,4)
jmp 0x6cdb
movq -0xf0(%rbp), %rax
movl -0xb0(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
leaq 0x1ff0(%rip), %rsi      # 0x8b1c
callq 0x1040
cmpl $0x0, %eax
jne 0x6b7e
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0xc8(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x6b63
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0xc8(%rbp), %rcx
movl $0x2, (%rax,%rcx,4)
jmp 0x6b79
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0xc8(%rbp), %rcx
movl $0x3, (%rax,%rcx,4)
jmp 0x6cdb
jmp 0x6b80
jmp 0x6b82
movl $0x0, -0xfc(%rbp)
movl $0x0, -0x100(%rbp)
movl -0x100(%rbp), %eax
movq -0x18(%rbp), %rcx
movq 0x20(%rcx), %rcx
movslq -0xc8(%rbp), %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
cmpl (%rcx), %eax
jae 0x6c1d
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc8(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
movl -0x100(%rbp), %eax
shlq $0x5, %rax
addq %rax, %rdi
movq -0xf0(%rbp), %rsi
movl -0xb0(%rbp), %eax
shlq $0x5, %rax
addq %rax, %rsi
callq 0x6fc0
cmpl $0x0, %eax
jne 0x6c07
movl $0x1, -0xfc(%rbp)
jmp 0x6c1d
jmp 0x6c09
movl -0x100(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x100(%rbp)
jmp 0x6b96
cmpl $0x0, -0xfc(%rbp)
je 0x6c2b
jmp 0x6cdb
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc8(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0x18(%rbp), %rcx
movq 0x20(%rcx), %rdx
movslq -0xc8(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rdx
movl (%rdx), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, (%rdx)
movl %ecx, %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq -0xf0(%rbp), %rcx
movl -0xb0(%rbp), %edx
shlq $0x5, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movl -0xac(%rbp), %ecx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
movl -0xb0(%rbp), %eax
shlq $0x5, %rax
addq %rax, %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x10c0
movl -0xb0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x6a26
jmp 0x6ddb
movq -0xe8(%rbp), %rdi
leaq 0x1cba(%rip), %rsi      # 0x89bc
callq 0x10f0
cmpl $0x0, %eax
jne 0x6da1
cmpl $0x0, -0xc4(%rbp)
je 0x6d51
jmp 0x6d1b
movq 0x42d6(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x174f(%rip), %rsi      # 0x847b
leaq 0x1d0d(%rip), %rdx      # 0x8a40
leaq 0x1bff(%rip), %rcx      # 0x8939
movl $0x25c, %r8d            # imm = 0x25C
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
movq -0x18(%rbp), %rdi
addq $0x30, %rdi
leaq -0xf8(%rbp), %rsi
movl $0x30, %edx
callq 0x1130
movl $0x1, -0xc4(%rbp)
movq -0x28(%rbp), %rax
movl -0x3c(%rbp), %ecx
imulq $0x48, %rcx, %rcx
addq %rcx, %rax
movq 0x30(%rax), %rdi
movl -0xac(%rbp), %eax
imulq $0x30, %rax, %rax
addq %rax, %rdi
xorl %esi, %esi
movl $0x30, %edx
callq 0x10c0
jmp 0x6dd9
jmp 0x6da3
movq 0x424e(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x16c7(%rip), %rsi      # 0x847b
leaq 0x1c0d(%rip), %rdx      # 0x89c8
leaq 0x1b77(%rip), %rcx      # 0x8939
movl $0x261, %r8d            # imm = 0x261
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
jmp 0x6ddb
jmp 0x6ddd
movl -0xac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
jmp 0x66e9
jmp 0x6df3
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x66d3
movq -0xa8(%rbp), %rdi
callq 0x1030
movq -0x28(%rbp), %rdi
movl -0x34(%rbp), %esi
callq 0x2ab0
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x18(%rcx), %eax
jae 0x6ea7
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x3c(%rbp), %ecx
cmpl $0x1, (%rax,%rcx,4)
je 0x6e97
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x3c(%rbp), %ecx
cmpl $0x2, (%rax,%rcx,4)
je 0x6e97
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x3c(%rbp), %ecx
cmpl $0x3, (%rax,%rcx,4)
je 0x6e97
jmp 0x6e61
movq 0x4190(%rip), %rax      # 0xaff8
movq (%rax), %rdi
leaq 0x1609(%rip), %rsi      # 0x847b
leaq 0x1bde(%rip), %rdx      # 0x8a57
leaq 0x1ab9(%rip), %rcx      # 0x8939
movl $0x26a, %r8d            # imm = 0x26A
movb $0x0, %al
callq 0x1100
movl $0x1, %edi
callq 0x1180
jmp 0x6e99
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x6e20
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq