
char * escnonprint_internal(char *str,char escape,int base)

{
  byte bVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  char *pcVar5;
  byte *pbVar6;
  int *piVar7;
  int iVar8;
  
  iVar3 = (int)*str;
  if (iVar3 != 0) {
    iVar8 = 0;
    pcVar5 = str;
    do {
      if (0x5e < iVar3 - 0x20U) {
        iVar8 = iVar8 + 1;
      }
      pcVar5 = pcVar5 + 1;
      iVar3 = (int)*pcVar5;
    } while (iVar3 != 0);
    if (iVar8 != 0) {
      piVar7 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);
      iVar3 = (*(code *)PTR_strlen_000b7c94)(str);
      if (base == 8) {
        iVar8 = iVar8 * 3;
      }
      else {
        iVar8 = iVar8 << 1;
      }
      iVar8 = iVar3 + 1 + iVar8;
      if ((*piVar7 == 0) || (piVar7[1] < iVar8)) {
        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);
        *piVar7 = iVar3;
        piVar7[1] = iVar8;
      }
      puVar2 = PTR_DAT_000b758c;
      pbVar6 = (byte *)*piVar7;
      if (base == 8) {
        while( true ) {
          bVar1 = *str;
          uVar4 = (uint)bVar1;
          if (uVar4 == 0) break;
          if (uVar4 - 0x20 < 0x5f) {
            *pbVar6 = bVar1;
            pbVar6 = pbVar6 + 1;
            str = (char *)((byte *)str + 1);
          }
          else {
            *pbVar6 = escape;
            pbVar6[1] = (bVar1 >> 6) + 0x30;
            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;
            pbVar6[3] = (bVar1 & 7) + 0x30;
            pbVar6 = pbVar6 + 4;
            str = (char *)((byte *)str + 1);
          }
        }
      }
      else {
        if (base != 0x10) {
          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();
          return pcVar5;
        }
        while( true ) {
          bVar1 = *str;
          uVar4 = (uint)bVar1;
          if (uVar4 == 0) break;
          if (uVar4 - 0x20 < 0x5f) {
            *pbVar6 = bVar1;
            pbVar6 = pbVar6 + 1;
            str = (char *)((byte *)str + 1);
          }
          else {
            *pbVar6 = escape;
            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];
            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];
            pbVar6 = pbVar6 + 3;
            str = (char *)((byte *)str + 1);
          }
        }
      }
      *pbVar6 = 0;
      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;
      str = (char *)*piVar7;
    }
  }
  return str;
}



byte * FUN_0004485c(byte *param_1,byte param_2,int param_3)

{
  byte bVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  byte *pbVar5;
  int *piVar6;
  int iVar7;
  
  iVar3 = (int)(char)*param_1;
  if (iVar3 != 0) {
    iVar7 = 0;
    pbVar5 = param_1;
    do {
      if (0x5e < iVar3 - 0x20U) {
        iVar7 = iVar7 + 1;
      }
      pbVar5 = pbVar5 + 1;
      iVar3 = (int)(char)*pbVar5;
    } while (iVar3 != 0);
    if (iVar7 != 0) {
      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);
      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);
      if (param_3 == 8) {
        iVar7 = iVar7 * 3;
      }
      else {
        iVar7 = iVar7 << 1;
      }
      iVar7 = iVar3 + 1 + iVar7;
      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {
        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);
        *piVar6 = iVar3;
        piVar6[1] = iVar7;
      }
      puVar2 = PTR_DAT_000b758c;
      pbVar5 = (byte *)*piVar6;
      if (param_3 == 8) {
        while( true ) {
          bVar1 = *param_1;
          uVar4 = (uint)bVar1;
          if (uVar4 == 0) break;
          if (uVar4 - 0x20 < 0x5f) {
            *pbVar5 = bVar1;
            pbVar5 = pbVar5 + 1;
            param_1 = param_1 + 1;
          }
          else {
            *pbVar5 = param_2;
            pbVar5[1] = (bVar1 >> 6) + 0x30;
            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;
            pbVar5[3] = (bVar1 & 7) + 0x30;
            pbVar5 = pbVar5 + 4;
            param_1 = param_1 + 1;
          }
        }
      }
      else {
        if (param_3 != 0x10) {
          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();
          return pbVar5;
        }
        while( true ) {
          bVar1 = *param_1;
          uVar4 = (uint)bVar1;
          if (uVar4 == 0) break;
          if (uVar4 - 0x20 < 0x5f) {
            *pbVar5 = bVar1;
            pbVar5 = pbVar5 + 1;
            param_1 = param_1 + 1;
          }
          else {
            *pbVar5 = param_2;
            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];
            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];
            pbVar5 = pbVar5 + 3;
            param_1 = param_1 + 1;
          }
        }
      }
      *pbVar5 = 0;
      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;
      param_1 = (byte *)*piVar6;
    }
  }
  return param_1;
}


