
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* wchar_t* std::__add_grouping<wchar_t>(wchar_t*, wchar_t, char const*, unsigned int, wchar_t
   const*, wchar_t const*) */

wchar_t * std::__add_grouping<wchar_t>
                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,
                    wchar_t *param_6)

{
  wchar_t *pwVar1;
  wchar_t *pwVar3;
  undefined2 in_register_00000014;
  int iVar4;
  uint uVar5;
  char *pcVar6;
  int iVar7;
  uint uVar8;
  wchar_t *pwVar2;
  
  iVar7 = 0;
  uVar8 = 0;
  iVar4 = (int)*param_3;
  while (iVar4 < (int)param_6 - (int)param_5 >> 2) {
    while( true ) {
      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;
      param_6 = param_6 + iVar4 * -2;
      if (param_4 - 1 <= uVar8) break;
      uVar8 = uVar8 + 1;
      iVar4 = (int)param_3[uVar8];
      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;
    }
    iVar7 = iVar7 + 1;
  }
LAB_00324c38:
  pwVar1 = param_5;
  pwVar3 = param_1;
  if (param_6 != param_5) {
    do {
      pwVar2 = pwVar1 + 2;
      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;
      pwVar1 = pwVar2;
      pwVar3 = pwVar3 + 2;
    } while (param_6 != pwVar2);
    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;
    param_5 = param_5 + iVar4 * 2;
    param_1 = param_1 + iVar4 * 2;
  }
  while (iVar7 = iVar7 + -1, iVar7 != -1) {
    while( true ) {
      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);
      param_1 = param_1 + 2;
      if (param_3[uVar8] < 1) break;
      uVar5 = (int)param_3[uVar8] - 1;
      pwVar1 = param_5;
      pwVar3 = param_1;
      do {
        pwVar2 = pwVar1 + 2;
        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;
        pwVar1 = pwVar2;
        pwVar3 = pwVar3 + 2;
      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);
      iVar4 = (char)uVar5 + 1;
      iVar7 = iVar7 + -1;
      param_5 = param_5 + iVar4 * 2;
      param_1 = param_1 + iVar4 * 2;
      if (iVar7 == -1) goto LAB_00324ce8;
    }
  }
LAB_00324ce8:
  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {
    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);
    param_1 = param_1 + 2;
    if (0 < *pcVar6) {
      uVar8 = (int)*pcVar6 - 1;
      pwVar1 = param_5;
      pwVar3 = param_1;
      do {
        pwVar2 = pwVar1 + 2;
        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;
        pwVar1 = pwVar2;
        pwVar3 = pwVar3 + 2;
      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);
      iVar4 = (char)uVar8 + 1;
      param_5 = param_5 + iVar4 * 2;
      param_1 = param_1 + iVar4 * 2;
    }
  }
  return param_1;
}



/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* wchar_t* std::__add_grouping<wchar_t>(wchar_t*, wchar_t, char const*, unsigned int, wchar_t
   const*, wchar_t const*) */

wchar_t * std::__add_grouping<wchar_t>
                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,
                    wchar_t *param_6)

{
  wchar_t *pwVar1;
  wchar_t *pwVar3;
  undefined2 in_register_00000014;
  int iVar4;
  uint uVar5;
  char *pcVar6;
  int iVar7;
  uint uVar8;
  wchar_t *pwVar2;
  
  iVar7 = 0;
  uVar8 = 0;
  iVar4 = (int)*param_3;
  while (iVar4 < (int)param_6 - (int)param_5 >> 2) {
    while( true ) {
      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;
      param_6 = param_6 + iVar4 * -2;
      if (param_4 - 1 <= uVar8) break;
      uVar8 = uVar8 + 1;
      iVar4 = (int)param_3[uVar8];
      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;
    }
    iVar7 = iVar7 + 1;
  }
LAB_00324c38:
  pwVar1 = param_5;
  pwVar3 = param_1;
  if (param_6 != param_5) {
    do {
      pwVar2 = pwVar1 + 2;
      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;
      pwVar1 = pwVar2;
      pwVar3 = pwVar3 + 2;
    } while (param_6 != pwVar2);
    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;
    param_5 = param_5 + iVar4 * 2;
    param_1 = param_1 + iVar4 * 2;
  }
  while (iVar7 = iVar7 + -1, iVar7 != -1) {
    while( true ) {
      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);
      param_1 = param_1 + 2;
      if (param_3[uVar8] < 1) break;
      uVar5 = (int)param_3[uVar8] - 1;
      pwVar1 = param_5;
      pwVar3 = param_1;
      do {
        pwVar2 = pwVar1 + 2;
        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;
        pwVar1 = pwVar2;
        pwVar3 = pwVar3 + 2;
      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);
      iVar4 = (char)uVar5 + 1;
      iVar7 = iVar7 + -1;
      param_5 = param_5 + iVar4 * 2;
      param_1 = param_1 + iVar4 * 2;
      if (iVar7 == -1) goto LAB_00324ce8;
    }
  }
LAB_00324ce8:
  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {
    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);
    param_1 = param_1 + 2;
    if (0 < *pcVar6) {
      uVar8 = (int)*pcVar6 - 1;
      pwVar1 = param_5;
      pwVar3 = param_1;
      do {
        pwVar2 = pwVar1 + 2;
        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;
        pwVar1 = pwVar2;
        pwVar3 = pwVar3 + 2;
      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);
      iVar4 = (char)uVar8 + 1;
      param_5 = param_5 + iVar4 * 2;
      param_1 = param_1 + iVar4 * 2;
    }
  }
  return param_1;
}


