
char * dupprintf(char *fmt,...)

{
  char *pcVar1;
  char *pcVar2;
  int *piVar3;
  int iVar4;
  undefined4 in_a1;
  char *pcVar5;
  undefined4 in_a2;
  undefined4 in_a3;
  uint uVar6;
  undefined *puVar7;
  undefined4 local_res4;
  undefined4 local_res8;
  undefined4 local_resc;
  va_list ap;
  
  puVar7 = PTR___stack_chk_guard_000bccd8;
  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;
  local_res4 = in_a1;
  local_res8 = in_a2;
  local_resc = in_a3;
  pcVar2 = dupvprintf(fmt,&local_res4);
  if (pcVar1 == *(char **)puVar7) {
    return pcVar2;
  }
  puVar7 = PTR___stack_chk_fail_000bccb0;
  (*(code *)PTR___stack_chk_fail_000bccb0)();
  if (*pcVar1 == '[') {
    uVar6 = (uint)pcVar1[1];
    pcVar2 = pcVar1 + 1;
    if (uVar6 != 0) {
      pcVar5 = pcVar2;
      if (uVar6 == 0x5d) {
        iVar4 = 0;
      }
      else {
        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();
        iVar4 = 0;
        do {
          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {
            if (uVar6 != 0x3a) {
              if (uVar6 != 0x5d) goto LAB_00021cd8;
              break;
            }
            iVar4 = iVar4 + 1;
          }
          pcVar5 = pcVar5 + 1;
          uVar6 = (uint)*pcVar5;
          if (uVar6 == 0) goto LAB_00021cd8;
        } while (uVar6 != 0x5d);
      }
      if ((pcVar5[1] == '\0') && (1 < iVar4)) {
                    /* WARNING: Subroutine does not return */
        dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);
      }
    }
  }
LAB_00021cd8:
  pcVar1 = dupstr(pcVar1);
  return pcVar1;
}



void dupprintf(void)

{
  char *pcVar1;
  int *piVar2;
  int iVar3;
  char *pcVar4;
  uint uVar5;
  char *pcVar6;
  undefined *puVar7;
  
  puVar7 = PTR___stack_chk_guard_000bccd8;
  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;
  dupvprintf();
  if (pcVar1 == *(char **)puVar7) {
    return;
  }
  puVar7 = PTR___stack_chk_fail_000bccb0;
  (*(code *)PTR___stack_chk_fail_000bccb0)();
  if (*pcVar1 == '[') {
    uVar5 = (uint)pcVar1[1];
    pcVar6 = pcVar1 + 1;
    if (uVar5 != 0) {
      pcVar4 = pcVar6;
      if (uVar5 == 0x5d) {
        iVar3 = 0;
      }
      else {
        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();
        iVar3 = 0;
        do {
          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {
            if (uVar5 != 0x3a) {
              if (uVar5 != 0x5d) goto LAB_00021cd8;
              break;
            }
            iVar3 = iVar3 + 1;
          }
          pcVar4 = pcVar4 + 1;
          uVar5 = (uint)*pcVar4;
          if (uVar5 == 0) goto LAB_00021cd8;
        } while (uVar5 != 0x5d);
      }
      if ((pcVar4[1] == '\0') && (1 < iVar3)) {
        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);
        return;
      }
    }
  }
LAB_00021cd8:
  dupstr(pcVar1);
  return;
}


