
void d_print_mod_list(d_print_info *dpi,int options,d_print_mod *mods,int suffix)

{
  int iVar1;
  demangle_component_type dVar2;
  size_t sVar3;
  size_t sVar4;
  demangle_component *pdVar5;
  void *pvVar6;
  char *pcVar7;
  d_print_template *pdVar8;
  d_print_mod *pdVar9;
  char cVar10;
  char *pcVar11;
  demangle_callbackref p_Var12;
  char buf [25];
  
  if (mods == (d_print_mod *)0x0) {
    return;
  }
  iVar1 = dpi->demangle_failure;
  do {
    if (iVar1 != 0) {
      return;
    }
    if (mods->printed == 0) {
      pdVar5 = mods->mod;
      dVar2 = pdVar5->type;
      if (suffix == 0) {
        if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {
          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {
            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;
          }
          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {
            pdVar8 = dpi->templates;
            mods->printed = 1;
            dpi->templates = mods->templates;
            goto joined_r0x0032113c;
          }
        }
        goto LAB_003210e8;
      }
LAB_00321090:
      pdVar8 = dpi->templates;
      mods->printed = 1;
      dpi->templates = mods->templates;
joined_r0x0032113c:
      if (dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {
        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);
        dpi->templates = pdVar8;
        return;
      }
      if (dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE) {
        d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);
        dpi->templates = pdVar8;
        return;
      }
      if (dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME) {
        pdVar5 = (pdVar5->u).s_fixed.length;
        pdVar9 = dpi->modifiers;
        dpi->modifiers = (d_print_mod *)0x0;
        d_print_comp(dpi,options,pdVar5);
        dpi->modifiers = pdVar9;
        if ((options & 4U) == 0) {
          cVar10 = ':';
          pcVar7 = PTR_s__s_004c1a50 + 0x208;
          pcVar11 = PTR_s__s_004c1a50 + 0x20a;
          sVar3 = dpi->len;
          while( true ) {
            if (sVar3 == 0xff) {
              p_Var12 = dpi->callback;
              pvVar6 = dpi->opaque;
              dpi->buf[0xff] = '\0';
              (*p_Var12)(dpi->buf,0xff,pvVar6);
              sVar4 = 1;
              sVar3 = 0;
              dpi->flush_count = dpi->flush_count + 1;
            }
            else {
              sVar4 = sVar3 + 1;
            }
            dpi->len = sVar4;
            pcVar7 = pcVar7 + 1;
            dpi->buf[sVar3] = cVar10;
            dpi->last_char = cVar10;
            if (pcVar7 == pcVar11) break;
            cVar10 = *pcVar7;
            sVar3 = sVar4;
          }
        }
        else {
          sVar3 = dpi->len;
          if (sVar3 == 0xff) {
            p_Var12 = dpi->callback;
            pvVar6 = dpi->opaque;
            dpi->buf[0xff] = '\0';
            (*p_Var12)(dpi->buf,0xff,pvVar6);
            sVar4 = 1;
            sVar3 = 0;
            dpi->flush_count = dpi->flush_count + 1;
          }
          else {
            sVar4 = sVar3 + 1;
          }
          dpi->len = sVar4;
          dpi->buf[sVar3] = '.';
          dpi->last_char = '.';
        }
        pdVar5 = (mods->mod->u).s_extended_operator.name;
        dVar2 = pdVar5->type;
        if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {
          cVar10 = '{';
          pcVar7 = PTR_UINT_004c12dc + -0x5a47;
          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;
          sVar3 = dpi->len;
          while( true ) {
            if (sVar3 == 0xff) {
              p_Var12 = dpi->callback;
              pvVar6 = dpi->opaque;
              dpi->buf[0xff] = '\0';
              (*p_Var12)(dpi->buf,0xff,pvVar6);
              sVar4 = 1;
              sVar3 = 0;
              dpi->flush_count = dpi->flush_count + 1;
            }
            else {
              sVar4 = sVar3 + 1;
            }
            dpi->len = sVar4;
            dpi->buf[sVar3] = cVar10;
            dpi->last_char = cVar10;
            if (pcVar7 == pcVar11) break;
            cVar10 = *pcVar7;
            pcVar7 = pcVar7 + 1;
            sVar3 = sVar4;
          }
          pcVar7 = buf;
          (*(code *)PTR_sprintf_004c5d14)
                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,
                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));
          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);
          sVar3 = dpi->len;
          if (iVar1 != 0) {
            pcVar11 = pcVar7 + iVar1;
            sVar4 = sVar3;
            do {
              cVar10 = *pcVar7;
              if (sVar4 == 0xff) {
                p_Var12 = dpi->callback;
                pvVar6 = dpi->opaque;
                dpi->buf[0xff] = '\0';
                (*p_Var12)(dpi->buf,0xff,pvVar6);
                sVar3 = 1;
                sVar4 = 0;
                dpi->flush_count = dpi->flush_count + 1;
              }
              else {
                sVar3 = sVar4 + 1;
              }
              dpi->len = sVar3;
              pcVar7 = pcVar7 + 1;
              dpi->buf[sVar4] = cVar10;
              dpi->last_char = cVar10;
              sVar4 = sVar3;
            } while (pcVar11 != pcVar7);
          }
          cVar10 = '}';
          pcVar7 = PTR_UINT_004c12dc + -0x5a38;
          pcVar11 = PTR_UINT_004c12dc + -0x5a35;
          while( true ) {
            if (sVar3 == 0xff) {
              p_Var12 = dpi->callback;
              pvVar6 = dpi->opaque;
              dpi->buf[0xff] = '\0';
              (*p_Var12)(dpi->buf,0xff,pvVar6);
              sVar4 = 1;
              sVar3 = 0;
              dpi->flush_count = dpi->flush_count + 1;
            }
            else {
              sVar4 = sVar3 + 1;
            }
            dpi->len = sVar4;
            pcVar7 = pcVar7 + 1;
            dpi->buf[sVar3] = cVar10;
            dpi->last_char = cVar10;
            if (pcVar11 == pcVar7) break;
            cVar10 = *pcVar7;
            sVar3 = sVar4;
          }
          pdVar5 = (pdVar5->u).s_fixed.length;
          dVar2 = pdVar5->type;
        }
        do {
          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {
            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {
              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {
LAB_00321278:
                d_print_comp(dpi,options,pdVar5);
                dpi->templates = pdVar8;
                return;
              }
            }
            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;
          }
          pdVar5 = (pdVar5->u).s_fixed.length;
          dVar2 = pdVar5->type;
        } while( true );
      }
      d_print_mod(dpi,options,pdVar5);
      mods = mods->next;
      dpi->templates = pdVar8;
    }
    else {
LAB_003210e8:
      mods = mods->next;
    }
    if (mods == (d_print_mod *)0x0) {
      return;
    }
    iVar1 = dpi->demangle_failure;
  } while( true );
}



void FUN_00320fec(int param_1,uint param_2,int *param_3,int param_4)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint *puVar4;
  undefined1 *puVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined1 uVar8;
  undefined1 *puVar9;
  undefined1 local_48 [32];
  
  if (param_3 == (int *)0x0) {
    return;
  }
  iVar1 = *(int *)(param_1 + 0x118);
  do {
    if (iVar1 != 0) {
      return;
    }
    if (param_3[2] == 0) {
      puVar4 = (uint *)param_3[1];
      uVar2 = *puVar4;
      if (param_4 == 0) {
        if (uVar2 != 0x4c) {
          if (uVar2 < 0x4d) {
            if (4 < uVar2 - 0x1c) goto LAB_00321090;
          }
          else if (1 < uVar2 - 0x4e) {
            uVar6 = *(undefined4 *)(param_1 + 0x110);
            param_3[2] = 1;
            *(int *)(param_1 + 0x110) = param_3[3];
            goto joined_r0x0032113c;
          }
        }
        goto LAB_003210e8;
      }
LAB_00321090:
      uVar6 = *(undefined4 *)(param_1 + 0x110);
      param_3[2] = 1;
      *(int *)(param_1 + 0x110) = param_3[3];
joined_r0x0032113c:
      if (uVar2 == 0x29) {
        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);
        *(undefined4 *)(param_1 + 0x110) = uVar6;
        return;
      }
      if (uVar2 == 0x2a) {
        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);
        *(undefined4 *)(param_1 + 0x110) = uVar6;
        return;
      }
      if (uVar2 == 2) {
        uVar2 = puVar4[2];
        uVar7 = *(undefined4 *)(param_1 + 0x114);
        *(undefined4 *)(param_1 + 0x114) = 0;
        FUN_0031b710(param_1,param_2,uVar2);
        *(undefined4 *)(param_1 + 0x114) = uVar7;
        if ((param_2 & 4) == 0) {
          uVar8 = 0x3a;
          puVar5 = PTR_s__s_004c1a50 + 0x208;
          puVar9 = PTR_s__s_004c1a50 + 0x20a;
          iVar1 = *(int *)(param_1 + 0x100);
          while( true ) {
            if (iVar1 == 0xff) {
              *(undefined1 *)(param_1 + 0xff) = 0;
              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));
              iVar3 = 1;
              iVar1 = 0;
              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;
            }
            else {
              iVar3 = iVar1 + 1;
            }
            *(int *)(param_1 + 0x100) = iVar3;
            puVar5 = puVar5 + 1;
            *(undefined1 *)(param_1 + iVar1) = uVar8;
            *(undefined1 *)(param_1 + 0x104) = uVar8;
            if (puVar5 == puVar9) break;
            uVar8 = *puVar5;
            iVar1 = iVar3;
          }
        }
        else {
          iVar1 = *(int *)(param_1 + 0x100);
          if (iVar1 == 0xff) {
            *(undefined1 *)(param_1 + 0xff) = 0;
            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));
            iVar3 = 1;
            iVar1 = 0;
            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;
          }
          else {
            iVar3 = iVar1 + 1;
          }
          *(int *)(param_1 + 0x100) = iVar3;
          *(undefined1 *)(param_1 + iVar1) = 0x2e;
          *(undefined1 *)(param_1 + 0x104) = 0x2e;
        }
        puVar4 = *(uint **)(param_3[1] + 0xc);
        uVar2 = *puVar4;
        if (uVar2 == 0x46) {
          uVar8 = 0x7b;
          puVar5 = PTR_UINT_004c12dc + -0x5a47;
          puVar9 = PTR_UINT_004c12dc + -0x5a3b;
          iVar1 = *(int *)(param_1 + 0x100);
          while( true ) {
            if (iVar1 == 0xff) {
              *(undefined1 *)(param_1 + 0xff) = 0;
              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));
              iVar3 = 1;
              iVar1 = 0;
              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;
            }
            else {
              iVar3 = iVar1 + 1;
            }
            *(int *)(param_1 + 0x100) = iVar3;
            *(undefined1 *)(param_1 + iVar1) = uVar8;
            *(undefined1 *)(param_1 + 0x104) = uVar8;
            if (puVar5 == puVar9) break;
            uVar8 = *puVar5;
            puVar5 = puVar5 + 1;
            iVar1 = iVar3;
          }
          puVar5 = local_48;
          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);
          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);
          iVar1 = *(int *)(param_1 + 0x100);
          if (iVar3 != 0) {
            puVar9 = puVar5 + iVar3;
            iVar3 = iVar1;
            do {
              uVar8 = *puVar5;
              if (iVar3 == 0xff) {
                *(undefined1 *)(param_1 + 0xff) = 0;
                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));
                iVar1 = 1;
                iVar3 = 0;
                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;
              }
              else {
                iVar1 = iVar3 + 1;
              }
              *(int *)(param_1 + 0x100) = iVar1;
              puVar5 = puVar5 + 1;
              *(undefined1 *)(param_1 + iVar3) = uVar8;
              *(undefined1 *)(param_1 + 0x104) = uVar8;
              iVar3 = iVar1;
            } while (puVar9 != puVar5);
          }
          uVar8 = 0x7d;
          puVar5 = PTR_UINT_004c12dc + -0x5a38;
          puVar9 = PTR_UINT_004c12dc + -0x5a35;
          while( true ) {
            if (iVar1 == 0xff) {
              *(undefined1 *)(param_1 + 0xff) = 0;
              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));
              iVar3 = 1;
              iVar1 = 0;
              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;
            }
            else {
              iVar3 = iVar1 + 1;
            }
            *(int *)(param_1 + 0x100) = iVar3;
            puVar5 = puVar5 + 1;
            *(undefined1 *)(param_1 + iVar1) = uVar8;
            *(undefined1 *)(param_1 + 0x104) = uVar8;
            if (puVar9 == puVar5) break;
            uVar8 = *puVar5;
            iVar1 = iVar3;
          }
          puVar4 = (uint *)puVar4[2];
          uVar2 = *puVar4;
        }
        do {
          if (uVar2 != 0x4c) {
            if (uVar2 < 0x4d) {
              if (4 < uVar2 - 0x1c) {
LAB_00321278:
                FUN_0031b710(param_1,param_2,puVar4);
                *(undefined4 *)(param_1 + 0x110) = uVar6;
                return;
              }
            }
            else if (1 < uVar2 - 0x4e) goto LAB_00321278;
          }
          puVar4 = (uint *)puVar4[2];
          uVar2 = *puVar4;
        } while( true );
      }
      FUN_00320388(param_1);
      param_3 = (int *)*param_3;
      *(undefined4 *)(param_1 + 0x110) = uVar6;
    }
    else {
LAB_003210e8:
      param_3 = (int *)*param_3;
    }
    if (param_3 == (int *)0x0) {
      return;
    }
    iVar1 = *(int *)(param_1 + 0x118);
  } while( true );
}