lw t1,0x10(sp)
or t3,zero,zero
lw t0,0x14(sp)
or t4,zero,zero
lb t2,0x0(a2)
addiu a3,a3,-0x1
subu v1,t0,t1
addiu v0,t2,-0x1
sra v1,v1,0x2
andi v0,v0,0xff
slt v1,t2,v1
sll t5,t2,0x2
beq v1,zero,0x00324c38
_sltiu v0,v0,0x7e
beq v0,zero,0x00324c38
_sltu v1,t4,a3
beq v1,zero,0x00324d64
_subu t0,t0,t5
addiu t4,t4,0x1
subu v1,t0,t1
addu v0,a2,t4
sra v1,v1,0x2
lb t2,0x0(v0)
addiu v0,t2,-0x1
slt v1,t2,v1
andi v0,v0,0xff
sll t5,t2,0x2
bne v1,zero,0x00324bfc
_sltiu v0,v0,0x7e
beq t0,t1,0x00324c78
_or v0,a0,zero
or v0,t1,zero
or v1,a0,zero
addiu v0,v0,0x4
lw a3,-0x4(v0)
addiu v1,v1,0x4
bne t0,v0,0x00324c48
_sw a3,-0x4(v1)
subu v0,t0,t1
addiu v0,v0,-0x4
srl v0,v0,0x2
addiu v0,v0,0x1
sll v0,v0,0x2
addu t1,t1,v0
addu v0,a0,v0
li t5,-0x1
addu t6,a2,t4
addiu t3,t3,-0x1
beq t3,t5,0x00324ce8
_nop
sw a1,0x0(v0)
lb v1,0x0(t6)
blez v1,0x00324c80
_addiu v0,v0,0x4
addiu t2,v1,-0x1
or a0,v0,zero
andi t0,t2,0xff
addiu t0,t0,0x1
or v1,t1,zero
sll t0,t0,0x2
addu t0,t1,t0
addiu v1,v1,0x4
lw a3,-0x4(v1)
addiu a0,a0,0x4
bne v1,t0,0x00324cb8
_sw a3,-0x4(a0)
seb v1,t2
addiu v1,v1,0x1
addiu t3,t3,-0x1
sll v1,v1,0x2
addu t1,t1,v1
bne t3,t5,0x00324c8c
_addu v0,v0,v1
addiu t2,t4,-0x1
addiu t3,a2,-0x1
addu t2,a2,t2
beq t2,t3,0x00324d5c
_nop
sw a1,0x0(v0)
lb v1,0x0(t2)
blez v1,0x00324d50
_addiu v0,v0,0x4
addiu t0,v1,-0x1
or a0,v0,zero
andi a3,t0,0xff
addiu a3,a3,0x1
or v1,t1,zero
sll a3,a3,0x2
addu a3,t1,a3
addiu v1,v1,0x4
lw a2,-0x4(v1)
addiu a0,a0,0x4
bne v1,a3,0x00324d28
_sw a2,-0x4(a0)
seb v1,t0
addiu v1,v1,0x1
sll v1,v1,0x2
addu t1,t1,v1
addu v0,v0,v1
addiu t2,t2,-0x1
bne t2,t3,0x00324cfc
_nop
jr ra
_nop
b 0x00324bdc
_addiu t3,t3,0x1
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* wchar_t* std::__add_grouping<wchar_t>(wchar_t*, wchar_t, char const*, unsigned int, wchar_t\n   const*, wchar_t const*) */\n\nwchar_t * std::__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar3;\n  undefined2 in_register_00000014;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint uVar8;\n  wchar_t *pwVar2;\n  \n  iVar7 = 0;\n  uVar8 = 0;\n  iVar4 = (int)*param_3;\n  while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }\nLAB_00324c38:\n  pwVar1 = param_5;\n  pwVar3 = param_1;\n  if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }\n  while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }\nLAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }\n  return param_1;\n}\n\n" comment comment (ERROR "wchar_t * std::__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" (binary_expression "wchar_t * std" identifier * identifier) : : (binary_expression "__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" (binary_expression "__add_grouping<wchar_t" identifier < identifier) > (parenthesized_expression "(wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" ( (comma_expression "wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "wchar_t *param_1" identifier * identifier) , (ERROR "wchar_t" identifier) (comma_expression "param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" identifier , (comma_expression "char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "char *param_3" identifier * identifier) , (ERROR "uint" identifier) (comma_expression "param_4,wchar_t *param_5,\n                    wchar_t *param_6" identifier , (comma_expression "wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "wchar_t *param_5" identifier * identifier) , (binary_expression "wchar_t *param_6" identifier * identifier)))))) )))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar3;\n  undefined2 in_register_00000014;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint uVar8;\n  wchar_t *pwVar2;\n  \n  iVar7 = 0;\n  uVar8 = 0;\n  iVar4 = (int)*param_3;\n  while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }\nLAB_00324c38:\n  pwVar1 = param_5;\n  pwVar3 = param_1;\n  if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }\n  while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }\nLAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }\n  return param_1;\n}" { (declaration "wchar_t *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "wchar_t *pwVar3;" type_identifier (pointer_declarator "*pwVar3" * identifier) ;) (declaration "undefined2 in_register_00000014;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "wchar_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = (int)*param_3;" (assignment_expression "iVar4 = (int)*param_3" identifier = (cast_expression "(int)*param_3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_3" * identifier))) ;) (while_statement "while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }" while (parenthesized_expression "(iVar4 < (int)param_6 - (int)param_5 >> 2)" ( (binary_expression "iVar4 < (int)param_6 - (int)param_5 >> 2" identifier < (binary_expression "(int)param_6 - (int)param_5 >> 2" (binary_expression "(int)param_6 - (int)param_5" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) )) (compound_statement "{\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }" { (while_statement "while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }" { (if_statement "if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;" if (parenthesized_expression "(0x7d < (iVar4 - 1U & 0xff))" ( (binary_expression "0x7d < (iVar4 - 1U & 0xff)" number_literal < (parenthesized_expression "(iVar4 - 1U & 0xff)" ( (binary_expression "iVar4 - 1U & 0xff" (binary_expression "iVar4 - 1U" identifier - number_literal) & number_literal) ))) )) (goto_statement "goto LAB_00324c38;" goto statement_identifier ;)) (expression_statement "param_6 = param_6 + iVar4 * -2;" (assignment_expression "param_6 = param_6 + iVar4 * -2" identifier = (binary_expression "param_6 + iVar4 * -2" identifier + (binary_expression "iVar4 * -2" identifier * number_literal))) ;) (if_statement "if (param_4 - 1 <= uVar8) break;" if (parenthesized_expression "(param_4 - 1 <= uVar8)" ( (binary_expression "param_4 - 1 <= uVar8" (binary_expression "param_4 - 1" identifier - number_literal) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = (int)param_3[uVar8];" (assignment_expression "iVar4 = (int)param_3[uVar8]" identifier = (cast_expression "(int)param_3[uVar8]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_3[uVar8]" identifier [ identifier ]))) ;) (if_statement "if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;" if (parenthesized_expression "((int)param_6 - (int)param_5 >> 2 <= iVar4)" ( (binary_expression "(int)param_6 - (int)param_5 >> 2 <= iVar4" (binary_expression "(int)param_6 - (int)param_5 >> 2" (binary_expression "(int)param_6 - (int)param_5" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) <= identifier) )) (goto_statement "goto LAB_00324c38;" goto statement_identifier ;)) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) })) (labeled_statement "LAB_00324c38:\n  pwVar1 = param_5;" statement_identifier : (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" identifier = identifier) ;)) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" identifier = identifier) ;) (if_statement "if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }" if (parenthesized_expression "(param_6 != param_5)" ( (binary_expression "param_6 != param_5" identifier != identifier) )) (compound_statement "{\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }" { (do_statement "do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);" do (compound_statement "{\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    }" { (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" identifier = (binary_expression "pwVar1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" * (cast_expression "(undefined4 *)pwVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pwVar1" * (cast_expression "(undefined4 *)pwVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" identifier = identifier) ;) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" identifier = (binary_expression "pwVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_6 != pwVar2)" ( (binary_expression "param_6 != pwVar2" identifier != identifier) )) ;) (expression_statement "iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;" (assignment_expression "iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1" identifier = (binary_expression "((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1" (parenthesized_expression "((uint)((int)param_6 + (-4 - (int)param_5)) >> 2)" ( (binary_expression "(uint)((int)param_6 + (-4 - (int)param_5)) >> 2" (call_expression "(uint)((int)param_6 + (-4 - (int)param_5))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_6 + (-4 - (int)param_5))" ( (binary_expression "(int)param_6 + (-4 - (int)param_5)" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-4 - (int)param_5)" ( (binary_expression "-4 - (int)param_5" number_literal - (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" identifier = (binary_expression "param_5 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" identifier = (binary_expression "param_1 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) })) (while_statement "while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }" while (parenthesized_expression "(iVar7 = iVar7 + -1, iVar7 != -1)" ( (comma_expression "iVar7 = iVar7 + -1, iVar7 != -1" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) , (binary_expression "iVar7 != -1" identifier != number_literal)) )) (compound_statement "{\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }" { (while_statement "while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }" { (expression_statement "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2);" (assignment_expression "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2)" (pointer_expression "*(uint *)param_1" * (cast_expression "(uint *)param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT22(in_register_00000014,param_2)" identifier (argument_list "(in_register_00000014,param_2)" ( identifier , identifier )))) ;) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (if_statement "if (param_3[uVar8] < 1) break;" if (parenthesized_expression "(param_3[uVar8] < 1)" ( (binary_expression "param_3[uVar8] < 1" (subscript_expression "param_3[uVar8]" identifier [ identifier ]) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = (int)param_3[uVar8] - 1;" (assignment_expression "uVar5 = (int)param_3[uVar8] - 1" identifier = (binary_expression "(int)param_3[uVar8] - 1" (cast_expression "(int)param_3[uVar8]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_3[uVar8]" identifier [ identifier ])) - number_literal)) ;) (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" identifier = identifier) ;) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" identifier = identifier) ;) (do_statement "do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);" do (compound_statement "{\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      }" { (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" identifier = (binary_expression "pwVar1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" * (cast_expression "(undefined4 *)pwVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pwVar1" * (cast_expression "(undefined4 *)pwVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" identifier = identifier) ;) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" identifier = (binary_expression "pwVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2)" ( (binary_expression "pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2" identifier != (binary_expression "param_5 + ((uVar5 & 0xff) + 1) * 2" identifier + (binary_expression "((uVar5 & 0xff) + 1) * 2" (parenthesized_expression "((uVar5 & 0xff) + 1)" ( (binary_expression "(uVar5 & 0xff) + 1" (parenthesized_expression "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) )) + number_literal) )) * number_literal))) )) ;) (expression_statement "iVar4 = (char)uVar5 + 1;" (assignment_expression "iVar4 = (char)uVar5 + 1" identifier = (binary_expression "(char)uVar5 + 1" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" identifier = (binary_expression "param_5 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" identifier = (binary_expression "param_1 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (if_statement "if (iVar7 == -1) goto LAB_00324ce8;" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00324ce8;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" statement_identifier : (for_statement "for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" for ( (assignment_expression "pcVar6 = param_3 + (uVar8 - 1)" identifier = (binary_expression "param_3 + (uVar8 - 1)" identifier + (parenthesized_expression "(uVar8 - 1)" ( (binary_expression "uVar8 - 1" identifier - number_literal) )))) ; (binary_expression "pcVar6 != param_3 + -1" identifier != (binary_expression "param_3 + -1" identifier + number_literal)) ; (assignment_expression "pcVar6 = pcVar6 + -1" identifier = (binary_expression "pcVar6 + -1" identifier + number_literal)) ) (compound_statement "{\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" { (expression_statement "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2);" (assignment_expression "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2)" (pointer_expression "*(uint *)param_1" * (cast_expression "(uint *)param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT22(in_register_00000014,param_2)" identifier (argument_list "(in_register_00000014,param_2)" ( identifier , identifier )))) ;) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (if_statement "if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }" if (parenthesized_expression "(0 < *pcVar6)" ( (binary_expression "0 < *pcVar6" number_literal < (pointer_expression "*pcVar6" * identifier)) )) (compound_statement "{\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }" { (expression_statement "uVar8 = (int)*pcVar6 - 1;" (assignment_expression "uVar8 = (int)*pcVar6 - 1" identifier = (binary_expression "(int)*pcVar6 - 1" (cast_expression "(int)*pcVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar6" * identifier)) - number_literal)) ;) (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" identifier = identifier) ;) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" identifier = identifier) ;) (do_statement "do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);" do (compound_statement "{\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      }" { (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" identifier = (binary_expression "pwVar1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" * (cast_expression "(undefined4 *)pwVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pwVar1" * (cast_expression "(undefined4 *)pwVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" identifier = identifier) ;) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" identifier = (binary_expression "pwVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2)" ( (binary_expression "pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2" identifier != (binary_expression "param_5 + ((uVar8 & 0xff) + 1) * 2" identifier + (binary_expression "((uVar8 & 0xff) + 1) * 2" (parenthesized_expression "((uVar8 & 0xff) + 1)" ( (binary_expression "(uVar8 & 0xff) + 1" (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )) + number_literal) )) * number_literal))) )) ;) (expression_statement "iVar4 = (char)uVar8 + 1;" (assignment_expression "iVar4 = (char)uVar8 + 1" identifier = (binary_expression "(char)uVar8 + 1" (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" identifier = (binary_expression "param_5 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" identifier = (binary_expression "param_1 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) })) }))) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* wchar_t* std::__add_grouping<wchar_t>(wchar_t*, wchar_t, char const*, unsigned int, wchar_t\n   const*, wchar_t const*) */\n\nwchar_t * std::__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar3;\n  undefined2 in_register_00000014;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint uVar8;\n  wchar_t *pwVar2;\n  \n  iVar7 = 0;\n  uVar8 = 0;\n  iVar4 = (int)*param_3;\n  while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }\nLAB_00324c38:\n  pwVar1 = param_5;\n  pwVar3 = param_1;\n  if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }\n  while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }\nLAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }\n  return param_1;\n}\n\n" comment comment (ERROR "wchar_t * std::__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" (binary_expression "wchar_t * std" identifier * identifier) : : (binary_expression "__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" (binary_expression "__add_grouping<wchar_t" identifier < identifier) > (parenthesized_expression "(wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" ( (comma_expression "wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "wchar_t *param_1" identifier * identifier) , (ERROR "wchar_t" identifier) (comma_expression "param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" identifier , (comma_expression "char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "char *param_3" identifier * identifier) , (ERROR "uint" identifier) (comma_expression "param_4,wchar_t *param_5,\n                    wchar_t *param_6" identifier , (comma_expression "wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "wchar_t *param_5" identifier * identifier) , (binary_expression "wchar_t *param_6" identifier * identifier)))))) )))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar3;\n  undefined2 in_register_00000014;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint uVar8;\n  wchar_t *pwVar2;\n  \n  iVar7 = 0;\n  uVar8 = 0;\n  iVar4 = (int)*param_3;\n  while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }\nLAB_00324c38:\n  pwVar1 = param_5;\n  pwVar3 = param_1;\n  if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }\n  while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }\nLAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }\n  return param_1;\n}" { (declaration "wchar_t *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "wchar_t *pwVar3;" type_identifier (pointer_declarator "*pwVar3" * identifier) ;) (declaration "undefined2 in_register_00000014;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "wchar_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = (int)*param_3;" (assignment_expression "iVar4 = (int)*param_3" identifier = (cast_expression "(int)*param_3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_3" * identifier))) ;) (while_statement "while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }" while (parenthesized_expression "(iVar4 < (int)param_6 - (int)param_5 >> 2)" ( (binary_expression "iVar4 < (int)param_6 - (int)param_5 >> 2" identifier < (binary_expression "(int)param_6 - (int)param_5 >> 2" (binary_expression "(int)param_6 - (int)param_5" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) )) (compound_statement "{\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }" { (while_statement "while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }" { (if_statement "if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;" if (parenthesized_expression "(0x7d < (iVar4 - 1U & 0xff))" ( (binary_expression "0x7d < (iVar4 - 1U & 0xff)" number_literal < (parenthesized_expression "(iVar4 - 1U & 0xff)" ( (binary_expression "iVar4 - 1U & 0xff" (binary_expression "iVar4 - 1U" identifier - number_literal) & number_literal) ))) )) (goto_statement "goto LAB_00324c38;" goto statement_identifier ;)) (expression_statement "param_6 = param_6 + iVar4 * -2;" (assignment_expression "param_6 = param_6 + iVar4 * -2" identifier = (binary_expression "param_6 + iVar4 * -2" identifier + (binary_expression "iVar4 * -2" identifier * number_literal))) ;) (if_statement "if (param_4 - 1 <= uVar8) break;" if (parenthesized_expression "(param_4 - 1 <= uVar8)" ( (binary_expression "param_4 - 1 <= uVar8" (binary_expression "param_4 - 1" identifier - number_literal) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = (int)param_3[uVar8];" (assignment_expression "iVar4 = (int)param_3[uVar8]" identifier = (cast_expression "(int)param_3[uVar8]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_3[uVar8]" identifier [ identifier ]))) ;) (if_statement "if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;" if (parenthesized_expression "((int)param_6 - (int)param_5 >> 2 <= iVar4)" ( (binary_expression "(int)param_6 - (int)param_5 >> 2 <= iVar4" (binary_expression "(int)param_6 - (int)param_5 >> 2" (binary_expression "(int)param_6 - (int)param_5" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) <= identifier) )) (goto_statement "goto LAB_00324c38;" goto statement_identifier ;)) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) })) (labeled_statement "LAB_00324c38:\n  pwVar1 = param_5;" statement_identifier : (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" identifier = identifier) ;)) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" identifier = identifier) ;) (if_statement "if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }" if (parenthesized_expression "(param_6 != param_5)" ( (binary_expression "param_6 != param_5" identifier != identifier) )) (compound_statement "{\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }" { (do_statement "do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);" do (compound_statement "{\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    }" { (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" identifier = (binary_expression "pwVar1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" * (cast_expression "(undefined4 *)pwVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pwVar1" * (cast_expression "(undefined4 *)pwVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" identifier = identifier) ;) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" identifier = (binary_expression "pwVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_6 != pwVar2)" ( (binary_expression "param_6 != pwVar2" identifier != identifier) )) ;) (expression_statement "iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;" (assignment_expression "iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1" identifier = (binary_expression "((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1" (parenthesized_expression "((uint)((int)param_6 + (-4 - (int)param_5)) >> 2)" ( (binary_expression "(uint)((int)param_6 + (-4 - (int)param_5)) >> 2" (call_expression "(uint)((int)param_6 + (-4 - (int)param_5))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_6 + (-4 - (int)param_5))" ( (binary_expression "(int)param_6 + (-4 - (int)param_5)" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-4 - (int)param_5)" ( (binary_expression "-4 - (int)param_5" number_literal - (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" identifier = (binary_expression "param_5 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" identifier = (binary_expression "param_1 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) })) (while_statement "while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }" while (parenthesized_expression "(iVar7 = iVar7 + -1, iVar7 != -1)" ( (comma_expression "iVar7 = iVar7 + -1, iVar7 != -1" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) , (binary_expression "iVar7 != -1" identifier != number_literal)) )) (compound_statement "{\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }" { (while_statement "while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }" { (expression_statement "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2);" (assignment_expression "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2)" (pointer_expression "*(uint *)param_1" * (cast_expression "(uint *)param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT22(in_register_00000014,param_2)" identifier (argument_list "(in_register_00000014,param_2)" ( identifier , identifier )))) ;) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (if_statement "if (param_3[uVar8] < 1) break;" if (parenthesized_expression "(param_3[uVar8] < 1)" ( (binary_expression "param_3[uVar8] < 1" (subscript_expression "param_3[uVar8]" identifier [ identifier ]) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = (int)param_3[uVar8] - 1;" (assignment_expression "uVar5 = (int)param_3[uVar8] - 1" identifier = (binary_expression "(int)param_3[uVar8] - 1" (cast_expression "(int)param_3[uVar8]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_3[uVar8]" identifier [ identifier ])) - number_literal)) ;) (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" identifier = identifier) ;) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" identifier = identifier) ;) (do_statement "do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);" do (compound_statement "{\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      }" { (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" identifier = (binary_expression "pwVar1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" * (cast_expression "(undefined4 *)pwVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pwVar1" * (cast_expression "(undefined4 *)pwVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" identifier = identifier) ;) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" identifier = (binary_expression "pwVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2)" ( (binary_expression "pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2" identifier != (binary_expression "param_5 + ((uVar5 & 0xff) + 1) * 2" identifier + (binary_expression "((uVar5 & 0xff) + 1) * 2" (parenthesized_expression "((uVar5 & 0xff) + 1)" ( (binary_expression "(uVar5 & 0xff) + 1" (parenthesized_expression "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) )) + number_literal) )) * number_literal))) )) ;) (expression_statement "iVar4 = (char)uVar5 + 1;" (assignment_expression "iVar4 = (char)uVar5 + 1" identifier = (binary_expression "(char)uVar5 + 1" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" identifier = (binary_expression "param_5 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" identifier = (binary_expression "param_1 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (if_statement "if (iVar7 == -1) goto LAB_00324ce8;" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00324ce8;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" statement_identifier : (for_statement "for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" for ( (assignment_expression "pcVar6 = param_3 + (uVar8 - 1)" identifier = (binary_expression "param_3 + (uVar8 - 1)" identifier + (parenthesized_expression "(uVar8 - 1)" ( (binary_expression "uVar8 - 1" identifier - number_literal) )))) ; (binary_expression "pcVar6 != param_3 + -1" identifier != (binary_expression "param_3 + -1" identifier + number_literal)) ; (assignment_expression "pcVar6 = pcVar6 + -1" identifier = (binary_expression "pcVar6 + -1" identifier + number_literal)) ) (compound_statement "{\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" { (expression_statement "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2);" (assignment_expression "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2)" (pointer_expression "*(uint *)param_1" * (cast_expression "(uint *)param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT22(in_register_00000014,param_2)" identifier (argument_list "(in_register_00000014,param_2)" ( identifier , identifier )))) ;) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (if_statement "if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }" if (parenthesized_expression "(0 < *pcVar6)" ( (binary_expression "0 < *pcVar6" number_literal < (pointer_expression "*pcVar6" * identifier)) )) (compound_statement "{\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }" { (expression_statement "uVar8 = (int)*pcVar6 - 1;" (assignment_expression "uVar8 = (int)*pcVar6 - 1" identifier = (binary_expression "(int)*pcVar6 - 1" (cast_expression "(int)*pcVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar6" * identifier)) - number_literal)) ;) (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" identifier = identifier) ;) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" identifier = identifier) ;) (do_statement "do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);" do (compound_statement "{\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      }" { (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" identifier = (binary_expression "pwVar1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" * (cast_expression "(undefined4 *)pwVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pwVar1" * (cast_expression "(undefined4 *)pwVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" identifier = identifier) ;) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" identifier = (binary_expression "pwVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2)" ( (binary_expression "pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2" identifier != (binary_expression "param_5 + ((uVar8 & 0xff) + 1) * 2" identifier + (binary_expression "((uVar8 & 0xff) + 1) * 2" (parenthesized_expression "((uVar8 & 0xff) + 1)" ( (binary_expression "(uVar8 & 0xff) + 1" (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )) + number_literal) )) * number_literal))) )) ;) (expression_statement "iVar4 = (char)uVar8 + 1;" (assignment_expression "iVar4 = (char)uVar8 + 1" identifier = (binary_expression "(char)uVar8 + 1" (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" identifier = (binary_expression "param_5 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" identifier = (binary_expression "param_1 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) })) }))) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "wchar_t * std::__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)\n\n{\n  wchar_t *pwVar1;\n  wchar_t *pwVar3;\n  undefined2 in_register_00000014;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint uVar8;\n  wchar_t *pwVar2;\n  \n  iVar7 = 0;\n  uVar8 = 0;\n  iVar4 = (int)*param_3;\n  while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }\nLAB_00324c38:\n  pwVar1 = param_5;\n  pwVar3 = param_1;\n  if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }\n  while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }\nLAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }\n  return param_1;\n}\n\n" (ERROR "wchar_t * std::__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" (binary_expression "wchar_t * std" identifier * identifier) : : (binary_expression "__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" (binary_expression "__add_grouping<wchar_t" identifier < identifier) > (parenthesized_expression "(wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" ( (comma_expression "wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "wchar_t *param_1" identifier * identifier) , (ERROR "wchar_t" identifier) (comma_expression "param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" identifier , (comma_expression "char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "char *param_3" identifier * identifier) , (ERROR "uint" identifier) (comma_expression "param_4,wchar_t *param_5,\n                    wchar_t *param_6" identifier , (comma_expression "wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "wchar_t *param_5" identifier * identifier) , (binary_expression "wchar_t *param_6" identifier * identifier)))))) )))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar3;\n  undefined2 in_register_00000014;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint uVar8;\n  wchar_t *pwVar2;\n  \n  iVar7 = 0;\n  uVar8 = 0;\n  iVar4 = (int)*param_3;\n  while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }\nLAB_00324c38:\n  pwVar1 = param_5;\n  pwVar3 = param_1;\n  if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }\n  while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }\nLAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }\n  return param_1;\n}" { (declaration "wchar_t *pwVar1;" type_identifier (pointer_declarator "*pwVar1" * identifier) ;) (declaration "wchar_t *pwVar3;" type_identifier (pointer_declarator "*pwVar3" * identifier) ;) (declaration "undefined2 in_register_00000014;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "wchar_t *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = (int)*param_3;" (assignment_expression "iVar4 = (int)*param_3" identifier = (cast_expression "(int)*param_3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_3" * identifier))) ;) (while_statement "while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }" while (parenthesized_expression "(iVar4 < (int)param_6 - (int)param_5 >> 2)" ( (binary_expression "iVar4 < (int)param_6 - (int)param_5 >> 2" identifier < (binary_expression "(int)param_6 - (int)param_5 >> 2" (binary_expression "(int)param_6 - (int)param_5" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) )) (compound_statement "{\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }" { (while_statement "while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }" { (if_statement "if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;" if (parenthesized_expression "(0x7d < (iVar4 - 1U & 0xff))" ( (binary_expression "0x7d < (iVar4 - 1U & 0xff)" number_literal < (parenthesized_expression "(iVar4 - 1U & 0xff)" ( (binary_expression "iVar4 - 1U & 0xff" (binary_expression "iVar4 - 1U" identifier - number_literal) & number_literal) ))) )) (goto_statement "goto LAB_00324c38;" goto statement_identifier ;)) (expression_statement "param_6 = param_6 + iVar4 * -2;" (assignment_expression "param_6 = param_6 + iVar4 * -2" identifier = (binary_expression "param_6 + iVar4 * -2" identifier + (binary_expression "iVar4 * -2" identifier * number_literal))) ;) (if_statement "if (param_4 - 1 <= uVar8) break;" if (parenthesized_expression "(param_4 - 1 <= uVar8)" ( (binary_expression "param_4 - 1 <= uVar8" (binary_expression "param_4 - 1" identifier - number_literal) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = (int)param_3[uVar8];" (assignment_expression "iVar4 = (int)param_3[uVar8]" identifier = (cast_expression "(int)param_3[uVar8]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_3[uVar8]" identifier [ identifier ]))) ;) (if_statement "if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;" if (parenthesized_expression "((int)param_6 - (int)param_5 >> 2 <= iVar4)" ( (binary_expression "(int)param_6 - (int)param_5 >> 2 <= iVar4" (binary_expression "(int)param_6 - (int)param_5 >> 2" (binary_expression "(int)param_6 - (int)param_5" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) <= identifier) )) (goto_statement "goto LAB_00324c38;" goto statement_identifier ;)) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) })) (labeled_statement "LAB_00324c38:\n  pwVar1 = param_5;" statement_identifier : (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" identifier = identifier) ;)) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" identifier = identifier) ;) (if_statement "if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }" if (parenthesized_expression "(param_6 != param_5)" ( (binary_expression "param_6 != param_5" identifier != identifier) )) (compound_statement "{\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }" { (do_statement "do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);" do (compound_statement "{\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    }" { (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" identifier = (binary_expression "pwVar1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" * (cast_expression "(undefined4 *)pwVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pwVar1" * (cast_expression "(undefined4 *)pwVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" identifier = identifier) ;) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" identifier = (binary_expression "pwVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_6 != pwVar2)" ( (binary_expression "param_6 != pwVar2" identifier != identifier) )) ;) (expression_statement "iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;" (assignment_expression "iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1" identifier = (binary_expression "((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1" (parenthesized_expression "((uint)((int)param_6 + (-4 - (int)param_5)) >> 2)" ( (binary_expression "(uint)((int)param_6 + (-4 - (int)param_5)) >> 2" (call_expression "(uint)((int)param_6 + (-4 - (int)param_5))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_6 + (-4 - (int)param_5))" ( (binary_expression "(int)param_6 + (-4 - (int)param_5)" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-4 - (int)param_5)" ( (binary_expression "-4 - (int)param_5" number_literal - (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" identifier = (binary_expression "param_5 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" identifier = (binary_expression "param_1 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) })) (while_statement "while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }" while (parenthesized_expression "(iVar7 = iVar7 + -1, iVar7 != -1)" ( (comma_expression "iVar7 = iVar7 + -1, iVar7 != -1" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) , (binary_expression "iVar7 != -1" identifier != number_literal)) )) (compound_statement "{\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }" { (while_statement "while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }" { (expression_statement "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2);" (assignment_expression "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2)" (pointer_expression "*(uint *)param_1" * (cast_expression "(uint *)param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT22(in_register_00000014,param_2)" identifier (argument_list "(in_register_00000014,param_2)" ( identifier , identifier )))) ;) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (if_statement "if (param_3[uVar8] < 1) break;" if (parenthesized_expression "(param_3[uVar8] < 1)" ( (binary_expression "param_3[uVar8] < 1" (subscript_expression "param_3[uVar8]" identifier [ identifier ]) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = (int)param_3[uVar8] - 1;" (assignment_expression "uVar5 = (int)param_3[uVar8] - 1" identifier = (binary_expression "(int)param_3[uVar8] - 1" (cast_expression "(int)param_3[uVar8]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_3[uVar8]" identifier [ identifier ])) - number_literal)) ;) (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" identifier = identifier) ;) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" identifier = identifier) ;) (do_statement "do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);" do (compound_statement "{\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      }" { (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" identifier = (binary_expression "pwVar1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" * (cast_expression "(undefined4 *)pwVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pwVar1" * (cast_expression "(undefined4 *)pwVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" identifier = identifier) ;) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" identifier = (binary_expression "pwVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2)" ( (binary_expression "pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2" identifier != (binary_expression "param_5 + ((uVar5 & 0xff) + 1) * 2" identifier + (binary_expression "((uVar5 & 0xff) + 1) * 2" (parenthesized_expression "((uVar5 & 0xff) + 1)" ( (binary_expression "(uVar5 & 0xff) + 1" (parenthesized_expression "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) )) + number_literal) )) * number_literal))) )) ;) (expression_statement "iVar4 = (char)uVar5 + 1;" (assignment_expression "iVar4 = (char)uVar5 + 1" identifier = (binary_expression "(char)uVar5 + 1" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" identifier = (binary_expression "param_5 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" identifier = (binary_expression "param_1 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (if_statement "if (iVar7 == -1) goto LAB_00324ce8;" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00324ce8;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" statement_identifier : (for_statement "for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" for ( (assignment_expression "pcVar6 = param_3 + (uVar8 - 1)" identifier = (binary_expression "param_3 + (uVar8 - 1)" identifier + (parenthesized_expression "(uVar8 - 1)" ( (binary_expression "uVar8 - 1" identifier - number_literal) )))) ; (binary_expression "pcVar6 != param_3 + -1" identifier != (binary_expression "param_3 + -1" identifier + number_literal)) ; (assignment_expression "pcVar6 = pcVar6 + -1" identifier = (binary_expression "pcVar6 + -1" identifier + number_literal)) ) (compound_statement "{\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" { (expression_statement "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2);" (assignment_expression "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2)" (pointer_expression "*(uint *)param_1" * (cast_expression "(uint *)param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT22(in_register_00000014,param_2)" identifier (argument_list "(in_register_00000014,param_2)" ( identifier , identifier )))) ;) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (if_statement "if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }" if (parenthesized_expression "(0 < *pcVar6)" ( (binary_expression "0 < *pcVar6" number_literal < (pointer_expression "*pcVar6" * identifier)) )) (compound_statement "{\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }" { (expression_statement "uVar8 = (int)*pcVar6 - 1;" (assignment_expression "uVar8 = (int)*pcVar6 - 1" identifier = (binary_expression "(int)*pcVar6 - 1" (cast_expression "(int)*pcVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar6" * identifier)) - number_literal)) ;) (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" identifier = identifier) ;) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" identifier = identifier) ;) (do_statement "do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);" do (compound_statement "{\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      }" { (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" identifier = (binary_expression "pwVar1 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" * (cast_expression "(undefined4 *)pwVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pwVar1" * (cast_expression "(undefined4 *)pwVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" identifier = identifier) ;) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" identifier = (binary_expression "pwVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2)" ( (binary_expression "pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2" identifier != (binary_expression "param_5 + ((uVar8 & 0xff) + 1) * 2" identifier + (binary_expression "((uVar8 & 0xff) + 1) * 2" (parenthesized_expression "((uVar8 & 0xff) + 1)" ( (binary_expression "(uVar8 & 0xff) + 1" (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )) + number_literal) )) * number_literal))) )) ;) (expression_statement "iVar4 = (char)uVar8 + 1;" (assignment_expression "iVar4 = (char)uVar8 + 1" identifier = (binary_expression "(char)uVar8 + 1" (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" identifier = (binary_expression "param_5 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" identifier = (binary_expression "param_1 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) })) }))) (return_statement "return param_1;" return identifier ;) }))
(translation_unit (ERROR (binary_expression IDENT * IDENT) : : (binary_expression (binary_expression IDENT < IDENT) > (parenthesized_expression ( (comma_expression (binary_expression IDENT * IDENT) , (ERROR IDENT) (comma_expression IDENT , (comma_expression (binary_expression IDENT * IDENT) , (ERROR IDENT) (comma_expression IDENT , (comma_expression (binary_expression IDENT * IDENT) , (binary_expression IDENT * IDENT)))))) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ))) >> LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) })) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != LIT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])) - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT) )) * LIT))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) })) (labeled_statement statement_identifier : (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ; (binary_expression IDENT != (binary_expression IDENT + LIT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT) )) * LIT))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) })) }))) (return_statement return IDENT ;) }))
(ERROR "wchar_t * std::__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" (binary_expression "wchar_t * std" (identifier "wchar_t") (* "*") (identifier "std")) (: ":") (: ":") (binary_expression "__add_grouping<wchar_t>\n                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" (binary_expression "__add_grouping<wchar_t" (identifier "__add_grouping") (< "<") (identifier "wchar_t")) (> ">") (parenthesized_expression "(wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6)" (( "(") (comma_expression "wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "wchar_t *param_1" (identifier "wchar_t") (* "*") (identifier "param_1")) (, ",") (ERROR "wchar_t" (identifier "wchar_t")) (comma_expression "param_2,char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" (identifier "param_2") (, ",") (comma_expression "char *param_3,uint param_4,wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "char *param_3" (identifier "char") (* "*") (identifier "param_3")) (, ",") (ERROR "uint" (identifier "uint")) (comma_expression "param_4,wchar_t *param_5,\n                    wchar_t *param_6" (identifier "param_4") (, ",") (comma_expression "wchar_t *param_5,\n                    wchar_t *param_6" (binary_expression "wchar_t *param_5" (identifier "wchar_t") (* "*") (identifier "param_5")) (, ",") (binary_expression "wchar_t *param_6" (identifier "wchar_t") (* "*") (identifier "param_6"))))))) () ")")))) (compound_statement "{\n  wchar_t *pwVar1;\n  wchar_t *pwVar3;\n  undefined2 in_register_00000014;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint uVar8;\n  wchar_t *pwVar2;\n  \n  iVar7 = 0;\n  uVar8 = 0;\n  iVar4 = (int)*param_3;\n  while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }\nLAB_00324c38:\n  pwVar1 = param_5;\n  pwVar3 = param_1;\n  if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }\n  while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }\nLAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }\n  return param_1;\n}" ({ "{") (declaration "wchar_t *pwVar1;" (type_identifier "wchar_t") (pointer_declarator "*pwVar1" (* "*") (identifier "pwVar1")) (; ";")) (declaration "wchar_t *pwVar3;" (type_identifier "wchar_t") (pointer_declarator "*pwVar3" (* "*") (identifier "pwVar3")) (; ";")) (declaration "undefined2 in_register_00000014;" (type_identifier "undefined2") (identifier "in_register_00000014") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "wchar_t *pwVar2;" (type_identifier "wchar_t") (pointer_declarator "*pwVar2" (* "*") (identifier "pwVar2")) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = (int)*param_3;" (assignment_expression "iVar4 = (int)*param_3" (identifier "iVar4") (= "=") (cast_expression "(int)*param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (while_statement "while (iVar4 < (int)param_6 - (int)param_5 >> 2) {\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }" (while "while") (parenthesized_expression "(iVar4 < (int)param_6 - (int)param_5 >> 2)" (( "(") (binary_expression "iVar4 < (int)param_6 - (int)param_5 >> 2" (identifier "iVar4") (< "<") (binary_expression "(int)param_6 - (int)param_5 >> 2" (binary_expression "(int)param_6 - (int)param_5" (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) (- "-") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5"))) (>> ">>") (number_literal "2"))) () ")")) (compound_statement "{\n    while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }\n    iVar7 = iVar7 + 1;\n  }" ({ "{") (while_statement "while( true ) {\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;\n      param_6 = param_6 + iVar4 * -2;\n      if (param_4 - 1 <= uVar8) break;\n      uVar8 = uVar8 + 1;\n      iVar4 = (int)param_3[uVar8];\n      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;\n    }" ({ "{") (if_statement "if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;" (if "if") (parenthesized_expression "(0x7d < (iVar4 - 1U & 0xff))" (( "(") (binary_expression "0x7d < (iVar4 - 1U & 0xff)" (number_literal "0x7d") (< "<") (parenthesized_expression "(iVar4 - 1U & 0xff)" (( "(") (binary_expression "iVar4 - 1U & 0xff" (binary_expression "iVar4 - 1U" (identifier "iVar4") (- "-") (number_literal "1U")) (& "&") (number_literal "0xff")) () ")"))) () ")")) (goto_statement "goto LAB_00324c38;" (goto "goto") (statement_identifier "LAB_00324c38") (; ";"))) (expression_statement "param_6 = param_6 + iVar4 * -2;" (assignment_expression "param_6 = param_6 + iVar4 * -2" (identifier "param_6") (= "=") (binary_expression "param_6 + iVar4 * -2" (identifier "param_6") (+ "+") (binary_expression "iVar4 * -2" (identifier "iVar4") (* "*") (number_literal "-2")))) (; ";")) (if_statement "if (param_4 - 1 <= uVar8) break;" (if "if") (parenthesized_expression "(param_4 - 1 <= uVar8)" (( "(") (binary_expression "param_4 - 1 <= uVar8" (binary_expression "param_4 - 1" (identifier "param_4") (- "-") (number_literal "1")) (<= "<=") (identifier "uVar8")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = (int)param_3[uVar8];" (assignment_expression "iVar4 = (int)param_3[uVar8]" (identifier "iVar4") (= "=") (cast_expression "(int)param_3[uVar8]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_3[uVar8]" (identifier "param_3") ([ "[") (identifier "uVar8") (] "]")))) (; ";")) (if_statement "if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;" (if "if") (parenthesized_expression "((int)param_6 - (int)param_5 >> 2 <= iVar4)" (( "(") (binary_expression "(int)param_6 - (int)param_5 >> 2 <= iVar4" (binary_expression "(int)param_6 - (int)param_5 >> 2" (binary_expression "(int)param_6 - (int)param_5" (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) (- "-") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5"))) (>> ">>") (number_literal "2")) (<= "<=") (identifier "iVar4")) () ")")) (goto_statement "goto LAB_00324c38;" (goto "goto") (statement_identifier "LAB_00324c38") (; ";"))) (} "}"))) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (labeled_statement "LAB_00324c38:\n  pwVar1 = param_5;" (statement_identifier "LAB_00324c38") (: ":") (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" (identifier "pwVar1") (= "=") (identifier "param_5")) (; ";"))) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" (identifier "pwVar3") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_6 != param_5) {\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }" (if "if") (parenthesized_expression "(param_6 != param_5)" (( "(") (binary_expression "param_6 != param_5" (identifier "param_6") (!= "!=") (identifier "param_5")) () ")")) (compound_statement "{\n    do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);\n    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;\n    param_5 = param_5 + iVar4 * 2;\n    param_1 = param_1 + iVar4 * 2;\n  }" ({ "{") (do_statement "do {\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    } while (param_6 != pwVar2);" (do "do") (compound_statement "{\n      pwVar2 = pwVar1 + 2;\n      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n      pwVar1 = pwVar2;\n      pwVar3 = pwVar3 + 2;\n    }" ({ "{") (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" (identifier "pwVar2") (= "=") (binary_expression "pwVar1 + 2" (identifier "pwVar1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" (* "*") (cast_expression "(undefined4 *)pwVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar3"))) (= "=") (pointer_expression "*(undefined4 *)pwVar1" (* "*") (cast_expression "(undefined4 *)pwVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar1")))) (; ";")) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" (identifier "pwVar1") (= "=") (identifier "pwVar2")) (; ";")) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" (identifier "pwVar3") (= "=") (binary_expression "pwVar3 + 2" (identifier "pwVar3") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_6 != pwVar2)" (( "(") (binary_expression "param_6 != pwVar2" (identifier "param_6") (!= "!=") (identifier "pwVar2")) () ")")) (; ";")) (expression_statement "iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;" (assignment_expression "iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1" (identifier "iVar4") (= "=") (binary_expression "((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1" (parenthesized_expression "((uint)((int)param_6 + (-4 - (int)param_5)) >> 2)" (( "(") (binary_expression "(uint)((int)param_6 + (-4 - (int)param_5)) >> 2" (call_expression "(uint)((int)param_6 + (-4 - (int)param_5))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)param_6 + (-4 - (int)param_5))" (( "(") (binary_expression "(int)param_6 + (-4 - (int)param_5)" (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) (+ "+") (parenthesized_expression "(-4 - (int)param_5)" (( "(") (binary_expression "-4 - (int)param_5" (number_literal "-4") (- "-") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5"))) () ")"))) () ")"))) (>> ">>") (number_literal "2")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" (identifier "param_5") (= "=") (binary_expression "param_5 + iVar4 * 2" (identifier "param_5") (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2")))) (; ";")) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" (identifier "param_1") (= "=") (binary_expression "param_1 + iVar4 * 2" (identifier "param_1") (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2")))) (; ";")) (} "}"))) (while_statement "while (iVar7 = iVar7 + -1, iVar7 != -1) {\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }" (while "while") (parenthesized_expression "(iVar7 = iVar7 + -1, iVar7 != -1)" (( "(") (comma_expression "iVar7 = iVar7 + -1, iVar7 != -1" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar7 != -1" (identifier "iVar7") (!= "!=") (number_literal "-1"))) () ")")) (compound_statement "{\n    while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n      param_1 = param_1 + 2;\n      if (param_3[uVar8] < 1) break;\n      uVar5 = (int)param_3[uVar8] - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar5 + 1;\n      iVar7 = iVar7 + -1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n      if (iVar7 == -1) goto LAB_00324ce8;\n    }" ({ "{") (expression_statement "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2);" (assignment_expression "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2)" (pointer_expression "*(uint *)param_1" (* "*") (cast_expression "(uint *)param_1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (call_expression "CONCAT22(in_register_00000014,param_2)" (identifier "CONCAT22") (argument_list "(in_register_00000014,param_2)" (( "(") (identifier "in_register_00000014") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" (identifier "param_1") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (param_3[uVar8] < 1) break;" (if "if") (parenthesized_expression "(param_3[uVar8] < 1)" (( "(") (binary_expression "param_3[uVar8] < 1" (subscript_expression "param_3[uVar8]" (identifier "param_3") ([ "[") (identifier "uVar8") (] "]")) (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar5 = (int)param_3[uVar8] - 1;" (assignment_expression "uVar5 = (int)param_3[uVar8] - 1" (identifier "uVar5") (= "=") (binary_expression "(int)param_3[uVar8] - 1" (cast_expression "(int)param_3[uVar8]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_3[uVar8]" (identifier "param_3") ([ "[") (identifier "uVar8") (] "]"))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" (identifier "pwVar1") (= "=") (identifier "param_5")) (; ";")) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" (identifier "pwVar3") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);" (do "do") (compound_statement "{\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      }" ({ "{") (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" (identifier "pwVar2") (= "=") (binary_expression "pwVar1 + 2" (identifier "pwVar1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" (* "*") (cast_expression "(undefined4 *)pwVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar3"))) (= "=") (pointer_expression "*(undefined4 *)pwVar1" (* "*") (cast_expression "(undefined4 *)pwVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar1")))) (; ";")) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" (identifier "pwVar1") (= "=") (identifier "pwVar2")) (; ";")) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" (identifier "pwVar3") (= "=") (binary_expression "pwVar3 + 2" (identifier "pwVar3") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2)" (( "(") (binary_expression "pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2" (identifier "pwVar2") (!= "!=") (binary_expression "param_5 + ((uVar5 & 0xff) + 1) * 2" (identifier "param_5") (+ "+") (binary_expression "((uVar5 & 0xff) + 1) * 2" (parenthesized_expression "((uVar5 & 0xff) + 1)" (( "(") (binary_expression "(uVar5 & 0xff) + 1" (parenthesized_expression "(uVar5 & 0xff)" (( "(") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff")) () ")")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2")))) () ")")) (; ";")) (expression_statement "iVar4 = (char)uVar5 + 1;" (assignment_expression "iVar4 = (char)uVar5 + 1" (identifier "iVar4") (= "=") (binary_expression "(char)uVar5 + 1" (cast_expression "(char)uVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar5")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" (identifier "param_5") (= "=") (binary_expression "param_5 + iVar4 * 2" (identifier "param_5") (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2")))) (; ";")) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" (identifier "param_1") (= "=") (binary_expression "param_1 + iVar4 * 2" (identifier "param_1") (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2")))) (; ";")) (if_statement "if (iVar7 == -1) goto LAB_00324ce8;" (if "if") (parenthesized_expression "(iVar7 == -1)" (( "(") (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_00324ce8;" (goto "goto") (statement_identifier "LAB_00324ce8") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00324ce8:\n  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" (statement_identifier "LAB_00324ce8") (: ":") (for_statement "for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" (for "for") (( "(") (assignment_expression "pcVar6 = param_3 + (uVar8 - 1)" (identifier "pcVar6") (= "=") (binary_expression "param_3 + (uVar8 - 1)" (identifier "param_3") (+ "+") (parenthesized_expression "(uVar8 - 1)" (( "(") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1")) () ")")))) (; ";") (binary_expression "pcVar6 != param_3 + -1" (identifier "pcVar6") (!= "!=") (binary_expression "param_3 + -1" (identifier "param_3") (+ "+") (number_literal "-1"))) (; ";") (assignment_expression "pcVar6 = pcVar6 + -1" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + -1" (identifier "pcVar6") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);\n    param_1 = param_1 + 2;\n    if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }\n  }" ({ "{") (expression_statement "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2);" (assignment_expression "*(uint *)param_1 = CONCAT22(in_register_00000014,param_2)" (pointer_expression "*(uint *)param_1" (* "*") (cast_expression "(uint *)param_1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (call_expression "CONCAT22(in_register_00000014,param_2)" (identifier "CONCAT22") (argument_list "(in_register_00000014,param_2)" (( "(") (identifier "in_register_00000014") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "param_1 = param_1 + 2;" (assignment_expression "param_1 = param_1 + 2" (identifier "param_1") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (0 < *pcVar6) {\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }" (if "if") (parenthesized_expression "(0 < *pcVar6)" (( "(") (binary_expression "0 < *pcVar6" (number_literal "0") (< "<") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6"))) () ")")) (compound_statement "{\n      uVar8 = (int)*pcVar6 - 1;\n      pwVar1 = param_5;\n      pwVar3 = param_1;\n      do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);\n      iVar4 = (char)uVar8 + 1;\n      param_5 = param_5 + iVar4 * 2;\n      param_1 = param_1 + iVar4 * 2;\n    }" ({ "{") (expression_statement "uVar8 = (int)*pcVar6 - 1;" (assignment_expression "uVar8 = (int)*pcVar6 - 1" (identifier "uVar8") (= "=") (binary_expression "(int)*pcVar6 - 1" (cast_expression "(int)*pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6"))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "pwVar1 = param_5;" (assignment_expression "pwVar1 = param_5" (identifier "pwVar1") (= "=") (identifier "param_5")) (; ";")) (expression_statement "pwVar3 = param_1;" (assignment_expression "pwVar3 = param_1" (identifier "pwVar3") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);" (do "do") (compound_statement "{\n        pwVar2 = pwVar1 + 2;\n        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;\n        pwVar1 = pwVar2;\n        pwVar3 = pwVar3 + 2;\n      }" ({ "{") (expression_statement "pwVar2 = pwVar1 + 2;" (assignment_expression "pwVar2 = pwVar1 + 2" (identifier "pwVar2") (= "=") (binary_expression "pwVar1 + 2" (identifier "pwVar1") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;" (assignment_expression "*(undefined4 *)pwVar3 = *(undefined4 *)pwVar1" (pointer_expression "*(undefined4 *)pwVar3" (* "*") (cast_expression "(undefined4 *)pwVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar3"))) (= "=") (pointer_expression "*(undefined4 *)pwVar1" (* "*") (cast_expression "(undefined4 *)pwVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pwVar1")))) (; ";")) (expression_statement "pwVar1 = pwVar2;" (assignment_expression "pwVar1 = pwVar2" (identifier "pwVar1") (= "=") (identifier "pwVar2")) (; ";")) (expression_statement "pwVar3 = pwVar3 + 2;" (assignment_expression "pwVar3 = pwVar3 + 2" (identifier "pwVar3") (= "=") (binary_expression "pwVar3 + 2" (identifier "pwVar3") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2)" (( "(") (binary_expression "pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2" (identifier "pwVar2") (!= "!=") (binary_expression "param_5 + ((uVar8 & 0xff) + 1) * 2" (identifier "param_5") (+ "+") (binary_expression "((uVar8 & 0xff) + 1) * 2" (parenthesized_expression "((uVar8 & 0xff) + 1)" (( "(") (binary_expression "(uVar8 & 0xff) + 1" (parenthesized_expression "(uVar8 & 0xff)" (( "(") (binary_expression "uVar8 & 0xff" (identifier "uVar8") (& "&") (number_literal "0xff")) () ")")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2")))) () ")")) (; ";")) (expression_statement "iVar4 = (char)uVar8 + 1;" (assignment_expression "iVar4 = (char)uVar8 + 1" (identifier "iVar4") (= "=") (binary_expression "(char)uVar8 + 1" (cast_expression "(char)uVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar8")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_5 = param_5 + iVar4 * 2;" (assignment_expression "param_5 = param_5 + iVar4 * 2" (identifier "param_5") (= "=") (binary_expression "param_5 + iVar4 * 2" (identifier "param_5") (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2")))) (; ";")) (expression_statement "param_1 = param_1 + iVar4 * 2;" (assignment_expression "param_1 = param_1 + iVar4 * 2" (identifier "param_1") (= "=") (binary_expression "param_1 + iVar4 * 2" (identifier "param_1") (+ "+") (binary_expression "iVar4 * 2" (identifier "iVar4") (* "*") (number_literal "2")))) (; ";")) (} "}"))) (} "}")))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* wchar_t* std::__add_grouping<wchar_t>(wchar_t*, wchar_t, char const*, unsigned int, wchar_t
   const*, wchar_t const*) */

type_1 * std::__add_grouping<type_1>
                    (type_1 *var_10,type_1 param_2,char *var_13,type_3 var_3,type_1 *var_6,
                    type_1 *var_2)

{
  type_1 *var_7;
  type_1 *var_8;
  type_2 in_register_00000014;
  int var_1;
  type_3 var_12;
  char *var_14;
  int var_5;
  type_3 var_4;
  type_1 *var_9;
  
  var_5 = 0;
  var_4 = 0;
  var_1 = (int)*var_13;
  while (var_1 < (int)var_2 - (int)var_6 >> 2) {
    while( true ) {
      if (0x7d < (var_1 - 1U & 0xff)) goto LAB_00324c38;
      var_2 = var_2 + var_1 * -2;
      if (var_3 - 1 <= var_4) break;
      var_4 = var_4 + 1;
      var_1 = (int)var_13[var_4];
      if ((int)var_2 - (int)var_6 >> 2 <= var_1) goto LAB_00324c38;
    }
    var_5 = var_5 + 1;
  }
LAB_00324c38:
  var_7 = var_6;
  var_8 = var_10;
  if (var_2 != var_6) {
    do {
      var_9 = var_7 + 2;
      *(type_4 *)var_8 = *(type_4 *)var_7;
      var_7 = var_9;
      var_8 = var_8 + 2;
    } while (var_2 != var_9);
    var_1 = ((type_3)((int)var_2 + (-4 - (int)var_6)) >> 2) + 1;
    var_6 = var_6 + var_1 * 2;
    var_10 = var_10 + var_1 * 2;
  }
  while (var_5 = var_5 + -1, var_5 != -1) {
    while( true ) {
      *(type_3 *)var_10 = var_11(in_register_00000014,param_2);
      var_10 = var_10 + 2;
      if (var_13[var_4] < 1) break;
      var_12 = (int)var_13[var_4] - 1;
      var_7 = var_6;
      var_8 = var_10;
      do {
        var_9 = var_7 + 2;
        *(type_4 *)var_8 = *(type_4 *)var_7;
        var_7 = var_9;
        var_8 = var_8 + 2;
      } while (var_9 != var_6 + ((var_12 & 0xff) + 1) * 2);
      var_1 = (char)var_12 + 1;
      var_5 = var_5 + -1;
      var_6 = var_6 + var_1 * 2;
      var_10 = var_10 + var_1 * 2;
      if (var_5 == -1) goto LAB_00324ce8;
    }
  }
LAB_00324ce8:
  for (var_14 = var_13 + (var_4 - 1); var_14 != var_13 + -1; var_14 = var_14 + -1) {
    *(type_3 *)var_10 = var_11(in_register_00000014,param_2);
    var_10 = var_10 + 2;
    if (0 < *var_14) {
      var_4 = (int)*var_14 - 1;
      var_7 = var_6;
      var_8 = var_10;
      do {
        var_9 = var_7 + 2;
        *(type_4 *)var_8 = *(type_4 *)var_7;
        var_7 = var_9;
        var_8 = var_8 + 2;
      } while (var_9 != var_6 + ((var_4 & 0xff) + 1) * 2);
      var_1 = (char)var_4 + 1;
      var_6 = var_6 + var_1 * 2;
      var_10 = var_10 + var_1 * 2;
    }
  }
  return var_10;
}


(translation_unit (ERROR (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (comma_expression left: (binary_expression left: (identifier) right: (identifier)) (ERROR (identifier)) right: (comma_expression left: (identifier) right: (comma_expression left: (binary_expression left: (identifier) right: (identifier)) (ERROR (identifier)) right: (comma_expression left: (identifier) right: (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))))))))) (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (break_statement)) (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: (subscript_expression argument: (identifier) index: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) condition: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (return_statement (identifier))))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* wchar_t* std::MASKED(wchar_t*, wchar_t, char const*, unsigned int, wchar_t
   const*, wchar_t const*) */

wchar_t * std::MASKED
                    (wchar_t *param_1,wchar_t param_2,char *param_3,uint param_4,wchar_t *param_5,
                    wchar_t *param_6)

{
  wchar_t *pwVar1;
  wchar_t *pwVar3;
  undefined2 in_register_00000014;
  int iVar4;
  uint uVar5;
  char *pcVar6;
  int iVar7;
  uint uVar8;
  wchar_t *pwVar2;
  
  iVar7 = 0;
  uVar8 = 0;
  iVar4 = (int)*param_3;
  while (iVar4 < (int)param_6 - (int)param_5 >> 2) {
    while( true ) {
      if (0x7d < (iVar4 - 1U & 0xff)) goto LAB_00324c38;
      param_6 = param_6 + iVar4 * -2;
      if (param_4 - 1 <= uVar8) break;
      uVar8 = uVar8 + 1;
      iVar4 = (int)param_3[uVar8];
      if ((int)param_6 - (int)param_5 >> 2 <= iVar4) goto LAB_00324c38;
    }
    iVar7 = iVar7 + 1;
  }
LAB_00324c38:
  pwVar1 = param_5;
  pwVar3 = param_1;
  if (param_6 != param_5) {
    do {
      pwVar2 = pwVar1 + 2;
      *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;
      pwVar1 = pwVar2;
      pwVar3 = pwVar3 + 2;
    } while (param_6 != pwVar2);
    iVar4 = ((uint)((int)param_6 + (-4 - (int)param_5)) >> 2) + 1;
    param_5 = param_5 + iVar4 * 2;
    param_1 = param_1 + iVar4 * 2;
  }
  while (iVar7 = iVar7 + -1, iVar7 != -1) {
    while( true ) {
      *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);
      param_1 = param_1 + 2;
      if (param_3[uVar8] < 1) break;
      uVar5 = (int)param_3[uVar8] - 1;
      pwVar1 = param_5;
      pwVar3 = param_1;
      do {
        pwVar2 = pwVar1 + 2;
        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;
        pwVar1 = pwVar2;
        pwVar3 = pwVar3 + 2;
      } while (pwVar2 != param_5 + ((uVar5 & 0xff) + 1) * 2);
      iVar4 = (char)uVar5 + 1;
      iVar7 = iVar7 + -1;
      param_5 = param_5 + iVar4 * 2;
      param_1 = param_1 + iVar4 * 2;
      if (iVar7 == -1) goto LAB_00324ce8;
    }
  }
LAB_00324ce8:
  for (pcVar6 = param_3 + (uVar8 - 1); pcVar6 != param_3 + -1; pcVar6 = pcVar6 + -1) {
    *(uint *)param_1 = CONCAT22(in_register_00000014,param_2);
    param_1 = param_1 + 2;
    if (0 < *pcVar6) {
      uVar8 = (int)*pcVar6 - 1;
      pwVar1 = param_5;
      pwVar3 = param_1;
      do {
        pwVar2 = pwVar1 + 2;
        *(undefined4 *)pwVar3 = *(undefined4 *)pwVar1;
        pwVar1 = pwVar2;
        pwVar3 = pwVar3 + 2;
      } while (pwVar2 != param_5 + ((uVar8 & 0xff) + 1) * 2);
      iVar4 = (char)uVar8 + 1;
      param_5 = param_5 + iVar4 * 2;
      param_1 = param_1 + iVar4 * 2;
    }
  }
  return param_1;
}