lui gp,0x8
addiu gp,gp,-0x542c
addu gp,gp,t9
addiu sp,sp,-0x30
sw ra,0x2c(sp)
sw s4,0x28(sp)
sw s3,0x24(sp)
sw s2,0x20(sp)
sw s1,0x1c(sp)
sw s0,0x18(sp)
sw gp,0x10(sp)
lb v0,0x0(a0)
beq v0,zero,0x00044a88
_or s0,a0,zero
or s2,a1,zero
or s4,a2,zero
or v1,a0,zero
b 0x000448b8
_or s3,zero,zero
addiu v1,v1,0x1
lb v0,0x0(v1)
beq v0,zero,0x000448d0
_nop
addiu v0,v0,-0x20
sltiu v0,v0,0x5f
bne v0,zero,0x000448a8
_nop
b 0x000448a8
_addiu s3,s3,0x1
beq s3,zero,0x00044a90
_or a0,s0,zero
lw v0,-0x7d10(gp)
lw s1,-0x5f70(v0)
sll v0,s1,0x3
lw s1,-0x7d10(gp)
addiu s1,s1,-0x5f68
addu s1,s1,v0
lw t9,-0x779c(gp)
jalr t9
_nop
lw gp,0x10(sp)
li v1,0x8
beq s4,v1,0x0004496c
_sll v1,s3,0x1
sll s3,s3,0x1
addiu v0,v0,0x1
lw a0,0x0(s1)
beq a0,zero,0x00044930
_addu s3,v0,s3
lw v0,0x4(s1)
slt v0,v0,s3
beq v0,zero,0x00044950
_li v0,0x8
or a1,s3,zero
lw t9,-0x7cf0(gp)
jalr t9
_nop
lw gp,0x10(sp)
sw v0,0x0(s1)
sw s3,0x4(s1)
li v0,0x8
beq s4,v0,0x000449a4
_lw v1,0x0(s1)
li v0,0x10
bne s4,v0,0x00044a20
_lw a1,-0x7ea4(gp)
b 0x000449d8
_addiu a1,a1,-0x6f70
b 0x00044910
_addu s3,v1,s3
sb s2,0x0(v1)
srl a0,v0,0x6
addiu a0,a0,0x30
sb a0,0x1(v1)
ext a0,v0,0x3,0x3
addiu a0,a0,0x30
sb a0,0x2(v1)
addiu a0,v1,0x4
andi v0,v0,0x7
addiu v0,v0,0x30
sb v0,0x3(v1)
or v1,a0,zero
addiu s0,s0,0x1
lb a1,-0x1(s0)
andi v0,a1,0xff
beq v0,zero,0x00044a2c
_addiu a0,v0,-0x20
sltiu a0,a0,0x5f
beq a0,zero,0x00044974
_addiu a0,v1,0x1
b 0x000449a0
_sb a1,0x0(v1)
addiu a0,v1,0x1
sb a2,0x0(v1)
or v1,a0,zero
addiu s0,s0,0x1
lb a2,-0x1(s0)
andi v0,a2,0xff
beq v0,zero,0x00044a2c
_addiu a0,v0,-0x20
sltiu a0,a0,0x5f
bne a0,zero,0x000449cc
_srl a0,v0,0x4
sb s2,0x0(v1)
addu a0,a0,a1
lbu a0,0x0(a0)
sb a0,0x1(v1)
addiu a0,v1,0x3
andi v0,v0,0xf
addu v0,v0,a1
lbu v0,0x0(v0)
b 0x000449d4
_sb v0,0x2(v1)
lw t9,-0x7570(gp)
jalr t9
_nop
sb zero,0x0(v1)
lw a1,-0x7d10(gp)
lw v1,-0x5f70(a1)
addiu v1,v1,0x1
lui v0,0x5555
addiu v0,v0,0x5556
mult v1,v0
mfhi v0
sra a0,v1,0x1f
subu v0,v0,a0
sll a0,v0,0x1
addu v0,a0,v0
subu v1,v1,v0
sw v1,-0x5f70(a1)
lw v0,0x0(s1)
lw ra,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x30
b 0x00044a68
_or v0,a0,zero
b 0x00044a68
_or v0,s0,zero
(translation_unit "byte * FUN_0004485c(byte *param_1,byte param_2,int param_3)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int *piVar6;\n  int iVar7;\n  \n  iVar3 = (int)(char)*param_1;\n  if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }\n  return param_1;\n}\n\n" (function_definition "byte * FUN_0004485c(byte *param_1,byte param_2,int param_3)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int *piVar6;\n  int iVar7;\n  \n  iVar3 = (int)(char)*param_1;\n  if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }\n  return param_1;\n}" type_identifier (pointer_declarator "* FUN_0004485c(byte *param_1,byte param_2,int param_3)" * (function_declarator "FUN_0004485c(byte *param_1,byte param_2,int param_3)" identifier (parameter_list "(byte *param_1,byte param_2,int param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) )))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int *piVar6;\n  int iVar7;\n  \n  iVar3 = (int)(char)*param_1;\n  if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }\n  return param_1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (expression_statement "iVar3 = (int)(char)*param_1;" (assignment_expression "iVar3 = (int)(char)*param_1" identifier = (cast_expression "(int)(char)*param_1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_1" * identifier)))) ;) (if_statement "if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "pbVar5 = param_1;" (assignment_expression "pbVar5 = param_1" identifier = identifier) ;) (do_statement "do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);" do (compound_statement "{\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    }" { (if_statement "if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }" if (parenthesized_expression "(0x5e < iVar3 - 0x20U)" ( (binary_expression "0x5e < iVar3 - 0x20U" number_literal < (binary_expression "iVar3 - 0x20U" identifier - number_literal)) )) (compound_statement "{\n        iVar7 = iVar7 + 1;\n      }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = (int)(char)*pbVar5;" (assignment_expression "iVar3 = (int)(char)*pbVar5" identifier = (cast_expression "(int)(char)*pbVar5" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar5" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar5" * identifier)))) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) (if_statement "if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }" { (expression_statement "piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);" (assignment_expression "piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" identifier = (cast_expression "(int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" ( (binary_expression "PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68" (binary_expression "PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8" identifier + (binary_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) * 8" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" * (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" ( (binary_expression "PTR_DAT_000b7720 + -0x5f70" identifier + number_literal) )))) * number_literal)) + number_literal) )))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1)" identifier = (call_expression "(*(code *)PTR_strlen_000b7c94)(param_1)" (parenthesized_expression "(*(code *)PTR_strlen_000b7c94)" ( (pointer_expression "*(code *)PTR_strlen_000b7c94" * (cast_expression "(code *)PTR_strlen_000b7c94" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }" if (parenthesized_expression "(param_3 == 8)" ( (binary_expression "param_3 == 8" identifier == number_literal) )) (compound_statement "{\n        iVar7 = iVar7 * 3;\n      }" { (expression_statement "iVar7 = iVar7 * 3;" (assignment_expression "iVar7 = iVar7 * 3" identifier = (binary_expression "iVar7 * 3" identifier * number_literal)) ;) }) (else_clause "else {\n        iVar7 = iVar7 << 1;\n      }" else (compound_statement "{\n        iVar7 = iVar7 << 1;\n      }" { (expression_statement "iVar7 = iVar7 << 1;" (assignment_expression "iVar7 = iVar7 << 1" identifier = (binary_expression "iVar7 << 1" identifier << number_literal)) ;) }))) (expression_statement "iVar7 = iVar3 + 1 + iVar7;" (assignment_expression "iVar7 = iVar3 + 1 + iVar7" identifier = (binary_expression "iVar3 + 1 + iVar7" (binary_expression "iVar3 + 1" identifier + number_literal) + identifier)) ;) (if_statement "if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }" if (parenthesized_expression "((*piVar6 == 0) || (piVar6[1] < iVar7))" ( (binary_expression "(*piVar6 == 0) || (piVar6[1] < iVar7)" (parenthesized_expression "(*piVar6 == 0)" ( (binary_expression "*piVar6 == 0" (pointer_expression "*piVar6" * identifier) == number_literal) )) || (parenthesized_expression "(piVar6[1] < iVar7)" ( (binary_expression "piVar6[1] < iVar7" (subscript_expression "piVar6[1]" identifier [ number_literal ]) < identifier) ))) )) (compound_statement "{\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }" { (expression_statement "iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);" (assignment_expression "iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7)" identifier = (call_expression "(*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7)" (parenthesized_expression "(*(code *)PTR_xrealloc_000b7740)" ( (pointer_expression "*(code *)PTR_xrealloc_000b7740" * (cast_expression "(code *)PTR_xrealloc_000b7740" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*piVar6,iVar7)" ( (pointer_expression "*piVar6" * identifier) , identifier )))) ;) (expression_statement "*piVar6 = iVar3;" (assignment_expression "*piVar6 = iVar3" (pointer_expression "*piVar6" * identifier) = identifier) ;) (expression_statement "piVar6[1] = iVar7;" (assignment_expression "piVar6[1] = iVar7" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "puVar2 = PTR_DAT_000b758c;" (assignment_expression "puVar2 = PTR_DAT_000b758c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)*piVar6;" (assignment_expression "pbVar5 = (byte *)*piVar6" identifier = (cast_expression "(byte *)*piVar6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (if_statement "if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" if (parenthesized_expression "(param_3 == 8)" ( (binary_expression "param_3 == 8" identifier == number_literal) )) (compound_statement "{\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" { (while_statement "while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }" { (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }" if (parenthesized_expression "(uVar4 - 0x20 < 0x5f)" ( (binary_expression "uVar4 - 0x20 < 0x5f" (binary_expression "uVar4 - 0x20" identifier - number_literal) < number_literal) )) (compound_statement "{\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }" { (expression_statement "*pbVar5 = bVar1;" (assignment_expression "*pbVar5 = bVar1" (pointer_expression "*pbVar5" * identifier) = identifier) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }" else (compound_statement "{\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }" { (expression_statement "*pbVar5 = param_2;" (assignment_expression "*pbVar5 = param_2" (pointer_expression "*pbVar5" * identifier) = identifier) ;) (expression_statement "pbVar5[1] = (bVar1 >> 6) + 0x30;" (assignment_expression "pbVar5[1] = (bVar1 >> 6) + 0x30" (subscript_expression "pbVar5[1]" identifier [ number_literal ]) = (binary_expression "(bVar1 >> 6) + 0x30" (parenthesized_expression "(bVar1 >> 6)" ( (binary_expression "bVar1 >> 6" identifier >> number_literal) )) + number_literal)) ;) (expression_statement "pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;" (assignment_expression "pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) = (binary_expression "(byte)((uVar4 << 0x1a) >> 0x1d) + 0x30" (call_expression "(byte)((uVar4 << 0x1a) >> 0x1d)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar4 << 0x1a) >> 0x1d)" ( (binary_expression "(uVar4 << 0x1a) >> 0x1d" (parenthesized_expression "(uVar4 << 0x1a)" ( (binary_expression "uVar4 << 0x1a" identifier << number_literal) )) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar5[3] = (bVar1 & 7) + 0x30;" (assignment_expression "pbVar5[3] = (bVar1 & 7) + 0x30" (subscript_expression "pbVar5[3]" identifier [ number_literal ]) = (binary_expression "(bVar1 & 7) + 0x30" (parenthesized_expression "(bVar1 & 7)" ( (binary_expression "bVar1 & 7" identifier & number_literal) )) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 4;" (assignment_expression "pbVar5 = pbVar5 + 4" identifier = (binary_expression "pbVar5 + 4" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }))) })) }) (else_clause "else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" else (compound_statement "{\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" { (if_statement "if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }" if (parenthesized_expression "(param_3 != 0x10)" ( (binary_expression "param_3 != 0x10" identifier != number_literal) )) (compound_statement "{\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }" { (expression_statement "pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();" (assignment_expression "pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)()" identifier = (cast_expression "(byte *)(*(code *)PTR_abort_000b7ec0)()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_abort_000b7ec0)()" (parenthesized_expression "(*(code *)PTR_abort_000b7ec0)" ( (pointer_expression "*(code *)PTR_abort_000b7ec0" * (cast_expression "(code *)PTR_abort_000b7ec0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (return_statement "return pbVar5;" return identifier ;) })) (while_statement "while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }" { (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }" if (parenthesized_expression "(uVar4 - 0x20 < 0x5f)" ( (binary_expression "uVar4 - 0x20 < 0x5f" (binary_expression "uVar4 - 0x20" identifier - number_literal) < number_literal) )) (compound_statement "{\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }" { (expression_statement "*pbVar5 = bVar1;" (assignment_expression "*pbVar5 = bVar1" (pointer_expression "*pbVar5" * identifier) = identifier) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }" else (compound_statement "{\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }" { (expression_statement "*pbVar5 = param_2;" (assignment_expression "*pbVar5 = param_2" (pointer_expression "*pbVar5" * identifier) = identifier) ;) (expression_statement "pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];" (assignment_expression "pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70]" (subscript_expression "pbVar5[1]" identifier [ number_literal ]) = (subscript_expression "puVar2[(bVar1 >> 4) - 0x6f70]" identifier [ (binary_expression "(bVar1 >> 4) - 0x6f70" (parenthesized_expression "(bVar1 >> 4)" ( (binary_expression "bVar1 >> 4" identifier >> number_literal) )) - number_literal) ])) ;) (expression_statement "pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];" (assignment_expression "pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70]" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) = (subscript_expression "puVar2[(uVar4 & 0xf) - 0x6f70]" identifier [ (binary_expression "(uVar4 & 0xf) - 0x6f70" (parenthesized_expression "(uVar4 & 0xf)" ( (binary_expression "uVar4 & 0xf" identifier & number_literal) )) - number_literal) ])) ;) (expression_statement "pbVar5 = pbVar5 + 3;" (assignment_expression "pbVar5 = pbVar5 + 3" identifier = (binary_expression "pbVar5 + 3" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }))) })) }))) (expression_statement "*pbVar5 = 0;" (assignment_expression "*pbVar5 = 0" (pointer_expression "*pbVar5" * identifier) = number_literal) ;) (expression_statement "*(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;" (assignment_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" * (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" ( (binary_expression "PTR_DAT_000b7720 + -0x5f70" identifier + number_literal) )))) = (binary_expression "(*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3" (parenthesized_expression "(*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1)" ( (binary_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" * (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" ( (binary_expression "PTR_DAT_000b7720 + -0x5f70" identifier + number_literal) )))) + number_literal) )) % number_literal)) ;) (expression_statement "param_1 = (byte *)*piVar6;" (assignment_expression "param_1 = (byte *)*piVar6" identifier = (cast_expression "(byte *)*piVar6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) })) })) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "char * escnonprint_internal(char *str,char escape,int base)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  \n  iVar3 = (int)*str;\n  if (iVar3 != 0) {\n    iVar8 = 0;\n    pcVar5 = str;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar8 = iVar8 + 1;\n      }\n      pcVar5 = pcVar5 + 1;\n      iVar3 = (int)*pcVar5;\n    } while (iVar3 != 0);\n    if (iVar8 != 0) {\n      piVar7 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(str);\n      if (base == 8) {\n        iVar8 = iVar8 * 3;\n      }\n      else {\n        iVar8 = iVar8 << 1;\n      }\n      iVar8 = iVar3 + 1 + iVar8;\n      if ((*piVar7 == 0) || (piVar7[1] < iVar8)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);\n        *piVar7 = iVar3;\n        piVar7[1] = iVar8;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar6 = (byte *)*piVar7;\n      if (base == 8) {\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      else {\n        if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      *pbVar6 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      str = (char *)*piVar7;\n    }\n  }\n  return str;\n}\n\n" (function_definition "char * escnonprint_internal(char *str,char escape,int base)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  \n  iVar3 = (int)*str;\n  if (iVar3 != 0) {\n    iVar8 = 0;\n    pcVar5 = str;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar8 = iVar8 + 1;\n      }\n      pcVar5 = pcVar5 + 1;\n      iVar3 = (int)*pcVar5;\n    } while (iVar3 != 0);\n    if (iVar8 != 0) {\n      piVar7 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(str);\n      if (base == 8) {\n        iVar8 = iVar8 * 3;\n      }\n      else {\n        iVar8 = iVar8 << 1;\n      }\n      iVar8 = iVar3 + 1 + iVar8;\n      if ((*piVar7 == 0) || (piVar7[1] < iVar8)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);\n        *piVar7 = iVar3;\n        piVar7[1] = iVar8;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar6 = (byte *)*piVar7;\n      if (base == 8) {\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      else {\n        if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      *pbVar6 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      str = (char *)*piVar7;\n    }\n  }\n  return str;\n}" primitive_type (pointer_declarator "* escnonprint_internal(char *str,char escape,int base)" * (function_declarator "escnonprint_internal(char *str,char escape,int base)" identifier (parameter_list "(char *str,char escape,int base)" ( (parameter_declaration "char *str" primitive_type (pointer_declarator "*str" * identifier)) , (parameter_declaration "char escape" primitive_type identifier) , (parameter_declaration "int base" primitive_type identifier) )))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int iVar8;\n  \n  iVar3 = (int)*str;\n  if (iVar3 != 0) {\n    iVar8 = 0;\n    pcVar5 = str;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar8 = iVar8 + 1;\n      }\n      pcVar5 = pcVar5 + 1;\n      iVar3 = (int)*pcVar5;\n    } while (iVar3 != 0);\n    if (iVar8 != 0) {\n      piVar7 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(str);\n      if (base == 8) {\n        iVar8 = iVar8 * 3;\n      }\n      else {\n        iVar8 = iVar8 << 1;\n      }\n      iVar8 = iVar3 + 1 + iVar8;\n      if ((*piVar7 == 0) || (piVar7[1] < iVar8)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);\n        *piVar7 = iVar3;\n        piVar7[1] = iVar8;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar6 = (byte *)*piVar7;\n      if (base == 8) {\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      else {\n        if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      *pbVar6 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      str = (char *)*piVar7;\n    }\n  }\n  return str;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (expression_statement "iVar3 = (int)*str;" (assignment_expression "iVar3 = (int)*str" identifier = (cast_expression "(int)*str" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*str" * identifier))) ;) (if_statement "if (iVar3 != 0) {\n    iVar8 = 0;\n    pcVar5 = str;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar8 = iVar8 + 1;\n      }\n      pcVar5 = pcVar5 + 1;\n      iVar3 = (int)*pcVar5;\n    } while (iVar3 != 0);\n    if (iVar8 != 0) {\n      piVar7 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(str);\n      if (base == 8) {\n        iVar8 = iVar8 * 3;\n      }\n      else {\n        iVar8 = iVar8 << 1;\n      }\n      iVar8 = iVar3 + 1 + iVar8;\n      if ((*piVar7 == 0) || (piVar7[1] < iVar8)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);\n        *piVar7 = iVar3;\n        piVar7[1] = iVar8;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar6 = (byte *)*piVar7;\n      if (base == 8) {\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      else {\n        if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      *pbVar6 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      str = (char *)*piVar7;\n    }\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar8 = 0;\n    pcVar5 = str;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar8 = iVar8 + 1;\n      }\n      pcVar5 = pcVar5 + 1;\n      iVar3 = (int)*pcVar5;\n    } while (iVar3 != 0);\n    if (iVar8 != 0) {\n      piVar7 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(str);\n      if (base == 8) {\n        iVar8 = iVar8 * 3;\n      }\n      else {\n        iVar8 = iVar8 << 1;\n      }\n      iVar8 = iVar3 + 1 + iVar8;\n      if ((*piVar7 == 0) || (piVar7[1] < iVar8)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);\n        *piVar7 = iVar3;\n        piVar7[1] = iVar8;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar6 = (byte *)*piVar7;\n      if (base == 8) {\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      else {\n        if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      *pbVar6 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      str = (char *)*piVar7;\n    }\n  }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = str;" (assignment_expression "pcVar5 = str" identifier = identifier) ;) (do_statement "do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar8 = iVar8 + 1;\n      }\n      pcVar5 = pcVar5 + 1;\n      iVar3 = (int)*pcVar5;\n    } while (iVar3 != 0);" do (compound_statement "{\n      if (0x5e < iVar3 - 0x20U) {\n        iVar8 = iVar8 + 1;\n      }\n      pcVar5 = pcVar5 + 1;\n      iVar3 = (int)*pcVar5;\n    }" { (if_statement "if (0x5e < iVar3 - 0x20U) {\n        iVar8 = iVar8 + 1;\n      }" if (parenthesized_expression "(0x5e < iVar3 - 0x20U)" ( (binary_expression "0x5e < iVar3 - 0x20U" number_literal < (binary_expression "iVar3 - 0x20U" identifier - number_literal)) )) (compound_statement "{\n        iVar8 = iVar8 + 1;\n      }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = (int)*pcVar5;" (assignment_expression "iVar3 = (int)*pcVar5" identifier = (cast_expression "(int)*pcVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar5" * identifier))) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) (if_statement "if (iVar8 != 0) {\n      piVar7 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(str);\n      if (base == 8) {\n        iVar8 = iVar8 * 3;\n      }\n      else {\n        iVar8 = iVar8 << 1;\n      }\n      iVar8 = iVar3 + 1 + iVar8;\n      if ((*piVar7 == 0) || (piVar7[1] < iVar8)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);\n        *piVar7 = iVar3;\n        piVar7[1] = iVar8;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar6 = (byte *)*piVar7;\n      if (base == 8) {\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      else {\n        if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      *pbVar6 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      str = (char *)*piVar7;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar7 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(str);\n      if (base == 8) {\n        iVar8 = iVar8 * 3;\n      }\n      else {\n        iVar8 = iVar8 << 1;\n      }\n      iVar8 = iVar3 + 1 + iVar8;\n      if ((*piVar7 == 0) || (piVar7[1] < iVar8)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);\n        *piVar7 = iVar3;\n        piVar7[1] = iVar8;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar6 = (byte *)*piVar7;\n      if (base == 8) {\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      else {\n        if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      *pbVar6 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      str = (char *)*piVar7;\n    }" { (expression_statement "piVar7 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);" (assignment_expression "piVar7 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" identifier = (cast_expression "(int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" ( (binary_expression "PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68" (binary_expression "PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8" identifier + (binary_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) * 8" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" * (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" ( (binary_expression "PTR_DAT_000b7720 + -0x5f70" identifier + number_literal) )))) * number_literal)) + number_literal) )))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_000b7c94)(str);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_000b7c94)(str)" identifier = (call_expression "(*(code *)PTR_strlen_000b7c94)(str)" (parenthesized_expression "(*(code *)PTR_strlen_000b7c94)" ( (pointer_expression "*(code *)PTR_strlen_000b7c94" * (cast_expression "(code *)PTR_strlen_000b7c94" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(str)" ( identifier )))) ;) (if_statement "if (base == 8) {\n        iVar8 = iVar8 * 3;\n      }\n      else {\n        iVar8 = iVar8 << 1;\n      }" if (parenthesized_expression "(base == 8)" ( (binary_expression "base == 8" identifier == number_literal) )) (compound_statement "{\n        iVar8 = iVar8 * 3;\n      }" { (expression_statement "iVar8 = iVar8 * 3;" (assignment_expression "iVar8 = iVar8 * 3" identifier = (binary_expression "iVar8 * 3" identifier * number_literal)) ;) }) (else_clause "else {\n        iVar8 = iVar8 << 1;\n      }" else (compound_statement "{\n        iVar8 = iVar8 << 1;\n      }" { (expression_statement "iVar8 = iVar8 << 1;" (assignment_expression "iVar8 = iVar8 << 1" identifier = (binary_expression "iVar8 << 1" identifier << number_literal)) ;) }))) (expression_statement "iVar8 = iVar3 + 1 + iVar8;" (assignment_expression "iVar8 = iVar3 + 1 + iVar8" identifier = (binary_expression "iVar3 + 1 + iVar8" (binary_expression "iVar3 + 1" identifier + number_literal) + identifier)) ;) (if_statement "if ((*piVar7 == 0) || (piVar7[1] < iVar8)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);\n        *piVar7 = iVar3;\n        piVar7[1] = iVar8;\n      }" if (parenthesized_expression "((*piVar7 == 0) || (piVar7[1] < iVar8))" ( (binary_expression "(*piVar7 == 0) || (piVar7[1] < iVar8)" (parenthesized_expression "(*piVar7 == 0)" ( (binary_expression "*piVar7 == 0" (pointer_expression "*piVar7" * identifier) == number_literal) )) || (parenthesized_expression "(piVar7[1] < iVar8)" ( (binary_expression "piVar7[1] < iVar8" (subscript_expression "piVar7[1]" identifier [ number_literal ]) < identifier) ))) )) (compound_statement "{\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);\n        *piVar7 = iVar3;\n        piVar7[1] = iVar8;\n      }" { (expression_statement "iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8);" (assignment_expression "iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8)" identifier = (call_expression "(*(code *)PTR_xrealloc_000b7740)(*piVar7,iVar8)" (parenthesized_expression "(*(code *)PTR_xrealloc_000b7740)" ( (pointer_expression "*(code *)PTR_xrealloc_000b7740" * (cast_expression "(code *)PTR_xrealloc_000b7740" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*piVar7,iVar8)" ( (pointer_expression "*piVar7" * identifier) , identifier )))) ;) (expression_statement "*piVar7 = iVar3;" (assignment_expression "*piVar7 = iVar3" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "piVar7[1] = iVar8;" (assignment_expression "piVar7[1] = iVar8" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "puVar2 = PTR_DAT_000b758c;" (assignment_expression "puVar2 = PTR_DAT_000b758c" identifier = identifier) ;) (expression_statement "pbVar6 = (byte *)*piVar7;" (assignment_expression "pbVar6 = (byte *)*piVar7" identifier = (cast_expression "(byte *)*piVar7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (if_statement "if (base == 8) {\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }\n      else {\n        if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }" if (parenthesized_expression "(base == 8)" ( (binary_expression "base == 8" identifier == number_literal) )) (compound_statement "{\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }" { (while_statement "while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }\n        }" { (expression_statement "bVar1 = *str;" (assignment_expression "bVar1 = *str" identifier = (pointer_expression "*str" * identifier)) ;) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }" if (parenthesized_expression "(uVar4 - 0x20 < 0x5f)" ( (binary_expression "uVar4 - 0x20 < 0x5f" (binary_expression "uVar4 - 0x20" identifier - number_literal) < number_literal) )) (compound_statement "{\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }" { (expression_statement "*pbVar6 = bVar1;" (assignment_expression "*pbVar6 = bVar1" (pointer_expression "*pbVar6" * identifier) = identifier) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "str = (char *)((byte *)str + 1);" (assignment_expression "str = (char *)((byte *)str + 1)" identifier = (cast_expression "(char *)((byte *)str + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)str + 1)" ( (binary_expression "(byte *)str + 1" (cast_expression "(byte *)str" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }" else (compound_statement "{\n            *pbVar6 = escape;\n            pbVar6[1] = (bVar1 >> 6) + 0x30;\n            pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar6[3] = (bVar1 & 7) + 0x30;\n            pbVar6 = pbVar6 + 4;\n            str = (char *)((byte *)str + 1);\n          }" { (expression_statement "*pbVar6 = escape;" (assignment_expression "*pbVar6 = escape" (pointer_expression "*pbVar6" * identifier) = identifier) ;) (expression_statement "pbVar6[1] = (bVar1 >> 6) + 0x30;" (assignment_expression "pbVar6[1] = (bVar1 >> 6) + 0x30" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) = (binary_expression "(bVar1 >> 6) + 0x30" (parenthesized_expression "(bVar1 >> 6)" ( (binary_expression "bVar1 >> 6" identifier >> number_literal) )) + number_literal)) ;) (expression_statement "pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;" (assignment_expression "pbVar6[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30" (subscript_expression "pbVar6[2]" identifier [ number_literal ]) = (binary_expression "(byte)((uVar4 << 0x1a) >> 0x1d) + 0x30" (call_expression "(byte)((uVar4 << 0x1a) >> 0x1d)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar4 << 0x1a) >> 0x1d)" ( (binary_expression "(uVar4 << 0x1a) >> 0x1d" (parenthesized_expression "(uVar4 << 0x1a)" ( (binary_expression "uVar4 << 0x1a" identifier << number_literal) )) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar6[3] = (bVar1 & 7) + 0x30;" (assignment_expression "pbVar6[3] = (bVar1 & 7) + 0x30" (subscript_expression "pbVar6[3]" identifier [ number_literal ]) = (binary_expression "(bVar1 & 7) + 0x30" (parenthesized_expression "(bVar1 & 7)" ( (binary_expression "bVar1 & 7" identifier & number_literal) )) + number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + 4;" (assignment_expression "pbVar6 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (expression_statement "str = (char *)((byte *)str + 1);" (assignment_expression "str = (char *)((byte *)str + 1)" identifier = (cast_expression "(char *)((byte *)str + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)str + 1)" ( (binary_expression "(byte *)str + 1" (cast_expression "(byte *)str" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) }))) })) }) (else_clause "else {\n        if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }" else (compound_statement "{\n        if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }\n        while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }\n      }" { (if_statement "if (base != 0x10) {\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }" if (parenthesized_expression "(base != 0x10)" ( (binary_expression "base != 0x10" identifier != number_literal) )) (compound_statement "{\n          pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();\n          return pcVar5;\n        }" { (expression_statement "pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)();" (assignment_expression "pcVar5 = (char *)(*(code *)PTR_abort_000b7ec0)()" identifier = (cast_expression "(char *)(*(code *)PTR_abort_000b7ec0)()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_abort_000b7ec0)()" (parenthesized_expression "(*(code *)PTR_abort_000b7ec0)" ( (pointer_expression "*(code *)PTR_abort_000b7ec0" * (cast_expression "(code *)PTR_abort_000b7ec0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (return_statement "return pcVar5;" return identifier ;) })) (while_statement "while( true ) {\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          bVar1 = *str;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }\n        }" { (expression_statement "bVar1 = *str;" (assignment_expression "bVar1 = *str" identifier = (pointer_expression "*str" * identifier)) ;) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar4 - 0x20 < 0x5f) {\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }\n          else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }" if (parenthesized_expression "(uVar4 - 0x20 < 0x5f)" ( (binary_expression "uVar4 - 0x20 < 0x5f" (binary_expression "uVar4 - 0x20" identifier - number_literal) < number_literal) )) (compound_statement "{\n            *pbVar6 = bVar1;\n            pbVar6 = pbVar6 + 1;\n            str = (char *)((byte *)str + 1);\n          }" { (expression_statement "*pbVar6 = bVar1;" (assignment_expression "*pbVar6 = bVar1" (pointer_expression "*pbVar6" * identifier) = identifier) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "str = (char *)((byte *)str + 1);" (assignment_expression "str = (char *)((byte *)str + 1)" identifier = (cast_expression "(char *)((byte *)str + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)str + 1)" ( (binary_expression "(byte *)str + 1" (cast_expression "(byte *)str" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }" else (compound_statement "{\n            *pbVar6 = escape;\n            pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar6 = pbVar6 + 3;\n            str = (char *)((byte *)str + 1);\n          }" { (expression_statement "*pbVar6 = escape;" (assignment_expression "*pbVar6 = escape" (pointer_expression "*pbVar6" * identifier) = identifier) ;) (expression_statement "pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70];" (assignment_expression "pbVar6[1] = puVar2[(bVar1 >> 4) - 0x6f70]" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) = (subscript_expression "puVar2[(bVar1 >> 4) - 0x6f70]" identifier [ (binary_expression "(bVar1 >> 4) - 0x6f70" (parenthesized_expression "(bVar1 >> 4)" ( (binary_expression "bVar1 >> 4" identifier >> number_literal) )) - number_literal) ])) ;) (expression_statement "pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70];" (assignment_expression "pbVar6[2] = puVar2[(uVar4 & 0xf) - 0x6f70]" (subscript_expression "pbVar6[2]" identifier [ number_literal ]) = (subscript_expression "puVar2[(uVar4 & 0xf) - 0x6f70]" identifier [ (binary_expression "(uVar4 & 0xf) - 0x6f70" (parenthesized_expression "(uVar4 & 0xf)" ( (binary_expression "uVar4 & 0xf" identifier & number_literal) )) - number_literal) ])) ;) (expression_statement "pbVar6 = pbVar6 + 3;" (assignment_expression "pbVar6 = pbVar6 + 3" identifier = (binary_expression "pbVar6 + 3" identifier + number_literal)) ;) (expression_statement "str = (char *)((byte *)str + 1);" (assignment_expression "str = (char *)((byte *)str + 1)" identifier = (cast_expression "(char *)((byte *)str + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)str + 1)" ( (binary_expression "(byte *)str + 1" (cast_expression "(byte *)str" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) }))) })) }))) (expression_statement "*pbVar6 = 0;" (assignment_expression "*pbVar6 = 0" (pointer_expression "*pbVar6" * identifier) = number_literal) ;) (expression_statement "*(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;" (assignment_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" * (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" ( (binary_expression "PTR_DAT_000b7720 + -0x5f70" identifier + number_literal) )))) = (binary_expression "(*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3" (parenthesized_expression "(*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1)" ( (binary_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" * (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" ( (binary_expression "PTR_DAT_000b7720 + -0x5f70" identifier + number_literal) )))) + number_literal) )) % number_literal)) ;) (expression_statement "str = (char *)*piVar7;" (assignment_expression "str = (char *)*piVar7" identifier = (cast_expression "(char *)*piVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) })) })) (return_statement "return str;" return identifier ;) })))
(translation_unit "byte * FUN_0004485c(byte *param_1,byte param_2,int param_3)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int *piVar6;\n  int iVar7;\n  \n  iVar3 = (int)(char)*param_1;\n  if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }\n  return param_1;\n}\n\n" (function_definition "byte * FUN_0004485c(byte *param_1,byte param_2,int param_3)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int *piVar6;\n  int iVar7;\n  \n  iVar3 = (int)(char)*param_1;\n  if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }\n  return param_1;\n}" type_identifier (pointer_declarator "* FUN_0004485c(byte *param_1,byte param_2,int param_3)" * (function_declarator "FUN_0004485c(byte *param_1,byte param_2,int param_3)" identifier (parameter_list "(byte *param_1,byte param_2,int param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) )))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int *piVar6;\n  int iVar7;\n  \n  iVar3 = (int)(char)*param_1;\n  if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }\n  return param_1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (expression_statement "iVar3 = (int)(char)*param_1;" (assignment_expression "iVar3 = (int)(char)*param_1" identifier = (cast_expression "(int)(char)*param_1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_1" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_1" * identifier)))) ;) (if_statement "if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "pbVar5 = param_1;" (assignment_expression "pbVar5 = param_1" identifier = identifier) ;) (do_statement "do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);" do (compound_statement "{\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    }" { (if_statement "if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }" if (parenthesized_expression "(0x5e < iVar3 - 0x20U)" ( (binary_expression "0x5e < iVar3 - 0x20U" number_literal < (binary_expression "iVar3 - 0x20U" identifier - number_literal)) )) (compound_statement "{\n        iVar7 = iVar7 + 1;\n      }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = (int)(char)*pbVar5;" (assignment_expression "iVar3 = (int)(char)*pbVar5" identifier = (cast_expression "(int)(char)*pbVar5" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar5" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar5" * identifier)))) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) (if_statement "if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }" { (expression_statement "piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);" (assignment_expression "piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" identifier = (cast_expression "(int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" ( (binary_expression "PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68" (binary_expression "PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8" identifier + (binary_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) * 8" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" * (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" ( (binary_expression "PTR_DAT_000b7720 + -0x5f70" identifier + number_literal) )))) * number_literal)) + number_literal) )))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1)" identifier = (call_expression "(*(code *)PTR_strlen_000b7c94)(param_1)" (parenthesized_expression "(*(code *)PTR_strlen_000b7c94)" ( (pointer_expression "*(code *)PTR_strlen_000b7c94" * (cast_expression "(code *)PTR_strlen_000b7c94" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }" if (parenthesized_expression "(param_3 == 8)" ( (binary_expression "param_3 == 8" identifier == number_literal) )) (compound_statement "{\n        iVar7 = iVar7 * 3;\n      }" { (expression_statement "iVar7 = iVar7 * 3;" (assignment_expression "iVar7 = iVar7 * 3" identifier = (binary_expression "iVar7 * 3" identifier * number_literal)) ;) }) (else_clause "else {\n        iVar7 = iVar7 << 1;\n      }" else (compound_statement "{\n        iVar7 = iVar7 << 1;\n      }" { (expression_statement "iVar7 = iVar7 << 1;" (assignment_expression "iVar7 = iVar7 << 1" identifier = (binary_expression "iVar7 << 1" identifier << number_literal)) ;) }))) (expression_statement "iVar7 = iVar3 + 1 + iVar7;" (assignment_expression "iVar7 = iVar3 + 1 + iVar7" identifier = (binary_expression "iVar3 + 1 + iVar7" (binary_expression "iVar3 + 1" identifier + number_literal) + identifier)) ;) (if_statement "if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }" if (parenthesized_expression "((*piVar6 == 0) || (piVar6[1] < iVar7))" ( (binary_expression "(*piVar6 == 0) || (piVar6[1] < iVar7)" (parenthesized_expression "(*piVar6 == 0)" ( (binary_expression "*piVar6 == 0" (pointer_expression "*piVar6" * identifier) == number_literal) )) || (parenthesized_expression "(piVar6[1] < iVar7)" ( (binary_expression "piVar6[1] < iVar7" (subscript_expression "piVar6[1]" identifier [ number_literal ]) < identifier) ))) )) (compound_statement "{\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }" { (expression_statement "iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);" (assignment_expression "iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7)" identifier = (call_expression "(*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7)" (parenthesized_expression "(*(code *)PTR_xrealloc_000b7740)" ( (pointer_expression "*(code *)PTR_xrealloc_000b7740" * (cast_expression "(code *)PTR_xrealloc_000b7740" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*piVar6,iVar7)" ( (pointer_expression "*piVar6" * identifier) , identifier )))) ;) (expression_statement "*piVar6 = iVar3;" (assignment_expression "*piVar6 = iVar3" (pointer_expression "*piVar6" * identifier) = identifier) ;) (expression_statement "piVar6[1] = iVar7;" (assignment_expression "piVar6[1] = iVar7" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "puVar2 = PTR_DAT_000b758c;" (assignment_expression "puVar2 = PTR_DAT_000b758c" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)*piVar6;" (assignment_expression "pbVar5 = (byte *)*piVar6" identifier = (cast_expression "(byte *)*piVar6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (if_statement "if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" if (parenthesized_expression "(param_3 == 8)" ( (binary_expression "param_3 == 8" identifier == number_literal) )) (compound_statement "{\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" { (while_statement "while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }" { (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }" if (parenthesized_expression "(uVar4 - 0x20 < 0x5f)" ( (binary_expression "uVar4 - 0x20 < 0x5f" (binary_expression "uVar4 - 0x20" identifier - number_literal) < number_literal) )) (compound_statement "{\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }" { (expression_statement "*pbVar5 = bVar1;" (assignment_expression "*pbVar5 = bVar1" (pointer_expression "*pbVar5" * identifier) = identifier) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }" else (compound_statement "{\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }" { (expression_statement "*pbVar5 = param_2;" (assignment_expression "*pbVar5 = param_2" (pointer_expression "*pbVar5" * identifier) = identifier) ;) (expression_statement "pbVar5[1] = (bVar1 >> 6) + 0x30;" (assignment_expression "pbVar5[1] = (bVar1 >> 6) + 0x30" (subscript_expression "pbVar5[1]" identifier [ number_literal ]) = (binary_expression "(bVar1 >> 6) + 0x30" (parenthesized_expression "(bVar1 >> 6)" ( (binary_expression "bVar1 >> 6" identifier >> number_literal) )) + number_literal)) ;) (expression_statement "pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;" (assignment_expression "pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) = (binary_expression "(byte)((uVar4 << 0x1a) >> 0x1d) + 0x30" (call_expression "(byte)((uVar4 << 0x1a) >> 0x1d)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar4 << 0x1a) >> 0x1d)" ( (binary_expression "(uVar4 << 0x1a) >> 0x1d" (parenthesized_expression "(uVar4 << 0x1a)" ( (binary_expression "uVar4 << 0x1a" identifier << number_literal) )) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar5[3] = (bVar1 & 7) + 0x30;" (assignment_expression "pbVar5[3] = (bVar1 & 7) + 0x30" (subscript_expression "pbVar5[3]" identifier [ number_literal ]) = (binary_expression "(bVar1 & 7) + 0x30" (parenthesized_expression "(bVar1 & 7)" ( (binary_expression "bVar1 & 7" identifier & number_literal) )) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 4;" (assignment_expression "pbVar5 = pbVar5 + 4" identifier = (binary_expression "pbVar5 + 4" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }))) })) }) (else_clause "else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" else (compound_statement "{\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" { (if_statement "if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }" if (parenthesized_expression "(param_3 != 0x10)" ( (binary_expression "param_3 != 0x10" identifier != number_literal) )) (compound_statement "{\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }" { (expression_statement "pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();" (assignment_expression "pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)()" identifier = (cast_expression "(byte *)(*(code *)PTR_abort_000b7ec0)()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_abort_000b7ec0)()" (parenthesized_expression "(*(code *)PTR_abort_000b7ec0)" ( (pointer_expression "*(code *)PTR_abort_000b7ec0" * (cast_expression "(code *)PTR_abort_000b7ec0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (return_statement "return pbVar5;" return identifier ;) })) (while_statement "while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }" { (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }" if (parenthesized_expression "(uVar4 - 0x20 < 0x5f)" ( (binary_expression "uVar4 - 0x20 < 0x5f" (binary_expression "uVar4 - 0x20" identifier - number_literal) < number_literal) )) (compound_statement "{\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }" { (expression_statement "*pbVar5 = bVar1;" (assignment_expression "*pbVar5 = bVar1" (pointer_expression "*pbVar5" * identifier) = identifier) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }" else (compound_statement "{\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }" { (expression_statement "*pbVar5 = param_2;" (assignment_expression "*pbVar5 = param_2" (pointer_expression "*pbVar5" * identifier) = identifier) ;) (expression_statement "pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];" (assignment_expression "pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70]" (subscript_expression "pbVar5[1]" identifier [ number_literal ]) = (subscript_expression "puVar2[(bVar1 >> 4) - 0x6f70]" identifier [ (binary_expression "(bVar1 >> 4) - 0x6f70" (parenthesized_expression "(bVar1 >> 4)" ( (binary_expression "bVar1 >> 4" identifier >> number_literal) )) - number_literal) ])) ;) (expression_statement "pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];" (assignment_expression "pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70]" (subscript_expression "pbVar5[2]" identifier [ number_literal ]) = (subscript_expression "puVar2[(uVar4 & 0xf) - 0x6f70]" identifier [ (binary_expression "(uVar4 & 0xf) - 0x6f70" (parenthesized_expression "(uVar4 & 0xf)" ( (binary_expression "uVar4 & 0xf" identifier & number_literal) )) - number_literal) ])) ;) (expression_statement "pbVar5 = pbVar5 + 3;" (assignment_expression "pbVar5 = pbVar5 + 3" identifier = (binary_expression "pbVar5 + 3" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) }))) })) }))) (expression_statement "*pbVar5 = 0;" (assignment_expression "*pbVar5 = 0" (pointer_expression "*pbVar5" * identifier) = number_literal) ;) (expression_statement "*(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;" (assignment_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" * (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" ( (binary_expression "PTR_DAT_000b7720 + -0x5f70" identifier + number_literal) )))) = (binary_expression "(*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3" (parenthesized_expression "(*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1)" ( (binary_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" * (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" ( (binary_expression "PTR_DAT_000b7720 + -0x5f70" identifier + number_literal) )))) + number_literal) )) % number_literal)) ;) (expression_statement "param_1 = (byte *)*piVar6;" (assignment_expression "param_1 = (byte *)*piVar6" identifier = (cast_expression "(byte *)*piVar6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) })) })) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * IDENT) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) ))) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) - LIT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) - LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )) % LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) })) (return_statement return IDENT ;) })))
(function_definition "byte * FUN_0004485c(byte *param_1,byte param_2,int param_3)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int *piVar6;\n  int iVar7;\n  \n  iVar3 = (int)(char)*param_1;\n  if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }\n  return param_1;\n}" (type_identifier "byte") (pointer_declarator "* FUN_0004485c(byte *param_1,byte param_2,int param_3)" (* "*") (function_declarator "FUN_0004485c(byte *param_1,byte param_2,int param_3)" (identifier "FUN_0004485c") (parameter_list "(byte *param_1,byte param_2,int param_3)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte param_2" (type_identifier "byte") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")")))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  int *piVar6;\n  int iVar7;\n  \n  iVar3 = (int)(char)*param_1;\n  if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }\n  return param_1;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (expression_statement "iVar3 = (int)(char)*param_1;" (assignment_expression "iVar3 = (int)(char)*param_1" (identifier "iVar3") (= "=") (cast_expression "(int)(char)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*param_1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))))) (; ";")) (if_statement "if (iVar3 != 0) {\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar7 = 0;\n    pbVar5 = param_1;\n    do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);\n    if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }\n  }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar5 = param_1;" (assignment_expression "pbVar5 = param_1" (identifier "pbVar5") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    } while (iVar3 != 0);" (do "do") (compound_statement "{\n      if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }\n      pbVar5 = pbVar5 + 1;\n      iVar3 = (int)(char)*pbVar5;\n    }" ({ "{") (if_statement "if (0x5e < iVar3 - 0x20U) {\n        iVar7 = iVar7 + 1;\n      }" (if "if") (parenthesized_expression "(0x5e < iVar3 - 0x20U)" (( "(") (binary_expression "0x5e < iVar3 - 0x20U" (number_literal "0x5e") (< "<") (binary_expression "iVar3 - 0x20U" (identifier "iVar3") (- "-") (number_literal "0x20U"))) () ")")) (compound_statement "{\n        iVar7 = iVar7 + 1;\n      }" ({ "{") (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = (int)(char)*pbVar5;" (assignment_expression "iVar3 = (int)(char)*pbVar5" (identifier "iVar3") (= "=") (cast_expression "(int)(char)*pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (iVar7 != 0) {\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);\n      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);\n      if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }\n      iVar7 = iVar3 + 1 + iVar7;\n      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }\n      puVar2 = PTR_DAT_000b758c;\n      pbVar5 = (byte *)*piVar6;\n      if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      *pbVar5 = 0;\n      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;\n      param_1 = (byte *)*piVar6;\n    }" ({ "{") (expression_statement "piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);" (assignment_expression "piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" (identifier "piVar6") (= "=") (cast_expression "(int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68)" (( "(") (binary_expression "PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68" (binary_expression "PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8" (identifier "PTR_DAT_000b7720") (+ "+") (binary_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) * 8" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" (* "*") (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" (( "(") (binary_expression "PTR_DAT_000b7720 + -0x5f70" (identifier "PTR_DAT_000b7720") (+ "+") (number_literal "-0x5f70")) () ")")))) (* "*") (number_literal "8"))) (+ "+") (number_literal "-0x5f68")) () ")")))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strlen_000b7c94)(param_1)" (parenthesized_expression "(*(code *)PTR_strlen_000b7c94)" (( "(") (pointer_expression "*(code *)PTR_strlen_000b7c94" (* "*") (cast_expression "(code *)PTR_strlen_000b7c94" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_000b7c94"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (param_3 == 8) {\n        iVar7 = iVar7 * 3;\n      }\n      else {\n        iVar7 = iVar7 << 1;\n      }" (if "if") (parenthesized_expression "(param_3 == 8)" (( "(") (binary_expression "param_3 == 8" (identifier "param_3") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n        iVar7 = iVar7 * 3;\n      }" ({ "{") (expression_statement "iVar7 = iVar7 * 3;" (assignment_expression "iVar7 = iVar7 * 3" (identifier "iVar7") (= "=") (binary_expression "iVar7 * 3" (identifier "iVar7") (* "*") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n        iVar7 = iVar7 << 1;\n      }" (else "else") (compound_statement "{\n        iVar7 = iVar7 << 1;\n      }" ({ "{") (expression_statement "iVar7 = iVar7 << 1;" (assignment_expression "iVar7 = iVar7 << 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 << 1" (identifier "iVar7") (<< "<<") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "iVar7 = iVar3 + 1 + iVar7;" (assignment_expression "iVar7 = iVar3 + 1 + iVar7" (identifier "iVar7") (= "=") (binary_expression "iVar3 + 1 + iVar7" (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1")) (+ "+") (identifier "iVar7"))) (; ";")) (if_statement "if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }" (if "if") (parenthesized_expression "((*piVar6 == 0) || (piVar6[1] < iVar7))" (( "(") (binary_expression "(*piVar6 == 0) || (piVar6[1] < iVar7)" (parenthesized_expression "(*piVar6 == 0)" (( "(") (binary_expression "*piVar6 == 0" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(piVar6[1] < iVar7)" (( "(") (binary_expression "piVar6[1] < iVar7" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (< "<") (identifier "iVar7")) () ")"))) () ")")) (compound_statement "{\n        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);\n        *piVar6 = iVar3;\n        piVar6[1] = iVar7;\n      }" ({ "{") (expression_statement "iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);" (assignment_expression "iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7)" (parenthesized_expression "(*(code *)PTR_xrealloc_000b7740)" (( "(") (pointer_expression "*(code *)PTR_xrealloc_000b7740" (* "*") (cast_expression "(code *)PTR_xrealloc_000b7740" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_xrealloc_000b7740"))) () ")")) (argument_list "(*piVar6,iVar7)" (( "(") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (, ",") (identifier "iVar7") () ")")))) (; ";")) (expression_statement "*piVar6 = iVar3;" (assignment_expression "*piVar6 = iVar3" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "piVar6[1] = iVar7;" (assignment_expression "piVar6[1] = iVar7" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (} "}"))) (expression_statement "puVar2 = PTR_DAT_000b758c;" (assignment_expression "puVar2 = PTR_DAT_000b758c" (identifier "puVar2") (= "=") (identifier "PTR_DAT_000b758c")) (; ";")) (expression_statement "pbVar5 = (byte *)*piVar6;" (assignment_expression "pbVar5 = (byte *)*piVar6" (identifier "pbVar5") (= "=") (cast_expression "(byte *)*piVar6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) (; ";")) (if_statement "if (param_3 == 8) {\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }\n      else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(param_3 == 8)" (( "(") (binary_expression "param_3 == 8" (identifier "param_3") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" ({ "{") (while_statement "while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }\n        }" ({ "{") (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" (identifier "bVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" (identifier "uVar4") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (if_statement "if (uVar4 == 0) break;" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }" (if "if") (parenthesized_expression "(uVar4 - 0x20 < 0x5f)" (( "(") (binary_expression "uVar4 - 0x20 < 0x5f" (binary_expression "uVar4 - 0x20" (identifier "uVar4") (- "-") (number_literal "0x20")) (< "<") (number_literal "0x5f")) () ")")) (compound_statement "{\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }" ({ "{") (expression_statement "*pbVar5 = bVar1;" (assignment_expression "*pbVar5 = bVar1" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (= "=") (identifier "bVar1")) (; ";")) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }" (else "else") (compound_statement "{\n            *pbVar5 = param_2;\n            pbVar5[1] = (bVar1 >> 6) + 0x30;\n            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;\n            pbVar5[3] = (bVar1 & 7) + 0x30;\n            pbVar5 = pbVar5 + 4;\n            param_1 = param_1 + 1;\n          }" ({ "{") (expression_statement "*pbVar5 = param_2;" (assignment_expression "*pbVar5 = param_2" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar5[1] = (bVar1 >> 6) + 0x30;" (assignment_expression "pbVar5[1] = (bVar1 >> 6) + 0x30" (subscript_expression "pbVar5[1]" (identifier "pbVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(bVar1 >> 6) + 0x30" (parenthesized_expression "(bVar1 >> 6)" (( "(") (binary_expression "bVar1 >> 6" (identifier "bVar1") (>> ">>") (number_literal "6")) () ")")) (+ "+") (number_literal "0x30"))) (; ";")) (expression_statement "pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;" (assignment_expression "pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30" (subscript_expression "pbVar5[2]" (identifier "pbVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(byte)((uVar4 << 0x1a) >> 0x1d) + 0x30" (call_expression "(byte)((uVar4 << 0x1a) >> 0x1d)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar4 << 0x1a) >> 0x1d)" (( "(") (binary_expression "(uVar4 << 0x1a) >> 0x1d" (parenthesized_expression "(uVar4 << 0x1a)" (( "(") (binary_expression "uVar4 << 0x1a" (identifier "uVar4") (<< "<<") (number_literal "0x1a")) () ")")) (>> ">>") (number_literal "0x1d")) () ")"))) (+ "+") (number_literal "0x30"))) (; ";")) (expression_statement "pbVar5[3] = (bVar1 & 7) + 0x30;" (assignment_expression "pbVar5[3] = (bVar1 & 7) + 0x30" (subscript_expression "pbVar5[3]" (identifier "pbVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "(bVar1 & 7) + 0x30" (parenthesized_expression "(bVar1 & 7)" (( "(") (binary_expression "bVar1 & 7" (identifier "bVar1") (& "&") (number_literal "7")) () ")")) (+ "+") (number_literal "0x30"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + 4;" (assignment_expression "pbVar5 = pbVar5 + 4" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 4" (identifier "pbVar5") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" (else "else") (compound_statement "{\n        if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }\n        while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }\n      }" ({ "{") (if_statement "if (param_3 != 0x10) {\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }" (if "if") (parenthesized_expression "(param_3 != 0x10)" (( "(") (binary_expression "param_3 != 0x10" (identifier "param_3") (!= "!=") (number_literal "0x10")) () ")")) (compound_statement "{\n          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();\n          return pbVar5;\n        }" ({ "{") (expression_statement "pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();" (assignment_expression "pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)()" (identifier "pbVar5") (= "=") (cast_expression "(byte *)(*(code *)PTR_abort_000b7ec0)()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_abort_000b7ec0)()" (parenthesized_expression "(*(code *)PTR_abort_000b7ec0)" (( "(") (pointer_expression "*(code *)PTR_abort_000b7ec0" (* "*") (cast_expression "(code *)PTR_abort_000b7ec0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_abort_000b7ec0"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return pbVar5;" (return "return") (identifier "pbVar5") (; ";")) (} "}"))) (while_statement "while( true ) {\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          bVar1 = *param_1;\n          uVar4 = (uint)bVar1;\n          if (uVar4 == 0) break;\n          if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }\n        }" ({ "{") (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" (identifier "bVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar4 = (uint)bVar1;" (assignment_expression "uVar4 = (uint)bVar1" (identifier "uVar4") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (if_statement "if (uVar4 == 0) break;" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (uVar4 - 0x20 < 0x5f) {\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }\n          else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }" (if "if") (parenthesized_expression "(uVar4 - 0x20 < 0x5f)" (( "(") (binary_expression "uVar4 - 0x20 < 0x5f" (binary_expression "uVar4 - 0x20" (identifier "uVar4") (- "-") (number_literal "0x20")) (< "<") (number_literal "0x5f")) () ")")) (compound_statement "{\n            *pbVar5 = bVar1;\n            pbVar5 = pbVar5 + 1;\n            param_1 = param_1 + 1;\n          }" ({ "{") (expression_statement "*pbVar5 = bVar1;" (assignment_expression "*pbVar5 = bVar1" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (= "=") (identifier "bVar1")) (; ";")) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }" (else "else") (compound_statement "{\n            *pbVar5 = param_2;\n            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];\n            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];\n            pbVar5 = pbVar5 + 3;\n            param_1 = param_1 + 1;\n          }" ({ "{") (expression_statement "*pbVar5 = param_2;" (assignment_expression "*pbVar5 = param_2" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];" (assignment_expression "pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70]" (subscript_expression "pbVar5[1]" (identifier "pbVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar2[(bVar1 >> 4) - 0x6f70]" (identifier "puVar2") ([ "[") (binary_expression "(bVar1 >> 4) - 0x6f70" (parenthesized_expression "(bVar1 >> 4)" (( "(") (binary_expression "bVar1 >> 4" (identifier "bVar1") (>> ">>") (number_literal "4")) () ")")) (- "-") (number_literal "0x6f70")) (] "]"))) (; ";")) (expression_statement "pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];" (assignment_expression "pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70]" (subscript_expression "pbVar5[2]" (identifier "pbVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar2[(uVar4 & 0xf) - 0x6f70]" (identifier "puVar2") ([ "[") (binary_expression "(uVar4 & 0xf) - 0x6f70" (parenthesized_expression "(uVar4 & 0xf)" (( "(") (binary_expression "uVar4 & 0xf" (identifier "uVar4") (& "&") (number_literal "0xf")) () ")")) (- "-") (number_literal "0x6f70")) (] "]"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + 3;" (assignment_expression "pbVar5 = pbVar5 + 3" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 3" (identifier "pbVar5") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}"))) (} "}")))) (expression_statement "*pbVar5 = 0;" (assignment_expression "*pbVar5 = 0" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;" (assignment_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" (* "*") (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" (( "(") (binary_expression "PTR_DAT_000b7720 + -0x5f70" (identifier "PTR_DAT_000b7720") (+ "+") (number_literal "-0x5f70")) () ")")))) (= "=") (binary_expression "(*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3" (parenthesized_expression "(*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1)" (( "(") (binary_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1" (pointer_expression "*(int *)(PTR_DAT_000b7720 + -0x5f70)" (* "*") (cast_expression "(int *)(PTR_DAT_000b7720 + -0x5f70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000b7720 + -0x5f70)" (( "(") (binary_expression "PTR_DAT_000b7720 + -0x5f70" (identifier "PTR_DAT_000b7720") (+ "+") (number_literal "-0x5f70")) () ")")))) (+ "+") (number_literal "1")) () ")")) (% "%") (number_literal "3"))) (; ";")) (expression_statement "param_1 = (byte *)*piVar6;" (assignment_expression "param_1 = (byte *)*piVar6" (identifier "param_1") (= "=") (cast_expression "(byte *)*piVar6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) (; ";")) (} "}"))) (} "}"))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) condition: (parenthesized_expression (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (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))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (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 (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_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: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 (pointer_expression argument: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (identifier) right: (number_literal)))))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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))))) (return_statement (identifier)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (identifier) right: (number_literal)))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_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: (binary_expression left: (parenthesized_expression (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))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (return_statement (identifier)))))

byte * MASKED(byte *param_1,byte param_2,int param_3)

{
  byte bVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  byte *pbVar5;
  int *piVar6;
  int iVar7;
  
  iVar3 = (int)(char)*param_1;
  if (iVar3 != 0) {
    iVar7 = 0;
    pbVar5 = param_1;
    do {
      if (0x5e < iVar3 - 0x20U) {
        iVar7 = iVar7 + 1;
      }
      pbVar5 = pbVar5 + 1;
      iVar3 = (int)(char)*pbVar5;
    } while (iVar3 != 0);
    if (iVar7 != 0) {
      piVar6 = (int *)(PTR_DAT_000b7720 + *(int *)(PTR_DAT_000b7720 + -0x5f70) * 8 + -0x5f68);
      iVar3 = (*(code *)PTR_strlen_000b7c94)(param_1);
      if (param_3 == 8) {
        iVar7 = iVar7 * 3;
      }
      else {
        iVar7 = iVar7 << 1;
      }
      iVar7 = iVar3 + 1 + iVar7;
      if ((*piVar6 == 0) || (piVar6[1] < iVar7)) {
        iVar3 = (*(code *)PTR_xrealloc_000b7740)(*piVar6,iVar7);
        *piVar6 = iVar3;
        piVar6[1] = iVar7;
      }
      puVar2 = PTR_DAT_000b758c;
      pbVar5 = (byte *)*piVar6;
      if (param_3 == 8) {
        while( true ) {
          bVar1 = *param_1;
          uVar4 = (uint)bVar1;
          if (uVar4 == 0) break;
          if (uVar4 - 0x20 < 0x5f) {
            *pbVar5 = bVar1;
            pbVar5 = pbVar5 + 1;
            param_1 = param_1 + 1;
          }
          else {
            *pbVar5 = param_2;
            pbVar5[1] = (bVar1 >> 6) + 0x30;
            pbVar5[2] = (byte)((uVar4 << 0x1a) >> 0x1d) + 0x30;
            pbVar5[3] = (bVar1 & 7) + 0x30;
            pbVar5 = pbVar5 + 4;
            param_1 = param_1 + 1;
          }
        }
      }
      else {
        if (param_3 != 0x10) {
          pbVar5 = (byte *)(*(code *)PTR_abort_000b7ec0)();
          return pbVar5;
        }
        while( true ) {
          bVar1 = *param_1;
          uVar4 = (uint)bVar1;
          if (uVar4 == 0) break;
          if (uVar4 - 0x20 < 0x5f) {
            *pbVar5 = bVar1;
            pbVar5 = pbVar5 + 1;
            param_1 = param_1 + 1;
          }
          else {
            *pbVar5 = param_2;
            pbVar5[1] = puVar2[(bVar1 >> 4) - 0x6f70];
            pbVar5[2] = puVar2[(uVar4 & 0xf) - 0x6f70];
            pbVar5 = pbVar5 + 3;
            param_1 = param_1 + 1;
          }
        }
      }
      *pbVar5 = 0;
      *(int *)(PTR_DAT_000b7720 + -0x5f70) = (*(int *)(PTR_DAT_000b7720 + -0x5f70) + 1) % 3;
      param_1 = (byte *)*piVar6;
    }
  }
  return param_1;
}