lui gp,0x1b
addiu gp,gp,-0x7dac
addu gp,gp,t9
beq a2,zero,0x003213f4
_nop
addiu sp,sp,-0x60
lw v0,0x118(a0)
sw gp,0x10(sp)
sw s1,0x3c(sp)
or s1,a0,zero
sw ra,0x5c(sp)
sw s8,0x58(sp)
sw s7,0x54(sp)
sw s6,0x50(sp)
sw s5,0x4c(sp)
sw s4,0x48(sp)
sw s3,0x44(sp)
sw s2,0x40(sp)
bne v0,zero,0x003210f4
_sw s0,0x38(sp)
lw s4,-0x41f8(gp)
or s0,a2,zero
or s5,a1,zero
or s3,a3,zero
li s7,0x1
li s6,0x29
li s8,0x2a
b 0x003210dc
_addiu s4,s4,0x388
lw a2,0x4(s0)
bne s3,zero,0x00321090
_lw v0,0x0(a2)
li v1,0x4c
beq v0,v1,0x003210e8
_sltiu v1,v0,0x4d
beq v1,zero,0x00321124
_addiu v1,v0,-0x4e
addiu v1,v0,-0x1c
sltiu v1,v1,0x5
bne v1,zero,0x003210e8
_nop
lw v1,0xc(s0)
lw s2,0x110(s1)
sw s7,0x8(s0)
beq v0,s6,0x00321144
_sw v1,0x110(s1)
beq v0,s8,0x00321194
_li v1,0x2
beq v0,v1,0x003211e4
_or a1,s5,zero
or t9,s4,zero
bal 0x00320388
_or a0,s1,zero
lw s0,0x0(s0)
lw gp,0x10(sp)
beq s0,zero,0x003210f4
_sw s2,0x110(s1)
lw v0,0x118(s1)
bne v0,zero,0x003210f8
_lw ra,0x5c(sp)
lw v0,0x8(s0)
beq v0,zero,0x00321060
_nop
lw s0,0x0(s0)
bne s0,zero,0x003210d0
_nop
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
sltiu v1,v1,0x2
bne v1,zero,0x003210e8
_nop
lw v1,0xc(s0)
lw s2,0x110(s1)
sw s7,0x8(s0)
bne v0,s6,0x003210a4
_sw v1,0x110(s1)
lw t9,-0x41f8(gp)
addiu a2,a2,0xc
lw a3,0x0(s0)
or a1,s5,zero
addiu t9,t9,0xca0
bal 0x00320ca0
_or a0,s1,zero
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s0,0x38(sp)
sw s2,0x110(s1)
lw s2,0x40(sp)
lw s1,0x3c(sp)
jr ra
_addiu sp,sp,0x60
lw t9,-0x41f8(gp)
addiu a2,a2,0x8
lw a3,0x0(s0)
or a1,s5,zero
addiu t9,t9,0x151c
bal 0x0032151c
_or a0,s1,zero
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s0,0x38(sp)
sw s2,0x110(s1)
lw s2,0x40(sp)
lw s1,0x3c(sp)
jr ra
_addiu sp,sp,0x60
lw s3,-0x41f8(gp)
or a0,s1,zero
lw a2,0x8(a2)
lw s4,0x114(s1)
addiu s3,s3,-0x48f0
or t9,s3,zero
bal 0x0031b710
_sw zero,0x114(s1)
andi v0,s5,0x4
lw gp,0x10(sp)
beq v0,zero,0x0032134c
_sw s4,0x114(s1)
lw v0,0x100(s1)
li v1,0xff
beq v0,v1,0x003213c4
_li a1,0xff
addiu v1,v0,0x1
addu v0,s1,v0
sw v1,0x100(s1)
li v1,0x2e
sb v1,0x0(v0)
sb v1,0x104(s1)
lw v0,0x4(s0)
li v1,0x46
lw s4,0xc(v0)
lw v0,0x0(s4)
beq v0,v1,0x003212d4
_lw s0,-0x7f64(gp)
li a1,0x4c
beq v0,a1,0x003212c8
_addiu v1,v0,-0x4e
addiu a0,v0,-0x1c
sltiu v0,v0,0x4d
beq v0,zero,0x003212bc
_sltiu a0,a0,0x5
bne a0,zero,0x003212c8
_or a2,s4,zero
or a1,s5,zero
or t9,s3,zero
bal 0x0031b710
_or a0,s1,zero
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s0,0x38(sp)
sw s2,0x110(s1)
lw s2,0x40(sp)
lw s1,0x3c(sp)
jr ra
_addiu sp,sp,0x60
sltiu v0,v1,0x2
beq v0,zero,0x00321278
_or a2,s4,zero
lw s4,0x8(s4)
b 0x00321258
_lw v0,0x0(s4)
li s6,0x7b
lw s7,-0x7f64(gp)
li s8,0xff
lw v0,0x100(s1)
addiu s0,s0,-0x5a47
b 0x00321314
_addiu s7,s7,-0x5a3b
or v1,v0,zero
addiu v0,v0,0x1
addu v1,s1,v1
sw v0,0x100(s1)
sb s6,0x0(v1)
beq s0,s7,0x003213fc
_sb s6,0x104(s1)
lb s6,0x0(s0)
addiu s0,s0,0x1
bne v0,s8,0x003212f0
_li a1,0xff
lw t9,0x108(s1)
lw a2,0x10c(s1)
or a0,s1,zero
jalr t9
_sb zero,0xff(s1)
li v0,0x1
lw a0,0x128(s1)
or v1,zero,zero
lw gp,0x10(sp)
addiu a0,a0,0x1
b 0x003212f8
_sw a0,0x128(s1)
lw s4,-0x77f0(gp)
li s6,0x3a
lw v0,0x100(s1)
li s8,0xff
addiu s4,s4,0x208
b 0x0032138c
_addiu s7,s4,0x2
or v1,v0,zero
addiu v0,v0,0x1
addu v1,s1,v1
sw v0,0x100(s1)
addiu s4,s4,0x1
sb s6,0x0(v1)
beq s4,s7,0x0032123c
_sb s6,0x104(s1)
lb s6,0x0(s4)
bne v0,s8,0x00321368
_li a1,0xff
lw t9,0x108(s1)
lw a2,0x10c(s1)
or a0,s1,zero
jalr t9
_sb zero,0xff(s1)
li v0,0x1
lw a0,0x128(s1)
or v1,zero,zero
lw gp,0x10(sp)
addiu a0,a0,0x1
b 0x00321370
_sw a0,0x128(s1)
lw t9,0x108(s1)
lw a2,0x10c(s1)
or a0,s1,zero
jalr t9
_sb zero,0xff(s1)
li v1,0x1
lw a0,0x128(s1)
or v0,zero,zero
lw gp,0x10(sp)
addiu a0,a0,0x1
b 0x00321228
_sw a0,0x128(s1)
jr ra
_nop
lw a1,-0x77f0(gp)
addiu s0,sp,0x18
lw a2,0xc(s4)
lw t9,-0x352c(gp)
or a0,s0,zero
addiu a1,a1,0x1264
jalr t9
_addiu a2,a2,0x1
lw gp,0x10(sp)
lw t9,-0x36a4(gp)
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
beq v0,zero,0x003214a0
_lw v1,0x100(s1)
addu s7,s0,v0
b 0x00321460
_li s8,0xff
addiu v1,v1,0x1
addu v0,s1,v0
sw v1,0x100(s1)
addiu s0,s0,0x1
sb s6,0x0(v0)
beq s7,s0,0x003214a0
_sb s6,0x104(s1)
lb s6,0x0(s0)
bne v1,s8,0x00321444
_or v0,v1,zero
lw t9,0x108(s1)
li a1,0xff
lw a2,0x10c(s1)
or a0,s1,zero
jalr t9
_sb zero,0xff(s1)
li v1,0x1
lw a0,0x128(s1)
or v0,zero,zero
lw gp,0x10(sp)
addiu a0,a0,0x1
b 0x00321448
_sw a0,0x128(s1)
lw s0,-0x7f64(gp)
li s6,0x7d
li s8,0xff
addiu s0,s0,-0x5a38
b 0x003214dc
_addiu s7,s0,0x3
or v0,v1,zero
addiu v1,v1,0x1
addu v0,s1,v0
sw v1,0x100(s1)
addiu s0,s0,0x1
sb s6,0x0(v0)
beq s7,s0,0x00321510
_sb s6,0x104(s1)
lb s6,0x0(s0)
bne v1,s8,0x003214b8
_li a1,0xff
lw t9,0x108(s1)
lw a2,0x10c(s1)
or a0,s1,zero
jalr t9
_sb zero,0xff(s1)
li v1,0x1
lw a0,0x128(s1)
or v0,zero,zero
addiu a0,a0,0x1
b 0x003214c0
_sw a0,0x128(s1)
lw s4,0x8(s4)
b 0x00321254
_lw v0,0x0(s4)
(translation_unit "void FUN_00320fec(int param_1,uint param_2,int *param_3,int param_4)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 uVar8;\n  undefined1 *puVar9;\n  undefined1 local_48 [32];\n  \n  if (param_3 == (int *)0x0) {\n    return;\n  }\n  iVar1 = *(int *)(param_1 + 0x118);\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );\n}\n\n" (function_definition "void FUN_00320fec(int param_1,uint param_2,int *param_3,int param_4)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 uVar8;\n  undefined1 *puVar9;\n  undefined1 local_48 [32];\n  \n  if (param_3 == (int *)0x0) {\n    return;\n  }\n  iVar1 = *(int *)(param_1 + 0x118);\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );\n}" primitive_type (function_declarator "FUN_00320fec(int param_1,uint param_2,int *param_3,int param_4)" identifier (parameter_list "(int param_1,uint param_2,int *param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 uVar8;\n  undefined1 *puVar9;\n  undefined1 local_48 [32];\n  \n  if (param_3 == (int *)0x0) {\n    return;\n  }\n  iVar1 = *(int *)(param_1 + 0x118);\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined1 uVar8;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined1 local_48 [32];" type_identifier (array_declarator "local_48 [32]" identifier [ number_literal ]) ;) (if_statement "if (param_3 == (int *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = *(int *)(param_1 + 0x118);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x118)" identifier = (pointer_expression "*(int *)(param_1 + 0x118)" * (cast_expression "(int *)(param_1 + 0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) ))))) ;) (do_statement "do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );" do (compound_statement "{\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  }" { (if_statement "if (iVar1 != 0) {\n      return;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }" if (parenthesized_expression "(param_3[2] == 0)" ( (binary_expression "param_3[2] == 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }" { (expression_statement "puVar4 = (uint *)param_3[1];" (assignment_expression "puVar4 = (uint *)param_3[1]" identifier = (cast_expression "(uint *)param_3[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }" { (if_statement "if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }" if (parenthesized_expression "(uVar2 != 0x4c)" ( (binary_expression "uVar2 != 0x4c" identifier != number_literal) )) (compound_statement "{\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }" { (if_statement "if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" if (parenthesized_expression "(uVar2 < 0x4d)" ( (binary_expression "uVar2 < 0x4d" identifier < number_literal) )) (compound_statement "{\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }" { (if_statement "if (4 < uVar2 - 0x1c) goto LAB_00321090;" if (parenthesized_expression "(4 < uVar2 - 0x1c)" ( (binary_expression "4 < uVar2 - 0x1c" number_literal < (binary_expression "uVar2 - 0x1c" identifier - number_literal)) )) (goto_statement "goto LAB_00321090;" goto statement_identifier ;)) }) (else_clause "else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" else (if_statement "if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" if (parenthesized_expression "(1 < uVar2 - 0x4e)" ( (binary_expression "1 < uVar2 - 0x4e" number_literal < (binary_expression "uVar2 - 0x4e" identifier - number_literal)) )) (compound_statement "{\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" { (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0x110);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0x110)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) ;) (expression_statement "param_3[2] = 1;" (assignment_expression "param_3[2] = 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x110) = param_3[3];" (assignment_expression "*(int *)(param_1 + 0x110) = param_3[3]" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x0032113c;" goto statement_identifier ;) })))) })) (goto_statement "goto LAB_003210e8;" goto statement_identifier ;) })) (labeled_statement "LAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);" statement_identifier : (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0x110);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0x110)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) ;)) (expression_statement "param_3[2] = 1;" (assignment_expression "param_3[2] = 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x110) = param_3[3];" (assignment_expression "*(int *)(param_1 + 0x110) = param_3[3]" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (labeled_statement "joined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" statement_identifier : (if_statement "if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x29)" ( (binary_expression "uVar2 == 0x29" identifier == number_literal) )) (compound_statement "{\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" { (expression_statement "FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);" (call_expression "FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3)" identifier (argument_list "(param_1,param_2,puVar4 + 3,*param_3)" ( identifier , identifier , (binary_expression "puVar4 + 3" identifier + number_literal) , (pointer_expression "*param_3" * identifier) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) }))) (if_statement "if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x2a)" ( (binary_expression "uVar2 == 0x2a" identifier == number_literal) )) (compound_statement "{\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" { (expression_statement "FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);" (call_expression "FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3)" identifier (argument_list "(param_1,param_2,puVar4 + 2,*param_3)" ( identifier , identifier , (binary_expression "puVar4 + 2" identifier + number_literal) , (pointer_expression "*param_3" * identifier) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }" if (parenthesized_expression "(uVar2 == 2)" ( (binary_expression "uVar2 == 2" identifier == number_literal) )) (compound_statement "{\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }" { (expression_statement "uVar2 = puVar4[2];" (assignment_expression "uVar2 = puVar4[2]" identifier = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = *(undefined4 *)(param_1 + 0x114);" (assignment_expression "uVar7 = *(undefined4 *)(param_1 + 0x114)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x114)" * (cast_expression "(undefined4 *)(param_1 + 0x114)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x114)" ( (binary_expression "param_1 + 0x114" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x114) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x114) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x114)" * (cast_expression "(undefined4 *)(param_1 + 0x114)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x114)" ( (binary_expression "param_1 + 0x114" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0031b710(param_1,param_2,uVar2);" (call_expression "FUN_0031b710(param_1,param_2,uVar2)" identifier (argument_list "(param_1,param_2,uVar2)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x114) = uVar7;" (assignment_expression "*(undefined4 *)(param_1 + 0x114) = uVar7" (pointer_expression "*(undefined4 *)(param_1 + 0x114)" * (cast_expression "(undefined4 *)(param_1 + 0x114)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x114)" ( (binary_expression "param_1 + 0x114" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }" if (parenthesized_expression "((param_2 & 4) == 0)" ( (binary_expression "(param_2 & 4) == 0" (parenthesized_expression "(param_2 & 4)" ( (binary_expression "param_2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }" { (expression_statement "uVar8 = 0x3a;" (assignment_expression "uVar8 = 0x3a" identifier = number_literal) ;) (expression_statement "puVar5 = PTR_s__s_004c1a50 + 0x208;" (assignment_expression "puVar5 = PTR_s__s_004c1a50 + 0x208" identifier = (binary_expression "PTR_s__s_004c1a50 + 0x208" identifier + number_literal)) ;) (expression_statement "puVar9 = PTR_s__s_004c1a50 + 0x20a;" (assignment_expression "puVar9 = PTR_s__s_004c1a50 + 0x20a" identifier = (binary_expression "PTR_s__s_004c1a50 + 0x20a" identifier + number_literal)) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" identifier = (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" { (if_statement "if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }" if (parenthesized_expression "(iVar1 == 0xff)" ( (binary_expression "iVar1 == 0xff" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }" { (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" * (cast_expression "(undefined1 *)(param_1 + 0xff)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xff)" ( (binary_expression "param_1 + 0xff" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" ( (pointer_expression "**(code **)(param_1 + 0x108)" * (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" ( identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" * (cast_expression "(undefined4 *)(param_1 + 0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              iVar3 = iVar1 + 1;\n            }" else (compound_statement "{\n              iVar3 = iVar1 + 1;\n            }" { (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + iVar1) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" * (cast_expression "(undefined1 *)(param_1 + iVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar1)" ( (binary_expression "param_1 + iVar1" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" * (cast_expression "(undefined1 *)(param_1 + 0x104)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar5 == puVar9) break;" if (parenthesized_expression "(puVar5 == puVar9)" ( (binary_expression "puVar5 == puVar9" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" identifier = identifier) ;) })) }) (else_clause "else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }" else (compound_statement "{\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }" { (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" identifier = (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }" if (parenthesized_expression "(iVar1 == 0xff)" ( (binary_expression "iVar1 == 0xff" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }" { (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" * (cast_expression "(undefined1 *)(param_1 + 0xff)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xff)" ( (binary_expression "param_1 + 0xff" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" ( (pointer_expression "**(code **)(param_1 + 0x108)" * (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" ( identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" * (cast_expression "(undefined4 *)(param_1 + 0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n            iVar3 = iVar1 + 1;\n          }" else (compound_statement "{\n            iVar3 = iVar1 + 1;\n          }" { (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + iVar1) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" * (cast_expression "(undefined1 *)(param_1 + iVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar1)" ( (binary_expression "param_1 + iVar1" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x104) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" * (cast_expression "(undefined1 *)(param_1 + 0x104)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = number_literal) ;) }))) (expression_statement "puVar4 = *(uint **)(param_3[1] + 0xc);" (assignment_expression "puVar4 = *(uint **)(param_3[1] + 0xc)" identifier = (pointer_expression "*(uint **)(param_3[1] + 0xc)" * (cast_expression "(uint **)(param_3[1] + 0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3[1] + 0xc)" ( (binary_expression "param_3[1] + 0xc" (subscript_expression "param_3[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }" if (parenthesized_expression "(uVar2 == 0x46)" ( (binary_expression "uVar2 == 0x46" identifier == number_literal) )) (compound_statement "{\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }" { (expression_statement "uVar8 = 0x7b;" (assignment_expression "uVar8 = 0x7b" identifier = number_literal) ;) (expression_statement "puVar5 = PTR_UINT_004c12dc + -0x5a47;" (assignment_expression "puVar5 = PTR_UINT_004c12dc + -0x5a47" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a47" identifier + number_literal)) ;) (expression_statement "puVar9 = PTR_UINT_004c12dc + -0x5a3b;" (assignment_expression "puVar9 = PTR_UINT_004c12dc + -0x5a3b" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a3b" identifier + number_literal)) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" identifier = (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }" { (if_statement "if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }" if (parenthesized_expression "(iVar1 == 0xff)" ( (binary_expression "iVar1 == 0xff" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }" { (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" * (cast_expression "(undefined1 *)(param_1 + 0xff)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xff)" ( (binary_expression "param_1 + 0xff" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" ( (pointer_expression "**(code **)(param_1 + 0x108)" * (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" ( identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" * (cast_expression "(undefined4 *)(param_1 + 0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              iVar3 = iVar1 + 1;\n            }" else (compound_statement "{\n              iVar3 = iVar1 + 1;\n            }" { (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + iVar1) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" * (cast_expression "(undefined1 *)(param_1 + iVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar1)" ( (binary_expression "param_1 + iVar1" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" * (cast_expression "(undefined1 *)(param_1 + 0x104)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar5 == puVar9) break;" if (parenthesized_expression "(puVar5 == puVar9)" ( (binary_expression "puVar5 == puVar9" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" identifier = identifier) ;) })) (expression_statement "puVar5 = local_48;" (assignment_expression "puVar5 = local_48" identifier = identifier) ;) (expression_statement "(*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);" (call_expression "(*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1)" (parenthesized_expression "(*(code *)PTR_sprintf_004c5d14)" ( (pointer_expression "*(code *)PTR_sprintf_004c5d14" * (cast_expression "(code *)PTR_sprintf_004c5d14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1)" ( identifier , (binary_expression "PTR_s__s_004c1a50 + 0x1264" identifier + number_literal) , (binary_expression "puVar4[3] + 1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5)" identifier = (call_expression "(*(code *)PTR_strlen_004c5b9c)(puVar5)" (parenthesized_expression "(*(code *)PTR_strlen_004c5b9c)" ( (pointer_expression "*(code *)PTR_strlen_004c5b9c" * (cast_expression "(code *)PTR_strlen_004c5b9c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5)" ( identifier )))) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" identifier = (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }" { (expression_statement "puVar9 = puVar5 + iVar3;" (assignment_expression "puVar9 = puVar5 + iVar3" identifier = (binary_expression "puVar5 + iVar3" identifier + identifier)) ;) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" identifier = identifier) ;) (do_statement "do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);" do (compound_statement "{\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            }" { (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (if_statement "if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }" if (parenthesized_expression "(iVar3 == 0xff)" ( (binary_expression "iVar3 == 0xff" identifier == number_literal) )) (compound_statement "{\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }" { (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" * (cast_expression "(undefined1 *)(param_1 + 0xff)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xff)" ( (binary_expression "param_1 + 0xff" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" ( (pointer_expression "**(code **)(param_1 + 0x108)" * (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" ( identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" * (cast_expression "(undefined4 *)(param_1 + 0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                iVar1 = iVar3 + 1;\n              }" else (compound_statement "{\n                iVar1 = iVar3 + 1;\n              }" { (expression_statement "iVar1 = iVar3 + 1;" (assignment_expression "iVar1 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(param_1 + 0x100) = iVar1;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar1" (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + iVar3) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar3) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar3)" * (cast_expression "(undefined1 *)(param_1 + iVar3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar3)" ( (binary_expression "param_1 + iVar3" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" * (cast_expression "(undefined1 *)(param_1 + 0x104)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != puVar5)" ( (binary_expression "puVar9 != puVar5" identifier != identifier) )) ;) })) (expression_statement "uVar8 = 0x7d;" (assignment_expression "uVar8 = 0x7d" identifier = number_literal) ;) (expression_statement "puVar5 = PTR_UINT_004c12dc + -0x5a38;" (assignment_expression "puVar5 = PTR_UINT_004c12dc + -0x5a38" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a38" identifier + number_literal)) ;) (expression_statement "puVar9 = PTR_UINT_004c12dc + -0x5a35;" (assignment_expression "puVar9 = PTR_UINT_004c12dc + -0x5a35" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a35" identifier + number_literal)) ;) (while_statement "while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" { (if_statement "if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }" if (parenthesized_expression "(iVar1 == 0xff)" ( (binary_expression "iVar1 == 0xff" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }" { (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" * (cast_expression "(undefined1 *)(param_1 + 0xff)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xff)" ( (binary_expression "param_1 + 0xff" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" ( (pointer_expression "**(code **)(param_1 + 0x108)" * (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" ( identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" * (cast_expression "(undefined4 *)(param_1 + 0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              iVar3 = iVar1 + 1;\n            }" else (compound_statement "{\n              iVar3 = iVar1 + 1;\n            }" { (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + iVar1) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" * (cast_expression "(undefined1 *)(param_1 + iVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar1)" ( (binary_expression "param_1 + iVar1" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" * (cast_expression "(undefined1 *)(param_1 + 0x104)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar9 == puVar5) break;" if (parenthesized_expression "(puVar9 == puVar5)" ( (binary_expression "puVar9 == puVar5" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" identifier = identifier) ;) })) (expression_statement "puVar4 = (uint *)puVar4[2];" (assignment_expression "puVar4 = (uint *)puVar4[2]" identifier = (cast_expression "(uint *)puVar4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) })) (do_statement "do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );" do (compound_statement "{\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }" { (if_statement "if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }" if (parenthesized_expression "(uVar2 != 0x4c)" ( (binary_expression "uVar2 != 0x4c" identifier != number_literal) )) (compound_statement "{\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }" { (if_statement "if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;" if (parenthesized_expression "(uVar2 < 0x4d)" ( (binary_expression "uVar2 < 0x4d" identifier < number_literal) )) (compound_statement "{\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }" { (if_statement "if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }" if (parenthesized_expression "(4 < uVar2 - 0x1c)" ( (binary_expression "4 < uVar2 - 0x1c" number_literal < (binary_expression "uVar2 - 0x1c" identifier - number_literal)) )) (compound_statement "{\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }" { (labeled_statement "LAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);" statement_identifier : (expression_statement "FUN_0031b710(param_1,param_2,puVar4);" (call_expression "FUN_0031b710(param_1,param_2,puVar4)" identifier (argument_list "(param_1,param_2,puVar4)" ( identifier , identifier , identifier ))) ;)) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (1 < uVar2 - 0x4e) goto LAB_00321278;" else (if_statement "if (1 < uVar2 - 0x4e) goto LAB_00321278;" if (parenthesized_expression "(1 < uVar2 - 0x4e)" ( (binary_expression "1 < uVar2 - 0x4e" number_literal < (binary_expression "uVar2 - 0x4e" identifier - number_literal)) )) (goto_statement "goto LAB_00321278;" goto statement_identifier ;)))) })) (expression_statement "puVar4 = (uint *)puVar4[2];" (assignment_expression "puVar4 = (uint *)puVar4[2]" identifier = (cast_expression "(uint *)puVar4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "FUN_00320388(param_1);" (call_expression "FUN_00320388(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "param_3 = (int *)*param_3;" (assignment_expression "param_3 = (int *)*param_3" identifier = (cast_expression "(int *)*param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }" else (compound_statement "{\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }" { (labeled_statement "LAB_003210e8:\n      param_3 = (int *)*param_3;" statement_identifier : (expression_statement "param_3 = (int *)*param_3;" (assignment_expression "param_3 = (int *)*param_3" identifier = (cast_expression "(int *)*param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;)) }))) (if_statement "if (param_3 == (int *)0x0) {\n      return;\n    }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = *(int *)(param_1 + 0x118);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x118)" identifier = (pointer_expression "*(int *)(param_1 + 0x118)" * (cast_expression "(int *)(param_1 + 0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void d_print_mod_list(d_print_info *dpi,int options,d_print_mod *mods,int suffix)\n\n{\n  int iVar1;\n  demangle_component_type dVar2;\n  size_t sVar3;\n  size_t sVar4;\n  demangle_component *pdVar5;\n  void *pvVar6;\n  char *pcVar7;\n  d_print_template *pdVar8;\n  d_print_mod *pdVar9;\n  char cVar10;\n  char *pcVar11;\n  demangle_callbackref p_Var12;\n  char buf [25];\n  \n  if (mods == (d_print_mod *)0x0) {\n    return;\n  }\n  iVar1 = dpi->demangle_failure;\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (mods->printed == 0) {\n      pdVar5 = mods->mod;\n      dVar2 = pdVar5->type;\n      if (suffix == 0) {\n        if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      pdVar8 = dpi->templates;\n      mods->printed = 1;\n      dpi->templates = mods->templates;\njoined_r0x0032113c:\n      if (dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n        d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n        pdVar5 = (pdVar5->u).s_fixed.length;\n        pdVar9 = dpi->modifiers;\n        dpi->modifiers = (d_print_mod *)0x0;\n        d_print_comp(dpi,options,pdVar5);\n        dpi->modifiers = pdVar9;\n        if ((options & 4U) == 0) {\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }\n        else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }\n        pdVar5 = (mods->mod->u).s_extended_operator.name;\n        dVar2 = pdVar5->type;\n        if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }\n        do {\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        } while( true );\n      }\n      d_print_mod(dpi,options,pdVar5);\n      mods = mods->next;\n      dpi->templates = pdVar8;\n    }\n    else {\nLAB_003210e8:\n      mods = mods->next;\n    }\n    if (mods == (d_print_mod *)0x0) {\n      return;\n    }\n    iVar1 = dpi->demangle_failure;\n  } while( true );\n}\n\n" (function_definition "void d_print_mod_list(d_print_info *dpi,int options,d_print_mod *mods,int suffix)\n\n{\n  int iVar1;\n  demangle_component_type dVar2;\n  size_t sVar3;\n  size_t sVar4;\n  demangle_component *pdVar5;\n  void *pvVar6;\n  char *pcVar7;\n  d_print_template *pdVar8;\n  d_print_mod *pdVar9;\n  char cVar10;\n  char *pcVar11;\n  demangle_callbackref p_Var12;\n  char buf [25];\n  \n  if (mods == (d_print_mod *)0x0) {\n    return;\n  }\n  iVar1 = dpi->demangle_failure;\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (mods->printed == 0) {\n      pdVar5 = mods->mod;\n      dVar2 = pdVar5->type;\n      if (suffix == 0) {\n        if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      pdVar8 = dpi->templates;\n      mods->printed = 1;\n      dpi->templates = mods->templates;\njoined_r0x0032113c:\n      if (dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n        d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n        pdVar5 = (pdVar5->u).s_fixed.length;\n        pdVar9 = dpi->modifiers;\n        dpi->modifiers = (d_print_mod *)0x0;\n        d_print_comp(dpi,options,pdVar5);\n        dpi->modifiers = pdVar9;\n        if ((options & 4U) == 0) {\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }\n        else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }\n        pdVar5 = (mods->mod->u).s_extended_operator.name;\n        dVar2 = pdVar5->type;\n        if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }\n        do {\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        } while( true );\n      }\n      d_print_mod(dpi,options,pdVar5);\n      mods = mods->next;\n      dpi->templates = pdVar8;\n    }\n    else {\nLAB_003210e8:\n      mods = mods->next;\n    }\n    if (mods == (d_print_mod *)0x0) {\n      return;\n    }\n    iVar1 = dpi->demangle_failure;\n  } while( true );\n}" primitive_type (function_declarator "d_print_mod_list(d_print_info *dpi,int options,d_print_mod *mods,int suffix)" identifier (parameter_list "(d_print_info *dpi,int options,d_print_mod *mods,int suffix)" ( (parameter_declaration "d_print_info *dpi" type_identifier (pointer_declarator "*dpi" * identifier)) , (parameter_declaration "int options" primitive_type identifier) , (parameter_declaration "d_print_mod *mods" type_identifier (pointer_declarator "*mods" * identifier)) , (parameter_declaration "int suffix" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  demangle_component_type dVar2;\n  size_t sVar3;\n  size_t sVar4;\n  demangle_component *pdVar5;\n  void *pvVar6;\n  char *pcVar7;\n  d_print_template *pdVar8;\n  d_print_mod *pdVar9;\n  char cVar10;\n  char *pcVar11;\n  demangle_callbackref p_Var12;\n  char buf [25];\n  \n  if (mods == (d_print_mod *)0x0) {\n    return;\n  }\n  iVar1 = dpi->demangle_failure;\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (mods->printed == 0) {\n      pdVar5 = mods->mod;\n      dVar2 = pdVar5->type;\n      if (suffix == 0) {\n        if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      pdVar8 = dpi->templates;\n      mods->printed = 1;\n      dpi->templates = mods->templates;\njoined_r0x0032113c:\n      if (dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n        d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n        pdVar5 = (pdVar5->u).s_fixed.length;\n        pdVar9 = dpi->modifiers;\n        dpi->modifiers = (d_print_mod *)0x0;\n        d_print_comp(dpi,options,pdVar5);\n        dpi->modifiers = pdVar9;\n        if ((options & 4U) == 0) {\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }\n        else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }\n        pdVar5 = (mods->mod->u).s_extended_operator.name;\n        dVar2 = pdVar5->type;\n        if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }\n        do {\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        } while( true );\n      }\n      d_print_mod(dpi,options,pdVar5);\n      mods = mods->next;\n      dpi->templates = pdVar8;\n    }\n    else {\nLAB_003210e8:\n      mods = mods->next;\n    }\n    if (mods == (d_print_mod *)0x0) {\n      return;\n    }\n    iVar1 = dpi->demangle_failure;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "demangle_component_type dVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "demangle_component *pdVar5;" type_identifier (pointer_declarator "*pdVar5" * identifier) ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "d_print_template *pdVar8;" type_identifier (pointer_declarator "*pdVar8" * identifier) ;) (declaration "d_print_mod *pdVar9;" type_identifier (pointer_declarator "*pdVar9" * identifier) ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "demangle_callbackref p_Var12;" type_identifier identifier ;) (declaration "char buf [25];" primitive_type (array_declarator "buf [25]" identifier [ number_literal ]) ;) (if_statement "if (mods == (d_print_mod *)0x0) {\n    return;\n  }" if (parenthesized_expression "(mods == (d_print_mod *)0x0)" ( (binary_expression "mods == (d_print_mod *)0x0" identifier == (cast_expression "(d_print_mod *)0x0" ( (type_descriptor "d_print_mod *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = dpi->demangle_failure;" (assignment_expression "iVar1 = dpi->demangle_failure" identifier = (field_expression "dpi->demangle_failure" identifier -> field_identifier)) ;) (do_statement "do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (mods->printed == 0) {\n      pdVar5 = mods->mod;\n      dVar2 = pdVar5->type;\n      if (suffix == 0) {\n        if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      pdVar8 = dpi->templates;\n      mods->printed = 1;\n      dpi->templates = mods->templates;\njoined_r0x0032113c:\n      if (dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n        d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n        pdVar5 = (pdVar5->u).s_fixed.length;\n        pdVar9 = dpi->modifiers;\n        dpi->modifiers = (d_print_mod *)0x0;\n        d_print_comp(dpi,options,pdVar5);\n        dpi->modifiers = pdVar9;\n        if ((options & 4U) == 0) {\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }\n        else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }\n        pdVar5 = (mods->mod->u).s_extended_operator.name;\n        dVar2 = pdVar5->type;\n        if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }\n        do {\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        } while( true );\n      }\n      d_print_mod(dpi,options,pdVar5);\n      mods = mods->next;\n      dpi->templates = pdVar8;\n    }\n    else {\nLAB_003210e8:\n      mods = mods->next;\n    }\n    if (mods == (d_print_mod *)0x0) {\n      return;\n    }\n    iVar1 = dpi->demangle_failure;\n  } while( true );" do (compound_statement "{\n    if (iVar1 != 0) {\n      return;\n    }\n    if (mods->printed == 0) {\n      pdVar5 = mods->mod;\n      dVar2 = pdVar5->type;\n      if (suffix == 0) {\n        if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      pdVar8 = dpi->templates;\n      mods->printed = 1;\n      dpi->templates = mods->templates;\njoined_r0x0032113c:\n      if (dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n        d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n        pdVar5 = (pdVar5->u).s_fixed.length;\n        pdVar9 = dpi->modifiers;\n        dpi->modifiers = (d_print_mod *)0x0;\n        d_print_comp(dpi,options,pdVar5);\n        dpi->modifiers = pdVar9;\n        if ((options & 4U) == 0) {\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }\n        else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }\n        pdVar5 = (mods->mod->u).s_extended_operator.name;\n        dVar2 = pdVar5->type;\n        if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }\n        do {\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        } while( true );\n      }\n      d_print_mod(dpi,options,pdVar5);\n      mods = mods->next;\n      dpi->templates = pdVar8;\n    }\n    else {\nLAB_003210e8:\n      mods = mods->next;\n    }\n    if (mods == (d_print_mod *)0x0) {\n      return;\n    }\n    iVar1 = dpi->demangle_failure;\n  }" { (if_statement "if (iVar1 != 0) {\n      return;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (mods->printed == 0) {\n      pdVar5 = mods->mod;\n      dVar2 = pdVar5->type;\n      if (suffix == 0) {\n        if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      pdVar8 = dpi->templates;\n      mods->printed = 1;\n      dpi->templates = mods->templates;\njoined_r0x0032113c:\n      if (dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n        d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n        pdVar5 = (pdVar5->u).s_fixed.length;\n        pdVar9 = dpi->modifiers;\n        dpi->modifiers = (d_print_mod *)0x0;\n        d_print_comp(dpi,options,pdVar5);\n        dpi->modifiers = pdVar9;\n        if ((options & 4U) == 0) {\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }\n        else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }\n        pdVar5 = (mods->mod->u).s_extended_operator.name;\n        dVar2 = pdVar5->type;\n        if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }\n        do {\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        } while( true );\n      }\n      d_print_mod(dpi,options,pdVar5);\n      mods = mods->next;\n      dpi->templates = pdVar8;\n    }\n    else {\nLAB_003210e8:\n      mods = mods->next;\n    }" if (parenthesized_expression "(mods->printed == 0)" ( (binary_expression "mods->printed == 0" (field_expression "mods->printed" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      pdVar5 = mods->mod;\n      dVar2 = pdVar5->type;\n      if (suffix == 0) {\n        if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      pdVar8 = dpi->templates;\n      mods->printed = 1;\n      dpi->templates = mods->templates;\njoined_r0x0032113c:\n      if (dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n        d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }\n      if (dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n        pdVar5 = (pdVar5->u).s_fixed.length;\n        pdVar9 = dpi->modifiers;\n        dpi->modifiers = (d_print_mod *)0x0;\n        d_print_comp(dpi,options,pdVar5);\n        dpi->modifiers = pdVar9;\n        if ((options & 4U) == 0) {\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }\n        else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }\n        pdVar5 = (mods->mod->u).s_extended_operator.name;\n        dVar2 = pdVar5->type;\n        if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }\n        do {\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        } while( true );\n      }\n      d_print_mod(dpi,options,pdVar5);\n      mods = mods->next;\n      dpi->templates = pdVar8;\n    }" { (expression_statement "pdVar5 = mods->mod;" (assignment_expression "pdVar5 = mods->mod" identifier = (field_expression "mods->mod" identifier -> field_identifier)) ;) (expression_statement "dVar2 = pdVar5->type;" (assignment_expression "dVar2 = pdVar5->type" identifier = (field_expression "pdVar5->type" identifier -> field_identifier)) ;) (if_statement "if (suffix == 0) {\n        if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }" if (parenthesized_expression "(suffix == 0)" ( (binary_expression "suffix == 0" identifier == number_literal) )) (compound_statement "{\n        if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }" { (if_statement "if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }" if (parenthesized_expression "(dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE)" ( (binary_expression "dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE" identifier != identifier) )) (compound_statement "{\n          if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }\n        }" { (if_statement "if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }\n          else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }" if (parenthesized_expression "(dVar2 < DEMANGLE_COMPONENT_CLONE)" ( (binary_expression "dVar2 < DEMANGLE_COMPONENT_CLONE" identifier < identifier) )) (compound_statement "{\n            if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;\n          }" { (if_statement "if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) goto LAB_00321090;" if (parenthesized_expression "(4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS)" ( (binary_expression "4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS" number_literal < (binary_expression "dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS" identifier - identifier)) )) (goto_statement "goto LAB_00321090;" goto statement_identifier ;)) }) (else_clause "else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }" else (if_statement "if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) {\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }" if (parenthesized_expression "(1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT)" ( (binary_expression "1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT" number_literal < (binary_expression "dVar2 - DEMANGLE_COMPONENT_NOEXCEPT" identifier - identifier)) )) (compound_statement "{\n            pdVar8 = dpi->templates;\n            mods->printed = 1;\n            dpi->templates = mods->templates;\n            goto joined_r0x0032113c;\n          }" { (expression_statement "pdVar8 = dpi->templates;" (assignment_expression "pdVar8 = dpi->templates" identifier = (field_expression "dpi->templates" identifier -> field_identifier)) ;) (expression_statement "mods->printed = 1;" (assignment_expression "mods->printed = 1" (field_expression "mods->printed" identifier -> field_identifier) = number_literal) ;) (expression_statement "dpi->templates = mods->templates;" (assignment_expression "dpi->templates = mods->templates" (field_expression "dpi->templates" identifier -> field_identifier) = (field_expression "mods->templates" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x0032113c;" goto statement_identifier ;) })))) })) (goto_statement "goto LAB_003210e8;" goto statement_identifier ;) })) (labeled_statement "LAB_00321090:\n      pdVar8 = dpi->templates;" statement_identifier : (expression_statement "pdVar8 = dpi->templates;" (assignment_expression "pdVar8 = dpi->templates" identifier = (field_expression "dpi->templates" identifier -> field_identifier)) ;)) (expression_statement "mods->printed = 1;" (assignment_expression "mods->printed = 1" (field_expression "mods->printed" identifier -> field_identifier) = number_literal) ;) (expression_statement "dpi->templates = mods->templates;" (assignment_expression "dpi->templates = mods->templates" (field_expression "dpi->templates" identifier -> field_identifier) = (field_expression "mods->templates" identifier -> field_identifier)) ;) (labeled_statement "joined_r0x0032113c:\n      if (dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }" statement_identifier : (if_statement "if (dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE) {\n        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }" if (parenthesized_expression "(dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE)" ( (binary_expression "dVar2 == DEMANGLE_COMPONENT_FUNCTION_TYPE" identifier == identifier) )) (compound_statement "{\n        d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }" { (expression_statement "d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next);" (call_expression "d_print_function_type(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next)" identifier (argument_list "(dpi,options,(demangle_component *)((int)&pdVar5->u + 4),mods->next)" ( identifier , identifier , (cast_expression "(demangle_component *)((int)&pdVar5->u + 4)" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar5->u + 4)" ( (binary_expression "(int)&pdVar5->u + 4" (cast_expression "(int)&pdVar5->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar5->u" & (field_expression "pdVar5->u" identifier -> field_identifier))) + number_literal) ))) , (field_expression "mods->next" identifier -> field_identifier) ))) ;) (expression_statement "dpi->templates = pdVar8;" (assignment_expression "dpi->templates = pdVar8" (field_expression "dpi->templates" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) }))) (if_statement "if (dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE) {\n        d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }" if (parenthesized_expression "(dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE)" ( (binary_expression "dVar2 == DEMANGLE_COMPONENT_ARRAY_TYPE" identifier == identifier) )) (compound_statement "{\n        d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);\n        dpi->templates = pdVar8;\n        return;\n      }" { (expression_statement "d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next);" (call_expression "d_print_array_type(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next)" identifier (argument_list "(dpi,options,(demangle_component *)&(pdVar5->u).s_name,mods->next)" ( identifier , identifier , (cast_expression "(demangle_component *)&(pdVar5->u).s_name" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pdVar5->u).s_name" & (field_expression "(pdVar5->u).s_name" (parenthesized_expression "(pdVar5->u)" ( (field_expression "pdVar5->u" identifier -> field_identifier) )) . field_identifier))) , (field_expression "mods->next" identifier -> field_identifier) ))) ;) (expression_statement "dpi->templates = pdVar8;" (assignment_expression "dpi->templates = pdVar8" (field_expression "dpi->templates" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME) {\n        pdVar5 = (pdVar5->u).s_fixed.length;\n        pdVar9 = dpi->modifiers;\n        dpi->modifiers = (d_print_mod *)0x0;\n        d_print_comp(dpi,options,pdVar5);\n        dpi->modifiers = pdVar9;\n        if ((options & 4U) == 0) {\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }\n        else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }\n        pdVar5 = (mods->mod->u).s_extended_operator.name;\n        dVar2 = pdVar5->type;\n        if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }\n        do {\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        } while( true );\n      }" if (parenthesized_expression "(dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME)" ( (binary_expression "dVar2 == DEMANGLE_COMPONENT_LOCAL_NAME" identifier == identifier) )) (compound_statement "{\n        pdVar5 = (pdVar5->u).s_fixed.length;\n        pdVar9 = dpi->modifiers;\n        dpi->modifiers = (d_print_mod *)0x0;\n        d_print_comp(dpi,options,pdVar5);\n        dpi->modifiers = pdVar9;\n        if ((options & 4U) == 0) {\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }\n        else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }\n        pdVar5 = (mods->mod->u).s_extended_operator.name;\n        dVar2 = pdVar5->type;\n        if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }\n        do {\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        } while( true );\n      }" { (expression_statement "pdVar5 = (pdVar5->u).s_fixed.length;" (assignment_expression "pdVar5 = (pdVar5->u).s_fixed.length" identifier = (field_expression "(pdVar5->u).s_fixed.length" (field_expression "(pdVar5->u).s_fixed" (parenthesized_expression "(pdVar5->u)" ( (field_expression "pdVar5->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pdVar9 = dpi->modifiers;" (assignment_expression "pdVar9 = dpi->modifiers" identifier = (field_expression "dpi->modifiers" identifier -> field_identifier)) ;) (expression_statement "dpi->modifiers = (d_print_mod *)0x0;" (assignment_expression "dpi->modifiers = (d_print_mod *)0x0" (field_expression "dpi->modifiers" identifier -> field_identifier) = (cast_expression "(d_print_mod *)0x0" ( (type_descriptor "d_print_mod *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "d_print_comp(dpi,options,pdVar5);" (call_expression "d_print_comp(dpi,options,pdVar5)" identifier (argument_list "(dpi,options,pdVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "dpi->modifiers = pdVar9;" (assignment_expression "dpi->modifiers = pdVar9" (field_expression "dpi->modifiers" identifier -> field_identifier) = identifier) ;) (if_statement "if ((options & 4U) == 0) {\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }\n        else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }" if (parenthesized_expression "((options & 4U) == 0)" ( (binary_expression "(options & 4U) == 0" (parenthesized_expression "(options & 4U)" ( (binary_expression "options & 4U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          cVar10 = ':';\n          pcVar7 = PTR_s__s_004c1a50 + 0x208;\n          pcVar11 = PTR_s__s_004c1a50 + 0x20a;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n        }" { (expression_statement "cVar10 = ':';" (assignment_expression "cVar10 = ':'" identifier = (char_literal "':'" ' character ')) ;) (expression_statement "pcVar7 = PTR_s__s_004c1a50 + 0x208;" (assignment_expression "pcVar7 = PTR_s__s_004c1a50 + 0x208" identifier = (binary_expression "PTR_s__s_004c1a50 + 0x208" identifier + number_literal)) ;) (expression_statement "pcVar11 = PTR_s__s_004c1a50 + 0x20a;" (assignment_expression "pcVar11 = PTR_s__s_004c1a50 + 0x20a" identifier = (binary_expression "PTR_s__s_004c1a50 + 0x20a" identifier + number_literal)) ;) (expression_statement "sVar3 = dpi->len;" (assignment_expression "sVar3 = dpi->len" identifier = (field_expression "dpi->len" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }" { (if_statement "if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }" if (parenthesized_expression "(sVar3 == 0xff)" ( (binary_expression "sVar3 == 0xff" identifier == number_literal) )) (compound_statement "{\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }" { (expression_statement "p_Var12 = dpi->callback;" (assignment_expression "p_Var12 = dpi->callback" identifier = (field_expression "dpi->callback" identifier -> field_identifier)) ;) (expression_statement "pvVar6 = dpi->opaque;" (assignment_expression "pvVar6 = dpi->opaque" identifier = (field_expression "dpi->opaque" identifier -> field_identifier)) ;) (expression_statement "dpi->buf[0xff] = '\0';" (assignment_expression "dpi->buf[0xff] = '\0'" (subscript_expression "dpi->buf[0xff]" (field_expression "dpi->buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(*p_Var12)(dpi->buf,0xff,pvVar6);" (call_expression "(*p_Var12)(dpi->buf,0xff,pvVar6)" (parenthesized_expression "(*p_Var12)" ( (pointer_expression "*p_Var12" * identifier) )) (argument_list "(dpi->buf,0xff,pvVar6)" ( (field_expression "dpi->buf" identifier -> field_identifier) , number_literal , identifier ))) ;) (expression_statement "sVar4 = 1;" (assignment_expression "sVar4 = 1" identifier = number_literal) ;) (expression_statement "sVar3 = 0;" (assignment_expression "sVar3 = 0" identifier = number_literal) ;) (expression_statement "dpi->flush_count = dpi->flush_count + 1;" (assignment_expression "dpi->flush_count = dpi->flush_count + 1" (field_expression "dpi->flush_count" identifier -> field_identifier) = (binary_expression "dpi->flush_count + 1" (field_expression "dpi->flush_count" identifier -> field_identifier) + number_literal)) ;) }) (else_clause "else {\n              sVar4 = sVar3 + 1;\n            }" else (compound_statement "{\n              sVar4 = sVar3 + 1;\n            }" { (expression_statement "sVar4 = sVar3 + 1;" (assignment_expression "sVar4 = sVar3 + 1" identifier = (binary_expression "sVar3 + 1" identifier + number_literal)) ;) }))) (expression_statement "dpi->len = sVar4;" (assignment_expression "dpi->len = sVar4" (field_expression "dpi->len" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "dpi->buf[sVar3] = cVar10;" (assignment_expression "dpi->buf[sVar3] = cVar10" (subscript_expression "dpi->buf[sVar3]" (field_expression "dpi->buf" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "dpi->last_char = cVar10;" (assignment_expression "dpi->last_char = cVar10" (field_expression "dpi->last_char" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar7 == pcVar11) break;" if (parenthesized_expression "(pcVar7 == pcVar11)" ( (binary_expression "pcVar7 == pcVar11" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "cVar10 = *pcVar7;" (assignment_expression "cVar10 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "sVar3 = sVar4;" (assignment_expression "sVar3 = sVar4" identifier = identifier) ;) })) }) (else_clause "else {\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }" else (compound_statement "{\n          sVar3 = dpi->len;\n          if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }\n          dpi->len = sVar4;\n          dpi->buf[sVar3] = '.';\n          dpi->last_char = '.';\n        }" { (expression_statement "sVar3 = dpi->len;" (assignment_expression "sVar3 = dpi->len" identifier = (field_expression "dpi->len" identifier -> field_identifier)) ;) (if_statement "if (sVar3 == 0xff) {\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }\n          else {\n            sVar4 = sVar3 + 1;\n          }" if (parenthesized_expression "(sVar3 == 0xff)" ( (binary_expression "sVar3 == 0xff" identifier == number_literal) )) (compound_statement "{\n            p_Var12 = dpi->callback;\n            pvVar6 = dpi->opaque;\n            dpi->buf[0xff] = '\0';\n            (*p_Var12)(dpi->buf,0xff,pvVar6);\n            sVar4 = 1;\n            sVar3 = 0;\n            dpi->flush_count = dpi->flush_count + 1;\n          }" { (expression_statement "p_Var12 = dpi->callback;" (assignment_expression "p_Var12 = dpi->callback" identifier = (field_expression "dpi->callback" identifier -> field_identifier)) ;) (expression_statement "pvVar6 = dpi->opaque;" (assignment_expression "pvVar6 = dpi->opaque" identifier = (field_expression "dpi->opaque" identifier -> field_identifier)) ;) (expression_statement "dpi->buf[0xff] = '\0';" (assignment_expression "dpi->buf[0xff] = '\0'" (subscript_expression "dpi->buf[0xff]" (field_expression "dpi->buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(*p_Var12)(dpi->buf,0xff,pvVar6);" (call_expression "(*p_Var12)(dpi->buf,0xff,pvVar6)" (parenthesized_expression "(*p_Var12)" ( (pointer_expression "*p_Var12" * identifier) )) (argument_list "(dpi->buf,0xff,pvVar6)" ( (field_expression "dpi->buf" identifier -> field_identifier) , number_literal , identifier ))) ;) (expression_statement "sVar4 = 1;" (assignment_expression "sVar4 = 1" identifier = number_literal) ;) (expression_statement "sVar3 = 0;" (assignment_expression "sVar3 = 0" identifier = number_literal) ;) (expression_statement "dpi->flush_count = dpi->flush_count + 1;" (assignment_expression "dpi->flush_count = dpi->flush_count + 1" (field_expression "dpi->flush_count" identifier -> field_identifier) = (binary_expression "dpi->flush_count + 1" (field_expression "dpi->flush_count" identifier -> field_identifier) + number_literal)) ;) }) (else_clause "else {\n            sVar4 = sVar3 + 1;\n          }" else (compound_statement "{\n            sVar4 = sVar3 + 1;\n          }" { (expression_statement "sVar4 = sVar3 + 1;" (assignment_expression "sVar4 = sVar3 + 1" identifier = (binary_expression "sVar3 + 1" identifier + number_literal)) ;) }))) (expression_statement "dpi->len = sVar4;" (assignment_expression "dpi->len = sVar4" (field_expression "dpi->len" identifier -> field_identifier) = identifier) ;) (expression_statement "dpi->buf[sVar3] = '.';" (assignment_expression "dpi->buf[sVar3] = '.'" (subscript_expression "dpi->buf[sVar3]" (field_expression "dpi->buf" identifier -> field_identifier) [ identifier ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "dpi->last_char = '.';" (assignment_expression "dpi->last_char = '.'" (field_expression "dpi->last_char" identifier -> field_identifier) = (char_literal "'.'" ' character ')) ;) }))) (expression_statement "pdVar5 = (mods->mod->u).s_extended_operator.name;" (assignment_expression "pdVar5 = (mods->mod->u).s_extended_operator.name" identifier = (field_expression "(mods->mod->u).s_extended_operator.name" (field_expression "(mods->mod->u).s_extended_operator" (parenthesized_expression "(mods->mod->u)" ( (field_expression "mods->mod->u" (field_expression "mods->mod" identifier -> field_identifier) -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "dVar2 = pdVar5->type;" (assignment_expression "dVar2 = pdVar5->type" identifier = (field_expression "pdVar5->type" identifier -> field_identifier)) ;) (if_statement "if (dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG) {\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }" if (parenthesized_expression "(dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG)" ( (binary_expression "dVar2 == DEMANGLE_COMPONENT_DEFAULT_ARG" identifier == identifier) )) (compound_statement "{\n          cVar10 = '{';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a47;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a3b;\n          sVar3 = dpi->len;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }\n          pcVar7 = buf;\n          (*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));\n          iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);\n          sVar3 = dpi->len;\n          if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }\n          cVar10 = '}';\n          pcVar7 = PTR_UINT_004c12dc + -0x5a38;\n          pcVar11 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }" { (expression_statement "cVar10 = '{';" (assignment_expression "cVar10 = '{'" identifier = (char_literal "'{'" ' character ')) ;) (expression_statement "pcVar7 = PTR_UINT_004c12dc + -0x5a47;" (assignment_expression "pcVar7 = PTR_UINT_004c12dc + -0x5a47" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a47" identifier + number_literal)) ;) (expression_statement "pcVar11 = PTR_UINT_004c12dc + -0x5a3b;" (assignment_expression "pcVar11 = PTR_UINT_004c12dc + -0x5a3b" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a3b" identifier + number_literal)) ;) (expression_statement "sVar3 = dpi->len;" (assignment_expression "sVar3 = dpi->len" identifier = (field_expression "dpi->len" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar7 == pcVar11) break;\n            cVar10 = *pcVar7;\n            pcVar7 = pcVar7 + 1;\n            sVar3 = sVar4;\n          }" { (if_statement "if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }" if (parenthesized_expression "(sVar3 == 0xff)" ( (binary_expression "sVar3 == 0xff" identifier == number_literal) )) (compound_statement "{\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }" { (expression_statement "p_Var12 = dpi->callback;" (assignment_expression "p_Var12 = dpi->callback" identifier = (field_expression "dpi->callback" identifier -> field_identifier)) ;) (expression_statement "pvVar6 = dpi->opaque;" (assignment_expression "pvVar6 = dpi->opaque" identifier = (field_expression "dpi->opaque" identifier -> field_identifier)) ;) (expression_statement "dpi->buf[0xff] = '\0';" (assignment_expression "dpi->buf[0xff] = '\0'" (subscript_expression "dpi->buf[0xff]" (field_expression "dpi->buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(*p_Var12)(dpi->buf,0xff,pvVar6);" (call_expression "(*p_Var12)(dpi->buf,0xff,pvVar6)" (parenthesized_expression "(*p_Var12)" ( (pointer_expression "*p_Var12" * identifier) )) (argument_list "(dpi->buf,0xff,pvVar6)" ( (field_expression "dpi->buf" identifier -> field_identifier) , number_literal , identifier ))) ;) (expression_statement "sVar4 = 1;" (assignment_expression "sVar4 = 1" identifier = number_literal) ;) (expression_statement "sVar3 = 0;" (assignment_expression "sVar3 = 0" identifier = number_literal) ;) (expression_statement "dpi->flush_count = dpi->flush_count + 1;" (assignment_expression "dpi->flush_count = dpi->flush_count + 1" (field_expression "dpi->flush_count" identifier -> field_identifier) = (binary_expression "dpi->flush_count + 1" (field_expression "dpi->flush_count" identifier -> field_identifier) + number_literal)) ;) }) (else_clause "else {\n              sVar4 = sVar3 + 1;\n            }" else (compound_statement "{\n              sVar4 = sVar3 + 1;\n            }" { (expression_statement "sVar4 = sVar3 + 1;" (assignment_expression "sVar4 = sVar3 + 1" identifier = (binary_expression "sVar3 + 1" identifier + number_literal)) ;) }))) (expression_statement "dpi->len = sVar4;" (assignment_expression "dpi->len = sVar4" (field_expression "dpi->len" identifier -> field_identifier) = identifier) ;) (expression_statement "dpi->buf[sVar3] = cVar10;" (assignment_expression "dpi->buf[sVar3] = cVar10" (subscript_expression "dpi->buf[sVar3]" (field_expression "dpi->buf" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "dpi->last_char = cVar10;" (assignment_expression "dpi->last_char = cVar10" (field_expression "dpi->last_char" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar7 == pcVar11) break;" if (parenthesized_expression "(pcVar7 == pcVar11)" ( (binary_expression "pcVar7 == pcVar11" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "cVar10 = *pcVar7;" (assignment_expression "cVar10 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "sVar3 = sVar4;" (assignment_expression "sVar3 = sVar4" identifier = identifier) ;) })) (expression_statement "pcVar7 = buf;" (assignment_expression "pcVar7 = buf" identifier = identifier) ;) (expression_statement "(*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));" (call_expression "(*(code *)PTR_sprintf_004c5d14)\n                    (pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1))" (parenthesized_expression "(*(code *)PTR_sprintf_004c5d14)" ( (pointer_expression "*(code *)PTR_sprintf_004c5d14" * (cast_expression "(code *)PTR_sprintf_004c5d14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar7,PTR_s__s_004c1a50 + 0x1264,\n                     (byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1))" ( identifier , (binary_expression "PTR_s__s_004c1a50 + 0x1264" identifier + number_literal) , (cast_expression "(byte *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((pdVar5->u).s_extended_operator.name)->type + 1)" ( (binary_expression "(int)&((pdVar5->u).s_extended_operator.name)->type + 1" (cast_expression "(int)&((pdVar5->u).s_extended_operator.name)->type" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((pdVar5->u).s_extended_operator.name)->type" & (field_expression "((pdVar5->u).s_extended_operator.name)->type" (parenthesized_expression "((pdVar5->u).s_extended_operator.name)" ( (field_expression "(pdVar5->u).s_extended_operator.name" (field_expression "(pdVar5->u).s_extended_operator" (parenthesized_expression "(pdVar5->u)" ( (field_expression "pdVar5->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) )) -> field_identifier))) + number_literal) ))) ))) ;) (expression_statement "iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7);" (assignment_expression "iVar1 = (*(code *)PTR_strlen_004c5b9c)(pcVar7)" identifier = (call_expression "(*(code *)PTR_strlen_004c5b9c)(pcVar7)" (parenthesized_expression "(*(code *)PTR_strlen_004c5b9c)" ( (pointer_expression "*(code *)PTR_strlen_004c5b9c" * (cast_expression "(code *)PTR_strlen_004c5b9c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar7)" ( identifier )))) ;) (expression_statement "sVar3 = dpi->len;" (assignment_expression "sVar3 = dpi->len" identifier = (field_expression "dpi->len" identifier -> field_identifier)) ;) (if_statement "if (iVar1 != 0) {\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar11 = pcVar7 + iVar1;\n            sVar4 = sVar3;\n            do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);\n          }" { (expression_statement "pcVar11 = pcVar7 + iVar1;" (assignment_expression "pcVar11 = pcVar7 + iVar1" identifier = (binary_expression "pcVar7 + iVar1" identifier + identifier)) ;) (expression_statement "sVar4 = sVar3;" (assignment_expression "sVar4 = sVar3" identifier = identifier) ;) (do_statement "do {\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            } while (pcVar11 != pcVar7);" do (compound_statement "{\n              cVar10 = *pcVar7;\n              if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }\n              dpi->len = sVar3;\n              pcVar7 = pcVar7 + 1;\n              dpi->buf[sVar4] = cVar10;\n              dpi->last_char = cVar10;\n              sVar4 = sVar3;\n            }" { (expression_statement "cVar10 = *pcVar7;" (assignment_expression "cVar10 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (if_statement "if (sVar4 == 0xff) {\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }\n              else {\n                sVar3 = sVar4 + 1;\n              }" if (parenthesized_expression "(sVar4 == 0xff)" ( (binary_expression "sVar4 == 0xff" identifier == number_literal) )) (compound_statement "{\n                p_Var12 = dpi->callback;\n                pvVar6 = dpi->opaque;\n                dpi->buf[0xff] = '\0';\n                (*p_Var12)(dpi->buf,0xff,pvVar6);\n                sVar3 = 1;\n                sVar4 = 0;\n                dpi->flush_count = dpi->flush_count + 1;\n              }" { (expression_statement "p_Var12 = dpi->callback;" (assignment_expression "p_Var12 = dpi->callback" identifier = (field_expression "dpi->callback" identifier -> field_identifier)) ;) (expression_statement "pvVar6 = dpi->opaque;" (assignment_expression "pvVar6 = dpi->opaque" identifier = (field_expression "dpi->opaque" identifier -> field_identifier)) ;) (expression_statement "dpi->buf[0xff] = '\0';" (assignment_expression "dpi->buf[0xff] = '\0'" (subscript_expression "dpi->buf[0xff]" (field_expression "dpi->buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(*p_Var12)(dpi->buf,0xff,pvVar6);" (call_expression "(*p_Var12)(dpi->buf,0xff,pvVar6)" (parenthesized_expression "(*p_Var12)" ( (pointer_expression "*p_Var12" * identifier) )) (argument_list "(dpi->buf,0xff,pvVar6)" ( (field_expression "dpi->buf" identifier -> field_identifier) , number_literal , identifier ))) ;) (expression_statement "sVar3 = 1;" (assignment_expression "sVar3 = 1" identifier = number_literal) ;) (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (expression_statement "dpi->flush_count = dpi->flush_count + 1;" (assignment_expression "dpi->flush_count = dpi->flush_count + 1" (field_expression "dpi->flush_count" identifier -> field_identifier) = (binary_expression "dpi->flush_count + 1" (field_expression "dpi->flush_count" identifier -> field_identifier) + number_literal)) ;) }) (else_clause "else {\n                sVar3 = sVar4 + 1;\n              }" else (compound_statement "{\n                sVar3 = sVar4 + 1;\n              }" { (expression_statement "sVar3 = sVar4 + 1;" (assignment_expression "sVar3 = sVar4 + 1" identifier = (binary_expression "sVar4 + 1" identifier + number_literal)) ;) }))) (expression_statement "dpi->len = sVar3;" (assignment_expression "dpi->len = sVar3" (field_expression "dpi->len" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "dpi->buf[sVar4] = cVar10;" (assignment_expression "dpi->buf[sVar4] = cVar10" (subscript_expression "dpi->buf[sVar4]" (field_expression "dpi->buf" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "dpi->last_char = cVar10;" (assignment_expression "dpi->last_char = cVar10" (field_expression "dpi->last_char" identifier -> field_identifier) = identifier) ;) (expression_statement "sVar4 = sVar3;" (assignment_expression "sVar4 = sVar3" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar11 != pcVar7)" ( (binary_expression "pcVar11 != pcVar7" identifier != identifier) )) ;) })) (expression_statement "cVar10 = '}';" (assignment_expression "cVar10 = '}'" identifier = (char_literal "'}'" ' character ')) ;) (expression_statement "pcVar7 = PTR_UINT_004c12dc + -0x5a38;" (assignment_expression "pcVar7 = PTR_UINT_004c12dc + -0x5a38" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a38" identifier + number_literal)) ;) (expression_statement "pcVar11 = PTR_UINT_004c12dc + -0x5a35;" (assignment_expression "pcVar11 = PTR_UINT_004c12dc + -0x5a35" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a35" identifier + number_literal)) ;) (while_statement "while( true ) {\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }\n            dpi->len = sVar4;\n            pcVar7 = pcVar7 + 1;\n            dpi->buf[sVar3] = cVar10;\n            dpi->last_char = cVar10;\n            if (pcVar11 == pcVar7) break;\n            cVar10 = *pcVar7;\n            sVar3 = sVar4;\n          }" { (if_statement "if (sVar3 == 0xff) {\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }\n            else {\n              sVar4 = sVar3 + 1;\n            }" if (parenthesized_expression "(sVar3 == 0xff)" ( (binary_expression "sVar3 == 0xff" identifier == number_literal) )) (compound_statement "{\n              p_Var12 = dpi->callback;\n              pvVar6 = dpi->opaque;\n              dpi->buf[0xff] = '\0';\n              (*p_Var12)(dpi->buf,0xff,pvVar6);\n              sVar4 = 1;\n              sVar3 = 0;\n              dpi->flush_count = dpi->flush_count + 1;\n            }" { (expression_statement "p_Var12 = dpi->callback;" (assignment_expression "p_Var12 = dpi->callback" identifier = (field_expression "dpi->callback" identifier -> field_identifier)) ;) (expression_statement "pvVar6 = dpi->opaque;" (assignment_expression "pvVar6 = dpi->opaque" identifier = (field_expression "dpi->opaque" identifier -> field_identifier)) ;) (expression_statement "dpi->buf[0xff] = '\0';" (assignment_expression "dpi->buf[0xff] = '\0'" (subscript_expression "dpi->buf[0xff]" (field_expression "dpi->buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(*p_Var12)(dpi->buf,0xff,pvVar6);" (call_expression "(*p_Var12)(dpi->buf,0xff,pvVar6)" (parenthesized_expression "(*p_Var12)" ( (pointer_expression "*p_Var12" * identifier) )) (argument_list "(dpi->buf,0xff,pvVar6)" ( (field_expression "dpi->buf" identifier -> field_identifier) , number_literal , identifier ))) ;) (expression_statement "sVar4 = 1;" (assignment_expression "sVar4 = 1" identifier = number_literal) ;) (expression_statement "sVar3 = 0;" (assignment_expression "sVar3 = 0" identifier = number_literal) ;) (expression_statement "dpi->flush_count = dpi->flush_count + 1;" (assignment_expression "dpi->flush_count = dpi->flush_count + 1" (field_expression "dpi->flush_count" identifier -> field_identifier) = (binary_expression "dpi->flush_count + 1" (field_expression "dpi->flush_count" identifier -> field_identifier) + number_literal)) ;) }) (else_clause "else {\n              sVar4 = sVar3 + 1;\n            }" else (compound_statement "{\n              sVar4 = sVar3 + 1;\n            }" { (expression_statement "sVar4 = sVar3 + 1;" (assignment_expression "sVar4 = sVar3 + 1" identifier = (binary_expression "sVar3 + 1" identifier + number_literal)) ;) }))) (expression_statement "dpi->len = sVar4;" (assignment_expression "dpi->len = sVar4" (field_expression "dpi->len" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "dpi->buf[sVar3] = cVar10;" (assignment_expression "dpi->buf[sVar3] = cVar10" (subscript_expression "dpi->buf[sVar3]" (field_expression "dpi->buf" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "dpi->last_char = cVar10;" (assignment_expression "dpi->last_char = cVar10" (field_expression "dpi->last_char" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar11 == pcVar7) break;" if (parenthesized_expression "(pcVar11 == pcVar7)" ( (binary_expression "pcVar11 == pcVar7" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "cVar10 = *pcVar7;" (assignment_expression "cVar10 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "sVar3 = sVar4;" (assignment_expression "sVar3 = sVar4" identifier = identifier) ;) })) (expression_statement "pdVar5 = (pdVar5->u).s_fixed.length;" (assignment_expression "pdVar5 = (pdVar5->u).s_fixed.length" identifier = (field_expression "(pdVar5->u).s_fixed.length" (field_expression "(pdVar5->u).s_fixed" (parenthesized_expression "(pdVar5->u)" ( (field_expression "pdVar5->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "dVar2 = pdVar5->type;" (assignment_expression "dVar2 = pdVar5->type" identifier = (field_expression "pdVar5->type" identifier -> field_identifier)) ;) })) (do_statement "do {\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        } while( true );" do (compound_statement "{\n          if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }\n          pdVar5 = (pdVar5->u).s_fixed.length;\n          dVar2 = pdVar5->type;\n        }" { (if_statement "if (dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE) {\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }" if (parenthesized_expression "(dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE)" ( (binary_expression "dVar2 != DEMANGLE_COMPONENT_TRANSACTION_SAFE" identifier != identifier) )) (compound_statement "{\n            if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;\n          }" { (if_statement "if (dVar2 < DEMANGLE_COMPONENT_CLONE) {\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }\n            else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;" if (parenthesized_expression "(dVar2 < DEMANGLE_COMPONENT_CLONE)" ( (binary_expression "dVar2 < DEMANGLE_COMPONENT_CLONE" identifier < identifier) )) (compound_statement "{\n              if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }\n            }" { (if_statement "if (4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS) {\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }" if (parenthesized_expression "(4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS)" ( (binary_expression "4 < dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS" number_literal < (binary_expression "dVar2 - DEMANGLE_COMPONENT_RESTRICT_THIS" identifier - identifier)) )) (compound_statement "{\nLAB_00321278:\n                d_print_comp(dpi,options,pdVar5);\n                dpi->templates = pdVar8;\n                return;\n              }" { (labeled_statement "LAB_00321278:\n                d_print_comp(dpi,options,pdVar5);" statement_identifier : (expression_statement "d_print_comp(dpi,options,pdVar5);" (call_expression "d_print_comp(dpi,options,pdVar5)" identifier (argument_list "(dpi,options,pdVar5)" ( identifier , identifier , identifier ))) ;)) (expression_statement "dpi->templates = pdVar8;" (assignment_expression "dpi->templates = pdVar8" (field_expression "dpi->templates" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;" else (if_statement "if (1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT) goto LAB_00321278;" if (parenthesized_expression "(1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT)" ( (binary_expression "1 < dVar2 - DEMANGLE_COMPONENT_NOEXCEPT" number_literal < (binary_expression "dVar2 - DEMANGLE_COMPONENT_NOEXCEPT" identifier - identifier)) )) (goto_statement "goto LAB_00321278;" goto statement_identifier ;)))) })) (expression_statement "pdVar5 = (pdVar5->u).s_fixed.length;" (assignment_expression "pdVar5 = (pdVar5->u).s_fixed.length" identifier = (field_expression "(pdVar5->u).s_fixed.length" (field_expression "(pdVar5->u).s_fixed" (parenthesized_expression "(pdVar5->u)" ( (field_expression "pdVar5->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "dVar2 = pdVar5->type;" (assignment_expression "dVar2 = pdVar5->type" identifier = (field_expression "pdVar5->type" identifier -> field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "d_print_mod(dpi,options,pdVar5);" (call_expression "d_print_mod(dpi,options,pdVar5)" identifier (argument_list "(dpi,options,pdVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "mods = mods->next;" (assignment_expression "mods = mods->next" identifier = (field_expression "mods->next" identifier -> field_identifier)) ;) (expression_statement "dpi->templates = pdVar8;" (assignment_expression "dpi->templates = pdVar8" (field_expression "dpi->templates" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\nLAB_003210e8:\n      mods = mods->next;\n    }" else (compound_statement "{\nLAB_003210e8:\n      mods = mods->next;\n    }" { (labeled_statement "LAB_003210e8:\n      mods = mods->next;" statement_identifier : (expression_statement "mods = mods->next;" (assignment_expression "mods = mods->next" identifier = (field_expression "mods->next" identifier -> field_identifier)) ;)) }))) (if_statement "if (mods == (d_print_mod *)0x0) {\n      return;\n    }" if (parenthesized_expression "(mods == (d_print_mod *)0x0)" ( (binary_expression "mods == (d_print_mod *)0x0" identifier == (cast_expression "(d_print_mod *)0x0" ( (type_descriptor "d_print_mod *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = dpi->demangle_failure;" (assignment_expression "iVar1 = dpi->demangle_failure" identifier = (field_expression "dpi->demangle_failure" identifier -> field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_00320fec(int param_1,uint param_2,int *param_3,int param_4)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 uVar8;\n  undefined1 *puVar9;\n  undefined1 local_48 [32];\n  \n  if (param_3 == (int *)0x0) {\n    return;\n  }\n  iVar1 = *(int *)(param_1 + 0x118);\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );\n}\n\n" (function_definition "void FUN_00320fec(int param_1,uint param_2,int *param_3,int param_4)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 uVar8;\n  undefined1 *puVar9;\n  undefined1 local_48 [32];\n  \n  if (param_3 == (int *)0x0) {\n    return;\n  }\n  iVar1 = *(int *)(param_1 + 0x118);\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );\n}" primitive_type (function_declarator "FUN_00320fec(int param_1,uint param_2,int *param_3,int param_4)" identifier (parameter_list "(int param_1,uint param_2,int *param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 uVar8;\n  undefined1 *puVar9;\n  undefined1 local_48 [32];\n  \n  if (param_3 == (int *)0x0) {\n    return;\n  }\n  iVar1 = *(int *)(param_1 + 0x118);\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined1 uVar8;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined1 local_48 [32];" type_identifier (array_declarator "local_48 [32]" identifier [ number_literal ]) ;) (if_statement "if (param_3 == (int *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = *(int *)(param_1 + 0x118);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x118)" identifier = (pointer_expression "*(int *)(param_1 + 0x118)" * (cast_expression "(int *)(param_1 + 0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) ))))) ;) (do_statement "do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );" do (compound_statement "{\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  }" { (if_statement "if (iVar1 != 0) {\n      return;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }" if (parenthesized_expression "(param_3[2] == 0)" ( (binary_expression "param_3[2] == 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }" { (expression_statement "puVar4 = (uint *)param_3[1];" (assignment_expression "puVar4 = (uint *)param_3[1]" identifier = (cast_expression "(uint *)param_3[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }" { (if_statement "if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }" if (parenthesized_expression "(uVar2 != 0x4c)" ( (binary_expression "uVar2 != 0x4c" identifier != number_literal) )) (compound_statement "{\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }" { (if_statement "if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" if (parenthesized_expression "(uVar2 < 0x4d)" ( (binary_expression "uVar2 < 0x4d" identifier < number_literal) )) (compound_statement "{\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }" { (if_statement "if (4 < uVar2 - 0x1c) goto LAB_00321090;" if (parenthesized_expression "(4 < uVar2 - 0x1c)" ( (binary_expression "4 < uVar2 - 0x1c" number_literal < (binary_expression "uVar2 - 0x1c" identifier - number_literal)) )) (goto_statement "goto LAB_00321090;" goto statement_identifier ;)) }) (else_clause "else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" else (if_statement "if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" if (parenthesized_expression "(1 < uVar2 - 0x4e)" ( (binary_expression "1 < uVar2 - 0x4e" number_literal < (binary_expression "uVar2 - 0x4e" identifier - number_literal)) )) (compound_statement "{\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" { (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0x110);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0x110)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) ;) (expression_statement "param_3[2] = 1;" (assignment_expression "param_3[2] = 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x110) = param_3[3];" (assignment_expression "*(int *)(param_1 + 0x110) = param_3[3]" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x0032113c;" goto statement_identifier ;) })))) })) (goto_statement "goto LAB_003210e8;" goto statement_identifier ;) })) (labeled_statement "LAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);" statement_identifier : (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0x110);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0x110)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) ))))) ;)) (expression_statement "param_3[2] = 1;" (assignment_expression "param_3[2] = 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x110) = param_3[3];" (assignment_expression "*(int *)(param_1 + 0x110) = param_3[3]" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (labeled_statement "joined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" statement_identifier : (if_statement "if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x29)" ( (binary_expression "uVar2 == 0x29" identifier == number_literal) )) (compound_statement "{\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" { (expression_statement "FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);" (call_expression "FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3)" identifier (argument_list "(param_1,param_2,puVar4 + 3,*param_3)" ( identifier , identifier , (binary_expression "puVar4 + 3" identifier + number_literal) , (pointer_expression "*param_3" * identifier) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) }))) (if_statement "if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" if (parenthesized_expression "(uVar2 == 0x2a)" ( (binary_expression "uVar2 == 0x2a" identifier == number_literal) )) (compound_statement "{\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" { (expression_statement "FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);" (call_expression "FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3)" identifier (argument_list "(param_1,param_2,puVar4 + 2,*param_3)" ( identifier , identifier , (binary_expression "puVar4 + 2" identifier + number_literal) , (pointer_expression "*param_3" * identifier) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }" if (parenthesized_expression "(uVar2 == 2)" ( (binary_expression "uVar2 == 2" identifier == number_literal) )) (compound_statement "{\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }" { (expression_statement "uVar2 = puVar4[2];" (assignment_expression "uVar2 = puVar4[2]" identifier = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = *(undefined4 *)(param_1 + 0x114);" (assignment_expression "uVar7 = *(undefined4 *)(param_1 + 0x114)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x114)" * (cast_expression "(undefined4 *)(param_1 + 0x114)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x114)" ( (binary_expression "param_1 + 0x114" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x114) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x114) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x114)" * (cast_expression "(undefined4 *)(param_1 + 0x114)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x114)" ( (binary_expression "param_1 + 0x114" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0031b710(param_1,param_2,uVar2);" (call_expression "FUN_0031b710(param_1,param_2,uVar2)" identifier (argument_list "(param_1,param_2,uVar2)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x114) = uVar7;" (assignment_expression "*(undefined4 *)(param_1 + 0x114) = uVar7" (pointer_expression "*(undefined4 *)(param_1 + 0x114)" * (cast_expression "(undefined4 *)(param_1 + 0x114)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x114)" ( (binary_expression "param_1 + 0x114" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }" if (parenthesized_expression "((param_2 & 4) == 0)" ( (binary_expression "(param_2 & 4) == 0" (parenthesized_expression "(param_2 & 4)" ( (binary_expression "param_2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }" { (expression_statement "uVar8 = 0x3a;" (assignment_expression "uVar8 = 0x3a" identifier = number_literal) ;) (expression_statement "puVar5 = PTR_s__s_004c1a50 + 0x208;" (assignment_expression "puVar5 = PTR_s__s_004c1a50 + 0x208" identifier = (binary_expression "PTR_s__s_004c1a50 + 0x208" identifier + number_literal)) ;) (expression_statement "puVar9 = PTR_s__s_004c1a50 + 0x20a;" (assignment_expression "puVar9 = PTR_s__s_004c1a50 + 0x20a" identifier = (binary_expression "PTR_s__s_004c1a50 + 0x20a" identifier + number_literal)) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" identifier = (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" { (if_statement "if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }" if (parenthesized_expression "(iVar1 == 0xff)" ( (binary_expression "iVar1 == 0xff" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }" { (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" * (cast_expression "(undefined1 *)(param_1 + 0xff)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xff)" ( (binary_expression "param_1 + 0xff" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" ( (pointer_expression "**(code **)(param_1 + 0x108)" * (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" ( identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" * (cast_expression "(undefined4 *)(param_1 + 0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              iVar3 = iVar1 + 1;\n            }" else (compound_statement "{\n              iVar3 = iVar1 + 1;\n            }" { (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + iVar1) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" * (cast_expression "(undefined1 *)(param_1 + iVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar1)" ( (binary_expression "param_1 + iVar1" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" * (cast_expression "(undefined1 *)(param_1 + 0x104)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar5 == puVar9) break;" if (parenthesized_expression "(puVar5 == puVar9)" ( (binary_expression "puVar5 == puVar9" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" identifier = identifier) ;) })) }) (else_clause "else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }" else (compound_statement "{\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }" { (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" identifier = (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }" if (parenthesized_expression "(iVar1 == 0xff)" ( (binary_expression "iVar1 == 0xff" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }" { (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" * (cast_expression "(undefined1 *)(param_1 + 0xff)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xff)" ( (binary_expression "param_1 + 0xff" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" ( (pointer_expression "**(code **)(param_1 + 0x108)" * (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" ( identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" * (cast_expression "(undefined4 *)(param_1 + 0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n            iVar3 = iVar1 + 1;\n          }" else (compound_statement "{\n            iVar3 = iVar1 + 1;\n          }" { (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + iVar1) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" * (cast_expression "(undefined1 *)(param_1 + iVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar1)" ( (binary_expression "param_1 + iVar1" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x104) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" * (cast_expression "(undefined1 *)(param_1 + 0x104)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = number_literal) ;) }))) (expression_statement "puVar4 = *(uint **)(param_3[1] + 0xc);" (assignment_expression "puVar4 = *(uint **)(param_3[1] + 0xc)" identifier = (pointer_expression "*(uint **)(param_3[1] + 0xc)" * (cast_expression "(uint **)(param_3[1] + 0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3[1] + 0xc)" ( (binary_expression "param_3[1] + 0xc" (subscript_expression "param_3[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }" if (parenthesized_expression "(uVar2 == 0x46)" ( (binary_expression "uVar2 == 0x46" identifier == number_literal) )) (compound_statement "{\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }" { (expression_statement "uVar8 = 0x7b;" (assignment_expression "uVar8 = 0x7b" identifier = number_literal) ;) (expression_statement "puVar5 = PTR_UINT_004c12dc + -0x5a47;" (assignment_expression "puVar5 = PTR_UINT_004c12dc + -0x5a47" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a47" identifier + number_literal)) ;) (expression_statement "puVar9 = PTR_UINT_004c12dc + -0x5a3b;" (assignment_expression "puVar9 = PTR_UINT_004c12dc + -0x5a3b" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a3b" identifier + number_literal)) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" identifier = (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }" { (if_statement "if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }" if (parenthesized_expression "(iVar1 == 0xff)" ( (binary_expression "iVar1 == 0xff" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }" { (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" * (cast_expression "(undefined1 *)(param_1 + 0xff)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xff)" ( (binary_expression "param_1 + 0xff" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" ( (pointer_expression "**(code **)(param_1 + 0x108)" * (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" ( identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" * (cast_expression "(undefined4 *)(param_1 + 0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              iVar3 = iVar1 + 1;\n            }" else (compound_statement "{\n              iVar3 = iVar1 + 1;\n            }" { (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + iVar1) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" * (cast_expression "(undefined1 *)(param_1 + iVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar1)" ( (binary_expression "param_1 + iVar1" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" * (cast_expression "(undefined1 *)(param_1 + 0x104)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar5 == puVar9) break;" if (parenthesized_expression "(puVar5 == puVar9)" ( (binary_expression "puVar5 == puVar9" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" identifier = identifier) ;) })) (expression_statement "puVar5 = local_48;" (assignment_expression "puVar5 = local_48" identifier = identifier) ;) (expression_statement "(*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);" (call_expression "(*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1)" (parenthesized_expression "(*(code *)PTR_sprintf_004c5d14)" ( (pointer_expression "*(code *)PTR_sprintf_004c5d14" * (cast_expression "(code *)PTR_sprintf_004c5d14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1)" ( identifier , (binary_expression "PTR_s__s_004c1a50 + 0x1264" identifier + number_literal) , (binary_expression "puVar4[3] + 1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5)" identifier = (call_expression "(*(code *)PTR_strlen_004c5b9c)(puVar5)" (parenthesized_expression "(*(code *)PTR_strlen_004c5b9c)" ( (pointer_expression "*(code *)PTR_strlen_004c5b9c" * (cast_expression "(code *)PTR_strlen_004c5b9c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5)" ( identifier )))) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" identifier = (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }" { (expression_statement "puVar9 = puVar5 + iVar3;" (assignment_expression "puVar9 = puVar5 + iVar3" identifier = (binary_expression "puVar5 + iVar3" identifier + identifier)) ;) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" identifier = identifier) ;) (do_statement "do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);" do (compound_statement "{\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            }" { (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (if_statement "if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }" if (parenthesized_expression "(iVar3 == 0xff)" ( (binary_expression "iVar3 == 0xff" identifier == number_literal) )) (compound_statement "{\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }" { (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" * (cast_expression "(undefined1 *)(param_1 + 0xff)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xff)" ( (binary_expression "param_1 + 0xff" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" ( (pointer_expression "**(code **)(param_1 + 0x108)" * (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" ( identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" * (cast_expression "(undefined4 *)(param_1 + 0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                iVar1 = iVar3 + 1;\n              }" else (compound_statement "{\n                iVar1 = iVar3 + 1;\n              }" { (expression_statement "iVar1 = iVar3 + 1;" (assignment_expression "iVar1 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(param_1 + 0x100) = iVar1;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar1" (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + iVar3) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar3) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar3)" * (cast_expression "(undefined1 *)(param_1 + iVar3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar3)" ( (binary_expression "param_1 + iVar3" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" * (cast_expression "(undefined1 *)(param_1 + 0x104)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != puVar5)" ( (binary_expression "puVar9 != puVar5" identifier != identifier) )) ;) })) (expression_statement "uVar8 = 0x7d;" (assignment_expression "uVar8 = 0x7d" identifier = number_literal) ;) (expression_statement "puVar5 = PTR_UINT_004c12dc + -0x5a38;" (assignment_expression "puVar5 = PTR_UINT_004c12dc + -0x5a38" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a38" identifier + number_literal)) ;) (expression_statement "puVar9 = PTR_UINT_004c12dc + -0x5a35;" (assignment_expression "puVar9 = PTR_UINT_004c12dc + -0x5a35" identifier = (binary_expression "PTR_UINT_004c12dc + -0x5a35" identifier + number_literal)) ;) (while_statement "while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" { (if_statement "if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }" if (parenthesized_expression "(iVar1 == 0xff)" ( (binary_expression "iVar1 == 0xff" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }" { (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" * (cast_expression "(undefined1 *)(param_1 + 0xff)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xff)" ( (binary_expression "param_1 + 0xff" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" ( (pointer_expression "**(code **)(param_1 + 0x108)" * (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))) )) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" ( identifier , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" * (cast_expression "(undefined4 *)(param_1 + 0x10c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              iVar3 = iVar1 + 1;\n            }" else (compound_statement "{\n              iVar3 = iVar1 + 1;\n            }" { (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) }))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" * (cast_expression "(int *)(param_1 + 0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + iVar1) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" * (cast_expression "(undefined1 *)(param_1 + iVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar1)" ( (binary_expression "param_1 + iVar1" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" * (cast_expression "(undefined1 *)(param_1 + 0x104)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar9 == puVar5) break;" if (parenthesized_expression "(puVar9 == puVar5)" ( (binary_expression "puVar9 == puVar5" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" identifier = identifier) ;) })) (expression_statement "puVar4 = (uint *)puVar4[2];" (assignment_expression "puVar4 = (uint *)puVar4[2]" identifier = (cast_expression "(uint *)puVar4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) })) (do_statement "do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );" do (compound_statement "{\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }" { (if_statement "if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }" if (parenthesized_expression "(uVar2 != 0x4c)" ( (binary_expression "uVar2 != 0x4c" identifier != number_literal) )) (compound_statement "{\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }" { (if_statement "if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;" if (parenthesized_expression "(uVar2 < 0x4d)" ( (binary_expression "uVar2 < 0x4d" identifier < number_literal) )) (compound_statement "{\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }" { (if_statement "if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }" if (parenthesized_expression "(4 < uVar2 - 0x1c)" ( (binary_expression "4 < uVar2 - 0x1c" number_literal < (binary_expression "uVar2 - 0x1c" identifier - number_literal)) )) (compound_statement "{\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }" { (labeled_statement "LAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);" statement_identifier : (expression_statement "FUN_0031b710(param_1,param_2,puVar4);" (call_expression "FUN_0031b710(param_1,param_2,puVar4)" identifier (argument_list "(param_1,param_2,puVar4)" ( identifier , identifier , identifier ))) ;)) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (1 < uVar2 - 0x4e) goto LAB_00321278;" else (if_statement "if (1 < uVar2 - 0x4e) goto LAB_00321278;" if (parenthesized_expression "(1 < uVar2 - 0x4e)" ( (binary_expression "1 < uVar2 - 0x4e" number_literal < (binary_expression "uVar2 - 0x4e" identifier - number_literal)) )) (goto_statement "goto LAB_00321278;" goto statement_identifier ;)))) })) (expression_statement "puVar4 = (uint *)puVar4[2];" (assignment_expression "puVar4 = (uint *)puVar4[2]" identifier = (cast_expression "(uint *)puVar4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "FUN_00320388(param_1);" (call_expression "FUN_00320388(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "param_3 = (int *)*param_3;" (assignment_expression "param_3 = (int *)*param_3" identifier = (cast_expression "(int *)*param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }" else (compound_statement "{\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }" { (labeled_statement "LAB_003210e8:\n      param_3 = (int *)*param_3;" statement_identifier : (expression_statement "param_3 = (int *)*param_3;" (assignment_expression "param_3 = (int *)*param_3" identifier = (cast_expression "(int *)*param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;)) }))) (if_statement "if (param_3 == (int *)0x0) {\n      return;\n    }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = *(int *)(param_1 + 0x118);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x118)" identifier = (pointer_expression "*(int *)(param_1 + 0x118)" * (cast_expression "(int *)(param_1 + 0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })))) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (goto_statement goto statement_identifier ;)))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_00320fec(int param_1,uint param_2,int *param_3,int param_4)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 uVar8;\n  undefined1 *puVar9;\n  undefined1 local_48 [32];\n  \n  if (param_3 == (int *)0x0) {\n    return;\n  }\n  iVar1 = *(int *)(param_1 + 0x118);\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00320fec(int param_1,uint param_2,int *param_3,int param_4)" (identifier "FUN_00320fec") (parameter_list "(int param_1,uint param_2,int *param_3,int param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint *puVar4;\n  undefined1 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined1 uVar8;\n  undefined1 *puVar9;\n  undefined1 local_48 [32];\n  \n  if (param_3 == (int *)0x0) {\n    return;\n  }\n  iVar1 = *(int *)(param_1 + 0x118);\n  do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined1 uVar8;" (type_identifier "undefined1") (identifier "uVar8") (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined1 local_48 [32];" (type_identifier "undefined1") (array_declarator "local_48 [32]" (identifier "local_48") ([ "[") (number_literal "32") (] "]")) (; ";")) (if_statement "if (param_3 == (int *)0x0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(param_1 + 0x118);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x118)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x118)" (* "*") (cast_expression "(int *)(param_1 + 0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")"))))) (; ";")) (do_statement "do {\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  } while( true );" (do "do") (compound_statement "{\n    if (iVar1 != 0) {\n      return;\n    }\n    if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }\n    if (param_3 == (int *)0x0) {\n      return;\n    }\n    iVar1 = *(int *)(param_1 + 0x118);\n  }" ({ "{") (if_statement "if (iVar1 != 0) {\n      return;\n    }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_3[2] == 0) {\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }\n    else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }" (if "if") (parenthesized_expression "(param_3[2] == 0)" (( "(") (binary_expression "param_3[2] == 0" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar4 = (uint *)param_3[1];\n      uVar2 = *puVar4;\n      if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }\nLAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);\n      param_3[2] = 1;\n      *(int *)(param_1 + 0x110) = param_3[3];\njoined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }\n      if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }\n      FUN_00320388(param_1);\n      param_3 = (int *)*param_3;\n      *(undefined4 *)(param_1 + 0x110) = uVar6;\n    }" ({ "{") (expression_statement "puVar4 = (uint *)param_3[1];" (assignment_expression "puVar4 = (uint *)param_3[1]" (identifier "puVar4") (= "=") (cast_expression "(uint *)param_3[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" (identifier "uVar2") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (if_statement "if (param_4 == 0) {\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }\n        goto LAB_003210e8;\n      }" ({ "{") (if_statement "if (uVar2 != 0x4c) {\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }" (if "if") (parenthesized_expression "(uVar2 != 0x4c)" (( "(") (binary_expression "uVar2 != 0x4c" (identifier "uVar2") (!= "!=") (number_literal "0x4c")) () ")")) (compound_statement "{\n          if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }\n        }" ({ "{") (if_statement "if (uVar2 < 0x4d) {\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }\n          else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" (if "if") (parenthesized_expression "(uVar2 < 0x4d)" (( "(") (binary_expression "uVar2 < 0x4d" (identifier "uVar2") (< "<") (number_literal "0x4d")) () ")")) (compound_statement "{\n            if (4 < uVar2 - 0x1c) goto LAB_00321090;\n          }" ({ "{") (if_statement "if (4 < uVar2 - 0x1c) goto LAB_00321090;" (if "if") (parenthesized_expression "(4 < uVar2 - 0x1c)" (( "(") (binary_expression "4 < uVar2 - 0x1c" (number_literal "4") (< "<") (binary_expression "uVar2 - 0x1c" (identifier "uVar2") (- "-") (number_literal "0x1c"))) () ")")) (goto_statement "goto LAB_00321090;" (goto "goto") (statement_identifier "LAB_00321090") (; ";"))) (} "}")) (else_clause "else if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" (else "else") (if_statement "if (1 < uVar2 - 0x4e) {\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" (if "if") (parenthesized_expression "(1 < uVar2 - 0x4e)" (( "(") (binary_expression "1 < uVar2 - 0x4e" (number_literal "1") (< "<") (binary_expression "uVar2 - 0x4e" (identifier "uVar2") (- "-") (number_literal "0x4e"))) () ")")) (compound_statement "{\n            uVar6 = *(undefined4 *)(param_1 + 0x110);\n            param_3[2] = 1;\n            *(int *)(param_1 + 0x110) = param_3[3];\n            goto joined_r0x0032113c;\n          }" ({ "{") (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0x110);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0x110)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")"))))) (; ";")) (expression_statement "param_3[2] = 1;" (assignment_expression "param_3[2] = 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(param_1 + 0x110) = param_3[3];" (assignment_expression "*(int *)(param_1 + 0x110) = param_3[3]" (pointer_expression "*(int *)(param_1 + 0x110)" (* "*") (cast_expression "(int *)(param_1 + 0x110)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (goto_statement "goto joined_r0x0032113c;" (goto "goto") (statement_identifier "joined_r0x0032113c") (; ";")) (} "}"))))) (} "}"))) (goto_statement "goto LAB_003210e8;" (goto "goto") (statement_identifier "LAB_003210e8") (; ";")) (} "}"))) (labeled_statement "LAB_00321090:\n      uVar6 = *(undefined4 *)(param_1 + 0x110);" (statement_identifier "LAB_00321090") (: ":") (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0x110);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0x110)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")"))))) (; ";"))) (expression_statement "param_3[2] = 1;" (assignment_expression "param_3[2] = 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(param_1 + 0x110) = param_3[3];" (assignment_expression "*(int *)(param_1 + 0x110) = param_3[3]" (pointer_expression "*(int *)(param_1 + 0x110)" (* "*") (cast_expression "(int *)(param_1 + 0x110)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (labeled_statement "joined_r0x0032113c:\n      if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" (statement_identifier "joined_r0x0032113c") (: ":") (if_statement "if (uVar2 == 0x29) {\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" (if "if") (parenthesized_expression "(uVar2 == 0x29)" (( "(") (binary_expression "uVar2 == 0x29" (identifier "uVar2") (== "==") (number_literal "0x29")) () ")")) (compound_statement "{\n        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" ({ "{") (expression_statement "FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);" (call_expression "FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3)" (identifier "FUN_00320ca0") (argument_list "(param_1,param_2,puVar4 + 3,*param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (binary_expression "puVar4 + 3" (identifier "puVar4") (+ "+") (number_literal "3")) (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))) (if_statement "if (uVar2 == 0x2a) {\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" (if "if") (parenthesized_expression "(uVar2 == 0x2a)" (( "(") (binary_expression "uVar2 == 0x2a" (identifier "uVar2") (== "==") (number_literal "0x2a")) () ")")) (compound_statement "{\n        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);\n        *(undefined4 *)(param_1 + 0x110) = uVar6;\n        return;\n      }" ({ "{") (expression_statement "FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);" (call_expression "FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3)" (identifier "FUN_0032151c") (argument_list "(param_1,param_2,puVar4 + 2,*param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar2 == 2) {\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }" (if "if") (parenthesized_expression "(uVar2 == 2)" (( "(") (binary_expression "uVar2 == 2" (identifier "uVar2") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        uVar2 = puVar4[2];\n        uVar7 = *(undefined4 *)(param_1 + 0x114);\n        *(undefined4 *)(param_1 + 0x114) = 0;\n        FUN_0031b710(param_1,param_2,uVar2);\n        *(undefined4 *)(param_1 + 0x114) = uVar7;\n        if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }\n        puVar4 = *(uint **)(param_3[1] + 0xc);\n        uVar2 = *puVar4;\n        if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }\n        do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );\n      }" ({ "{") (expression_statement "uVar2 = puVar4[2];" (assignment_expression "uVar2 = puVar4[2]" (identifier "uVar2") (= "=") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar7 = *(undefined4 *)(param_1 + 0x114);" (assignment_expression "uVar7 = *(undefined4 *)(param_1 + 0x114)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x114)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x114)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x114)" (( "(") (binary_expression "param_1 + 0x114" (identifier "param_1") (+ "+") (number_literal "0x114")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x114) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x114) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x114)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x114)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x114)" (( "(") (binary_expression "param_1 + 0x114" (identifier "param_1") (+ "+") (number_literal "0x114")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0031b710(param_1,param_2,uVar2);" (call_expression "FUN_0031b710(param_1,param_2,uVar2)" (identifier "FUN_0031b710") (argument_list "(param_1,param_2,uVar2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x114) = uVar7;" (assignment_expression "*(undefined4 *)(param_1 + 0x114) = uVar7" (pointer_expression "*(undefined4 *)(param_1 + 0x114)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x114)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x114)" (( "(") (binary_expression "param_1 + 0x114" (identifier "param_1") (+ "+") (number_literal "0x114")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (if_statement "if ((param_2 & 4) == 0) {\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }\n        else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }" (if "if") (parenthesized_expression "((param_2 & 4) == 0)" (( "(") (binary_expression "(param_2 & 4) == 0" (parenthesized_expression "(param_2 & 4)" (( "(") (binary_expression "param_2 & 4" (identifier "param_2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar8 = 0x3a;\n          puVar5 = PTR_s__s_004c1a50 + 0x208;\n          puVar9 = PTR_s__s_004c1a50 + 0x20a;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n        }" ({ "{") (expression_statement "uVar8 = 0x3a;" (assignment_expression "uVar8 = 0x3a" (identifier "uVar8") (= "=") (number_literal "0x3a")) (; ";")) (expression_statement "puVar5 = PTR_s__s_004c1a50 + 0x208;" (assignment_expression "puVar5 = PTR_s__s_004c1a50 + 0x208" (identifier "puVar5") (= "=") (binary_expression "PTR_s__s_004c1a50 + 0x208" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "0x208"))) (; ";")) (expression_statement "puVar9 = PTR_s__s_004c1a50 + 0x20a;" (assignment_expression "puVar9 = PTR_s__s_004c1a50 + 0x20a" (identifier "puVar9") (= "=") (binary_expression "PTR_s__s_004c1a50 + 0x20a" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "0x20a"))) (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x100)" (* "*") (cast_expression "(int *)(param_1 + 0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")"))))) (; ";")) (while_statement "while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" ({ "{") (if_statement "if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }" (if "if") (parenthesized_expression "(iVar1 == 0xff)" (( "(") (binary_expression "iVar1 == 0xff" (identifier "iVar1") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xff)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xff)" (( "(") (binary_expression "param_1 + 0xff" (identifier "param_1") (+ "+") (number_literal "0xff")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" (( "(") (pointer_expression "**(code **)(param_1 + 0x108)" (* "*") (pointer_expression "*(code **)(param_1 + 0x108)" (* "*") (cast_expression "(code **)(param_1 + 0x108)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")"))))) () ")")) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (( "(") (identifier "param_1") (, ",") (number_literal "0xff") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10c)" (( "(") (binary_expression "param_1 + 0x10c" (identifier "param_1") (+ "+") (number_literal "0x10c")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n              iVar3 = iVar1 + 1;\n            }" (else "else") (compound_statement "{\n              iVar3 = iVar1 + 1;\n            }" ({ "{") (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" (* "*") (cast_expression "(int *)(param_1 + 0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + iVar1) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" (* "*") (cast_expression "(undefined1 *)(param_1 + iVar1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar1)" (( "(") (binary_expression "param_1 + iVar1" (identifier "param_1") (+ "+") (identifier "iVar1")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x104)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x104)" (( "(") (binary_expression "param_1 + 0x104" (identifier "param_1") (+ "+") (number_literal "0x104")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (puVar5 == puVar9) break;" (if "if") (parenthesized_expression "(puVar5 == puVar9)" (( "(") (binary_expression "puVar5 == puVar9" (identifier "puVar5") (== "==") (identifier "puVar9")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" (identifier "uVar8") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" (identifier "iVar1") (= "=") (identifier "iVar3")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }" (else "else") (compound_statement "{\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }\n          *(int *)(param_1 + 0x100) = iVar3;\n          *(undefined1 *)(param_1 + iVar1) = 0x2e;\n          *(undefined1 *)(param_1 + 0x104) = 0x2e;\n        }" ({ "{") (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x100)" (* "*") (cast_expression "(int *)(param_1 + 0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")"))))) (; ";")) (if_statement "if (iVar1 == 0xff) {\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }\n          else {\n            iVar3 = iVar1 + 1;\n          }" (if "if") (parenthesized_expression "(iVar1 == 0xff)" (( "(") (binary_expression "iVar1 == 0xff" (identifier "iVar1") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n            *(undefined1 *)(param_1 + 0xff) = 0;\n            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n            iVar3 = 1;\n            iVar1 = 0;\n            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n          }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xff)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xff)" (( "(") (binary_expression "param_1 + 0xff" (identifier "param_1") (+ "+") (number_literal "0xff")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" (( "(") (pointer_expression "**(code **)(param_1 + 0x108)" (* "*") (pointer_expression "*(code **)(param_1 + 0x108)" (* "*") (cast_expression "(code **)(param_1 + 0x108)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")"))))) () ")")) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (( "(") (identifier "param_1") (, ",") (number_literal "0xff") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10c)" (( "(") (binary_expression "param_1 + 0x10c" (identifier "param_1") (+ "+") (number_literal "0x10c")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n            iVar3 = iVar1 + 1;\n          }" (else "else") (compound_statement "{\n            iVar3 = iVar1 + 1;\n          }" ({ "{") (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" (* "*") (cast_expression "(int *)(param_1 + 0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + iVar1) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" (* "*") (cast_expression "(undefined1 *)(param_1 + iVar1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar1)" (( "(") (binary_expression "param_1 + iVar1" (identifier "param_1") (+ "+") (identifier "iVar1")) () ")")))) (= "=") (number_literal "0x2e")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x104) = 0x2e;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = 0x2e" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x104)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x104)" (( "(") (binary_expression "param_1 + 0x104" (identifier "param_1") (+ "+") (number_literal "0x104")) () ")")))) (= "=") (number_literal "0x2e")) (; ";")) (} "}")))) (expression_statement "puVar4 = *(uint **)(param_3[1] + 0xc);" (assignment_expression "puVar4 = *(uint **)(param_3[1] + 0xc)" (identifier "puVar4") (= "=") (pointer_expression "*(uint **)(param_3[1] + 0xc)" (* "*") (cast_expression "(uint **)(param_3[1] + 0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3[1] + 0xc)" (( "(") (binary_expression "param_3[1] + 0xc" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" (identifier "uVar2") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (if_statement "if (uVar2 == 0x46) {\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }" (if "if") (parenthesized_expression "(uVar2 == 0x46)" (( "(") (binary_expression "uVar2 == 0x46" (identifier "uVar2") (== "==") (number_literal "0x46")) () ")")) (compound_statement "{\n          uVar8 = 0x7b;\n          puVar5 = PTR_UINT_004c12dc + -0x5a47;\n          puVar9 = PTR_UINT_004c12dc + -0x5a3b;\n          iVar1 = *(int *)(param_1 + 0x100);\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }\n          puVar5 = local_48;\n          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);\n          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);\n          iVar1 = *(int *)(param_1 + 0x100);\n          if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }\n          uVar8 = 0x7d;\n          puVar5 = PTR_UINT_004c12dc + -0x5a38;\n          puVar9 = PTR_UINT_004c12dc + -0x5a35;\n          while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }" ({ "{") (expression_statement "uVar8 = 0x7b;" (assignment_expression "uVar8 = 0x7b" (identifier "uVar8") (= "=") (number_literal "0x7b")) (; ";")) (expression_statement "puVar5 = PTR_UINT_004c12dc + -0x5a47;" (assignment_expression "puVar5 = PTR_UINT_004c12dc + -0x5a47" (identifier "puVar5") (= "=") (binary_expression "PTR_UINT_004c12dc + -0x5a47" (identifier "PTR_UINT_004c12dc") (+ "+") (number_literal "-0x5a47"))) (; ";")) (expression_statement "puVar9 = PTR_UINT_004c12dc + -0x5a3b;" (assignment_expression "puVar9 = PTR_UINT_004c12dc + -0x5a3b" (identifier "puVar9") (= "=") (binary_expression "PTR_UINT_004c12dc + -0x5a3b" (identifier "PTR_UINT_004c12dc") (+ "+") (number_literal "-0x5a3b"))) (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x100)" (* "*") (cast_expression "(int *)(param_1 + 0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")"))))) (; ";")) (while_statement "while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar5 == puVar9) break;\n            uVar8 = *puVar5;\n            puVar5 = puVar5 + 1;\n            iVar1 = iVar3;\n          }" ({ "{") (if_statement "if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }" (if "if") (parenthesized_expression "(iVar1 == 0xff)" (( "(") (binary_expression "iVar1 == 0xff" (identifier "iVar1") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xff)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xff)" (( "(") (binary_expression "param_1 + 0xff" (identifier "param_1") (+ "+") (number_literal "0xff")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" (( "(") (pointer_expression "**(code **)(param_1 + 0x108)" (* "*") (pointer_expression "*(code **)(param_1 + 0x108)" (* "*") (cast_expression "(code **)(param_1 + 0x108)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")"))))) () ")")) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (( "(") (identifier "param_1") (, ",") (number_literal "0xff") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10c)" (( "(") (binary_expression "param_1 + 0x10c" (identifier "param_1") (+ "+") (number_literal "0x10c")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n              iVar3 = iVar1 + 1;\n            }" (else "else") (compound_statement "{\n              iVar3 = iVar1 + 1;\n            }" ({ "{") (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" (* "*") (cast_expression "(int *)(param_1 + 0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + iVar1) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" (* "*") (cast_expression "(undefined1 *)(param_1 + iVar1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar1)" (( "(") (binary_expression "param_1 + iVar1" (identifier "param_1") (+ "+") (identifier "iVar1")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x104)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x104)" (( "(") (binary_expression "param_1 + 0x104" (identifier "param_1") (+ "+") (number_literal "0x104")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (puVar5 == puVar9) break;" (if "if") (parenthesized_expression "(puVar5 == puVar9)" (( "(") (binary_expression "puVar5 == puVar9" (identifier "puVar5") (== "==") (identifier "puVar9")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" (identifier "uVar8") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" (identifier "iVar1") (= "=") (identifier "iVar3")) (; ";")) (} "}"))) (expression_statement "puVar5 = local_48;" (assignment_expression "puVar5 = local_48" (identifier "puVar5") (= "=") (identifier "local_48")) (; ";")) (expression_statement "(*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);" (call_expression "(*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1)" (parenthesized_expression "(*(code *)PTR_sprintf_004c5d14)" (( "(") (pointer_expression "*(code *)PTR_sprintf_004c5d14" (* "*") (cast_expression "(code *)PTR_sprintf_004c5d14" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sprintf_004c5d14"))) () ")")) (argument_list "(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1)" (( "(") (identifier "puVar5") (, ",") (binary_expression "PTR_s__s_004c1a50 + 0x1264" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "0x1264")) (, ",") (binary_expression "puVar4[3] + 1" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);" (assignment_expression "iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strlen_004c5b9c)(puVar5)" (parenthesized_expression "(*(code *)PTR_strlen_004c5b9c)" (( "(") (pointer_expression "*(code *)PTR_strlen_004c5b9c" (* "*") (cast_expression "(code *)PTR_strlen_004c5b9c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_004c5b9c"))) () ")")) (argument_list "(puVar5)" (( "(") (identifier "puVar5") () ")")))) (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 0x100);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x100)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x100)" (* "*") (cast_expression "(int *)(param_1 + 0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")"))))) (; ";")) (if_statement "if (iVar3 != 0) {\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puVar9 = puVar5 + iVar3;\n            iVar3 = iVar1;\n            do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);\n          }" ({ "{") (expression_statement "puVar9 = puVar5 + iVar3;" (assignment_expression "puVar9 = puVar5 + iVar3" (identifier "puVar9") (= "=") (binary_expression "puVar5 + iVar3" (identifier "puVar5") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" (identifier "iVar3") (= "=") (identifier "iVar1")) (; ";")) (do_statement "do {\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            } while (puVar9 != puVar5);" (do "do") (compound_statement "{\n              uVar8 = *puVar5;\n              if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }\n              *(int *)(param_1 + 0x100) = iVar1;\n              puVar5 = puVar5 + 1;\n              *(undefined1 *)(param_1 + iVar3) = uVar8;\n              *(undefined1 *)(param_1 + 0x104) = uVar8;\n              iVar3 = iVar1;\n            }" ({ "{") (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" (identifier "uVar8") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (if_statement "if (iVar3 == 0xff) {\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }\n              else {\n                iVar1 = iVar3 + 1;\n              }" (if "if") (parenthesized_expression "(iVar3 == 0xff)" (( "(") (binary_expression "iVar3 == 0xff" (identifier "iVar3") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n                *(undefined1 *)(param_1 + 0xff) = 0;\n                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n                iVar1 = 1;\n                iVar3 = 0;\n                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n              }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xff)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xff)" (( "(") (binary_expression "param_1 + 0xff" (identifier "param_1") (+ "+") (number_literal "0xff")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" (( "(") (pointer_expression "**(code **)(param_1 + 0x108)" (* "*") (pointer_expression "*(code **)(param_1 + 0x108)" (* "*") (cast_expression "(code **)(param_1 + 0x108)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")"))))) () ")")) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (( "(") (identifier "param_1") (, ",") (number_literal "0xff") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10c)" (( "(") (binary_expression "param_1 + 0x10c" (identifier "param_1") (+ "+") (number_literal "0x10c")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" (identifier "iVar1") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                iVar1 = iVar3 + 1;\n              }" (else "else") (compound_statement "{\n                iVar1 = iVar3 + 1;\n              }" ({ "{") (expression_statement "iVar1 = iVar3 + 1;" (assignment_expression "iVar1 = iVar3 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(int *)(param_1 + 0x100) = iVar1;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar1" (pointer_expression "*(int *)(param_1 + 0x100)" (* "*") (cast_expression "(int *)(param_1 + 0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + iVar3) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar3) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar3)" (* "*") (cast_expression "(undefined1 *)(param_1 + iVar3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar3)" (( "(") (binary_expression "param_1 + iVar3" (identifier "param_1") (+ "+") (identifier "iVar3")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x104)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x104)" (( "(") (binary_expression "param_1 + 0x104" (identifier "param_1") (+ "+") (number_literal "0x104")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "iVar3 = iVar1;" (assignment_expression "iVar3 = iVar1" (identifier "iVar3") (= "=") (identifier "iVar1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != puVar5)" (( "(") (binary_expression "puVar9 != puVar5" (identifier "puVar9") (!= "!=") (identifier "puVar5")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar8 = 0x7d;" (assignment_expression "uVar8 = 0x7d" (identifier "uVar8") (= "=") (number_literal "0x7d")) (; ";")) (expression_statement "puVar5 = PTR_UINT_004c12dc + -0x5a38;" (assignment_expression "puVar5 = PTR_UINT_004c12dc + -0x5a38" (identifier "puVar5") (= "=") (binary_expression "PTR_UINT_004c12dc + -0x5a38" (identifier "PTR_UINT_004c12dc") (+ "+") (number_literal "-0x5a38"))) (; ";")) (expression_statement "puVar9 = PTR_UINT_004c12dc + -0x5a35;" (assignment_expression "puVar9 = PTR_UINT_004c12dc + -0x5a35" (identifier "puVar9") (= "=") (binary_expression "PTR_UINT_004c12dc + -0x5a35" (identifier "PTR_UINT_004c12dc") (+ "+") (number_literal "-0x5a35"))) (; ";")) (while_statement "while( true ) {\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }\n            *(int *)(param_1 + 0x100) = iVar3;\n            puVar5 = puVar5 + 1;\n            *(undefined1 *)(param_1 + iVar1) = uVar8;\n            *(undefined1 *)(param_1 + 0x104) = uVar8;\n            if (puVar9 == puVar5) break;\n            uVar8 = *puVar5;\n            iVar1 = iVar3;\n          }" ({ "{") (if_statement "if (iVar1 == 0xff) {\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }\n            else {\n              iVar3 = iVar1 + 1;\n            }" (if "if") (parenthesized_expression "(iVar1 == 0xff)" (( "(") (binary_expression "iVar1 == 0xff" (identifier "iVar1") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n              *(undefined1 *)(param_1 + 0xff) = 0;\n              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));\n              iVar3 = 1;\n              iVar1 = 0;\n              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;\n            }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0xff) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xff) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xff)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xff)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xff)" (( "(") (binary_expression "param_1 + 0xff" (identifier "param_1") (+ "+") (number_literal "0xff")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));" (call_expression "(**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (parenthesized_expression "(**(code **)(param_1 + 0x108))" (( "(") (pointer_expression "**(code **)(param_1 + 0x108)" (* "*") (pointer_expression "*(code **)(param_1 + 0x108)" (* "*") (cast_expression "(code **)(param_1 + 0x108)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")"))))) () ")")) (argument_list "(param_1,0xff,*(undefined4 *)(param_1 + 0x10c))" (( "(") (identifier "param_1") (, ",") (number_literal "0xff") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x10c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10c)" (( "(") (binary_expression "param_1 + 0x10c" (identifier "param_1") (+ "+") (number_literal "0x10c")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;" (assignment_expression "*(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x128) + 1" (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n              iVar3 = iVar1 + 1;\n            }" (else "else") (compound_statement "{\n              iVar3 = iVar1 + 1;\n            }" ({ "{") (expression_statement "iVar3 = iVar1 + 1;" (assignment_expression "iVar3 = iVar1 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "*(int *)(param_1 + 0x100) = iVar3;" (assignment_expression "*(int *)(param_1 + 0x100) = iVar3" (pointer_expression "*(int *)(param_1 + 0x100)" (* "*") (cast_expression "(int *)(param_1 + 0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + iVar1) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + iVar1) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + iVar1)" (* "*") (cast_expression "(undefined1 *)(param_1 + iVar1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar1)" (( "(") (binary_expression "param_1 + iVar1" (identifier "param_1") (+ "+") (identifier "iVar1")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x104) = uVar8;" (assignment_expression "*(undefined1 *)(param_1 + 0x104) = uVar8" (pointer_expression "*(undefined1 *)(param_1 + 0x104)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x104)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x104)" (( "(") (binary_expression "param_1 + 0x104" (identifier "param_1") (+ "+") (number_literal "0x104")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (puVar9 == puVar5) break;" (if "if") (parenthesized_expression "(puVar9 == puVar5)" (( "(") (binary_expression "puVar9 == puVar5" (identifier "puVar9") (== "==") (identifier "puVar5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = *puVar5;" (assignment_expression "uVar8 = *puVar5" (identifier "uVar8") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" (identifier "iVar1") (= "=") (identifier "iVar3")) (; ";")) (} "}"))) (expression_statement "puVar4 = (uint *)puVar4[2];" (assignment_expression "puVar4 = (uint *)puVar4[2]" (identifier "puVar4") (= "=") (cast_expression "(uint *)puVar4[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" (identifier "uVar2") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (} "}"))) (do_statement "do {\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        } while( true );" (do "do") (compound_statement "{\n          if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }\n          puVar4 = (uint *)puVar4[2];\n          uVar2 = *puVar4;\n        }" ({ "{") (if_statement "if (uVar2 != 0x4c) {\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }" (if "if") (parenthesized_expression "(uVar2 != 0x4c)" (( "(") (binary_expression "uVar2 != 0x4c" (identifier "uVar2") (!= "!=") (number_literal "0x4c")) () ")")) (compound_statement "{\n            if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;\n          }" ({ "{") (if_statement "if (uVar2 < 0x4d) {\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }\n            else if (1 < uVar2 - 0x4e) goto LAB_00321278;" (if "if") (parenthesized_expression "(uVar2 < 0x4d)" (( "(") (binary_expression "uVar2 < 0x4d" (identifier "uVar2") (< "<") (number_literal "0x4d")) () ")")) (compound_statement "{\n              if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }\n            }" ({ "{") (if_statement "if (4 < uVar2 - 0x1c) {\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }" (if "if") (parenthesized_expression "(4 < uVar2 - 0x1c)" (( "(") (binary_expression "4 < uVar2 - 0x1c" (number_literal "4") (< "<") (binary_expression "uVar2 - 0x1c" (identifier "uVar2") (- "-") (number_literal "0x1c"))) () ")")) (compound_statement "{\nLAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);\n                *(undefined4 *)(param_1 + 0x110) = uVar6;\n                return;\n              }" ({ "{") (labeled_statement "LAB_00321278:\n                FUN_0031b710(param_1,param_2,puVar4);" (statement_identifier "LAB_00321278") (: ":") (expression_statement "FUN_0031b710(param_1,param_2,puVar4);" (call_expression "FUN_0031b710(param_1,param_2,puVar4)" (identifier "FUN_0031b710") (argument_list "(param_1,param_2,puVar4)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "puVar4") () ")"))) (; ";"))) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else if (1 < uVar2 - 0x4e) goto LAB_00321278;" (else "else") (if_statement "if (1 < uVar2 - 0x4e) goto LAB_00321278;" (if "if") (parenthesized_expression "(1 < uVar2 - 0x4e)" (( "(") (binary_expression "1 < uVar2 - 0x4e" (number_literal "1") (< "<") (binary_expression "uVar2 - 0x4e" (identifier "uVar2") (- "-") (number_literal "0x4e"))) () ")")) (goto_statement "goto LAB_00321278;" (goto "goto") (statement_identifier "LAB_00321278") (; ";"))))) (} "}"))) (expression_statement "puVar4 = (uint *)puVar4[2];" (assignment_expression "puVar4 = (uint *)puVar4[2]" (identifier "puVar4") (= "=") (cast_expression "(uint *)puVar4[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" (identifier "uVar2") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "FUN_00320388(param_1);" (call_expression "FUN_00320388(param_1)" (identifier "FUN_00320388") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "param_3 = (int *)*param_3;" (assignment_expression "param_3 = (int *)*param_3" (identifier "param_3") (= "=") (cast_expression "(int *)*param_3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x110) = uVar6;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = uVar6" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (} "}")) (else_clause "else {\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }" (else "else") (compound_statement "{\nLAB_003210e8:\n      param_3 = (int *)*param_3;\n    }" ({ "{") (labeled_statement "LAB_003210e8:\n      param_3 = (int *)*param_3;" (statement_identifier "LAB_003210e8") (: ":") (expression_statement "param_3 = (int *)*param_3;" (assignment_expression "param_3 = (int *)*param_3" (identifier "param_3") (= "=") (cast_expression "(int *)*param_3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";"))) (} "}")))) (if_statement "if (param_3 == (int *)0x0) {\n      return;\n    }" (if "if") (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(param_1 + 0x118);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x118)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x118)" (* "*") (cast_expression "(int *)(param_1 + 0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

void function_1(type_1 *dpi,int var_15,type_2 *var_1,int var_3)

{
  int var_2;
  type_3 var_4;
  size_t var_17;
  size_t var_22;
  type_4 *pdVar5;
  void *pvVar6;
  char *var_18;
  type_5 *pdVar8;
  type_2 *pdVar9;
  char cVar10;
  char *var_19;
  type_6 p_Var12;
  char buf [25];
  
  if (var_1 == (type_2 *)0x0) {
    return;
  }
  var_2 = dpi->demangle_failure;
  do {
    if (var_2 != 0) {
      return;
    }
    if (var_1->printed == 0) {
      pdVar5 = var_1->mod;
      var_4 = pdVar5->type;
      if (var_3 == 0) {
        if (var_4 != var_5) {
          if (var_4 < var_6) {
            if (4 < var_4 - var_7) goto LAB_00321090;
          }
          else if (1 < var_4 - var_8) {
            pdVar8 = dpi->templates;
            var_1->printed = 1;
            dpi->templates = var_1->templates;
            goto joined_r0x0032113c;
          }
        }
        goto LAB_003210e8;
      }
LAB_00321090:
      pdVar8 = dpi->templates;
      var_1->printed = 1;
      dpi->templates = var_1->templates;
joined_r0x0032113c:
      if (var_4 == var_9) {
        var_10(dpi,var_15,(type_4 *)((int)&pdVar5->u + 4),var_1->next);
        dpi->templates = pdVar8;
        return;
      }
      if (var_4 == var_11) {
        var_12(dpi,var_15,(type_4 *)&(pdVar5->u).s_name,var_1->next);
        dpi->templates = pdVar8;
        return;
      }
      if (var_4 == var_13) {
        pdVar5 = (pdVar5->u).s_fixed.length;
        pdVar9 = dpi->modifiers;
        dpi->modifiers = (type_2 *)0x0;
        var_14(dpi,var_15,pdVar5);
        dpi->modifiers = pdVar9;
        if ((var_15 & 4U) == 0) {
          cVar10 = ':';
          var_18 = var_16 + 0x208;
          var_19 = var_16 + 0x20a;
          var_17 = dpi->len;
          while( true ) {
            if (var_17 == 0xff) {
              p_Var12 = dpi->callback;
              pvVar6 = dpi->opaque;
              dpi->buf[0xff] = '\0';
              (*p_Var12)(dpi->buf,0xff,pvVar6);
              var_22 = 1;
              var_17 = 0;
              dpi->flush_count = dpi->flush_count + 1;
            }
            else {
              var_22 = var_17 + 1;
            }
            dpi->len = var_22;
            var_18 = var_18 + 1;
            dpi->buf[var_17] = cVar10;
            dpi->last_char = cVar10;
            if (var_18 == var_19) break;
            cVar10 = *var_18;
            var_17 = var_22;
          }
        }
        else {
          var_17 = dpi->len;
          if (var_17 == 0xff) {
            p_Var12 = dpi->callback;
            pvVar6 = dpi->opaque;
            dpi->buf[0xff] = '\0';
            (*p_Var12)(dpi->buf,0xff,pvVar6);
            var_22 = 1;
            var_17 = 0;
            dpi->flush_count = dpi->flush_count + 1;
          }
          else {
            var_22 = var_17 + 1;
          }
          dpi->len = var_22;
          dpi->buf[var_17] = '.';
          dpi->last_char = '.';
        }
        pdVar5 = (var_1->mod->u).s_extended_operator.name;
        var_4 = pdVar5->type;
        if (var_4 == var_20) {
          cVar10 = '{';
          var_18 = var_21 + -0x5a47;
          var_19 = var_21 + -0x5a3b;
          var_17 = dpi->len;
          while( true ) {
            if (var_17 == 0xff) {
              p_Var12 = dpi->callback;
              pvVar6 = dpi->opaque;
              dpi->buf[0xff] = '\0';
              (*p_Var12)(dpi->buf,0xff,pvVar6);
              var_22 = 1;
              var_17 = 0;
              dpi->flush_count = dpi->flush_count + 1;
            }
            else {
              var_22 = var_17 + 1;
            }
            dpi->len = var_22;
            dpi->buf[var_17] = cVar10;
            dpi->last_char = cVar10;
            if (var_18 == var_19) break;
            cVar10 = *var_18;
            var_18 = var_18 + 1;
            var_17 = var_22;
          }
          var_18 = buf;
          (*(type_7 *)PTR_sprintf_004c5d14)
                    (var_18,var_16 + 0x1264,
                     (type_8 *)((int)&((pdVar5->u).s_extended_operator.name)->type + 1));
          var_2 = (*(type_7 *)PTR_strlen_004c5b9c)(var_18);
          var_17 = dpi->len;
          if (var_2 != 0) {
            var_19 = var_18 + var_2;
            var_22 = var_17;
            do {
              cVar10 = *var_18;
              if (var_22 == 0xff) {
                p_Var12 = dpi->callback;
                pvVar6 = dpi->opaque;
                dpi->buf[0xff] = '\0';
                (*p_Var12)(dpi->buf,0xff,pvVar6);
                var_17 = 1;
                var_22 = 0;
                dpi->flush_count = dpi->flush_count + 1;
              }
              else {
                var_17 = var_22 + 1;
              }
              dpi->len = var_17;
              var_18 = var_18 + 1;
              dpi->buf[var_22] = cVar10;
              dpi->last_char = cVar10;
              var_22 = var_17;
            } while (var_19 != var_18);
          }
          cVar10 = '}';
          var_18 = var_21 + -0x5a38;
          var_19 = var_21 + -0x5a35;
          while( true ) {
            if (var_17 == 0xff) {
              p_Var12 = dpi->callback;
              pvVar6 = dpi->opaque;
              dpi->buf[0xff] = '\0';
              (*p_Var12)(dpi->buf,0xff,pvVar6);
              var_22 = 1;
              var_17 = 0;
              dpi->flush_count = dpi->flush_count + 1;
            }
            else {
              var_22 = var_17 + 1;
            }
            dpi->len = var_22;
            var_18 = var_18 + 1;
            dpi->buf[var_17] = cVar10;
            dpi->last_char = cVar10;
            if (var_19 == var_18) break;
            cVar10 = *var_18;
            var_17 = var_22;
          }
          pdVar5 = (pdVar5->u).s_fixed.length;
          var_4 = pdVar5->type;
        }
        do {
          if (var_4 != var_5) {
            if (var_4 < var_6) {
              if (4 < var_4 - var_7) {
LAB_00321278:
                var_14(dpi,var_15,pdVar5);
                dpi->templates = pdVar8;
                return;
              }
            }
            else if (1 < var_4 - var_8) goto LAB_00321278;
          }
          pdVar5 = (pdVar5->u).s_fixed.length;
          var_4 = pdVar5->type;
        } while( true );
      }
      type_2(dpi,var_15,pdVar5);
      var_1 = var_1->next;
      dpi->templates = pdVar8;
    }
    else {
LAB_003210e8:
      var_1 = var_1->next;
    }
    if (var_1 == (type_2 *)0x0) {
      return;
    }
    var_2 = dpi->demangle_failure;
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (return_statement)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (return_statement)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (true))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (true))))))

void MASKED(int param_1,uint param_2,int *param_3,int param_4)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint *puVar4;
  undefined1 *puVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined1 uVar8;
  undefined1 *puVar9;
  undefined1 local_48 [32];
  
  if (param_3 == (int *)0x0) {
    return;
  }
  iVar1 = *(int *)(param_1 + 0x118);
  do {
    if (iVar1 != 0) {
      return;
    }
    if (param_3[2] == 0) {
      puVar4 = (uint *)param_3[1];
      uVar2 = *puVar4;
      if (param_4 == 0) {
        if (uVar2 != 0x4c) {
          if (uVar2 < 0x4d) {
            if (4 < uVar2 - 0x1c) goto LAB_00321090;
          }
          else if (1 < uVar2 - 0x4e) {
            uVar6 = *(undefined4 *)(param_1 + 0x110);
            param_3[2] = 1;
            *(int *)(param_1 + 0x110) = param_3[3];
            goto joined_r0x0032113c;
          }
        }
        goto LAB_003210e8;
      }
LAB_00321090:
      uVar6 = *(undefined4 *)(param_1 + 0x110);
      param_3[2] = 1;
      *(int *)(param_1 + 0x110) = param_3[3];
joined_r0x0032113c:
      if (uVar2 == 0x29) {
        FUN_00320ca0(param_1,param_2,puVar4 + 3,*param_3);
        *(undefined4 *)(param_1 + 0x110) = uVar6;
        return;
      }
      if (uVar2 == 0x2a) {
        FUN_0032151c(param_1,param_2,puVar4 + 2,*param_3);
        *(undefined4 *)(param_1 + 0x110) = uVar6;
        return;
      }
      if (uVar2 == 2) {
        uVar2 = puVar4[2];
        uVar7 = *(undefined4 *)(param_1 + 0x114);
        *(undefined4 *)(param_1 + 0x114) = 0;
        FUN_0031b710(param_1,param_2,uVar2);
        *(undefined4 *)(param_1 + 0x114) = uVar7;
        if ((param_2 & 4) == 0) {
          uVar8 = 0x3a;
          puVar5 = PTR_s__s_004c1a50 + 0x208;
          puVar9 = PTR_s__s_004c1a50 + 0x20a;
          iVar1 = *(int *)(param_1 + 0x100);
          while( true ) {
            if (iVar1 == 0xff) {
              *(undefined1 *)(param_1 + 0xff) = 0;
              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));
              iVar3 = 1;
              iVar1 = 0;
              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;
            }
            else {
              iVar3 = iVar1 + 1;
            }
            *(int *)(param_1 + 0x100) = iVar3;
            puVar5 = puVar5 + 1;
            *(undefined1 *)(param_1 + iVar1) = uVar8;
            *(undefined1 *)(param_1 + 0x104) = uVar8;
            if (puVar5 == puVar9) break;
            uVar8 = *puVar5;
            iVar1 = iVar3;
          }
        }
        else {
          iVar1 = *(int *)(param_1 + 0x100);
          if (iVar1 == 0xff) {
            *(undefined1 *)(param_1 + 0xff) = 0;
            (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));
            iVar3 = 1;
            iVar1 = 0;
            *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;
          }
          else {
            iVar3 = iVar1 + 1;
          }
          *(int *)(param_1 + 0x100) = iVar3;
          *(undefined1 *)(param_1 + iVar1) = 0x2e;
          *(undefined1 *)(param_1 + 0x104) = 0x2e;
        }
        puVar4 = *(uint **)(param_3[1] + 0xc);
        uVar2 = *puVar4;
        if (uVar2 == 0x46) {
          uVar8 = 0x7b;
          puVar5 = PTR_UINT_004c12dc + -0x5a47;
          puVar9 = PTR_UINT_004c12dc + -0x5a3b;
          iVar1 = *(int *)(param_1 + 0x100);
          while( true ) {
            if (iVar1 == 0xff) {
              *(undefined1 *)(param_1 + 0xff) = 0;
              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));
              iVar3 = 1;
              iVar1 = 0;
              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;
            }
            else {
              iVar3 = iVar1 + 1;
            }
            *(int *)(param_1 + 0x100) = iVar3;
            *(undefined1 *)(param_1 + iVar1) = uVar8;
            *(undefined1 *)(param_1 + 0x104) = uVar8;
            if (puVar5 == puVar9) break;
            uVar8 = *puVar5;
            puVar5 = puVar5 + 1;
            iVar1 = iVar3;
          }
          puVar5 = local_48;
          (*(code *)PTR_sprintf_004c5d14)(puVar5,PTR_s__s_004c1a50 + 0x1264,puVar4[3] + 1);
          iVar3 = (*(code *)PTR_strlen_004c5b9c)(puVar5);
          iVar1 = *(int *)(param_1 + 0x100);
          if (iVar3 != 0) {
            puVar9 = puVar5 + iVar3;
            iVar3 = iVar1;
            do {
              uVar8 = *puVar5;
              if (iVar3 == 0xff) {
                *(undefined1 *)(param_1 + 0xff) = 0;
                (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));
                iVar1 = 1;
                iVar3 = 0;
                *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;
              }
              else {
                iVar1 = iVar3 + 1;
              }
              *(int *)(param_1 + 0x100) = iVar1;
              puVar5 = puVar5 + 1;
              *(undefined1 *)(param_1 + iVar3) = uVar8;
              *(undefined1 *)(param_1 + 0x104) = uVar8;
              iVar3 = iVar1;
            } while (puVar9 != puVar5);
          }
          uVar8 = 0x7d;
          puVar5 = PTR_UINT_004c12dc + -0x5a38;
          puVar9 = PTR_UINT_004c12dc + -0x5a35;
          while( true ) {
            if (iVar1 == 0xff) {
              *(undefined1 *)(param_1 + 0xff) = 0;
              (**(code **)(param_1 + 0x108))(param_1,0xff,*(undefined4 *)(param_1 + 0x10c));
              iVar3 = 1;
              iVar1 = 0;
              *(int *)(param_1 + 0x128) = *(int *)(param_1 + 0x128) + 1;
            }
            else {
              iVar3 = iVar1 + 1;
            }
            *(int *)(param_1 + 0x100) = iVar3;
            puVar5 = puVar5 + 1;
            *(undefined1 *)(param_1 + iVar1) = uVar8;
            *(undefined1 *)(param_1 + 0x104) = uVar8;
            if (puVar9 == puVar5) break;
            uVar8 = *puVar5;
            iVar1 = iVar3;
          }
          puVar4 = (uint *)puVar4[2];
          uVar2 = *puVar4;
        }
        do {
          if (uVar2 != 0x4c) {
            if (uVar2 < 0x4d) {
              if (4 < uVar2 - 0x1c) {
LAB_00321278:
                FUN_0031b710(param_1,param_2,puVar4);
                *(undefined4 *)(param_1 + 0x110) = uVar6;
                return;
              }
            }
            else if (1 < uVar2 - 0x4e) goto LAB_00321278;
          }
          puVar4 = (uint *)puVar4[2];
          uVar2 = *puVar4;
        } while( true );
      }
      FUN_00320388(param_1);
      param_3 = (int *)*param_3;
      *(undefined4 *)(param_1 + 0x110) = uVar6;
    }
    else {
LAB_003210e8:
      param_3 = (int *)*param_3;
    }
    if (param_3 == (int *)0x0) {
      return;
    }
    iVar1 = *(int *)(param_1 + 0x118);
  } while( true );
}