lui gp,0xa
addiu gp,gp,0x25b0
addu gp,gp,t9
addiu sp,sp,-0x28
sw ra,0x24(sp)
sw s0,0x20(sp)
sw gp,0x10(sp)
sw a1,0x2c(sp)
sw a2,0x30(sp)
sw a3,0x34(sp)
lw s0,-0x7478(gp)
lw v0,0x0(s0)
sw v0,0x1c(sp)
addiu a1,sp,0x2c
sw a1,0x18(sp)
lw t9,-0x7eac(gp)
bal 0x00021b24
_nop
lw gp,0x10(sp)
lw a0,0x1c(sp)
lw v1,0x0(s0)
bne a0,v1,0x00021c08
_lw ra,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x28
lw t9,-0x74a0(gp)
jalr t9
_nop
(translation_unit "void dupprintf(void)\n\n{\n  char *pcVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined *puVar7;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  dupvprintf();\n  if (pcVar1 == *(char **)puVar7) {\n    return;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }\nLAB_00021cd8:\n  dupstr(pcVar1);\n  return;\n}\n\n" (function_definition "void dupprintf(void)\n\n{\n  char *pcVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined *puVar7;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  dupvprintf();\n  if (pcVar1 == *(char **)puVar7) {\n    return;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }\nLAB_00021cd8:\n  dupstr(pcVar1);\n  return;\n}" primitive_type (function_declarator "dupprintf(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char *pcVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined *puVar7;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  dupvprintf();\n  if (pcVar1 == *(char **)puVar7) {\n    return;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }\nLAB_00021cd8:\n  dupstr(pcVar1);\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (expression_statement "puVar7 = PTR___stack_chk_guard_000bccd8;" (assignment_expression "puVar7 = PTR___stack_chk_guard_000bccd8" identifier = identifier) ;) (expression_statement "pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;" (assignment_expression "pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8" identifier = (pointer_expression "*(char **)PTR___stack_chk_guard_000bccd8" * (cast_expression "(char **)PTR___stack_chk_guard_000bccd8" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "dupvprintf();" (call_expression "dupvprintf()" identifier (argument_list "()" ( ))) ;) (if_statement "if (pcVar1 == *(char **)puVar7) {\n    return;\n  }" if (parenthesized_expression "(pcVar1 == *(char **)puVar7)" ( (binary_expression "pcVar1 == *(char **)puVar7" identifier == (pointer_expression "*(char **)puVar7" * (cast_expression "(char **)puVar7" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar7 = PTR___stack_chk_fail_000bccb0;" (assignment_expression "puVar7 = PTR___stack_chk_fail_000bccb0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000bccb0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bccb0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bccb0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bccb0" * (cast_expression "(code *)PTR___stack_chk_fail_000bccb0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(*pcVar1 == '[')" ( (binary_expression "*pcVar1 == '['" (pointer_expression "*pcVar1" * identifier) == (char_literal "'['" ' character ')) )) (compound_statement "{\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }" { (expression_statement "uVar5 = (uint)pcVar1[1];" (assignment_expression "uVar5 = (uint)pcVar1[1]" identifier = (cast_expression "(uint)pcVar1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pcVar1[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar6 = pcVar1 + 1;" (assignment_expression "pcVar6 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (if_statement "if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }" { (expression_statement "pcVar4 = pcVar6;" (assignment_expression "pcVar4 = pcVar6" identifier = identifier) ;) (if_statement "if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }" if (parenthesized_expression "(uVar5 == 0x5d)" ( (binary_expression "uVar5 == 0x5d" identifier == number_literal) )) (compound_statement "{\n        iVar3 = 0;\n      }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }" else (compound_statement "{\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }" { (expression_statement "piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();" (assignment_expression "piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))()" identifier = (cast_expression "(int *)(**(code **)(puVar7 + 0x9aee8))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar7 + 0x9aee8))()" (parenthesized_expression "(**(code **)(puVar7 + 0x9aee8))" ( (pointer_expression "**(code **)(puVar7 + 0x9aee8)" * (pointer_expression "*(code **)(puVar7 + 0x9aee8)" * (cast_expression "(code **)(puVar7 + 0x9aee8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x9aee8)" ( (binary_expression "puVar7 + 0x9aee8" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);" do (compound_statement "{\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        }" { (if_statement "if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }" if (parenthesized_expression "((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0)" ( (binary_expression "(*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0" (parenthesized_expression "(*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10)" ( (binary_expression "*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10" (pointer_expression "*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2)" * (cast_expression "(ushort *)(*piVar2 + (uVar5 & 0xff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + (uVar5 & 0xff) * 2)" ( (binary_expression "*piVar2 + (uVar5 & 0xff) * 2" (pointer_expression "*piVar2" * identifier) + (binary_expression "(uVar5 & 0xff) * 2" (parenthesized_expression "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }" { (if_statement "if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }" if (parenthesized_expression "(uVar5 != 0x3a)" ( (binary_expression "uVar5 != 0x3a" identifier != number_literal) )) (compound_statement "{\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }" { (if_statement "if (uVar5 != 0x5d) goto LAB_00021cd8;" if (parenthesized_expression "(uVar5 != 0x5d)" ( (binary_expression "uVar5 != 0x5d" identifier != number_literal) )) (goto_statement "goto LAB_00021cd8;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = (uint)*pcVar4;" (assignment_expression "uVar5 = (uint)*pcVar4" identifier = (binary_expression "(uint)*pcVar4" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (uVar5 == 0) goto LAB_00021cd8;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021cd8;" goto statement_identifier ;)) }) while (parenthesized_expression "(uVar5 != 0x5d)" ( (binary_expression "uVar5 != 0x5d" identifier != number_literal) )) ;) }))) (if_statement "if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }" if (parenthesized_expression "((pcVar4[1] == '\0') && (1 < iVar3))" ( (binary_expression "(pcVar4[1] == '\0') && (1 < iVar3)" (parenthesized_expression "(pcVar4[1] == '\0')" ( (binary_expression "pcVar4[1] == '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(1 < iVar3)" ( (binary_expression "1 < iVar3" number_literal < identifier) ))) )) (compound_statement "{\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }" { (expression_statement "dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);" (call_expression "dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6)" identifier (argument_list "(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6)" ( (binary_expression "*(int *)(puVar7 + 0x9a574) + -0x1318" (pointer_expression "*(int *)(puVar7 + 0x9a574)" * (cast_expression "(int *)(puVar7 + 0x9a574)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x9a574)" ( (binary_expression "puVar7 + 0x9a574" identifier + number_literal) )))) + number_literal) , (binary_expression "(int)pcVar4 - (int)pcVar6" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier ))) ;) (return_statement "return;" return ;) })) })) })) (labeled_statement "LAB_00021cd8:\n  dupstr(pcVar1);" statement_identifier : (expression_statement "dupstr(pcVar1);" (call_expression "dupstr(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "char * dupprintf(char *fmt,...)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 in_a1;\n  char *pcVar5;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  uint uVar6;\n  undefined *puVar7;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  va_list ap;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  local_res4 = in_a1;\n  local_res8 = in_a2;\n  local_resc = in_a3;\n  pcVar2 = dupvprintf(fmt,&local_res4);\n  if (pcVar1 == *(char **)puVar7) {\n    return pcVar2;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar6 = (uint)pcVar1[1];\n    pcVar2 = pcVar1 + 1;\n    if (uVar6 != 0) {\n      pcVar5 = pcVar2;\n      if (uVar6 == 0x5d) {\n        iVar4 = 0;\n      }\n      else {\n        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar4 = 0;\n        do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);\n      }\n      if ((pcVar5[1] == '\0') && (1 < iVar4)) {\n                    /* WARNING: Subroutine does not return */\n        dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);\n      }\n    }\n  }\nLAB_00021cd8:\n  pcVar1 = dupstr(pcVar1);\n  return pcVar1;\n}\n\n" (function_definition "char * dupprintf(char *fmt,...)\n\n{\n  char *pcVar1;\n  char *pcVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 in_a1;\n  char *pcVar5;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  uint uVar6;\n  undefined *puVar7;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  va_list ap;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  local_res4 = in_a1;\n  local_res8 = in_a2;\n  local_resc = in_a3;\n  pcVar2 = dupvprintf(fmt,&local_res4);\n  if (pcVar1 == *(char **)puVar7) {\n    return pcVar2;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar6 = (uint)pcVar1[1];\n    pcVar2 = pcVar1 + 1;\n    if (uVar6 != 0) {\n      pcVar5 = pcVar2;\n      if (uVar6 == 0x5d) {\n        iVar4 = 0;\n      }\n      else {\n        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar4 = 0;\n        do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);\n      }\n      if ((pcVar5[1] == '\0') && (1 < iVar4)) {\n                    /* WARNING: Subroutine does not return */\n        dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);\n      }\n    }\n  }\nLAB_00021cd8:\n  pcVar1 = dupstr(pcVar1);\n  return pcVar1;\n}" primitive_type (pointer_declarator "* dupprintf(char *fmt,...)" * (function_declarator "dupprintf(char *fmt,...)" identifier (parameter_list "(char *fmt,...)" ( (parameter_declaration "char *fmt" primitive_type (pointer_declarator "*fmt" * identifier)) , (variadic_parameter "..." ...) )))) (compound_statement "{\n  char *pcVar1;\n  char *pcVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 in_a1;\n  char *pcVar5;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  uint uVar6;\n  undefined *puVar7;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  va_list ap;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  local_res4 = in_a1;\n  local_res8 = in_a2;\n  local_resc = in_a3;\n  pcVar2 = dupvprintf(fmt,&local_res4);\n  if (pcVar1 == *(char **)puVar7) {\n    return pcVar2;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar6 = (uint)pcVar1[1];\n    pcVar2 = pcVar1 + 1;\n    if (uVar6 != 0) {\n      pcVar5 = pcVar2;\n      if (uVar6 == 0x5d) {\n        iVar4 = 0;\n      }\n      else {\n        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar4 = 0;\n        do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);\n      }\n      if ((pcVar5[1] == '\0') && (1 < iVar4)) {\n                    /* WARNING: Subroutine does not return */\n        dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);\n      }\n    }\n  }\nLAB_00021cd8:\n  pcVar1 = dupstr(pcVar1);\n  return pcVar1;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 in_a1;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 in_a2;" type_identifier identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 local_res4;" type_identifier identifier ;) (declaration "undefined4 local_res8;" type_identifier identifier ;) (declaration "undefined4 local_resc;" type_identifier identifier ;) (declaration "va_list ap;" type_identifier identifier ;) (expression_statement "puVar7 = PTR___stack_chk_guard_000bccd8;" (assignment_expression "puVar7 = PTR___stack_chk_guard_000bccd8" identifier = identifier) ;) (expression_statement "pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;" (assignment_expression "pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8" identifier = (pointer_expression "*(char **)PTR___stack_chk_guard_000bccd8" * (cast_expression "(char **)PTR___stack_chk_guard_000bccd8" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_res4 = in_a1;" (assignment_expression "local_res4 = in_a1" identifier = identifier) ;) (expression_statement "local_res8 = in_a2;" (assignment_expression "local_res8 = in_a2" identifier = identifier) ;) (expression_statement "local_resc = in_a3;" (assignment_expression "local_resc = in_a3" identifier = identifier) ;) (expression_statement "pcVar2 = dupvprintf(fmt,&local_res4);" (assignment_expression "pcVar2 = dupvprintf(fmt,&local_res4)" identifier = (call_expression "dupvprintf(fmt,&local_res4)" identifier (argument_list "(fmt,&local_res4)" ( identifier , (pointer_expression "&local_res4" & identifier) )))) ;) (if_statement "if (pcVar1 == *(char **)puVar7) {\n    return pcVar2;\n  }" if (parenthesized_expression "(pcVar1 == *(char **)puVar7)" ( (binary_expression "pcVar1 == *(char **)puVar7" identifier == (pointer_expression "*(char **)puVar7" * (cast_expression "(char **)puVar7" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return pcVar2;\n  }" { (return_statement "return pcVar2;" return identifier ;) })) (expression_statement "puVar7 = PTR___stack_chk_fail_000bccb0;" (assignment_expression "puVar7 = PTR___stack_chk_fail_000bccb0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000bccb0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bccb0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bccb0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bccb0" * (cast_expression "(code *)PTR___stack_chk_fail_000bccb0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (*pcVar1 == '[') {\n    uVar6 = (uint)pcVar1[1];\n    pcVar2 = pcVar1 + 1;\n    if (uVar6 != 0) {\n      pcVar5 = pcVar2;\n      if (uVar6 == 0x5d) {\n        iVar4 = 0;\n      }\n      else {\n        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar4 = 0;\n        do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);\n      }\n      if ((pcVar5[1] == '\0') && (1 < iVar4)) {\n                    /* WARNING: Subroutine does not return */\n        dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);\n      }\n    }\n  }" if (parenthesized_expression "(*pcVar1 == '[')" ( (binary_expression "*pcVar1 == '['" (pointer_expression "*pcVar1" * identifier) == (char_literal "'['" ' character ')) )) (compound_statement "{\n    uVar6 = (uint)pcVar1[1];\n    pcVar2 = pcVar1 + 1;\n    if (uVar6 != 0) {\n      pcVar5 = pcVar2;\n      if (uVar6 == 0x5d) {\n        iVar4 = 0;\n      }\n      else {\n        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar4 = 0;\n        do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);\n      }\n      if ((pcVar5[1] == '\0') && (1 < iVar4)) {\n                    /* WARNING: Subroutine does not return */\n        dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);\n      }\n    }\n  }" { (expression_statement "uVar6 = (uint)pcVar1[1];" (assignment_expression "uVar6 = (uint)pcVar1[1]" identifier = (cast_expression "(uint)pcVar1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pcVar1[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar2 = pcVar1 + 1;" (assignment_expression "pcVar2 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (if_statement "if (uVar6 != 0) {\n      pcVar5 = pcVar2;\n      if (uVar6 == 0x5d) {\n        iVar4 = 0;\n      }\n      else {\n        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar4 = 0;\n        do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);\n      }\n      if ((pcVar5[1] == '\0') && (1 < iVar4)) {\n                    /* WARNING: Subroutine does not return */\n        dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);\n      }\n    }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar5 = pcVar2;\n      if (uVar6 == 0x5d) {\n        iVar4 = 0;\n      }\n      else {\n        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar4 = 0;\n        do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);\n      }\n      if ((pcVar5[1] == '\0') && (1 < iVar4)) {\n                    /* WARNING: Subroutine does not return */\n        dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);\n      }\n    }" { (expression_statement "pcVar5 = pcVar2;" (assignment_expression "pcVar5 = pcVar2" identifier = identifier) ;) (if_statement "if (uVar6 == 0x5d) {\n        iVar4 = 0;\n      }\n      else {\n        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar4 = 0;\n        do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);\n      }" if (parenthesized_expression "(uVar6 == 0x5d)" ( (binary_expression "uVar6 == 0x5d" identifier == number_literal) )) (compound_statement "{\n        iVar4 = 0;\n      }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar4 = 0;\n        do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);\n      }" else (compound_statement "{\n        piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar4 = 0;\n        do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);\n      }" { (expression_statement "piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))();" (assignment_expression "piVar3 = (int *)(**(code **)(puVar7 + 0x9aee8))()" identifier = (cast_expression "(int *)(**(code **)(puVar7 + 0x9aee8))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar7 + 0x9aee8))()" (parenthesized_expression "(**(code **)(puVar7 + 0x9aee8))" ( (pointer_expression "**(code **)(puVar7 + 0x9aee8)" * (pointer_expression "*(code **)(puVar7 + 0x9aee8)" * (cast_expression "(code **)(puVar7 + 0x9aee8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x9aee8)" ( (binary_expression "puVar7 + 0x9aee8" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        } while (uVar6 != 0x5d);" do (compound_statement "{\n          if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }\n          pcVar5 = pcVar5 + 1;\n          uVar6 = (uint)*pcVar5;\n          if (uVar6 == 0) goto LAB_00021cd8;\n        }" { (if_statement "if ((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }" if (parenthesized_expression "((*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0)" ( (binary_expression "(*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10) == 0" (parenthesized_expression "(*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10)" ( (binary_expression "*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2) & 0x10" (pointer_expression "*(ushort *)(*piVar3 + (uVar6 & 0xff) * 2)" * (cast_expression "(ushort *)(*piVar3 + (uVar6 & 0xff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + (uVar6 & 0xff) * 2)" ( (binary_expression "*piVar3 + (uVar6 & 0xff) * 2" (pointer_expression "*piVar3" * identifier) + (binary_expression "(uVar6 & 0xff) * 2" (parenthesized_expression "(uVar6 & 0xff)" ( (binary_expression "uVar6 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar4 = iVar4 + 1;\n          }" { (if_statement "if (uVar6 != 0x3a) {\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }" if (parenthesized_expression "(uVar6 != 0x3a)" ( (binary_expression "uVar6 != 0x3a" identifier != number_literal) )) (compound_statement "{\n              if (uVar6 != 0x5d) goto LAB_00021cd8;\n              break;\n            }" { (if_statement "if (uVar6 != 0x5d) goto LAB_00021cd8;" if (parenthesized_expression "(uVar6 != 0x5d)" ( (binary_expression "uVar6 != 0x5d" identifier != number_literal) )) (goto_statement "goto LAB_00021cd8;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = (uint)*pcVar5;" (assignment_expression "uVar6 = (uint)*pcVar5" identifier = (binary_expression "(uint)*pcVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (uVar6 == 0) goto LAB_00021cd8;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021cd8;" goto statement_identifier ;)) }) while (parenthesized_expression "(uVar6 != 0x5d)" ( (binary_expression "uVar6 != 0x5d" identifier != number_literal) )) ;) }))) (if_statement "if ((pcVar5[1] == '\0') && (1 < iVar4)) {\n                    /* WARNING: Subroutine does not return */\n        dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);\n      }" if (parenthesized_expression "((pcVar5[1] == '\0') && (1 < iVar4))" ( (binary_expression "(pcVar5[1] == '\0') && (1 < iVar4)" (parenthesized_expression "(pcVar5[1] == '\0')" ( (binary_expression "pcVar5[1] == '\0'" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(1 < iVar4)" ( (binary_expression "1 < iVar4" number_literal < identifier) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);\n      }" { comment (expression_statement "dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2);" (call_expression "dupprintf((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2)" identifier (argument_list "((char *)(*(int *)(puVar7 + 0x9a574) + -0x1318),(int)pcVar5 - (int)pcVar2,pcVar2)" ( (cast_expression "(char *)(*(int *)(puVar7 + 0x9a574) + -0x1318)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar7 + 0x9a574) + -0x1318)" ( (binary_expression "*(int *)(puVar7 + 0x9a574) + -0x1318" (pointer_expression "*(int *)(puVar7 + 0x9a574)" * (cast_expression "(int *)(puVar7 + 0x9a574)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x9a574)" ( (binary_expression "puVar7 + 0x9a574" identifier + number_literal) )))) + number_literal) ))) , (binary_expression "(int)pcVar5 - (int)pcVar2" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier ))) ;) })) })) })) (labeled_statement "LAB_00021cd8:\n  pcVar1 = dupstr(pcVar1);" statement_identifier : (expression_statement "pcVar1 = dupstr(pcVar1);" (assignment_expression "pcVar1 = dupstr(pcVar1)" identifier = (call_expression "dupstr(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier )))) ;)) (return_statement "return pcVar1;" return identifier ;) })))
(translation_unit "void dupprintf(void)\n\n{\n  char *pcVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined *puVar7;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  dupvprintf();\n  if (pcVar1 == *(char **)puVar7) {\n    return;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }\nLAB_00021cd8:\n  dupstr(pcVar1);\n  return;\n}\n\n" (function_definition "void dupprintf(void)\n\n{\n  char *pcVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined *puVar7;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  dupvprintf();\n  if (pcVar1 == *(char **)puVar7) {\n    return;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }\nLAB_00021cd8:\n  dupstr(pcVar1);\n  return;\n}" primitive_type (function_declarator "dupprintf(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char *pcVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined *puVar7;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  dupvprintf();\n  if (pcVar1 == *(char **)puVar7) {\n    return;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }\nLAB_00021cd8:\n  dupstr(pcVar1);\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (expression_statement "puVar7 = PTR___stack_chk_guard_000bccd8;" (assignment_expression "puVar7 = PTR___stack_chk_guard_000bccd8" identifier = identifier) ;) (expression_statement "pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;" (assignment_expression "pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8" identifier = (pointer_expression "*(char **)PTR___stack_chk_guard_000bccd8" * (cast_expression "(char **)PTR___stack_chk_guard_000bccd8" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "dupvprintf();" (call_expression "dupvprintf()" identifier (argument_list "()" ( ))) ;) (if_statement "if (pcVar1 == *(char **)puVar7) {\n    return;\n  }" if (parenthesized_expression "(pcVar1 == *(char **)puVar7)" ( (binary_expression "pcVar1 == *(char **)puVar7" identifier == (pointer_expression "*(char **)puVar7" * (cast_expression "(char **)puVar7" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar7 = PTR___stack_chk_fail_000bccb0;" (assignment_expression "puVar7 = PTR___stack_chk_fail_000bccb0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000bccb0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bccb0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bccb0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bccb0" * (cast_expression "(code *)PTR___stack_chk_fail_000bccb0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(*pcVar1 == '[')" ( (binary_expression "*pcVar1 == '['" (pointer_expression "*pcVar1" * identifier) == (char_literal "'['" ' character ')) )) (compound_statement "{\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }" { (expression_statement "uVar5 = (uint)pcVar1[1];" (assignment_expression "uVar5 = (uint)pcVar1[1]" identifier = (cast_expression "(uint)pcVar1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pcVar1[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar6 = pcVar1 + 1;" (assignment_expression "pcVar6 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (if_statement "if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }" { (expression_statement "pcVar4 = pcVar6;" (assignment_expression "pcVar4 = pcVar6" identifier = identifier) ;) (if_statement "if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }" if (parenthesized_expression "(uVar5 == 0x5d)" ( (binary_expression "uVar5 == 0x5d" identifier == number_literal) )) (compound_statement "{\n        iVar3 = 0;\n      }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }" else (compound_statement "{\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }" { (expression_statement "piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();" (assignment_expression "piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))()" identifier = (cast_expression "(int *)(**(code **)(puVar7 + 0x9aee8))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar7 + 0x9aee8))()" (parenthesized_expression "(**(code **)(puVar7 + 0x9aee8))" ( (pointer_expression "**(code **)(puVar7 + 0x9aee8)" * (pointer_expression "*(code **)(puVar7 + 0x9aee8)" * (cast_expression "(code **)(puVar7 + 0x9aee8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x9aee8)" ( (binary_expression "puVar7 + 0x9aee8" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);" do (compound_statement "{\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        }" { (if_statement "if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }" if (parenthesized_expression "((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0)" ( (binary_expression "(*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0" (parenthesized_expression "(*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10)" ( (binary_expression "*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10" (pointer_expression "*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2)" * (cast_expression "(ushort *)(*piVar2 + (uVar5 & 0xff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + (uVar5 & 0xff) * 2)" ( (binary_expression "*piVar2 + (uVar5 & 0xff) * 2" (pointer_expression "*piVar2" * identifier) + (binary_expression "(uVar5 & 0xff) * 2" (parenthesized_expression "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }" { (if_statement "if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }" if (parenthesized_expression "(uVar5 != 0x3a)" ( (binary_expression "uVar5 != 0x3a" identifier != number_literal) )) (compound_statement "{\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }" { (if_statement "if (uVar5 != 0x5d) goto LAB_00021cd8;" if (parenthesized_expression "(uVar5 != 0x5d)" ( (binary_expression "uVar5 != 0x5d" identifier != number_literal) )) (goto_statement "goto LAB_00021cd8;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = (uint)*pcVar4;" (assignment_expression "uVar5 = (uint)*pcVar4" identifier = (binary_expression "(uint)*pcVar4" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (uVar5 == 0) goto LAB_00021cd8;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021cd8;" goto statement_identifier ;)) }) while (parenthesized_expression "(uVar5 != 0x5d)" ( (binary_expression "uVar5 != 0x5d" identifier != number_literal) )) ;) }))) (if_statement "if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }" if (parenthesized_expression "((pcVar4[1] == '\0') && (1 < iVar3))" ( (binary_expression "(pcVar4[1] == '\0') && (1 < iVar3)" (parenthesized_expression "(pcVar4[1] == '\0')" ( (binary_expression "pcVar4[1] == '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(1 < iVar3)" ( (binary_expression "1 < iVar3" number_literal < identifier) ))) )) (compound_statement "{\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }" { (expression_statement "dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);" (call_expression "dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6)" identifier (argument_list "(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6)" ( (binary_expression "*(int *)(puVar7 + 0x9a574) + -0x1318" (pointer_expression "*(int *)(puVar7 + 0x9a574)" * (cast_expression "(int *)(puVar7 + 0x9a574)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x9a574)" ( (binary_expression "puVar7 + 0x9a574" identifier + number_literal) )))) + number_literal) , (binary_expression "(int)pcVar4 - (int)pcVar6" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier ))) ;) (return_statement "return;" return ;) })) })) })) (labeled_statement "LAB_00021cd8:\n  dupstr(pcVar1);" statement_identifier : (expression_statement "dupstr(pcVar1);" (call_expression "dupstr(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier ))) ;)) (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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT ))) ;) (return_statement return ;) })) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (return_statement return ;) })))
(function_definition "void dupprintf(void)\n\n{\n  char *pcVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined *puVar7;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  dupvprintf();\n  if (pcVar1 == *(char **)puVar7) {\n    return;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }\nLAB_00021cd8:\n  dupstr(pcVar1);\n  return;\n}" (primitive_type "void") (function_declarator "dupprintf(void)" (identifier "dupprintf") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  char *pcVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined *puVar7;\n  \n  puVar7 = PTR___stack_chk_guard_000bccd8;\n  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;\n  dupvprintf();\n  if (pcVar1 == *(char **)puVar7) {\n    return;\n  }\n  puVar7 = PTR___stack_chk_fail_000bccb0;\n  (*(code *)PTR___stack_chk_fail_000bccb0)();\n  if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }\nLAB_00021cd8:\n  dupstr(pcVar1);\n  return;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (expression_statement "puVar7 = PTR___stack_chk_guard_000bccd8;" (assignment_expression "puVar7 = PTR___stack_chk_guard_000bccd8" (identifier "puVar7") (= "=") (identifier "PTR___stack_chk_guard_000bccd8")) (; ";")) (expression_statement "pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;" (assignment_expression "pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8" (identifier "pcVar1") (= "=") (pointer_expression "*(char **)PTR___stack_chk_guard_000bccd8" (* "*") (cast_expression "(char **)PTR___stack_chk_guard_000bccd8" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_000bccd8")))) (; ";")) (expression_statement "dupvprintf();" (call_expression "dupvprintf()" (identifier "dupvprintf") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (pcVar1 == *(char **)puVar7) {\n    return;\n  }" (if "if") (parenthesized_expression "(pcVar1 == *(char **)puVar7)" (( "(") (binary_expression "pcVar1 == *(char **)puVar7" (identifier "pcVar1") (== "==") (pointer_expression "*(char **)puVar7" (* "*") (cast_expression "(char **)puVar7" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar7")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar7 = PTR___stack_chk_fail_000bccb0;" (assignment_expression "puVar7 = PTR___stack_chk_fail_000bccb0" (identifier "puVar7") (= "=") (identifier "PTR___stack_chk_fail_000bccb0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000bccb0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bccb0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bccb0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000bccb0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000bccb0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000bccb0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*pcVar1 == '[') {\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*pcVar1 == '[')" (( "(") (binary_expression "*pcVar1 == '['" (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1")) (== "==") (char_literal "'['" (' "'") (character "[") (' "'"))) () ")")) (compound_statement "{\n    uVar5 = (uint)pcVar1[1];\n    pcVar6 = pcVar1 + 1;\n    if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }\n  }" ({ "{") (expression_statement "uVar5 = (uint)pcVar1[1];" (assignment_expression "uVar5 = (uint)pcVar1[1]" (identifier "uVar5") (= "=") (cast_expression "(uint)pcVar1[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pcVar1[1]" (identifier "pcVar1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pcVar6 = pcVar1 + 1;" (assignment_expression "pcVar6 = pcVar1 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar1 + 1" (identifier "pcVar1") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar5 != 0) {\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }" (if "if") (parenthesized_expression "(uVar5 != 0)" (( "(") (binary_expression "uVar5 != 0" (identifier "uVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar4 = pcVar6;\n      if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }\n      if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }\n    }" ({ "{") (expression_statement "pcVar4 = pcVar6;" (assignment_expression "pcVar4 = pcVar6" (identifier "pcVar4") (= "=") (identifier "pcVar6")) (; ";")) (if_statement "if (uVar5 == 0x5d) {\n        iVar3 = 0;\n      }\n      else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }" (if "if") (parenthesized_expression "(uVar5 == 0x5d)" (( "(") (binary_expression "uVar5 == 0x5d" (identifier "uVar5") (== "==") (number_literal "0x5d")) () ")")) (compound_statement "{\n        iVar3 = 0;\n      }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }" (else "else") (compound_statement "{\n        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();\n        iVar3 = 0;\n        do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);\n      }" ({ "{") (expression_statement "piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();" (assignment_expression "piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))()" (identifier "piVar2") (= "=") (cast_expression "(int *)(**(code **)(puVar7 + 0x9aee8))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar7 + 0x9aee8))()" (parenthesized_expression "(**(code **)(puVar7 + 0x9aee8))" (( "(") (pointer_expression "**(code **)(puVar7 + 0x9aee8)" (* "*") (pointer_expression "*(code **)(puVar7 + 0x9aee8)" (* "*") (cast_expression "(code **)(puVar7 + 0x9aee8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7 + 0x9aee8)" (( "(") (binary_expression "puVar7 + 0x9aee8" (identifier "puVar7") (+ "+") (number_literal "0x9aee8")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        } while (uVar5 != 0x5d);" (do "do") (compound_statement "{\n          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }\n          pcVar4 = pcVar4 + 1;\n          uVar5 = (uint)*pcVar4;\n          if (uVar5 == 0) goto LAB_00021cd8;\n        }" ({ "{") (if_statement "if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }" (if "if") (parenthesized_expression "((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0)" (( "(") (binary_expression "(*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0" (parenthesized_expression "(*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10)" (( "(") (binary_expression "*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10" (pointer_expression "*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2)" (* "*") (cast_expression "(ushort *)(*piVar2 + (uVar5 & 0xff) * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar2 + (uVar5 & 0xff) * 2)" (( "(") (binary_expression "*piVar2 + (uVar5 & 0xff) * 2" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (binary_expression "(uVar5 & 0xff) * 2" (parenthesized_expression "(uVar5 & 0xff)" (( "(") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }\n            iVar3 = iVar3 + 1;\n          }" ({ "{") (if_statement "if (uVar5 != 0x3a) {\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }" (if "if") (parenthesized_expression "(uVar5 != 0x3a)" (( "(") (binary_expression "uVar5 != 0x3a" (identifier "uVar5") (!= "!=") (number_literal "0x3a")) () ")")) (compound_statement "{\n              if (uVar5 != 0x5d) goto LAB_00021cd8;\n              break;\n            }" ({ "{") (if_statement "if (uVar5 != 0x5d) goto LAB_00021cd8;" (if "if") (parenthesized_expression "(uVar5 != 0x5d)" (( "(") (binary_expression "uVar5 != 0x5d" (identifier "uVar5") (!= "!=") (number_literal "0x5d")) () ")")) (goto_statement "goto LAB_00021cd8;" (goto "goto") (statement_identifier "LAB_00021cd8") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = (uint)*pcVar4;" (assignment_expression "uVar5 = (uint)*pcVar4" (identifier "uVar5") (= "=") (binary_expression "(uint)*pcVar4" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pcVar4"))) (; ";")) (if_statement "if (uVar5 == 0) goto LAB_00021cd8;" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021cd8;" (goto "goto") (statement_identifier "LAB_00021cd8") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(uVar5 != 0x5d)" (( "(") (binary_expression "uVar5 != 0x5d" (identifier "uVar5") (!= "!=") (number_literal "0x5d")) () ")")) (; ";")) (} "}")))) (if_statement "if ((pcVar4[1] == '\0') && (1 < iVar3)) {\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }" (if "if") (parenthesized_expression "((pcVar4[1] == '\0') && (1 < iVar3))" (( "(") (binary_expression "(pcVar4[1] == '\0') && (1 < iVar3)" (parenthesized_expression "(pcVar4[1] == '\0')" (( "(") (binary_expression "pcVar4[1] == '\0'" (subscript_expression "pcVar4[1]" (identifier "pcVar4") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(1 < iVar3)" (( "(") (binary_expression "1 < iVar3" (number_literal "1") (< "<") (identifier "iVar3")) () ")"))) () ")")) (compound_statement "{\n        dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);\n        return;\n      }" ({ "{") (expression_statement "dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);" (call_expression "dupprintf(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6)" (identifier "dupprintf") (argument_list "(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6)" (( "(") (binary_expression "*(int *)(puVar7 + 0x9a574) + -0x1318" (pointer_expression "*(int *)(puVar7 + 0x9a574)" (* "*") (cast_expression "(int *)(puVar7 + 0x9a574)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + 0x9a574)" (( "(") (binary_expression "puVar7 + 0x9a574" (identifier "puVar7") (+ "+") (number_literal "0x9a574")) () ")")))) (+ "+") (number_literal "-0x1318")) (, ",") (binary_expression "(int)pcVar4 - (int)pcVar6" (cast_expression "(int)pcVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar4")) (- "-") (cast_expression "(int)pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar6"))) (, ",") (identifier "pcVar6") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00021cd8:\n  dupstr(pcVar1);" (statement_identifier "LAB_00021cd8") (: ":") (expression_statement "dupstr(pcVar1);" (call_expression "dupstr(pcVar1)" (identifier "dupstr") (argument_list "(pcVar1)" (( "(") (identifier "pcVar1") () ")"))) (; ";"))) (return_statement "return;" (return "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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) (identifier)))) (return_statement))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (return_statement))))

void MASKED(void)

{
  char *pcVar1;
  int *piVar2;
  int iVar3;
  char *pcVar4;
  uint uVar5;
  char *pcVar6;
  undefined *puVar7;
  
  puVar7 = PTR___stack_chk_guard_000bccd8;
  pcVar1 = *(char **)PTR___stack_chk_guard_000bccd8;
  dupvprintf();
  if (pcVar1 == *(char **)puVar7) {
    return;
  }
  puVar7 = PTR___stack_chk_fail_000bccb0;
  (*(code *)PTR___stack_chk_fail_000bccb0)();
  if (*pcVar1 == '[') {
    uVar5 = (uint)pcVar1[1];
    pcVar6 = pcVar1 + 1;
    if (uVar5 != 0) {
      pcVar4 = pcVar6;
      if (uVar5 == 0x5d) {
        iVar3 = 0;
      }
      else {
        piVar2 = (int *)(**(code **)(puVar7 + 0x9aee8))();
        iVar3 = 0;
        do {
          if ((*(ushort *)(*piVar2 + (uVar5 & 0xff) * 2) & 0x10) == 0) {
            if (uVar5 != 0x3a) {
              if (uVar5 != 0x5d) goto LAB_00021cd8;
              break;
            }
            iVar3 = iVar3 + 1;
          }
          pcVar4 = pcVar4 + 1;
          uVar5 = (uint)*pcVar4;
          if (uVar5 == 0) goto LAB_00021cd8;
        } while (uVar5 != 0x5d);
      }
      if ((pcVar4[1] == '\0') && (1 < iVar3)) {
        MASKED(*(int *)(puVar7 + 0x9a574) + -0x1318,(int)pcVar4 - (int)pcVar6,pcVar6);
        return;
      }
    }
  }
LAB_00021cd8:
  dupstr(pcVar1);
  return;
}

