
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void quotearg_free(void)

{
  slotvec *psVar1;
  slotvec *__ptr;
  char **ppcVar2;
  
  __ptr = slotvec;
  if (L'\x01' < nslots) {
    ppcVar2 = &slotvec[1].val;
    psVar1 = slotvec + (ulong)(uint)(nslots + L'\xfffffffe') + 2;
    do {
      free(*ppcVar2);
      ppcVar2 = ppcVar2 + 2;
    } while (ppcVar2 != &psVar1->val);
  }
  if (__ptr->val != slot0) {
    free(__ptr->val);
    slotvec0.size = 0x100;
    slotvec0.val = slot0;
  }
  if (__ptr != &slotvec0) {
    free(__ptr);
    slotvec = &slotvec0;
  }
  nslots = L'\x01';
  return;
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_001050f5(void)

{
  undefined8 *puVar1;
  undefined *__ptr;
  undefined8 *puVar2;
  
  __ptr = PTR_DAT_0010b200;
  if (1 < DAT_0010b1f8) {
    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);
    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);
    do {
      free((void *)*puVar2);
      puVar2 = puVar2 + 2;
    } while (puVar2 != puVar1);
  }
  if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {
    free(*(undefined **)(__ptr + 8));
    _DAT_0010b210 = 0x100;
    PTR_DAT_0010b218 = &DAT_0010b240;
  }
  if (__ptr != &DAT_0010b210) {
    free(__ptr);
    PTR_DAT_0010b200 = &DAT_0010b210;
  }
  DAT_0010b1f8 = 1;
  return;
}


PUSH R12
PUSH RBP
PUSH RBX
MOV R12,qword ptr [0x0010b200]
MOV EAX,dword ptr [0x0010b1f8]
CMP EAX,0x1
JLE 0x0010512d
LEA RBX,[R12 + 0x18]
LEA EAX,[RAX + -0x2]
SHL RAX,0x4
LEA RBP,[R12 + RAX*0x1 + 0x28]
MOV RDI,qword ptr [RBX]
CALL 0x00102030
ADD RBX,0x10
CMP RBX,RBP
JNZ 0x0010511c
MOV RDI,qword ptr [R12 + 0x8]
LEA RAX,[0x10b240]
CMP RDI,RAX
JZ 0x0010515c
CALL 0x00102030
MOV qword ptr [0x0010b210],0x100
LEA RAX,[0x10b240]
MOV qword ptr [0x0010b218],RAX
LEA RAX,[0x10b210]
CMP R12,RAX
JZ 0x0010517e
MOV RDI,R12
CALL 0x00102030
LEA RAX,[0x10b210]
MOV qword ptr [0x0010b200],RAX
MOV dword ptr [0x0010b1f8],0x1
POP RBX
POP RBP
POP R12
RET
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nvoid FUN_001050f5(void)\n\n{\n  undefined8 *puVar1;\n  undefined *__ptr;\n  undefined8 *puVar2;\n  \n  __ptr = PTR_DAT_0010b200;\n  if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }\n  if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }\n  if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }\n  DAT_0010b1f8 = 1;\n  return;\n}\n\n" comment (function_definition "void FUN_001050f5(void)\n\n{\n  undefined8 *puVar1;\n  undefined *__ptr;\n  undefined8 *puVar2;\n  \n  __ptr = PTR_DAT_0010b200;\n  if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }\n  if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }\n  if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }\n  DAT_0010b1f8 = 1;\n  return;\n}" primitive_type (function_declarator "FUN_001050f5(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined *__ptr;\n  undefined8 *puVar2;\n  \n  __ptr = PTR_DAT_0010b200;\n  if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }\n  if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }\n  if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }\n  DAT_0010b1f8 = 1;\n  return;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (expression_statement "__ptr = PTR_DAT_0010b200;" (assignment_expression "__ptr = PTR_DAT_0010b200" identifier = identifier) ;) (if_statement "if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }" if (parenthesized_expression "(1 < DAT_0010b1f8)" ( (binary_expression "1 < DAT_0010b1f8" number_literal < identifier) )) (compound_statement "{\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }" { (expression_statement "puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);" (assignment_expression "puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18)" identifier = (cast_expression "(undefined8 *)(PTR_DAT_0010b200 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0010b200 + 0x18)" ( (binary_expression "PTR_DAT_0010b200 + 0x18" identifier + number_literal) )))) ;) (expression_statement "puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);" (assignment_expression "puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28)" identifier = (cast_expression "(undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28)" ( (binary_expression "PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28" (binary_expression "PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10" identifier + (binary_expression "(ulong)(DAT_0010b1f8 - 2) * 0x10" (call_expression "(ulong)(DAT_0010b1f8 - 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_0010b1f8 - 2)" ( (binary_expression "DAT_0010b1f8 - 2" identifier - number_literal) ))) * number_literal)) + number_literal) )))) ;) (do_statement "do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);" do (compound_statement "{\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    }" { (expression_statement "free((void *)*puVar2);" (call_expression "free((void *)*puVar2)" identifier (argument_list "((void *)*puVar2)" ( (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)) ))) ;) (expression_statement "puVar2 = puVar2 + 2;" (assignment_expression "puVar2 = puVar2 + 2" identifier = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 != puVar1)" ( (binary_expression "puVar2 != puVar1" identifier != identifier) )) ;) })) (if_statement "if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }" if (parenthesized_expression "(*(undefined **)(__ptr + 8) != &DAT_0010b240)" ( (binary_expression "*(undefined **)(__ptr + 8) != &DAT_0010b240" (pointer_expression "*(undefined **)(__ptr + 8)" * (cast_expression "(undefined **)(__ptr + 8)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(__ptr + 8)" ( (binary_expression "__ptr + 8" identifier + number_literal) )))) != (pointer_expression "&DAT_0010b240" & identifier)) )) (compound_statement "{\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }" { (expression_statement "free(*(undefined **)(__ptr + 8));" (call_expression "free(*(undefined **)(__ptr + 8))" identifier (argument_list "(*(undefined **)(__ptr + 8))" ( (pointer_expression "*(undefined **)(__ptr + 8)" * (cast_expression "(undefined **)(__ptr + 8)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(__ptr + 8)" ( (binary_expression "__ptr + 8" identifier + number_literal) )))) ))) ;) (expression_statement "_DAT_0010b210 = 0x100;" (assignment_expression "_DAT_0010b210 = 0x100" identifier = number_literal) ;) (expression_statement "PTR_DAT_0010b218 = &DAT_0010b240;" (assignment_expression "PTR_DAT_0010b218 = &DAT_0010b240" identifier = (pointer_expression "&DAT_0010b240" & identifier)) ;) })) (if_statement "if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }" if (parenthesized_expression "(__ptr != &DAT_0010b210)" ( (binary_expression "__ptr != &DAT_0010b210" identifier != (pointer_expression "&DAT_0010b210" & identifier)) )) (compound_statement "{\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "PTR_DAT_0010b200 = &DAT_0010b210;" (assignment_expression "PTR_DAT_0010b200 = &DAT_0010b210" identifier = (pointer_expression "&DAT_0010b210" & identifier)) ;) })) (expression_statement "DAT_0010b1f8 = 1;" (assignment_expression "DAT_0010b1f8 = 1" identifier = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid quotearg_free(void)\n\n{\n  slotvec *psVar1;\n  slotvec *__ptr;\n  char **ppcVar2;\n  \n  __ptr = slotvec;\n  if (L'\x01' < nslots) {\n    ppcVar2 = &slotvec[1].val;\n    psVar1 = slotvec + (ulong)(uint)(nslots + L'\xfffffffe') + 2;\n    do {\n      free(*ppcVar2);\n      ppcVar2 = ppcVar2 + 2;\n    } while (ppcVar2 != &psVar1->val);\n  }\n  if (__ptr->val != slot0) {\n    free(__ptr->val);\n    slotvec0.size = 0x100;\n    slotvec0.val = slot0;\n  }\n  if (__ptr != &slotvec0) {\n    free(__ptr);\n    slotvec = &slotvec0;\n  }\n  nslots = L'\x01';\n  return;\n}\n\n" comment (function_definition "void quotearg_free(void)\n\n{\n  slotvec *psVar1;\n  slotvec *__ptr;\n  char **ppcVar2;\n  \n  __ptr = slotvec;\n  if (L'\x01' < nslots) {\n    ppcVar2 = &slotvec[1].val;\n    psVar1 = slotvec + (ulong)(uint)(nslots + L'\xfffffffe') + 2;\n    do {\n      free(*ppcVar2);\n      ppcVar2 = ppcVar2 + 2;\n    } while (ppcVar2 != &psVar1->val);\n  }\n  if (__ptr->val != slot0) {\n    free(__ptr->val);\n    slotvec0.size = 0x100;\n    slotvec0.val = slot0;\n  }\n  if (__ptr != &slotvec0) {\n    free(__ptr);\n    slotvec = &slotvec0;\n  }\n  nslots = L'\x01';\n  return;\n}" primitive_type (function_declarator "quotearg_free(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  slotvec *psVar1;\n  slotvec *__ptr;\n  char **ppcVar2;\n  \n  __ptr = slotvec;\n  if (L'\x01' < nslots) {\n    ppcVar2 = &slotvec[1].val;\n    psVar1 = slotvec + (ulong)(uint)(nslots + L'\xfffffffe') + 2;\n    do {\n      free(*ppcVar2);\n      ppcVar2 = ppcVar2 + 2;\n    } while (ppcVar2 != &psVar1->val);\n  }\n  if (__ptr->val != slot0) {\n    free(__ptr->val);\n    slotvec0.size = 0x100;\n    slotvec0.val = slot0;\n  }\n  if (__ptr != &slotvec0) {\n    free(__ptr);\n    slotvec = &slotvec0;\n  }\n  nslots = L'\x01';\n  return;\n}" { (declaration "slotvec *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "slotvec *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "char **ppcVar2;" primitive_type (pointer_declarator "**ppcVar2" * (pointer_declarator "*ppcVar2" * identifier)) ;) (expression_statement "__ptr = slotvec;" (assignment_expression "__ptr = slotvec" identifier = identifier) ;) (if_statement "if (L'\x01' < nslots) {\n    ppcVar2 = &slotvec[1].val;\n    psVar1 = slotvec + (ulong)(uint)(nslots + L'\xfffffffe') + 2;\n    do {\n      free(*ppcVar2);\n      ppcVar2 = ppcVar2 + 2;\n    } while (ppcVar2 != &psVar1->val);\n  }" if (parenthesized_expression "(L'\x01' < nslots)" ( (binary_expression "L'\x01' < nslots" (char_literal "L'\x01'" L' escape_sequence ') < identifier) )) (compound_statement "{\n    ppcVar2 = &slotvec[1].val;\n    psVar1 = slotvec + (ulong)(uint)(nslots + L'\xfffffffe') + 2;\n    do {\n      free(*ppcVar2);\n      ppcVar2 = ppcVar2 + 2;\n    } while (ppcVar2 != &psVar1->val);\n  }" { (expression_statement "ppcVar2 = &slotvec[1].val;" (assignment_expression "ppcVar2 = &slotvec[1].val" identifier = (pointer_expression "&slotvec[1].val" & (field_expression "slotvec[1].val" (subscript_expression "slotvec[1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "psVar1 = slotvec + (ulong)(uint)(nslots + L'\xfffffffe') + 2;" (assignment_expression "psVar1 = slotvec + (ulong)(uint)(nslots + L'\xfffffffe') + 2" identifier = (binary_expression "slotvec + (ulong)(uint)(nslots + L'\xfffffffe') + 2" (binary_expression "slotvec + (ulong)(uint)(nslots + L'\xfffffffe')" identifier + (call_expression "(ulong)(uint)(nslots + L'\xfffffffe')" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(nslots + L'\xfffffffe')" ( (binary_expression "nslots + L'\xfffffffe'" identifier + (char_literal "L'\xfffffffe'" L' escape_sequence character character character character ')) )))) + number_literal)) ;) (do_statement "do {\n      free(*ppcVar2);\n      ppcVar2 = ppcVar2 + 2;\n    } while (ppcVar2 != &psVar1->val);" do (compound_statement "{\n      free(*ppcVar2);\n      ppcVar2 = ppcVar2 + 2;\n    }" { (expression_statement "free(*ppcVar2);" (call_expression "free(*ppcVar2)" identifier (argument_list "(*ppcVar2)" ( (pointer_expression "*ppcVar2" * identifier) ))) ;) (expression_statement "ppcVar2 = ppcVar2 + 2;" (assignment_expression "ppcVar2 = ppcVar2 + 2" identifier = (binary_expression "ppcVar2 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(ppcVar2 != &psVar1->val)" ( (binary_expression "ppcVar2 != &psVar1->val" identifier != (pointer_expression "&psVar1->val" & (field_expression "psVar1->val" identifier -> field_identifier))) )) ;) })) (if_statement "if (__ptr->val != slot0) {\n    free(__ptr->val);\n    slotvec0.size = 0x100;\n    slotvec0.val = slot0;\n  }" if (parenthesized_expression "(__ptr->val != slot0)" ( (binary_expression "__ptr->val != slot0" (field_expression "__ptr->val" identifier -> field_identifier) != identifier) )) (compound_statement "{\n    free(__ptr->val);\n    slotvec0.size = 0x100;\n    slotvec0.val = slot0;\n  }" { (expression_statement "free(__ptr->val);" (call_expression "free(__ptr->val)" identifier (argument_list "(__ptr->val)" ( (field_expression "__ptr->val" identifier -> field_identifier) ))) ;) (expression_statement "slotvec0.size = 0x100;" (assignment_expression "slotvec0.size = 0x100" (field_expression "slotvec0.size" identifier . field_identifier) = number_literal) ;) (expression_statement "slotvec0.val = slot0;" (assignment_expression "slotvec0.val = slot0" (field_expression "slotvec0.val" identifier . field_identifier) = identifier) ;) })) (if_statement "if (__ptr != &slotvec0) {\n    free(__ptr);\n    slotvec = &slotvec0;\n  }" if (parenthesized_expression "(__ptr != &slotvec0)" ( (binary_expression "__ptr != &slotvec0" identifier != (pointer_expression "&slotvec0" & identifier)) )) (compound_statement "{\n    free(__ptr);\n    slotvec = &slotvec0;\n  }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "slotvec = &slotvec0;" (assignment_expression "slotvec = &slotvec0" identifier = (pointer_expression "&slotvec0" & identifier)) ;) })) (expression_statement "nslots = L'\x01';" (assignment_expression "nslots = L'\x01'" identifier = (char_literal "L'\x01'" L' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001050f5(void)\n\n{\n  undefined8 *puVar1;\n  undefined *__ptr;\n  undefined8 *puVar2;\n  \n  __ptr = PTR_DAT_0010b200;\n  if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }\n  if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }\n  if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }\n  DAT_0010b1f8 = 1;\n  return;\n}\n\n" (function_definition "void FUN_001050f5(void)\n\n{\n  undefined8 *puVar1;\n  undefined *__ptr;\n  undefined8 *puVar2;\n  \n  __ptr = PTR_DAT_0010b200;\n  if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }\n  if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }\n  if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }\n  DAT_0010b1f8 = 1;\n  return;\n}" primitive_type (function_declarator "FUN_001050f5(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined *__ptr;\n  undefined8 *puVar2;\n  \n  __ptr = PTR_DAT_0010b200;\n  if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }\n  if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }\n  if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }\n  DAT_0010b1f8 = 1;\n  return;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (expression_statement "__ptr = PTR_DAT_0010b200;" (assignment_expression "__ptr = PTR_DAT_0010b200" identifier = identifier) ;) (if_statement "if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }" if (parenthesized_expression "(1 < DAT_0010b1f8)" ( (binary_expression "1 < DAT_0010b1f8" number_literal < identifier) )) (compound_statement "{\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }" { (expression_statement "puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);" (assignment_expression "puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18)" identifier = (cast_expression "(undefined8 *)(PTR_DAT_0010b200 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0010b200 + 0x18)" ( (binary_expression "PTR_DAT_0010b200 + 0x18" identifier + number_literal) )))) ;) (expression_statement "puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);" (assignment_expression "puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28)" identifier = (cast_expression "(undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28)" ( (binary_expression "PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28" (binary_expression "PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10" identifier + (binary_expression "(ulong)(DAT_0010b1f8 - 2) * 0x10" (call_expression "(ulong)(DAT_0010b1f8 - 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_0010b1f8 - 2)" ( (binary_expression "DAT_0010b1f8 - 2" identifier - number_literal) ))) * number_literal)) + number_literal) )))) ;) (do_statement "do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);" do (compound_statement "{\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    }" { (expression_statement "free((void *)*puVar2);" (call_expression "free((void *)*puVar2)" identifier (argument_list "((void *)*puVar2)" ( (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)) ))) ;) (expression_statement "puVar2 = puVar2 + 2;" (assignment_expression "puVar2 = puVar2 + 2" identifier = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 != puVar1)" ( (binary_expression "puVar2 != puVar1" identifier != identifier) )) ;) })) (if_statement "if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }" if (parenthesized_expression "(*(undefined **)(__ptr + 8) != &DAT_0010b240)" ( (binary_expression "*(undefined **)(__ptr + 8) != &DAT_0010b240" (pointer_expression "*(undefined **)(__ptr + 8)" * (cast_expression "(undefined **)(__ptr + 8)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(__ptr + 8)" ( (binary_expression "__ptr + 8" identifier + number_literal) )))) != (pointer_expression "&DAT_0010b240" & identifier)) )) (compound_statement "{\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }" { (expression_statement "free(*(undefined **)(__ptr + 8));" (call_expression "free(*(undefined **)(__ptr + 8))" identifier (argument_list "(*(undefined **)(__ptr + 8))" ( (pointer_expression "*(undefined **)(__ptr + 8)" * (cast_expression "(undefined **)(__ptr + 8)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(__ptr + 8)" ( (binary_expression "__ptr + 8" identifier + number_literal) )))) ))) ;) (expression_statement "_DAT_0010b210 = 0x100;" (assignment_expression "_DAT_0010b210 = 0x100" identifier = number_literal) ;) (expression_statement "PTR_DAT_0010b218 = &DAT_0010b240;" (assignment_expression "PTR_DAT_0010b218 = &DAT_0010b240" identifier = (pointer_expression "&DAT_0010b240" & identifier)) ;) })) (if_statement "if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }" if (parenthesized_expression "(__ptr != &DAT_0010b210)" ( (binary_expression "__ptr != &DAT_0010b210" identifier != (pointer_expression "&DAT_0010b210" & identifier)) )) (compound_statement "{\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "PTR_DAT_0010b200 = &DAT_0010b210;" (assignment_expression "PTR_DAT_0010b200 = &DAT_0010b210" identifier = (pointer_expression "&DAT_0010b210" & identifier)) ;) })) (expression_statement "DAT_0010b1f8 = 1;" (assignment_expression "DAT_0010b1f8 = 1" identifier = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) * LIT)) + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (return_statement return ;) })))
(function_definition "void FUN_001050f5(void)\n\n{\n  undefined8 *puVar1;\n  undefined *__ptr;\n  undefined8 *puVar2;\n  \n  __ptr = PTR_DAT_0010b200;\n  if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }\n  if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }\n  if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }\n  DAT_0010b1f8 = 1;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001050f5(void)" (identifier "FUN_001050f5") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined *__ptr;\n  undefined8 *puVar2;\n  \n  __ptr = PTR_DAT_0010b200;\n  if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }\n  if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }\n  if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }\n  DAT_0010b1f8 = 1;\n  return;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *__ptr;" (type_identifier "undefined") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (expression_statement "__ptr = PTR_DAT_0010b200;" (assignment_expression "__ptr = PTR_DAT_0010b200" (identifier "__ptr") (= "=") (identifier "PTR_DAT_0010b200")) (; ";")) (if_statement "if (1 < DAT_0010b1f8) {\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }" (if "if") (parenthesized_expression "(1 < DAT_0010b1f8)" (( "(") (binary_expression "1 < DAT_0010b1f8" (number_literal "1") (< "<") (identifier "DAT_0010b1f8")) () ")")) (compound_statement "{\n    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);\n    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);\n    do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);\n  }" ({ "{") (expression_statement "puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);" (assignment_expression "puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)(PTR_DAT_0010b200 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0010b200 + 0x18)" (( "(") (binary_expression "PTR_DAT_0010b200 + 0x18" (identifier "PTR_DAT_0010b200") (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);" (assignment_expression "puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28)" (( "(") (binary_expression "PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28" (binary_expression "PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10" (identifier "PTR_DAT_0010b200") (+ "+") (binary_expression "(ulong)(DAT_0010b1f8 - 2) * 0x10" (call_expression "(ulong)(DAT_0010b1f8 - 2)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(DAT_0010b1f8 - 2)" (( "(") (binary_expression "DAT_0010b1f8 - 2" (identifier "DAT_0010b1f8") (- "-") (number_literal "2")) () ")"))) (* "*") (number_literal "0x10"))) (+ "+") (number_literal "0x28")) () ")")))) (; ";")) (do_statement "do {\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    } while (puVar2 != puVar1);" (do "do") (compound_statement "{\n      free((void *)*puVar2);\n      puVar2 = puVar2 + 2;\n    }" ({ "{") (expression_statement "free((void *)*puVar2);" (call_expression "free((void *)*puVar2)" (identifier "free") (argument_list "((void *)*puVar2)" (( "(") (cast_expression "(void *)*puVar2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) () ")"))) (; ";")) (expression_statement "puVar2 = puVar2 + 2;" (assignment_expression "puVar2 = puVar2 + 2" (identifier "puVar2") (= "=") (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 != puVar1)" (( "(") (binary_expression "puVar2 != puVar1" (identifier "puVar2") (!= "!=") (identifier "puVar1")) () ")")) (; ";")) (} "}"))) (if_statement "if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }" (if "if") (parenthesized_expression "(*(undefined **)(__ptr + 8) != &DAT_0010b240)" (( "(") (binary_expression "*(undefined **)(__ptr + 8) != &DAT_0010b240" (pointer_expression "*(undefined **)(__ptr + 8)" (* "*") (cast_expression "(undefined **)(__ptr + 8)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(__ptr + 8)" (( "(") (binary_expression "__ptr + 8" (identifier "__ptr") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (pointer_expression "&DAT_0010b240" (& "&") (identifier "DAT_0010b240"))) () ")")) (compound_statement "{\n    free(*(undefined **)(__ptr + 8));\n    _DAT_0010b210 = 0x100;\n    PTR_DAT_0010b218 = &DAT_0010b240;\n  }" ({ "{") (expression_statement "free(*(undefined **)(__ptr + 8));" (call_expression "free(*(undefined **)(__ptr + 8))" (identifier "free") (argument_list "(*(undefined **)(__ptr + 8))" (( "(") (pointer_expression "*(undefined **)(__ptr + 8)" (* "*") (cast_expression "(undefined **)(__ptr + 8)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(__ptr + 8)" (( "(") (binary_expression "__ptr + 8" (identifier "__ptr") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (expression_statement "_DAT_0010b210 = 0x100;" (assignment_expression "_DAT_0010b210 = 0x100" (identifier "_DAT_0010b210") (= "=") (number_literal "0x100")) (; ";")) (expression_statement "PTR_DAT_0010b218 = &DAT_0010b240;" (assignment_expression "PTR_DAT_0010b218 = &DAT_0010b240" (identifier "PTR_DAT_0010b218") (= "=") (pointer_expression "&DAT_0010b240" (& "&") (identifier "DAT_0010b240"))) (; ";")) (} "}"))) (if_statement "if (__ptr != &DAT_0010b210) {\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }" (if "if") (parenthesized_expression "(__ptr != &DAT_0010b210)" (( "(") (binary_expression "__ptr != &DAT_0010b210" (identifier "__ptr") (!= "!=") (pointer_expression "&DAT_0010b210" (& "&") (identifier "DAT_0010b210"))) () ")")) (compound_statement "{\n    free(__ptr);\n    PTR_DAT_0010b200 = &DAT_0010b210;\n  }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "PTR_DAT_0010b200 = &DAT_0010b210;" (assignment_expression "PTR_DAT_0010b200 = &DAT_0010b210" (identifier "PTR_DAT_0010b200") (= "=") (pointer_expression "&DAT_0010b210" (& "&") (identifier "DAT_0010b210"))) (; ";")) (} "}"))) (expression_statement "DAT_0010b1f8 = 1;" (assignment_expression "DAT_0010b1f8 = 1" (identifier "DAT_0010b1f8") (= "=") (number_literal "1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  type_1 *psVar1;
  type_1 *var_5;
  char **var_3;
  
  var_5 = type_1;
  if (L'\x01' < var_1) {
    var_3 = &type_1[1].val;
    psVar1 = type_1 + (ulong)(uint)(var_1 + L'\xfffffffe') + 2;
    do {
      var_2(*var_3);
      var_3 = var_3 + 2;
    } while (var_3 != &psVar1->val);
  }
  if (var_5->val != var_4) {
    var_2(var_5->val);
    slotvec0.size = 0x100;
    slotvec0.val = var_4;
  }
  if (var_5 != &slotvec0) {
    var_2(var_5);
    type_1 = &slotvec0;
  }
  var_1 = L'\x01';
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal)))))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (return_statement))))

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void MASKED(void)

{
  undefined8 *puVar1;
  undefined *__ptr;
  undefined8 *puVar2;
  
  __ptr = PTR_DAT_0010b200;
  if (1 < DAT_0010b1f8) {
    puVar2 = (undefined8 *)(PTR_DAT_0010b200 + 0x18);
    puVar1 = (undefined8 *)(PTR_DAT_0010b200 + (ulong)(DAT_0010b1f8 - 2) * 0x10 + 0x28);
    do {
      free((void *)*puVar2);
      puVar2 = puVar2 + 2;
    } while (puVar2 != puVar1);
  }
  if (*(undefined **)(__ptr + 8) != &DAT_0010b240) {
    free(*(undefined **)(__ptr + 8));
    _DAT_0010b210 = 0x100;
    PTR_DAT_0010b218 = &DAT_0010b240;
  }
  if (__ptr != &DAT_0010b210) {
    free(__ptr);
    PTR_DAT_0010b200 = &DAT_0010b210;
  }
  DAT_0010b1f8 = 1;
  return;
}

